Uh oh!
There was an error while loading. Please reload this page.
docs(adr): retire ADR-0076 D11's contention metric and the reopen threshold it fed - #10154
Merged
os-zhuang merged 2 commits intoAug 20, 2026
Merged
Conversation
…eshold it fed (#10076) D11's 2026-08-16 revision installed a replacement metric — the per-PM-round count of dispatchable cards blocked from running concurrently because both land in `packages/rest/src/rest-server.ts` — and gated reopening option A on it sustaining above ~1/round. Nothing ever computed that counter. Batch independence is computed per round to schedule work and is not persisted; no script, gate, workflow or agent instruction file in this repo produces, stores or reads the series. Its reporting anchor (#5949) has been closed/completed since 2026-08-16, so every reading owed after that date had nowhere live to land, and the readings that were filed went into a closed card. So the ADR claimed a reopen threshold that nothing fed. Per the maintainer ruling of 2026-08-20 (option B), the metric and the threshold are retired together, in writing: - section ③'s metric and threshold are marked retired IN PLACE rather than deleted, since the 2026-08-16 decision was argued from them; - a new 2026-08-20 revision records what is retired, why, and — explicitly — what it does not do: it does not revive the raw `wc -l` series, does not make B permanent, and does not touch ①/④ or the 2026-08-15 ruling; - the status line and the D11 status bullet stop pointing readers at a live metric. Reopening A is now an ordinary new decision under Prime Directive #13, argued from a measurement taken for that purpose, rather than an automatic trigger nothing was ever going to pull. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019bmVFqoQPq63zhKrxdYG1r
…trikethrough GFM matches strikethrough on a run of ONE or two tildes, and the withdrawn sentence contains a bare `~` in "~1/round" — so the marking depended on delimiter-run lengths rather than on being unambiguous. The rest of this record marks withdrawn text with a ⛔ prose marker and leaves the sentence standing (the "central route generator" framing above does exactly that), so this now does the same. No change to what is retired. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019bmVFqoQPq63zhKrxdYG1r
os-zhuang
approved these changes
Aug 20, 2026
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang
deleted the
claude/issue-10076-retire-d11-contention-reporting
branch
August 20, 2026 15:48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#10076
⛔ Governed surface — draft only, human merge. This PR's diff touches
docs/adr/**, which theGOVERNED_SURFACESregister carries (printed at head:docs/adr/** · .claude/** · skills/** · AGENTS.md · CLAUDE.md). Do not flip it ready, enqueue it, or arm auto-merge.What this does
ADR-0076 D11's 2026-08-16 revision installed a replacement metric — the per-PM-round count of dispatchable cards that could not run concurrently because both land in
packages/rest/src/rest-server.ts— and gated reopening option A on that counter sustaining above ~1/round.This retires the metric and the threshold together, per the maintainer ruling of 2026-08-20 (option B), and records the retirement in the ADR rather than performing it silently.
Why — measured at head, not inherited
git logwindow". Batch independence is computed per round to schedule work; it is not persisted, and the counter was never derived from it. Measured on this tree: no script, gate, workflow or agent-instruction file produces, stores or reads the series.contentionappears nowhere in the repo as a metric — only in unrelated runtime code (Redis locks, queue CAS retries, SQLite busy handling).closed/completedstate since 2026-08-16T06:47:27Z (issue [finding] ADR-0076 D11 的第二半从未落地:packages/rest/src/rest-server.ts已 8593 行(ADR 记录约 5.1k),且无 issue 承接 #5949). Every reading owed after that date had nowhere live to land.So the ADR was claiming a reopen threshold that nothing fed. That is the defect; the retirement is the fix.
Shape of the change
#### Revision 2026-08-20 (#10076)section records what is retired, why (the three findings above), and — explicitly — what it does not do:wc -lline-count series (retired 2026-08-16 on its own merits; retiring its replacement does not hand the question back to it — there is now no standing metric on this file, deliberately);registerMetadataEndpointsInnercarve-out (CharacterizeregisterMetadataEndpointsInner(2,328 lines, 20% of rest-server.ts) — read and propose, do not split blind #8851), or the 2026-08-15 ruling B rests on.Option C — continuing to post measurements into a shut card — is the shape this card exists to end, and is explicitly refused in the ADR text (⛔ markers on both the blockquote and the threshold sentence).
Premise verification (the dispatch asked for this to be re-derived, not assumed)
docs/adr/0076-objectql-core-tiering.md.claude/skills/pm-dispatch/**grep -rni 'contention|5949|rest-server|reopen' .claude/exits 1, zero lines — so no clause-① stop conditionrest-server.tsADR anchor pins D11scripts/adr-anchors/packages__rest__src__rest-server.ts.jsonanchors ADR-0045 (thefilterAppForUserpublish gate), untouched hereOne correction to the dispatch brief, carried into the ADR as measured rather than as quoted: #5949 was shut on 2026-08-16T06:47:27Z, not 2026-08-17. The ADR text and this PR both use the measured timestamp.
Gates
Re-run at final head
2864eaa6f(two commits: the revision, then a markdown-marking fix). Each exit code captured before any pipe, and quoted from the gate's own verdict line rather than from$?:node scripts/check-adr-anchors.mjs --self-test→EXIT=0; run →EXIT=0,check-adr-anchors: OK (51 anchored file(s), every governing ADR still referenced; 122 decision number(s) … 26707 citation(s) across 3263 file(s) resolve).node scripts/check-adr-links.mjs --self-test→EXIT=0; run →EXIT=0,✅ check-adr-links: 551 relative link destination(s) under docs/adr/ resolvenode scripts/pm/check-governed-merges.mjs --self-test→EXIT=0,✓ check-governed-merges --self-test: 81 assertions …node scripts/pm/dispatch-gates.mjs(no paths — it derives its own change set from the merge base) →EXIT=0, deriving exactly the three families above fromdocs/adr/0076-objectql-core-tiering.md. No family the dispatch list missed.grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]'exits 1).Declared narrowing —
pnpm lintwas not run. Not a budget call: this repo'spnpm lintiseslint . --no-inline-config, and everyfiles:block ineslint.config.mjsmatches only{ts,tsx,mts,cts,js,jsx,mjs,cjs}. There is no markdown processor block, and no prettier/markdownlint/remark gate inpackage.json. This PR's diff is exactly one.mdfile, so ESLint's population provably excludes it and the run could not have read a byte of the change. CI runs the full farm regardless.Release notes
No changeset:
docs/adr/**publishes nothing, whichlint.ymlnames as the textbookskip-changesetcase. The label is applied to this PR.content/docs/releases/is untouched.Generated by Claude Code