Skip to content

docs(adr): rewrite ADR-0146 for package-level override — customizations live in <base>.custom through a declared override (folds #28145) #28237

Closed

Description

@objectstack-fleet

epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848

Filing gate: ③ maintainer-directed task, verbatim (2026-10-30, desktop session): 「adr 146还没开始开发,可以直接改」 with 「方向定为包级覆盖:代码和 Studio 用同一机制,定制都进 .custom。」 and 「等我拍板的 8 个问题,全部同意」. ⛔ Not a claim.

Part of #28236 (P0, child N-01) · governs: ADR-0146 (rewritten in place) · lane: domain:skills (docs/adr/**, Tier H — the maintainer hand-merges) · size: M.

Business reason. Every code card of the epic changes a gate an accepted ADR pins today (ADR-0126 D1 and D4 wall 1, ADR-0131 D6, ADR-0005's five-type tier, ADR-0048 §3.3, ADR-0009 executionPinned, ADR-0141 D3). Without the record rewritten first, each implementation PR is refused by its own pin tests or argues the ruling again. ADR-0146 has no implementation yet, so the maintainer ruled to rewrite it rather than add a superseding record.

Wanted.

  1. Rewrite docs/adr/0146-*.md as the package-level override record: every customization of an installed package lives in <base>.custom; an existing item is overridden by an explicit declaration in the item body (overrides: { package, basedOn }, whole-document replace); undeclared same-name refused at publish; only items inside the dependency closure; one effective read for package-less, base-named, layered, list and export reads; flows served over the code package, rebound in one reload, ledger identity inherited, real version pinning; .custom auto-created without a prompt, dependency declared, namespace explicit <base_ns>_custom (never derived); uninstall of a base refused while its .custom exists; extension fields end in __c, reserved to .custom packages; base-field changes limited to a display-property whitelist; package-less overlay rows migrated then closed; clone kept only as "new similar"; Packaged automation retired after the ledger switch and landing counts; permission sets, positions and capabilities not overridable.
  2. Keep ADR-0146's Studio/Setup boundary (D1 catalog in Studio, D5 browse entry, D6 no fields table, D7 Setup pages); move the item toolbar ahead of customization.
  3. A supersede table: each clause of ADR-0005/0009/0048/0126/0131/0141 it overrides → the new rule → the gate and pin test that change (protocol-packaged-base-refusal.ts#refusePackagedBaseOverride, protocol-environment-rows.ts#packagelessAddress, flow-precedence.ts#resolveFlowPrecedence, run-resume.ts#resolveResumeTarget, registry.ts extension merge, namespace-prefix.ts#deriveNamespaceFromPackageId, protocol.org-scoped-write-refused.test.ts).
  4. Status-line pointers on those six records (ADR-0005's line is the model).
  5. Fold PR docs(adr): ADR-0146 — anchor the four load-bearing symbols, count two Setup pages, drop the epic label snapshot (S13–S15) #28145's three wording fixes in and close that PR.
  6. Every quote verbatim and untranslated; symbols as path#symbol anchors.

Acceptance. adr-index.mjs --check, check-adr-links.mjs, check-adr-symbol-anchors.mjs pass; the maintainer hand-merges.

Not here. Any code; the epic's other cards are cut after this merges.

Dedupe. "package-level override" open+closed: 4 hits, none on this topic. PR #28145 is folded in, not duplicated.

Links back: #28236, #28130, ADR-0146 (cdbf08d1).


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Claim: PM loop round 2 · 2026-10-31T03:03Z · maintainer jump-the-queue
    Session: session_016WV4czTS5hqnBm8k5vxKq9 (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
    Account: os-elon-musk
    Branch: claude/project-thread-j6cjuw (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Worktree: objectstack-issue-28237
    Domain: domain:skills (docs/adr/**)
    Seat: domain:skills#2 (seat 1 vacant on #7623)
    Triage basis: this card has no audit comment of its own. It is a GitHub sub-issue of #28236, so it inherits its parent's first touch (the sub-issue exception, execution-duties.md :11). The maintainer also directed it verbatim on 2026-10-31: 「adr 146 最优先」 (03:02:44Z) and 「28237 现在就插队」 (03:02:57Z). The grade and queue stay as filed (p2, pm:queue). This claim takes the card ahead of every other skills card.
    File surface:

    • docs/adr/0146-studio-designs-setup-administers-one-editor-per-item-paired-customize-package.md, rewritten in place as the package-level override record (card Wanted 1–3, 5, 6);
    • the Status lines only of docs/adr/0005-metadata-customization-overlay.md, 0009-execution-pinned-metadata.md, 0048-cross-package-metadata-collision.md, 0126-packaged-metadata-customization-model.md, 0131-total-organization-ownership-no-null-organization-id.md and 0141-inter-app-dependency-declared-checked-before-install.md (Wanted 4);
    • docs/adr/README.md, only if adr-index.mjs regenerates it.
    • Amended 2026-10-31 (contract review 6538795712, should-fix 8): the Status lines only of docs/adr/0070-package-first-authoring.md (ADR-0070 D3/D5) and docs/adr/0029-kernel-object-ownership-and-platform-objects-decomposition.md (ADR-0029 D7).

    No code. Stop on breach; explain in the report.
    Container & model: M, mode:thread, model: fable (the gates read docs/adr/** as fable), effort: xhigh. This is governed rules text, so it owes a CONTRACT_REVIEW_TIER review (fable) before the queue. Tier H by the register is expected, and the maintainer hand-merges (card Acceptance).
    Clause-②: no
    Metadata-protocol: none
    Responsibility: every code card of epic #28236 changes a gate that an accepted ADR pins today. ADR-0146 must be rewritten first as the package-level override record, with a supersede table, so the implementation PRs are not refused by their own pin tests.
    Thread-read: the card body (no comments); epic #28236 body (the maintainer's rulings 「方向定为包级覆盖…」, 「等我拍板的 8 个问题,全部同意」, 「这些卡都可以放回车队开发吧」); PR #28145 (closed unmerged, os-bill). Its three wording fixes S13–S15 are folded in by Wanted 5; the PR is already closed, so nothing is left to close.
    Premise: holds (origin/main 69ce01d7e; ADR-0146 has no implementation, per the card).
    Serial constraints cleared: no open PR touches ADR-0146 or the six Status-line ADRs at claim time. The sibling cards #28238–#28241 and #28148, already dispatched, are code-side and cut after this card merges, per the card's "Not here". The landing tier is read off the register at PR time.

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Handoff (2026-10-31): skills seat 2 is signing off at the maintainer's word 「当前任务处理完,合并后就下班」. This card is parked, not yielded. The claim stands, and whoever picks it up continues from here.

    State.

    • PR. Draft PR 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 on claude/project-thread-j6cjuw, head af70e268: 10 files under docs/adr/**, Tier H, which the maintainer hand-merges.

    • Review. Contract review round 1 at 59d2196b is a FAIL (record 6538795712). Should-fixes 1–8 are folded at af70e268, and the claim surface is amended (6538166727) to add the ADR-0070 and ADR-0029 Status lines.

    • Open must-fix. It is a maintainer ruling, now in front of Elon as 总监决裁 7 (fable decision thread; analysis /mnt/project-files/fable-director/28237-adr0146-decision-batch.md; seat write-up /mnt/project-files/skills-lane-seat2/adr0146-decisions-zh.md). It has two parts:

      • (A) the Q1 scope: an undeclared same-name item of a non-pair dependent package (D2 :201–203, D8.2 :387–390, D9.1 :410–412 and the Q1 row must say one rule);
      • (B) whether action is overridable in D2's type list, and on what condition.

      The fable recommendation is C for both. The seven "silent" items are in the same write-up.

    Next steps for whoever resumes.

    1. Relay the ruling, with Elon's message, to the card thread or a new dev.
    2. Fold it into D2, D8.2, D9.1, the Q1 row and the D2 type list.
    3. Run a delta contract review (fable) on the new head.
    4. Post the record, then the ACCEPT (Tier H: add needs-user-decision and request os-zhuang / hotlong); the maintainer hand-merges.
    5. Post the landing note.

    skip-changeset is right here, because this is a docs/adr/**-only change.

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Release: skills seat 2 signs off (the maintainer, 2026-10-31T05:34Z: 「当前任务处理完,合并后就下班」). The claim 6538166727 is released and the assignee cleared. This card waits on a maintainer ruling, so it goes to the decision box (needs-user-decision) rather than back to the queue.
    Resume-from: handoff 6539626819. Draft PR #28295 is on claude/project-thread-j6cjuw at head af70e268, with should-fixes 1–8 of review 6538795712 folded. What remains is to fold the 总监决裁 7 ruling (A: Q1 scope; B: action), then run a delta contract review, the ACCEPT, the Tier H request, and the hand-merge. Whoever resumes takes the branch as it stands, under a fresh claim.

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848

    For whoever resumes this card — recorded 2026-10-31T06:40Z. The open must-fix of contract review 6538795712 (Must-fix 1: one rule for an undeclared same-named item of a non-pair dependent package across D2 :206–209, D8.2 :396–399, D9.1 :419–421 and the Q1 row) and the action edge (Should-fix 9, D2 "Which types") are now on GitHub as decision card #28364, opened at the maintainer's request in a direct desktop session, verbatim: 「开一个决策卡」.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848
    2026-10-31T09:36Z

    Removing needs-user-decision: this card auto-closed through Fixes #28237 when #28295 merged, and the decision it waited on (#28364) is ruled and recorded (6540351677). Closing leaves no pm:* state label behind; domain:skills, area:studio and the type label stay. Cleanup was planned in the desktop PM session and confirmed by the maintainer there, verbatim: 「落卡:缺口一和三写进 N-09 的卡面(合并后切卡时),缺口二开决策卡;三处文字残留随 N-09 顺手修。」

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:studioChanging a running app without code — authoring, publish, docs and the portaldocumentationImprovements or additions to documentationdomain:skillspriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions