docs(pm-dispatch): stop the review checklist from enumerating read-order tiers - #13025
Draft
os-litant wants to merge 1 commit into
Draft
docs(pm-dispatch): stop the review checklist from enumerating read-order tiers#13025os-litant wants to merge 1 commit into
os-litant wants to merge 1 commit into
Conversation
…der tiers The read-order parenthetical on the "git could have answered this" checklist item quoted a three-tier ladder (git, REST, MCP/GraphQL) that no longer matches the discipline it cites. The zero-quota payload tier was missing. It cites the DEV CONTRACT (.claude/agents/os-dev.md), which states the discipline as prose and never as a compact ladder, so there was no existing spelling to copy. Rather than transcribe a ladder from a different file into this one, the pointer now names the ordering property the checklist item actually relies on -- git goes first -- and enumerates no tiers at all. A pointer that lists no tiers cannot drift out of sync with its source again. Net 0 lines (84/84, headroom 0). Line 33: 105 -> 97 bytes; line 34: 116 -> 104 bytes. No content moved between lines, so no cut ledger. Co-Authored-By: Claude <noreply@anthropic.com>
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 free
to 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 #13021
The second site of the stale three-tier read order. The parenthetical on the
"does the report contain an API read git could have answered?" checklist item quoted
git → REST → MCP/GraphQL— three tiers, with the zero-quota payload tier missing.Shape chosen: (b) — keep the citation, stop enumerating tiers
The card offered two legal shapes. I took (b), the one the grading preferred, and it
reads clean. Two reasons, and the second is the one that decided it:
1. The citation was already correct; only the enumeration was wrong. The line cites
「dev 契约的读序」 — the dev contract,
.claude/agents/os-dev.md. That is the rightauthority for this checklist item, because the item grades a dev's report against the
dev's contract. Shape (a) would have re-pointed it at
platform-readings.md, which isthe PM's own reference file — a worse citation for a dev-side obligation, adopted only to
make an enumeration copyable. Fixing the enumeration by moving the pointer would have
traded an accurate citation for a convenient one.
2. The enumeration was load-bearing for nothing. The item's criterion names the
offending reads explicitly on the next line (
MCP list_issues/search_issues-classGraphQL reads, or re-running the dispatched dedupe reading), and the justification it
needs from the read order is exactly one property: git goes first. The tail of the
ladder does zero work here. A pointer that lists no tiers cannot go stale again, which is
the whole failure mode this card exists to close — and it is the smaller maintenance
surface, since nothing mechanically holds a quoted ladder equal to its source.
No tier mechanics were copied into this file. The replacement reuses the house spelling
for the property —
platform-readings.mdstates the same idea as git 先行 — so thewording is the corpus's, not this seat's invention. The dev contract backs the claim in
its own words at
.claude/agents/os-dev.md:58: 「卡与评论先走 git 与它」.Before / after, with byte counts
Before (line 33 = 105 bytes, line 34 = 116 bytes):
After (line 33 = 97 bytes, line 34 = 104 bytes):
Lines 35–36 of the bullet are byte-identical — the diff is 2 insertions / 2 deletions.
Ratchet arithmetic
Both edited lines were re-measured at dev time rather than taken from the handover; the
handover's 105 B for line 33 held. The line-length reading is taken positively, using
the gate's own code rather than my arithmetic against a recalled cap:
Cut ledger: none, and none was owed. The edit spends no lines and no bytes — it is
net −20 bytes across two lines, adds zero lines, and moves no prose across a line
boundary, so there was nothing to pay for. No re-wrap was needed or performed.
Gates
Union derived mechanically, not recalled:
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(9 families matched; re-derived after the final commit andunchanged). Run under the shared verify lock at head e9e88fc, exits captured before
any pipe. The four extras beyond the derived nine are the dispatch-named
check:pm-governed-proseandcheck:skill-frame-freshness, pluscheck:nul-bytesandthe standalone required-set patrol.
check:pm-skill-ratchet✓ ... review-checklist.md is 84 lines (ceiling 84; headroom 0).and✓ ... widest table row is 0 bytes (pin 0; headroom 0).;✓ check-skill-line-ratchet self-test: 111 cases pass.check:pm-skill-id-lint✓ check-skill-id-lint: 23 file(s) clean (pattern /#[0-9]{3,}/g).check:pm-governed-prose✓ check-governed-prose: 2 instruction surface(s) name all 5 registered governed surfaces ... and claim no others.check:pm-governed-merges✓ check-governed-merges --self-test: 206 assertions (...)check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filescheck:skill-frame-freshness✓ check-skill-frame-freshness: the decision frame in this tree is current with origin/main (fetched just now).check:doc-authoring✓ doc authoring guard: 48 published skill files clean — no internal issue-id references.check:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 396 file(s) ...check:required-contexts✓ check-required-contexts: 6 required context name(s) pinned across 2 workflow(s) ...node scripts/check-required-contexts.mjscheck:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 425 files / 1453 TS blocks judged clean by @objectstack/formula.check:nul-bytescheck-nul-bytes: OK (scanned 7232 text file(s) ... no raw ASCII control bytes).check:doc-formula-expressionsfirst came back exit 1 withPREREQUISITE NOT MET — the workspace package @objectstack/formula is not builtand its own line saying "Nothing wasmeasured". That is a NOT MEASURED reading, not a red gate:
@objectstack/formulaand@objectstack/lintwere built, and the gate then ran and passed. The green above is thepost-build run.
Scope
One file, two lines. No changeset — the surface is
.claude/**internal agent tooling,published nowhere;
skip-changesetis applied. Governed surface, so this is draftonly: no ready flip, no reviewers, no auto-merge, no queue.
The card's closing section — that nothing mechanically holds a quoted policy equal to its
source, and a third site could appear the same way — is a design question and is
deliberately not addressed here.
Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
Generated by Claude Code
Generated by Claude Code