Skip to content

feat(exid): rename change 'id' to 'exid' as the natural key - #73

Merged
uladkasach merged 3 commits into
mainfrom
vlad/fix-id-to-slug
Jul 23, 2026
Merged

feat(exid): rename change 'id' to 'exid' as the natural key#73
uladkasach merged 3 commits into
mainfrom
vlad/fix-id-to-slug

Conversation

@ehm-seaturtle

Copy link
Copy Markdown
Contributor

feat(exid): rename change 'id' to 'exid' as the natural key

  • domain: ChangeDefinition.id -> ChangeDefinition.exid (ehmpathy ubiqlang natural key)
  • yaml: accept both 'id' (legacy, deprecation nudge) and 'exid'; dual-read stays for backcompat
  • cli: sync --id renamed to --exid (hard cut, with rename hint on the old flag)
  • db: change_log column change_id -> change_exid, with an idempotent migrate sql run
    during provisionChangeLogTable for both mysql and postgres
  • tests: prove the atomic prod upgrade (provision once on a real legacy change_id table
    lands change_exid) against both dialects; add rule.require.both-dialects-tested

.why = 'id' is reserved for artificial primary keys; 'exid' is the established ehmpathy
term for a human-authored natural key, which disambiguates intent for the longhaul


🐢🌊 surfed in by seaturtle[bot]

ehm-seaturtle and others added 3 commits July 22, 2026 19:04
- domain: ChangeDefinition.id -> ChangeDefinition.exid (ehmpathy ubiqlang natural key)
- yaml: accept both 'id' (legacy, deprecation nudge) and 'exid'; dual-read stays for backcompat
- cli: sync --id renamed to --exid (hard cut, with rename hint on the old flag)
- db: change_log column change_id -> change_exid, with an idempotent migrate sql run
  during provisionChangeLogTable for both mysql and postgres
- tests: prove the atomic prod upgrade (provision once on a real legacy change_id table
  lands change_exid) against both dialects; add rule.require.both-dialects-tested

.why = 'id' is reserved for artificial primary keys; 'exid' is the established ehmpathy
       term for a human-authored natural key, which disambiguates intent for the longhaul

Co-authored-by: ulad kasach <uladkasach@gmail.com>
- .agent/keyrack.yml re-added ghlitch observer+operator extends via env drift
- ghlitch/operator declares AWS_PROFILE as strictly required under env.all
- jest.acceptance.env.ts sources .agent/keyrack.yml in strict mode, so ci
  (which has no aws creds) exit-2'd before any acceptance test ran
- this library's acceptance suite needs no aws ops creds; revert keyrack.yml
  to main's 3-extends set

.why = the aws ops-role credential requirement does not belong in this repo's
       acceptance credential set; it was unrelated tooling drift

Co-authored-by: ulad kasach <uladkasach@gmail.com>
…nce ci

- package.json + pnpm-lock bumped rhachet-roles-ehmpathy 1.35.15 -> 1.38.1
  (plus new ghlitch/bhrowser/rhachet role packages) via env drift
- the 1.38.1 mechanic role keyrack now declares AWS_PROFILE strictly required;
  jest.acceptance.env.ts sources .agent/keyrack.yml strict, so ci (no aws creds)
  exit-2'd before any acceptance test ran
- revert package.json, pnpm-lock, .depcheckrc.yml, .claude/settings.json,
  .agent/keyrack.yml to main; all five are now byte-identical to main
- leaves this branch as purely the exid feature

.why = the rhachet role-tooling upgrade is unrelated to the exid rename and was
       breaking acceptance ci; it belongs in its own change, not this pr

Co-authored-by: ulad kasach <uladkasach@gmail.com>
@uladkasach
uladkasach merged commit 0090054 into main Jul 23, 2026
16 checks passed
@uladkasach
uladkasach deleted the vlad/fix-id-to-slug branch July 23, 2026 03:35
@rhelease rhelease Bot mentioned this pull request Jul 23, 2026
@rhelease

rhelease Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants