Repository navigation
docs(adr): ADR-0131 dated notes for the 18.x line — release scope, D1 as ruled, the D9 lean-embedding exception and its boundaries (Tier H) - #25149
Conversation
… as ruled, the D9 lean-embedding exception and its boundaries D1 takes the wording ruled on #25134 (6328195425, letter A), with the accepted text quoted in its Amended note. Dated notes record the 18.0.0 release scope (6291577585, 6323222024), D1 at CREATE TABLE (#24940), the organization delete under ruling B (#25016), D2's deploymentWide marker (#24828), D5's last-admin guard (#25141), D7's attribution NULL arm (#24825), D8's implemented gate (#24880, #25140) and its one uncertified residue (6325596117), and D9's lean-embedding exception under ruling A on #25133 (6328987873). #25133's fix and #25134's advisory are in flight and cited by card. Refs #24897 Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQCyrGmMy6kwav9XCzAuQ9
…number check-adr-symbol-anchors refuses a line-number anchor. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQCyrGmMy6kwav9XCzAuQ9
Contract reviewServed-tier: Read-only. Fetched ① Derived judgmentsItem 1, the nine notes, each sentence against
Item 2, amended D1: MATCHES. The paragraph under 「A 让 D1 变成的样子」 in #25134's card is a byte-exact prefix of the new D1; the only addition is the original's middle sentence ("An object whose rows belong to no organization declares … and has no column."), kept verbatim. Ruling Item 3, D6 regime C: STALE on Item 4, consistency: NO CONTRADICTION introduced. "NULL on single-tenant", "later release" and "18.1" occur nowhere in the branch file. "nullable tenant column" occurs only in the new text and in the unchanged D5 amendment ("a reserved nullable tenant column is the shape D1 forbids"), which still agrees with the amended D1 (NULL is not a state). "it has not shipped" survives in the D6 regime C note (item 3) and in the four D7 notes, and release-scope item 3 now says in so many words that those four describe stages 18.0.0 carries. The 2026-10-19 scope note's items 1 to 3 are explicitly re-read by the new release-scope note. D9's main text and the new exception note, and D8's main text and the residue note, are framed as rule plus recorded exception, which is what rulings ② Semver levelNo package changes; docs-only ADR text. No changeset is owed and the PR carries ③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #24897
Clause-②: no
Metadata-protocol: none
ADR text only. It records shipped behaviour and the rulings of record; no code moves. One file:
docs/adr/0131-total-organization-ownership-no-null-organization-id.md. Tier H (docs/adr/**): the maintainer approves. This PR stays a draft, and is not enqueued, until #25133's fix and #25134'sos migrate planadvisory have merged. Their notes then cite the merge commits.What the ADR now records
06cab4849a) carries steps 1–6, including the walled lift (#24667) and the open ceremony (#24681), plus step 7 parts 7a-1, 7a-3, 7b-3 and 7c. 7a-2, 7b-0, 7b-1+7b-2 and 7z landed after the GA. 18.0.0-born stores are birth-marked at generation 1. One line tells the reader how to take the 2026-10-19 scope note's items 1–3 now.no-organization-objectstores NULL; the counter keys__global__) and its three boundaries: 7b-0's NOT NULL at CREATE TABLE; every productionos serve/os startthat composes no organization object is refused, whether or not--server(#25133, in flight); so only programmatic embedding and--devkeep it.5e9b100743; #24845df8bb40a03Amendednote that also records the ruling's three bindings. One of them is thatos migrate planlists the still-nullable tenant columns as an advisory (#25134's execution, in flight). A dated note records the tenant column NOT NULL at CREATE TABLE from 7b-0 on.deploymentWidemarker.7cacad5348; #25140check-tenant-chokepointrefuses an IS NULL arm, and #25140 aligned it forwhere(col, 'is not', null).0091d845e2; #2514060b42cd0b7; review 6287357347 R1sys_audit_log.tenant_idkeeps its NULL arm in the retention pass, by design.admin_full_accessgrant. The organization-less anchor, the guard's only fail-open, is retired.abc25a3536(#24883, seat decision 6324268472)organizationOutOfWriteReachanswers "in reach" for an organization-less row that D8 makes unreachable.688052e147The status line gains one
Amended (2026-10-22)entry naming the D1 change and the notes.Verification
dispatch-gates --commands, then each command run with its exit code captured before any pipe.--ranreconciled 20 derived, 20 run, 0 NOT-MEASURED. The first run found one real finding:check-adr-symbol-anchorsrefused astorage-routes.ts:761line anchor, and it now cites symbols.check:doc-formula-expressionsfirst exited 3 because@objectstack/formulawas not built; it passed after the build.node scripts/pm/check-governed-merges.mjs --branch origin/claude/issue-24897-adr-0131-dated-notes: GOVERNED, Tier H,docs/adr/**×1, 202 changed lines.origin/main459afea1f6: every PR it cites is merged with the stated merge commit. The code facts were read in the tree: the gate's spellings,deploymentWide,ATTRIBUTION_PARTITION_COLUMNS, the driver's NOT NULL, andorganizationOutOfWriteReach. The four D7-note objects (sys_identity_email,sys_platform_setting_audit,sys_secret,sys_flow_credential) declaretenant: falseat06cab4849a.Acceptance notes
sharing_ruleregime C still ends "it has not shipped". It was not checked againstmain.skip-changeset).Generated by Claude Code