docs(pm-dispatch): correct rest-channel header's quoted default read order to the source's four-tier spelling - #13022
Merged
Conversation
…order The header cites references/platform-readings.md by name and quotes its default read order, but quoted the three-tier form git -> REST -> MCP/GraphQL. The named source has carried the four-tier order git -> payload -> REST -> MCP/GraphQL since 2026-08-25, when the zero-quota public-repo payload tier was added. The omitted tier sits above REST precisely for seats whose repo-scoped REST probe returns 403, for whom the stale header silently degraded the ladder to git then MCP/GraphQL -- skipping the only tier that costs no quota. Pointer-style: the spelling is matched to the source; no tier mechanics are copied here (platform-readings.md stays the single home). Net 0 lines (87/87, ceiling unchanged). The insertion costs 12 bytes on a line already at 118 of 120, so the three-line paragraph is re-wrapped to the canonical wrapLine form. No content cut. Co-Authored-By: Claude <noreply@anthropic.com>
os-zhuang
approved these changes
Aug 29, 2026
os-litant
marked this pull request as ready for review
August 29, 2026 01:44
os-litant
enabled auto-merge
August 29, 2026 01:44
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 #13008
The header of
.claude/skills/pm-dispatch/references/rest-channel.mdcitesreferences/platform-readings.mdby name and quotes the default read order that livesthere — but quoted the three-tier form. The named source has carried the four-tier
order since 2026-08-25, when the zero-quota public-repo payload tier was added.
Pointer-style, as scoped: the spelling is matched to the source and no tier mechanics are
copied across.
platform-readings.mdstays the single home.Before / after, with byte counts
The one semantic change is the insertion of the missing tier, matched character-for-character
to the source line in
platform-readings.md:The inserted text is
payload →— 7 + 1 + 3 + 1 = 12 bytes (the arrow U+2192 is 3bytes in UTF-8).
Per-line, measured on disk rather than estimated:
L3 stood at 118 of 120 bytes, so the 12-byte insertion could not stay on it. The three-line
paragraph is re-wrapped to absorb it and comes back as three lines.
Cut ledger
Empty — no content was cut, moved out, or reworded. The re-wrap moves whitespace only,
and that is checked rather than asserted:
wrapLine's canonical output (the ratchet's own wrapper), and itis idempotent — re-wrapping the result reproduces it;
paragraph byte-identically.
One line a reviewer should not misread
New L5 reads
编号 —— 每行自含边界与日期。and contains a literal space that was not inthe source before. The re-wrap did not introduce it; it made an existing one visible.
The old break between L4 and L5 sat between
—(U+2014) and每. That is a narrow-to-widejunction, and the CSS segment-break rule removes a break only between two East Asian wide
characters — so that break already rendered as a space for every agent reading the rendered
text. A faithful re-flow has to preserve it, which migrates it out of the line break and into
a literal space in the source. This is the self-concealing shape the ratchet's own header
documents for the adjacent ASCII-punctuation junction class; the same reading applies here.
Verified against the gate's own
atomize/breakLegal, not by eye.Gates
Union derived mechanically —
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(exit 0; 7 families matched), run under
scripts/pm/os-verify-lock.sh. The two families thedispatch named that the derivation did not produce (
pm-governed-prose,skill-frame-freshness)were run as well, so the set below is the union of both. Exits captured before any pipe.
check:pm-skill-ratchet✓ ... rest-channel.md is 87 lines (ceiling 87; headroom 0).check:pm-skill-ratchet(line length)✓ ... rest-channel.md: every line is within 120 bytes (or structurally exempt).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: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:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 396 file(s) ...check:doc-authoring✓ doc authoring guard: 392 files clean — no bare metadata literals.check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 425 files / 1453 TS blocks judged cleancheck:pm-governed-merges✓ check-governed-merges --self-test: 206 assertions ...The line-length reading is taken positively: the ratchet prints it only on failure, so it
was read back through the gate's own exported
lengthVerdict/scanLineLengths. Itscompanion reading matters as much — the file uses no structural exemption at all
(
exempt classes used = []), so all three edited lines pass on their own measured merits andnone is riding an exemption. Per-line headroom after the edit: L3 3 B, L4 2 B, L5 76 B.
check:doc-formula-expressionsfirst exited 1 withPREREQUISITE NOT MET — the workspace package is not built, which its own text calls out as nothing measured. It was recordedas such, the dependency closure was built, and it was re-run to the real green above.
Gates run against
4220de5b9, the branch head this body describes.Scope
One file, one paragraph. No changeset: this is an internal
.claude/instruction surface andpublishes nothing, so the PR carries
skip-changeset.Governed surface (
.claude/**) ⇒ draft, and it stays draft. No ready flip, no reviewers,no auto-merge, no queue — the maintainer lands this by hand.
Out-of-scope finding
The card asked whether any other file quotes the read order and drifted the same way. One
does:
references/review-checklist.mdline 33. It was filed as #13021 and is deliberatelynot touched here — its parenthetical cites a different source (the dev contract, which
states the discipline as prose rather than as a ladder), so the corrected spelling is a
judgement call, not a mechanical copy, which fails the bounded in-place fix exemption.
#13021 remains open for triage.
Generated by Claude Code
Generated by Claude Code