Skip to content

docs(adr): mark ADR-0094 D2's env-overlay cross-reference as retired, pointing at D5-R - #8291

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-7351-adr-0094-d2-pointer
Aug 13, 2026
Merged

docs(adr): mark ADR-0094 D2's env-overlay cross-reference as retired, pointing at D5-R#8291
os-zhuang merged 1 commit into
mainfrom
claude/issue-7351-adr-0094-d2-pointer

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes#7351 — this is the docs/adr half. The card's other two sites (the dogfood
test headers under packages/qa) ship in #8290, which should land first; the two PRs
are independent and neither blocks the other.

⚠️Maintainer-merge only. This PR's diff touches docs/adr/**, so per the
2026-08-08 maintainer ruling no AI seat merges it, queues it, or arms auto-merge on it —
it waits for the maintainer. That guardrail is exactly why this half is split out: a
mixed diff would have held the packages/qa half hostage to a human merge it does not
need.

What was wrong

ADR-0094's D5 was retired on 2026-08-09 (D5-R, #6858 / PR #6962) after #6483 / PR #6608
rolled permission back to allowOrgOverride: false. D5's own heading has carried
RETIRED 2026-08-09 — see D5-R ever since.

The D2 section, however, still restated that retired direction as a live
parenthetical, with no retirement marker:

(see D5 — an env overlay is the standard customization of a packaged set);

