Repository navigation
docs(adr): rewrite ADR-0146 as the package-level override record — paired <base>.custom, one declared override shared by code and Studio; dated pointers on six Status lines - #28295
Conversation
…ed pointers on six Status lines
ADR-0146 is rewritten in place (N-01 of the package-level override epic): every customization of an installed package lives in its paired `<base>.custom` package, through one declared override (`overrides: { package, basedOn }` in the item body, whole-document replace) shared by code and Studio. D1, D5, D6 and D7 of the 2026-10-30 draft stand; D2 (in-place overlay editing) and D3 (`<base>.customize`) are replaced; D4 keeps the ledger switch on the item and reduces clone to "new similar"; D8 (one effective read), D9 (flows: served over the code package, rebound in one reload, ledger identity inherited, real version pinning first), D10 (`__c` extension fields reserved to `.custom`, display-property whitelist) and D11 (migrate package-less overlay rows, then close that write; retire the stopgaps) are new. A supersede table quotes each superseded clause verbatim and names the gate and pin test that change, as path#symbol anchors. The closed anchor-wording PR's S13-S15 are folded.
The Status lines of ADR-0005, 0009, 0048, 0126, 0131 and 0141 carry one dated "Superseded in part by ADR-0146 (2026-10-31)" pointer each, in ADR-0005's amendment style; nothing else in those records changes. ADR-0048 and ADR-0141 had a wrapped Status paragraph, joined onto one physical line so scripts/adr-index.mjs reads the pointer (words unchanged). docs/adr/README.md is regenerated by scripts/adr-index.mjs.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WV4czTS5hqnBm8k5vxKq9
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head 59d2196 · 2026-10-31T03:45Z |
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract reviewHead-sha: Inputs: card #28237 (body; Wanted 1–6; the seat's claim; no triage comment newer than the dispatch), epic #28236 (body and its comment thread: the eight agreed answers 「等我拍板的 8 个问题,全部同意」, 「四个小问题 同意」, rulings D-1 to D-8, the Not in this epic line, the two-minute check), the ruling record 6520616687, sibling cards #28238, #28239, #28240, #28241, #28148, #28149 and the parent #28130; PR #28295 (body: ① Derived judgments
② Semver levelNo release. ③ Boundary flags
④ Design judgmentRules face, docs/adr/0146, against its first consumers (the N-08 spec card, the N-09 gate card, the N-10 read card, the N-16 migration card) and against Prime Directive #13:
⑤ The seven items the record decides where it says the rulings were silentListed for the maintainer with the ADR text, the dev's choice, the alternatives a reader would weigh, and whether the item is in fact silent in the rulings. Nothing here is a ruling.
Two edges the record decides without flagging: D2's type list ( Implemented-by: VERDICT: FAIL Must-fix:
Should-fix:
|
…0 and ADR-0029; ADR-0009 pointer reads Amended Factual fixes from the contract review of the rewrite, none touching the two rulings still with the maintainer (the undeclared same-name item of a non-pair dependent; a condition on `action` as an overridable type): - D3 dependency range and merge item 1 argue from what the range governs today — read at the pair's own install or re-install (ADR-0141 D2), never on a base upgrade, which nothing intercepts (ADR-0141 D3). - D10 and merge item 7 name the third enforcement point of the `__c` reservation, the install door, so "never" is what the three points guarantee. - Supersede table gains ADR-0126 §7.1 (no same-name clone in a second package), ADR-0070 D3/D5 (the paired case) and ADR-0029 D7 (amended); the ADR-0126 pointer names §7.1. - ADR-0009's pointer reads "Amended by", since nothing in it is reversed; ADR-0146's header splits Supersedes-in-part from Amends. - The Status line names the replaced Proposed draft's PR; four verbatim quotes are made byte-equal to their sources; `packagedFlowOwner`, `FLOW_CLONE_STATUS` and `getMetaItemLayered` carry path#symbol anchors; merge item 2 is marked as already ruled by the epic. - Status-line pointers added on ADR-0070 (D3's prompt and D5's destination, paired case) and ADR-0029 (D7, amended). docs/adr/README.md regenerated. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4czTS5hqnBm8k5vxKq9
|
domain:skills#1 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract-review-claim: |
|
domain:skills#2 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract reviewServed-tier: Inputs: PR #28295 (body, all three comments, the file list of 10 files, the two commits over the merge-base 69ce01d), the prior record 6538795712 (FAIL on 59d2196: one must-fix, nine should-fixes), card #28237 (the seat's claim 6538166727 as amended for ADR-0070 and ADR-0029, and the seat's parking hand-off 6539626819 naming the open ruling), the 41 check-runs on this head (read 2026-10-31T05:53Z: all 41 runs completed, none failed, none cancelled, none in progress; success: Auto Label, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Governed Surface Queue Guard, Lint & Repo Gates, Lint · CI, release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · scoped · query-options erasure, Lint · scoped · slot lookup & corpus, Lint · scoped · tooling self-tests, PR-body guards (claim · duplicate · Part-of · single-writer path), Plan Test Core shards, Test Core, Test Core (all 8), Test UI, Type Check · consumer gates, Type Check · debt ledger, Type Check · source gates, Type Check · workspace, TypeScript Type Check, filter; skipped: 18.x upgrade harness (opt-in), Build & E2E UI, Build Core, Build Docs, Build UI Deps, Check Changeset, Dogfood Regression Gate (matrix shard/3), Dogfood Verify CLI, Lint UI, Live E2E UI, Packed-tarball smoke (opt-in), Schedule gate · skip when a green push run covers the commit, Temporal Conformance (live PG + MySQL), Test UI (matrix shard/16), Type Check UI, UI Published Artifacts), and the tree at this head and at origin/main for every symbol the fix commit anchors. This is a delta review of record 6538795712: the fix commit af70e26 was read whole against 59d2196 (six files, 68 insertions, 48 deletions), the eight Status lines were compared with the base after removing the pointer, and the head was checked against today's ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Verdict reasoning. Eight of the nine should-fixes are folded exactly, the anchors resolve, the Status lines carry nothing but their pointers, the index regenerates and every check is green. The one must-fix is open by a ruling the maintainer has in hand, so the record cannot yet pass; when the ruling is folded, this record's ① carries over and only D2, D8.2, D9.1, the Q1 row and the D2 type list need reading. Implemented-by: VERDICT: FAIL Must-fix:
Should-fix:
|
…ross the dependency closure, action after its ledger switch Decision card #28364 (ruling record 6540351677): an undeclared same-name item of any dependent package inside a base's dependency closure is refused at publish, for every overridable type, with declare-or-rename as the fix; any closure package may declare the override, one declarer per base item; packages with no dependency relation keep ADR-0048 §3.3/§3.4. D2, D8 item 2, D9 item 1, the Q1 row and the D2 type list now say that one rule. `action` is listed with its condition: overridable after the action ledger switch, under D9 conditions 1–3, no door in this epic. Supersede table gains the ADR-0048 §3.4 row; the ADR-0048, ADR-0126 and ADR-0005 Status pointers follow. Decided items 1 and 4 carry the maintainer's reading (the range's payoff under ADR-0141 D3; the whitelist is the N-08 closed constant the write gate reads). N-09 gains the count-first precondition. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4czTS5hqnBm8k5vxKq9
|
domain:skills#2 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract-review-claim: |
Contract reviewServed-tier: Inputs: PR #28295 (body, the four prior comments 6538584753 / 6538795712 / 6539702411 / 6539782537, the file list of 10 files, the three commits over merge-base 69ce01d), records 6538795712 (FAIL on 59d2196) and 6539782537 (FAIL on af70e26: must-fix 1 and should-fix 1 open by a ruling), decision card #28364 (body; the ruling record 6540351677, which this session wrote from the maintainer's messages of 2026-10-31 06:48–06:56Z in the fable 决裁 thread — the five messages are the ruling's source), card #28237 (the hand-off 6539626819), the diff af70e26..04aa72e read whole (4 files, +73 / −38), the 27 workflow runs on the branch (8 on this head, read 07:13Z), ① Derived judgments
② Semver levelNo release; ③ Boundary flags
④ Design judgmentRules face, docs/adr/0146, against its first consumers (N-09 the write gate, N-10 the read, N-08 the spec constants, N-11 the flow override) and Prime Directive #13:
Implemented-by: VERDICT: PASS Must-fix: none. Should-fix:
Analysis-tier: ceiling Generated by Claude Code |
|
Seat record — ACCEPT · head Contract review of record on this head: PASS, comment 6540531642 (delta of 6539782537; 维护者速读
席位意见:可合。被取代的八份 ADR 只动 Status 行、正文一字未动(diff 核过);裁决三句引文与您的原话逐字一致。 席位核对
ACCEPT → PR #28295 comment 6540531642 (contract review PASS) Analysis-tier: ceiling Generated by Claude Code |
|
domain:skills#2 · os-tesla · session_01L9qibw58ehQ2gRHP2h2Puz Contract reviewServed-tier: Inputs: PR #28295 (body, the four prior comments, the file list of 10 files, the three commits over the merge-base 69ce01d, the fold commit read whole against af70e26: four files, 73 insertions, 38 deletions), the prior records 6538795712 (FAIL on 59d2196) and 6539782537 (FAIL on af70e26: one must-fix and one should-fix open on a ruling), decision card #28364 (body; the ruling record 6540351677 with its five riders on question 1, its question-2 answer C and its reading of the seven silent items), card #28237 (hotlong's note 6540196086 pointing the holder at #28364), the 41 check-runs on this head (read 2026-10-31T07:25Z: all 41 runs completed, none failed, none cancelled, none in progress; success: Auto Label, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Governed Surface Queue Guard, Lint & Repo Gates, Lint · CI, release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · scoped · query-options erasure, Lint · scoped · slot lookup & corpus, Lint · scoped · tooling self-tests, PR-body guards (claim · duplicate · Part-of · single-writer path), Plan Test Core shards, Test Core, Test Core (all 8), Test UI, Type Check · consumer gates, Type Check · debt ledger, Type Check · source gates, Type Check · workspace, TypeScript Type Check, filter; skipped: 18.x upgrade harness (opt-in), Build & E2E UI, Build Core, Build Docs, Build UI Deps, Check Changeset, Dogfood Regression Gate (matrix shard/3), Dogfood Verify CLI, Lint UI, Live E2E UI, Packed-tarball smoke (opt-in), Schedule gate · skip when a green push run covers the commit, Temporal Conformance (live PG + MySQL), Test UI (matrix shard/16), Type Check UI, UI Published Artifacts), and the tree on ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Verdict reasoning. The two open items of the prior record were waiting on one ruling; the ruling landed and is folded sentence by sentence in the places it named, the quotations match their sources, the pointers and the table follow the new scope, the anchors resolve and every check is green. The one defect found is a tense in the Implemented-by: VERDICT: PASS Should-fix:
|
Requested by Elon · project thread
domain:skills#2 · os-elon-musk · session_016WV4czTS5hqnBm8k5vxKq9
Fixes #28237
Part of #28236
Clause-②: no · Metadata-protocol: none
维护者速读
<base>.custom;「改原有的」= 在.custom同名项正文里显式声明overrides: { package, basedOn },整份替换;写代码和 Studio 用同一机制,定制随包导出、进 git、跨环境部署。D1/D5/D6/D7 的 Studio/Setup 边界保留,「Studio 项工具栏」(N-05)排在所有定制卡之前。path#symbol锚点,门禁全部可解析)。六份记录只在 Status 行加带日期的指针,正文一字未动。docs/adr/(ADR-0146、六条 Status 行、重新生成的 README),不含代码、不含 changeset;一切机制都是 epic [Epic] Package-level override: every customization of an installed package lives in its paired <base>.custom package, one declared override shared by code and Studio (supersedes #28130) #28236 合并后再切卡。回滚 = revert 本 PR。^major);卸载拒绝沿用uninstallPackage现有的 409 形状。What changes
docs/adr/0146-…paired-customize-package.md— rewritten in place as the package-level override record (N-01 of epic [Epic] Package-level override: every customization of an installed package lives in its paired <base>.custom package, one declared override shared by code and Studio (supersedes #28130) #28236). D1, D5, D6, D7 of the 2026-10-30 draft stand; D2 (in-place overlay editing) and D3 (<base>.customize) are replaced by the declared override and the paired<base>.custompackage; D4 keeps the ledger switch and reduces clone to "new similar"; D8 (one effective read), D9 (flows: served over the code package, rebound in one reload, ledger identity inherited, real version pinning first), D10 (__cextension fields reserved to.custom, display-property whitelist) and D11 (migrate package-less overlay rows, then close the write; retire the stopgaps) are new. A supersede table quotes each superseded clause verbatim and names the gate and pin test that change, aspath#symbolanchors. The eight agreed questions are tabled. Rollout follows the epic's N-numbered plan, item toolbar first.deriveNamespaceFromPackageId,refuseUngrantedActivationWrite,useTenancyPosture,walledCatalogReadOnlywith its posture-and-rung caveat), D7 counts the two Setup pages and places queue membership under ADR-0142, and the Rollout opener carries no label snapshot.· **Superseded in part by [ADR-0146](…)** (2026-10-31) — CLAUSE, in ADR-0005's amendment style. Nothing else in those records changes (Prime Directive [WIP] Add Chinese version of the documentation #13). ADR-0048 and ADR-0141 had a wrapped Status paragraph; it is joined onto one physical line soscripts/adr-index.mjsreads the pointer (words unchanged).docs/adr/README.md— regenerated bynode scripts/adr-index.mjs: ADR-0146 reads Accepted with its six "Supersedes" refs; the six records gain "Superseded by: ADR-0146".Why
Maintainer rulings of 2026-10-30 and 2026-10-31 on epic #28236, verbatim in the record: 「方向定为包级覆盖:代码和 Studio 用同一机制,定制都进 .custom。」 · 「同意 后缀改成 .custom」 · 「等我拍板的 8 个问题,全部同意」 · 「扩展字段用 __c 后缀,只有 .custom 包能用。」 · 「adr 146还没开始开发,可以直接改」. The 2026-10-30 walkthrough measured the four defects the record's Context lists (#28238, #28148, #28149 at
d6c0a75f1a).Verification
origin/main69ce01d)node scripts/adr-index.mjs --checknode scripts/check-adr-links.mjsnode scripts/check-adr-symbol-anchors.mjsEvery quote in the record was re-checked against its source: the epic body and checklist comment, #28148, the six superseded records (each superseded clause is a verbatim substring of its record) and the 2026-10-30 draft's row rulings.
node scripts/pm/dispatch-gates.mjs --commandsderived the gate families for this change set; each was run in a fresh worktree afterpnpm install --frozen-lockfile --ignore-scripts, exit codes recorded and reconciled with--ran(see the report in the project files). All 21 derived families ran to exit 0 and--ranreconciles 21 of 21, before and after the commit (thecheck:doc-formula-expressionsgate first exited 3 — prerequisite, the@objectstack/formulaand@objectstack/lintworkspace packages not built — and ran to 0 afterpnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint).No code, no changeset (
skip-changeset).Human Minimum
🤖 Generated with Claude Code
https://claude.ai/code/session_016WV4czTS5hqnBm8k5vxKq9