Repository navigation
docs(adr): ADR-0146 amended in place — an upgrade plan may report a .custom override that hides a vendor change, as advice only - #30899
Conversation
…custom override that hides a vendor change, as advice only Decision D2 on epic objectstack-ai/cloud#3652 (ruling record 6681380041). basedOn stays recorded and never gates; nothing is refused, merged or rebased on the finding. Amends D2, D6, the Supersede table's section 9 row, Consequences and merge question 2; adds the dated status note and a Refs entry. pnpm adr:index regenerated: the index is unchanged. Claude-Session: https://claude.ai/code/session_01Q4EjjRhUZjdy8VXs6Kkur2 Co-authored-by: Claude <noreply@anthropic.com>
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 Contract-review-claim: session_01Q4EjjRhUZjdy8VXs6Kkur2 · head 561b3b2 · 2026-11-06T10:04Z Face: governed path |
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 Contract reviewServed-tier: Read at 2026-11-06T10:12Z: card #30881 (body and both comments), the ruling record ① Derived judgmentsThe amendment matches the ruling. The ruling is one sentence: the upgrade plan may report an override that hides a vendor change, as advice only, never a gate. The head delivers exactly that, in eight hunks of one file:
The D6 "Not done" bullet ( Gates. Every required context the head carries is green: ② Semver levelNo changeset expected, and none present — correct. ③ Boundary flags
④ Design judgmentI tried to read the amended D2 as licensing a gate. Four attacks, none gets through; two leave wording that should be tightened.
Against its first consumer (#30886's plan finding, on #30884's plan) and its execution plan (the Refs bullet routes the code to #30886, blocked-by this card and #30884), the amendment holds: it charters exactly the advice the ruling asked for and nothing the ruling withheld, and it leaves every refusal where the other rulings (Q3) put it. Findings: should-fix ×4 (follow-up card on Implemented-by: VERDICT: PASS |
…e three negations on both findings Contract review 6682453235 should-fixes: D2 names the advisory class the plan's refusal never reads and no finding-set token covers, and the no-refusal / no-token / no-automatic-merge negations move from basedOn onto the per-finding sentence. Status note unchanged in size; the index row for ADR-0146 is unchanged after pnpm adr:index. Claude-Session: https://claude.ai/code/session_01Q4EjjRhUZjdy8VXs6Kkur2 Co-authored-by: Claude <noreply@anthropic.com>
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 Contract reviewServed-tier: Delta review of ① Derived judgmentsBoth wording should-fixes from
Nothing else moved. The compare touches one hunk; the status note ( The status note without "no token" — acceptable as is, not a should-fix. The status line is a dated pointer, not the rule: it names what moved and sends the reader to D2, D6, the §9 row, Consequences and merge question 2, and D2 is where the three negations bind. Merge question 2 ("refuses nothing") and the D6 bullet ("refuses, merges and rebases nothing") are the same kind of pointer and were accepted at Gates on the new head. Every required context the head carries is green: ② Semver levelUnchanged from ③ Boundary flags
④ Design judgmentRe-run against the amended D2: the four attacks from Implemented-by: VERDICT: PASS |
|
repo:cloud#3 · hotlong · session_01Q4EjjRhUZjdy8VXs6Kkur2 维护者速读
席位意见: 建议合并。完整复核 PASS 6682453235(head 席位核对 · ACCEPT(Tier H,等维护者合并)· 2026-11-06T11:20ZHead-sha:
|
Fixes #30881
Clause-②: no
Metadata-protocol: none
维护者速读
.custom覆盖挡住了本次升级对同名项的修改」,以及basedOn与已安装版本不一致的覆盖。basedOn不被读取」,挡住了后续的漂移提示卡(On a base package upgrade, list each<base>.customoverride whose base item the upgrade changed — an override that now hides a vendor change (advisory; epic cloud#3652 D2, after the ADR-0146 amendment, card 06) #30886)。basedOn仍然「只记录、永不拦截」,不拒绝安装、不自动合并、不自动 rebase。回滚 = revert 这一个提交。docs/adr/0146-…md的 D2 段(basedOn那一句,风险最高:它定义了提示的两种情形 a/b);其次 D6 的「Not done」一条和 Consequences 第三条。git diff origin/main -- docs/adr/0146-*应只见 7 处文字改动 + 1 条 Refs;pnpm check:adr-index应打印docs/adr/README.md is current。What changes
ADR-0146 is amended in place for decision D2 on epic objectstack-ai/cloud#3652 (ruling record
6681380041, maintainer, verbatim: 「修订为允许只提示(推荐)」). A base's upgrade plan may list, as advisory findings, (a) a.customitem whose declared override names a base item the upgrade changes, and (b) an override whosebasedOnis not the installed base'smanifest.version.basedOnstays recorded and never gates: no refusal, no token, no automatic merge, rebase or rewrite. Whole-document replace, ADR-0141 D3's deferral and merge question 1's^MAJORreasoning are unchanged.The diff touches only
docs/adr/0146-studio-designs-setup-administers-one-editor-per-item-paired-customize-package.md.pnpm adr:indexwas regenerated and wrote a byte-identicaldocs/adr/README.md(the index shows a truncated status prefix, which this amendment does not reach), so the README is not in the diff.Before / after of each amended sentence
d55acb78):23, appended)6681380041, maintainer, verbatim: 「修订为允许只提示(推荐)」): a base's upgrade plan may report, as advice, each.customoverride that hides a vendor change;basedOnstill never gates, and nothing is refused, merged or rebased on the finding (D2, D6, the Supersede table's §9 row, Consequences, merge question 2). It lands by the maintainer's hand-merge of the PR cut from #30881.":210-212)basedOnis recorded, not judged: no door compares it with the installed base's version, no upgrade diff is produced, and nothing is refused on it (epic #28236, …recorded only)."basedOnis recorded and never gates (epic #28236, …recorded only). One reader is admitted, as advice (amended 2026-11-06, …): a base's upgrade plan … may list as advisory findings (a) a.customitem whose declared override names a base item the upgrade changes between the installed and the new version ("this override hides a vendor change"), and (b) an override whosebasedOnis not the installed base'smanifest.version. On either finding no door refuses, no token is asked, and nothing is merged, rebased or rewritten automatically; the upgrade proceeds as it would without it, and re-basing stays the customer's act. The plan carries both findings in an advisory class that its refusal never reads and that no finding-set token covers, so neither becomes a gate by sharing a response with a refusing finding. The finding is not the base-upgrade interception ADR-0141 D3 defers, because it refuses nothing, and D3's^MAJORreasoning (merge question 1) is unchanged.":262):393) — not named by the cardbasedOnjudgement (D2, D4)."basedOn(D2, D4) — the upgrade plan's advisory finding (D2, amended 2026-11-06) refuses, merges and rebases nothing.":563):600-601):679-681)basedOnis recorded and never judged — … no card readsbasedOnas a gate (D2)."basedOnis recorded and never gates — … no card readsbasedOnas a gate (D2). One reader is admitted, as advice (amended 2026-11-06, …): the upgrade plan's finding of D2, which lists an override whose base item the upgrade changes or whosebasedOnis not the installed base version, and refuses nothing."Unchanged on purpose: D3's dependency-range bullet ("where
basedOnis read by a human") and merge question 1 (the^MAJORreasoning), per the card's item 6; the Supersede row's Gate and pin column (the finding's code is card #30886's).Acceptance notes
basedOnjudgement") it would contradict the amended D2 inside the same record; the change keeps it as narrow as the ruling (no gate, no field-level diff).scripts/adr-index.mjsreads header fields from a record's first 40 lines only (HEADER_WINDOW = 40). A status note that pushes**Supersedes in part**past line 40 makes the regenerated index silently empty that record's Supersedes cell, andpnpm check:adr-indexstill exits 0 because its--reportnever fails. This PR keeps the status note to 3 lines: ADR-0146's Supersedes line sits at:38and its index row is unchanged (zerodocs/adr/README.mddiff afterpnpm adr:index). The producer fix is scripts/adr-index.mjs reads header fields only from an ADR's first 40 lines, so a longer status note silently empties the Supersedes cell while check:adr-index still passes #30916, a separate non-governed card, not part of this Tier H PR.docs/adr/0126-packaged-metadata-customization-model.md:3(its status-line pointer: "diff-vs-base and the skip-report stay deferred");skills/objectstack-platform/evals/config-plugins-ops.json:169("basedOnrecorded and never judged").basedOnyet — editing them before On a base package upgrade, list each<base>.customoverride whose base item the upgrade changed — an override that now hides a vendor change (advisory; epic cloud#3652 D2, after the ADR-0146 amendment, card 06) #30886 lands would advertise an undelivered capability):content/docs/api/metadata-api.mdx:105,content/docs/concepts/metadata-lifecycle.mdx:121.<base>.customoverride whose base item the upgrade changed — an override that now hides a vendor change (advisory; epic cloud#3652 D2, after the ADR-0146 amendment, card 06) #30886's surface):packages/spec/src/kernel/override-declaration.zod.ts:98,:137,:141and thecontent/docs/references/**pages generated from it;packages/metadata-protocol/src/served-override.ts:35,protocol-packaged-base-refusal.ts:1016.docs/adr/**publishes nothing;skip-changesetis declared with this PR.docs/adr/**is a governed surface (Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14). This PR stays a draft; no seat readies it, requests review, queues it or arms auto-merge.Verification
All on head
9647da16(objectstack), gates fromnode scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands(the same 21 families as at561b3b2d), exit codes captured before any pipe.Derived gate families — 21 of 21 run locally, all exit 0; plus check:pm-governed-prose
No tests, typecheck or dogfood: the diff touches no package, and the title carries no
!.Generated by Claude Code