D2 is a section a reader reaches before D5, so the ADR contradicted itself inside one
document. Low harm — the pointer lands on a section whose title says RETIRED — but it is
the last live-voiced copy of the direction outside plugin-security (swept by PR #7346).

What changed

One parenthetical. It now names D5-R, marks the direction retired, and states what
actually follows for the projector: an artifact-backed set normally has no overlay layer
left to contribute to the effective body. The phrasing follows the idiom D3's table row
already uses — "Since D5-R this row describes a path that is normally empty".

Deliberately not touched: D5's preserved body, its heading, and the historical record
around it. The retirement is recorded as history on purpose, and rewriting ADR history was
explicitly out of scope. The surrounding claim in D2 — that a package-owned record's facets
follow the effective body with managed_by:'package' + package_id provenance preserved —
is still true and is unchanged.

No currency gate was built: check:adr-anchors is a presence check and by construction
has no opinion about whether what a file says about an ADR is current. That gap is #7082's
disposition B, which was not dispatched.

Verification

Premise re-verified before editing: the card was measured on origin/main @ f3f855ac,
so the quoted passage was re-located by text (not by the card's line number) and
confirmed still verbatim on ecb39ea22.

Gates re-derived against the final diff with node scripts/pm/dispatch-gates.mjs:

  • pnpm check:adr-anchors — OK (48 anchored files, 120 decision numbers, 23280 citations
    resolve).
  • node scripts/check-adr-links.mjs — OK (533 relative link destinations under docs/adr/
    resolve).
  • pnpm check:nul-bytes — OK (7527 text files scanned).
  • node scripts/check-adr-merge-approval.mjs — CI-only; locally it fails loud on
    HTTP 401 Bad credentials because it needs a PR-context token. It is evaluated on this
    PR in CI.

No changeset: an ADR prose edit releases nothing — the PR carries skip-changeset.


Generated by Claude Code

… pointing at D5-R (#7351)
D2 restated D5's 2026-07-14 direction as a live parenthetical — "see D5 — an env
overlay is the standard customization of a packaged set" — with no retirement
marker, in a section a reader reaches before D5 itself. D5's own heading has said
"RETIRED 2026-08-09 — see D5-R" since #6858 / PR #6962, so the document
contradicted itself in one file.
The pointer now names D5-R, marks the direction retired, and states what follows
for the projector: an artifact-backed set normally has no overlay layer left to
contribute to the effective body. This follows the idiom D3's table row already
uses ("Since D5-R this row describes a path that is normally empty").
D5's preserved body and the surrounding historical record are untouched — the
retirement is deliberately recorded as history, not rewritten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016pY4Xb2iDecfDtT3CWoiTW
@vercel

vercelBot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 13, 2026 3:36am

Request Review

@github-actionsgithub-actionsBot added size/xs documentation Improvements or additions to documentation labels Aug 13, 2026
@os-zhuangos-zhuang added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed documentation Improvements or additions to documentation labels Aug 13, 2026 — with Claude
@os-zhuangClaude

Copy link
Copy Markdown
ContributorAuthor

Blocker, stated rather than fixed: ADR maintainer approval is red by design on this PR, and it clears only on a maintainer's approving review.

Recording it because a red check that nobody explains reads as neglect, and because "waiting for a human" and "forgotten" look identical on GitHub otherwise.

  • This is not a defect and there is nothing to push. The check (scripts/check-adr-merge-approval.mjs, adr-merge-approval.yml) exists precisely to hold docs/adr/** changes until a human approves. Its failing state is its working state for an unapproved ADR PR.
  • No AI seat may clear it. Per the 2026-08-08 ruling — "ADR 只能由维护者自己确认,人工合并,ai 不得擅自合并" — I will not merge this, queue it, arm auto-merge on it, or touch the gate to make it green. "Reviewed + green elsewhere" is explicitly not an exception; a green farm only means the machines have no objection.
  • Every other gate on this PR is honest.check:adr-anchors (48 anchored files, 120 decision numbers, 23280 citations resolving), check-adr-links.mjs (533 link destinations), and check:nul-bytes all pass. This one check is the human gate.

What this PR needs from a maintainer: an approving review, then a manual merge. The diff is three lines in one file — ADR-0094's D2 parenthetical, which still restated the 2026-07-14 env-overlay direction as live even though D5 has carried RETIRED 2026-08-09 — see D5-R since. D5's preserved body and heading are deliberately untouched; rewriting ADR history was out of scope.

Ordering note for whoever merges: the sibling PR #8290 carries the packages/qa half of #7351 and takes the normal landing path. This PR carries Fixes #7351, so merging it closes the card — ideally after #8290 lands, or #7351 will close with the dogfood-header half still open. If that ordering inverts, ping me and I will re-open or re-file the remainder rather than let it disappear.

I am not re-running this check and will not act on further failures of it — the next move is a human's.


Generated by Claude Code

@os-zhuangClaude

Copy link
Copy Markdown
ContributorAuthor

Marked ready for review — so this is actually reviewable, not just described as waiting.

I had left it as a draft while telling the card it was "awaiting a maintainer merge". Those two states are not the same thing: a draft does not surface in a review queue and cannot be merged, so "visibly awaiting a human" was not true of it. It is now.

Still no landing action from this seat, and there will not be one. Marking ready is not a merge, not a queue entry, and not auto-merge — all three remain forbidden here per the 2026-08-08 ruling on docs/adr/**. The ADR maintainer approval check stays red until a human approves; that is the gate working, not a failure to fix.

Sibling status: #8290 (the packages/qa half of #7351) is MERGED and confirmed on origin/main. So the ordering concern is resolved — merging this one now closes #7351 with both halves landed, which is exactly the intended sequence.

What it needs: an approving review, then a manual merge. 3 lines, one file.


Generated by Claude Code

@os-zhuang
os-zhuang merged commit 84c07c3 into mainAug 13, 2026
27 of 28 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-7351-adr-0094-d2-pointer branch August 13, 2026 10:06
hotlong pushed a commit that referenced this pull request Aug 13, 2026
…nting at D5-R (#8292) (#8385)
ADR-0086 carried three live-voiced, present-tense pointers at ADR-0094 D5's
2026-07-14 direction (an env overlay of a package-owned permission set is a
first-class ADR-0005 customization), which was RETIRED on 2026-08-09 by D5-R
(#6858 / PR #6962) after #6483 / PR #6608 rolled `permission` back to
`allowOrgOverride: false`:
- D7 status row: "an env edit of a package set is now a first-class overlay,
not a flat 403" — directly contradicted by the current 403 not_overridable.
- P2 status row: "Subtract layer landed as ADR-0005 first-class overlay".
- The superseded-mechanisms block, item 2 (the site named in #8292).
Each now names D5-R and marks the direction retired, following the idiom
PR #8291 used inside ADR-0094 D2. The upshot is recorded where it matters:
this ADR's own two-doors answer stands unsuperseded — edit the package and
re-publish. The narrow carry-overs D5-R preserves (data-door delete still
degrades to a reset; supportsOverlay unchanged, so a pre-rollback overlay row
still merges at read time) are stated so they are not mistaken for a re-route.
The historical record is deliberately kept as history, not rewritten.
A fourth D5 citation (D4 status row, composition anchored at the position) is
left untouched: D5-R does not withdraw that bullet.
Part of #8292
Claude-Session: https://claude.ai/code/session_01Jqe56GnYFddggeAyfkZFVz
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants

@os-zhuang@hotlong@claude