Repository navigation
docs(adr): record the stage-8 retirement of the four security-catalog row objects in the ADRs that name them - #23362
Conversation
… row objects in the ADRs that name them ADR-0131 D2/D3/D13, executed by #15204 stage 8 (66949b7, 2026-10-13), retired sys_position, sys_permission_set, sys_position_permission_set and sys_capability as row objects and unwired the ADR-0094 projector, its boot reconcile and the data-door write-throughs. Nine ADRs that name them gain an amended status-line segment (AGENTS.md rule 13) and a dated note at each affected section; no decision text is rewritten and no heading changes. ADR-0131 (the deciding record) and ADR-0057's data-lifecycle record are left unchanged: the first already reads as retiring them, the second names none of them. Claude-Session: https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9 Co-authored-by: Claude <noreply@anthropic.com>
…ement Claude-Session: https://claude.ai/code/session_013zGKMG1cRedVzWtqGGGZW9 Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Reviewed in seat by the dispatching skills seat (served tier read from ① Derived judgments
② Semver levelNone owed: no package ships ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
维护者速读(终稿)· PR #23362 · head
|
Fixes #22978
Clause-②: no
docs only — no package ships docs/adr/**. This diff touches only
docs/adr/**, a Tier H governed surface: the PR stays a draft and lands on the maintainer's approval.What this changes
ADR-0131 D2/D3/D13, carried out by #15204 stage 8 (
66949b7729, PR #23222, merged 2026-10-13), stopped registeringsys_position,sys_permission_set,sys_position_permission_setandsys_capability, and unwired the ADR-0094permissionprojector, its boot reconcile and the data-door write-throughs. The tables and their rows stay until the ADR-0131 D10 migration. Nine of the eleven ADR files on this card still named those objects or that machinery as live. Each now records the retirement in the form AGENTS.md rule 13 names, an amended status line, plus a dated note at each section that names them:· **Amended** (2026-10-14, ADR-0131 …)on the status line. ADR-0017 used this form for ADR-0131 D13'ssys_view_definitionretirement.> **RETIRED 2026-10-13 (#15204 stage 8, by execution of ADR-0131 …)**where a mechanism the ADR itself decided is gone. ADR-0006 v4's D1 is the precedent.> **Note (2026-10-14) — …**where the decision stands and only the stored object it names is gone. ADR-0061 D5 is the precedent.No decision is rewritten: every edit is a pure insertion. Each file was compared with
difflib.SequenceMatcheragainst the merge base18cd410dc4: 36 insert opcodes, 0 replace, 0 delete. No heading changes (the diff has no+#or-#line), so no anchor that other files cite moves. ADR-0131 is linked with the sibling spelling./0131-total-organization-ownership-no-null-organization-id.md, without a fragment, as all 25 existing links to it in the corpus are written.This is a leaf of the #15194 epic subtree.
content/docs/**(the devx lane's own card) andpackages/**are untouched.Per-file record
0029-kernel-object-ownership-…plugin-sharingrow:sys_permission_set,sys_*_permission_set0057-erp-authorization-core-…sys_position"; the path note'ssys-position.object.ts0057-system-data-lifecycle-…git grep -c -E 'sys_position|sys_permission_set|sys_capability|permission-set-projection' -- docs/adr/0057-system-data-lifecycle-and-retention.mdexits 1 (zero hits). The control is the same grep on the ERP 0057, which counts 20066-unified-authorization-modelsys_capability); D5 (sets land assys_permission_set) with "What stays unchanged"; refinement ⑨ (thesys_capabilityseed row)0086-authz-metadata-config-…sys_position_permission_set)0090-permission-model-v2-…sys_position,sys_position_permission_set); D5 (everyonebound throughsys_position_permission_set;sys_capability); D8 (sys_position_permission_set-like tables)0091-grant-lifecycle-…sys_position.delegatable)0094-sys-permission-set-pure-projectionscopetradeoff, the 2026-09-04 amendment's "one major left to live"0103-managedby-write-policy-…0126-packaged-metadata-customization-modelsys_permission_set.activeand the ledger relateactiveinto the definition's lifecycle0131-total-organization-ownership-…Left alone and listed, not noted (dated context, or text that already reads as retired):
sys_permission_set"), and D5'ssys_role_permission_set, which the status line already marks superseded (D4–D7).Facts the notes state, and where each was read (
mainat18cd410dc4)66949b7729): its own message says the objects are "no longer registered" and "Tables and rows stay for the organization-ownership migration (ADR-0131 D10)". Of the unwired modules it says "The modules stay for 7a/7b to delete". The ADR-0087 entry ispackages/spec/src/migrations/entries/semantic/18.catalog-row-objects-retired.ts.permission-set-projection.tsis still in the tree.security-plugin.tsdoes not register it, and its deletion is refactor(plugin-security,platform-objects,spec): retire the catalog seeders, the per-organization catalog machinery and the four catalog objects; Setup creation is an environment write undersingleand refused under a wall (ADR-0131 D2/D3/D5/D13) #15204 stage 7a (C3 #15204 stages 7a ∥ 7b → 8-post, build ahead: delete the permission-set projection and the position write-through that stage 8 leaves unreferenced, then the post-stage-8 catalog gates and residue #22975, open). Stage 7b (5c9bfb0d3f, PR refactor(plugin-security): delete the position write-through and the row-only position backfill (C3 stage 7b) #23302) already deleted the position write-through and the row-only backfill. None of the eleven ADRs names those two.git grep -c "this.runMutationProjector(" -- packages/metadata-protocol/src/protocol.tsanswers 7.security-catalog-echo.ts(PR fix(plugin-security): an environment kernel's security catalog serves metadata-door permission sets and positions again #23334,6d96721faa) registers the seam forpermissionandpositionand writes no row. ADR-0094's D2 note and its 2026-09-04 note both say this, so neither can be read as "the seam is gone".bootstrap-declared-permissions.tswas deleted by stage 6b-2 (c8a9783eca, PR feat(plugin-security)!: no seeder or materializer writes a sys_permission_set row; the boot seeds no row for a declared set (#15204 stage 6b-2) #22900).PositionSchemahas the keysname,label,description,permissionSets,delegatableandprotection, and no team key. The ADR-0090 D8 note depends on this.delegatable"from the security catalog by name" (delegated-admin-gate.ts). The ADR-0091 L2 note depends on this.git grep -c -E 'sys_position|sys_permission_set|sys_capability' -- 'docs/adr/*.md'lists exactly the ten numbers on this card. No other ADR names the four objects.Gates — head
abc9f1aa3d(this branch merged withorigin/main18cd410dc4)Every exit code was captured before any pipe.
pnpm check:adr-anchors,pnpm check:adr-links(758 relative link destinations underdocs/adr/, all found),pnpm check:adr-symbol-anchors(2336 anchors across 142 records, all found),pnpm check:nul-bytesandpnpm check:doc-authoring.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstacklists 19 commands. 18 exit 0.pnpm --filter @objectstack/lint run check:doc-formula-expressionsexits 3 withPREREQUISITE NOT MET(@objectstack/formulais not built). That is NOT MEASURED, and it was not built for, because no package source is in this diff.--ranreconciliation: "19 derived famil(ies) accounted for — 18 run, 1 NOT-MEASURED", exit 0.维护者速读(草稿)
改了什么
为什么改
singleand refused under a wall (ADR-0131 D2/D3/D5/D13) #15204)已在 10 月 13 日合并,这四个对象已经从系统中摘除,但上面这些 ADR 还把它们写成在用的数据表。按 AGENTS.md 第 13 条,被后来决定退役的内容,要在原 ADR 上留下修订记录。不留的话,人和 AI 读到旧 ADR,会以为这些表还在,照着写出错误的代码或元数据。风险与代价(含回滚)
席位意见
你要做的
docs/adr/**是受管路径(Tier H),需要你审阅后批准,或亲手合并。Generated by Claude Code