lanes: every seat's patrol gains "read the half-state anchor's own-lane rows first" - #9988
Merged
Merged
Conversation
…ne rows first" Adds one identically-worded standing-commitment line to all six lane job descriptions: the first judgment of every patrol round is reading the half-state patrol anchor's own-lane H rows, claiming/acting on each before other judgments; unhandled anchor rows block new dispatches. Each +1 line is paid by a genuine dedup within the same file (ratchet ceilings untouched). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AeA3nU1B5Q2pgxqxgUrexd
os-zhuang
approved these changes
Aug 19, 2026
os-zhuang
marked this pull request as ready for review
August 19, 2026 12:06
This was referenced Aug 19, 2026
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 #9981
GOVERNED surface — draft, human-merge-only. Never flip ready, never enqueue, never arm auto-merge.
What
Each of the six lane job descriptions (
.claude/skills/pm-dispatch/references/lanes/{engine,services,cli,devx,skills,spec}.md) gains ONE identically-worded line, first bullet of its 常设承诺 section:Incident grounding (card): two landed-but-still-dispatched cards sat on the board for 18h/2h — the H8 predicate had already surfaced them on the pinned anchor, but no seat read the anchor per patrol. The rule now lives at the decision point, in every seat's standing commitments.
Wording notes: the anchor is named as 半状态巡查锚 +
half-state-patrol.yml(the workflow'sANCHOR_ISSUEnames the pinned issue) rather than by issue number, becausecheck:pm-skill-ratchet's sibling gatecheck:pm-skill-id-lintmechanically rejects 3+-digit issue-ID citations across the whole pm-dispatch surface, lanes included. "每轮巡检" follows SKILL.md's patrol register. The line is deliberately one physical line: the ratchet counts physical lines and the card budgets exactly +1 per file.Line budget — payment audit (ceilings untouched, headroom-0 ratchet)
(范围 / 常设承诺 / 席内判断)— duplicated the file's own three section headings — and(当前 PM、继承台账、热文件串行队)— duplicated seat-post-protocol.md's four-segment enumeration (当前 PM | 继承台账 | 热文件串行队 | 说明);三车道…而成trimmed, the three merged lane names stay. Survivors: same file's headings; seat-post-protocol.md; SKILL.md 域车道表 engine row (merger ruling verbatim).(2026-08-19 并入)on the 身份侧 bullet — literal duplication of the same file's header (本车道 2026-08-19 并入原 identity 车道的四个插件) and of SKILL.md 域车道表 services row.git ls-remote … gh-readonly-queuecommand and the "入队瞬间滞后" caveat — both survive verbatim in platform-readings.md 「队列成员资格与 auto-merge」(command at its first bullet; the lag as「队列满载时 PR 已入队而分支尚未建出」); replaced by a pointer. cli-only detail kept: entry-name shape, parent-sha queue order, ref lingering after dequeue. Net −2 then +1 → headroom 1.SUBJECT 是 governed 面本身的门禁/审计除外,归 skills) and the spec three-plane split (与 spec 相交的三面按「是否围着 spec 契约转」切分) — both survive verbatim in SKILL.md 域车道表 devx row (which also states the skills/devx SUBJECT boundary); compressed to one pointer at the same spot.判定命令 node scripts/pm/check-governed-merges.mjs --test 带路径cut from the 范围 bullet — survivors: the same file's 常设承诺 bullet (flip/arm 前跑 check-governed-merges --test, now carrying the(带路径)detail) and SKILL.md 域车道表 skills row + 守卫索引, both naming the full script path.(那是状态,不是岗位说明)— restates the same file's own header rule (现值状态恒在座位贴,⛔ 不迁入本文件) and seat-post-protocol.md (范围与常设承诺是岗位说明,版本化在 lanes/…;段段皆现值); plus grammar particle的for width.No re-wrapping without a content cut; every reflow above follows a named removal. Ceilings map in
check-skill-line-ratchet.mjsuntouched.Gates (all at 41e7425, run after the final commit)
check:pm-skill-ratchetEXIT=0 — verdict lines:✓ check-skill-line-ratchet: …lanes/engine.md is 41 lines (ceiling 41; headroom 0), services 31/31, cli 36/37 (headroom 1), devx 38/38, skills 36/36, spec 44/44; all other covered files green.check:pm-skill-id-lintEXIT=0 —✓ check-skill-id-lint: 15 file(s) clean (pattern /#[0-9]{3,}/g).check:doc-authoringEXIT=0 —✓ doc authoring guard: 377 files clean — no bare metadata literals.check:pm-governed-mergesEXIT=0 —✓ check-governed-merges --self-test: 77 assertions …check:skill-frame-syncEXIT=0 —✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 filespnpm --filter @objectstack/lint run check:doc-formula-expressionsEXIT=0 —✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 402 files / 1413 TS blocks judged clean(after building the lint dependency closure; first run failed on unbuilt@objectstack/formuladist, a worktree-freshness artifact, not a change defect).node scripts/pm/dispatch-gates.mjs(no args, real diff, 6 paths vs merge base 8fa4e2a) named exactly the six families above; exit codes captured before any pipe.Reverse verification (direction predicted in writing)
Predicted: one extra line appended to skills.md (at ceiling, 36) turns
check:pm-skill-ratchetred naming that file at 37 vs ceiling 36. Observed: EXIT=1,✗ check-skill-line-ratchet: …lanes/skills.md is 37 lines; the ratchet ceiling is 36.Restored viagit checkoutfrom the committed state — sha256 byte-identical before/after (f54ab092…9723), gate green again (EXIT=0, headroom 0).Out of scope
No overlap with the in-flight SKILL.md card (different file, same governed tree).
skip-changeset: instruction files only, nothing published.Generated by Claude Code