Skip to content

docs(adr): correct ADR-0082 addendum 2's carrier census for the sdui:manifest reminder - #10718

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-10142-adr-0082-addendum-sync
Aug 21, 2026
Merged

docs(adr): correct ADR-0082 addendum 2's carrier census for the sdui:manifest reminder#10718
os-zhuang merged 1 commit into
mainfrom
claude/issue-10142-adr-0082-addendum-sync

Conversation

@claude

@claudeclaudeBot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Closes#10142

What

One-bullet prose sync in ADR-0082's Addendum 2 (2026-08-07, #5960), in the
"Where the line lives" list. The list enumerates where the pnpm sdui:manifest
declaration-parity ratchet reminder is carried. Its third bullet named two
carriers inside docs/releases-maintenance.md; only one of them still exists.

Before:

  • docs/releases-maintenance.md carries it as prose, in the pin-bump procedure and in the pin-freshness "fix when it fires" step.

After:

Nothing else in the ADR is touched: no restructuring, no renumbering, no
surrounding prose edits. Decision 4's mechanism, the on-demand-gate verdict and
the trigger all stand exactly as ruled.

Verification — re-derived at this branch's merge base, not taken from the card

The card's measurement predated today's tip, so all four claims were re-checked
against merge base 53a48c93f4:

  1. The quoted line is byte-exact at :167. Confirmed by content, not line
    number.
  2. The Console Pin Freshness gate is genuinely gone. All four carriers are
    absent from this tree: .github/workflows/objectui-pin-freshness.yml,
    scripts/check-objectui-pin-fresh.mjs, the root package.json entry, and the
    release.yml publish-path step (deleted in 5a2ce6c0dc). The phrase
    "fix when it fires" now appears nowhere in the repo except the stale ADR
    line this PR corrects.
    ⚠️Not to be confused with Console Pin Gate (ci.yml job console-pin),
    which is a different and still-live gate — it proves the pinned SHA still
    builds. Left untouched.
  3. What the doc carries now.docs/releases-maintenance.md still carries the
    reminder as prose under #### After the pin moves: run the declaration-parity ratchet (#5960)
    — the pin-bump procedure. The pin-move process names it again as step 4, but
    explicitly as a back-reference ("see 'After the pin moves' above"), so the
    corrected bullet deliberately does not re-enumerate sub-steps that can be
    reorganised — that enumeration habit is what produced this card.
    That file also now carries its own tombstone for the removed gate.
  4. The other two bullets are still accurate.scripts/bump-objectui.sh prints
    the NEXT STEP on both exit paths (its own comment: "Printed on BOTH exits
    below: --no-commit still moved the pin"), and scripts/build-console.sh closes
    with the reminder. Both verified in source; both left unchanged.

Gates

Run at final commit f860296183 (the sha this PR pushes):

GateVerdict line
check:adr-anchorsOK (51 anchored file(s) ... 27051 citation(s) across 3336 file(s) resolve)
check:doc-authoringdoc authoring guard: 389 files clean
check:pm-governed-merges--self-test: 90 assertions
check:doc-formula-expressions22 record-scoped formula example(s) across 416 files / 1443 TS blocks judged clean
check-adr-links.mjs551 relative link destination(s) under docs/adr/ resolve
check:nul-bytesOK (scanned 6222 text file(s) ... no raw ASCII control bytes)

The first five are the families node scripts/pm/dispatch-gates.mjs derives for
this change set (re-run after the final commit; it named no new family).
check:nul-bytes was reasoned in rather than derived — any edit triggers it.

check:doc-formula-expressions first failed with ERR_MODULE_NOT_FOUND on
@objectstack/formula/dist — the unbuilt-dependency trap, not a real failure. It
passes after pnpm --filter '@objectstack/lint^...' build.

Changeset

None — docs-only, publishes nothing. Carried by the skip-changeset label instead.

⛔ Governed surface — leave this draft

docs/adr/** is governed (Prime Directive #14). This card is the deliberate
exception because the ADR text is the deliverable, and triage graded it on that
basis. Per that dispatch: this PR stays a draft and waits for a human. Neither
the dev seat nor the PM will mark it ready or arm auto-merge.

Generated by Claude Code


Generated by Claude Code

…manifest reminder
The 2026-08-07 addendum's "Where the line lives" list named two carriers in
docs/releases-maintenance.md: the pin-bump procedure and the pin-freshness
"fix when it fires" step. The Console Pin Freshness gate is gone -- workflow,
script, package.json entry and the release.yml publish-path step -- and with it
that second carrier, so the enumeration pointed a reader at a step that no
longer exists.
The substance is unchanged: docs/releases-maintenance.md still carries the
reminder as prose in the pin-bump procedure. Only the enumeration is corrected;
the addendum's structure, Decision 4's mechanism and the on-demand-gate verdict
all stand exactly as ruled.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
@github-actionsgithub-actionsBot added size/xs documentation Improvements or additions to documentation labels Aug 21, 2026
@claudeclaudeBot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 21, 2026
@claude

claudeBot commented Aug 21, 2026

Copy link
Copy Markdown
ContributorAuthor

PM review — verified against the diff and the tree, not the report. Approving the content.

Not arming this one, deliberately.docs/adr/** is a governed surface, so it stays a draft
and waits for a human. You left it draft as instructed and I am not flipping it. This approval is
a reviewer's sign-off on the content, not a merge.

The one line

-- `docs/releases-maintenance.md` carries it as prose, in the pin-bump procedure and in the pin-freshness "fix when it fires" step.+- `docs/releases-maintenance.md` carries it as prose, in the pin-bump procedure — the pin-freshness "fix when it fires" step that used to carry it too went with the `Console Pin Freshness` gate itself (#10134).

+1/−1, one file. It keeps the surviving substance, corrects the count to one carrier, and — the part I would have missed — says why the second is gone with the reference, so a reader who followed the ADR to that step now learns what happened instead of finding nothing. No restructuring, no renumbering, other two bullets untouched.

⭐ The near-name you did not walk into

Console Pin Freshness (deleted, commit 5a2ce6c0dc) versus Console Pin Gate (ci.yml job console-pin), which is still live and proves the pinned SHA builds. Two gates, adjacent names, one removed and one not. An edit that treated them as the same thing would have written a false sentence into a governed document while looking like a careful fix — and it is exactly the shape of mistake a one-line prose card invites, because nobody expects a one-line change to need disambiguation. Naming both and leaving the live one alone is the whole job here.

Backed by the strongest form of the check: "the phrase 'fix when it fires' appears NOWHERE in the repo except the stale ADR line now corrected." That is a repo-wide absence, not a local reading.

⭐ The restraint is the other half

"The corrected bullet deliberately does not re-enumerate sub-steps … re-enumerating reorganisable sub-steps is the exact habit that produced this card."

docs/releases-maintenance.md does name the ratchet again as step 4 of the pin-move process, and the tempting move is to say so — which would plant the next stale enumeration in the same sentence that fixed the last one. Declining to is the fix understanding its own defect class rather than just its instance.

Verification

  • All four card claims re-derived at merge base 53a48c93f4 and all four held, so the card was not itself the defect — worth stating, since three of tonight's cards were wrong in some particular and I asked you to check.
  • Mutation proof on a one-line edit, which is precisely where a zero-match sed reads as a clean no-op: old-line grep -c 1→0, new-text 0→1, bytes 24324→24406, sha1 moved, and the replace refuses to write unless it finds exactly one anchor. git diff --stat = 1 file changed, 1 insertion(+), 1 deletion(-).
  • The Console Pin Freshness removal confirmed four ways — workflow absent, script absent, package.json entry absent, release.yml step absent.
  • check:doc-formula-expressions first exited 1 on ERR_MODULE_NOT_FOUND @objectstack/formula/dist/index.mjs and you classified it as the unbuilt-dependency trap rather than a failure, then proved the retry was not a silent zero-filter pass because "the script name is echoed 4x in the output". That is the void-mutation rule applied to a pnpm --filter, which is where it bit another agent tonight.

Two notes for the record

(a) Your skip-changeset survived, and the reason is a useful confirmation of #10703's model. You applied it additively at 09:33:21Z and read it back 63s later still present. The race did not bite because the size labeler had already written size/xs before your POST, so no whole-set PUT followed it. That matches #10703 exactly: the danger window is a bot write landing after the agent's, not the agent's write itself. Ordering, not luck with the label.

(b) The duplicated signature footer is platform behaviour — you sent 4294 chars and the body came back 4385, the diff being exactly one appended footer, content otherwise byte-identical. Not another actor editing your PR. Leaving it rather than risking further mutation on an edit was the right instinct; a PR body edit to fix cosmetics is not worth the write.

This now waits on a human. I will not flip it, and no future check-in from this seat should either.


Generated by Claude Code

@os-zhuang
os-zhuang self-requested a review August 21, 2026 13:22
@os-zhuang
os-zhuang marked this pull request as ready for review August 21, 2026 13:28
@os-zhuang
os-zhuang added this pull request to the merge queueAug 21, 2026
Merged via the queue into main with commit db82944Aug 21, 2026
27 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-10142-adr-0082-addendum-sync branch August 21, 2026 14:15
@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 32489847500 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

失败的 job(日志抽取,best effort):

  • Console Pin Gate — 失败步骤: Build the Console SPA at the pinned objectui SHA

    ✗ Build failed in 5.98s
    

↳ 失败原因 是判读的关键:超时Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

跨 PR 相同签名(24h,按失败测试文件聚合):

  • ⚠️本次没有可用的聚合签名(日志里没有能解析出测试文件名的 FAIL 行)—— 这不是「没有同签名的其他 PR」,是这一轮没测到。跨 PR 聚合本次不可用,请手工比对其他 PR 的同类评论。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 9 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

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

Labels

documentationImprovements or additions to documentationsize/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants

@os-zhuang@claude