Uh oh!
There was an error while loading. Please reload this page.
docs(pm-dispatch): a contract-review PASS completes the landing in the same stroke - #12375
Merged
Merged
Conversation
…e same stroke The protocol split the close of a clause-② card between two seats and named no actor for the last step: contract-review.md ended the chain's duty at label clearing, while landing-operations.md §B assigned ready-flip + auto-merge to the lane PM's landing window. Seats are ephemeral, so by the time the chain cleared the label the dispatching seat was usually gone and the PR sat in "gate cleared, nobody landing" — the state check-half-states.mjs H12 already had a detector for. Encodes the ruling that resolved it (maintainer 2026-08-25, quoted verbatim and untranslated in the file, per that file's date + quote convention): 审核通过你应该直接负责合并吧,还要等原始的项目经理吗 contract-review.md 归属: a new bullet — a PASS on a non-governed code PR is completed by the review chain itself in the same stroke (landing-operations preflight, then ready-flip + auto-merge/enqueue); the lane-PM window and the half-states orphan patrol become backstops. Unchanged and stated as such: governed surfaces stay draft-only + human/delegated merge and are never enqueued by the chain; FAIL/REWORK paths; the tier fuse (a below-tier seat cannot clear, so it cannot land). landing-operations.md §B: one sentence noting such PRs reach the window already ready + armed; the window's own duties are unchanged. Both files sit at a shrink-only line ceiling with zero headroom, so the addition is paid in full inside the same files — no ceiling moved. landing-operations.md is a pure insertion paid by repacking two §B paragraphs. contract-review.md is repacked plus seven deliberate trims (verified whitespace-insensitively to be the only content changes): 档位 · 的操作 · 那一刻→时 · 契约 · 豁免 · 低于契约复审档位→ 低于档位 · and the clause 「一行结论照样先落卡、后清标」, which 归属 already states. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H9StxQgG2DPA26XzZZqnJB
os-trump
marked this pull request as ready for review
August 25, 2026 23:43
Uh oh!
There was an error while loading. Please reload this page.
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#12268
Encodes a ruling already in force into the pm-dispatch protocol text: a contract-review PASS on a non-governed code PR is completed by the review chain in the same stroke, rather than deferred to a lane PM who is usually gone by then.
The seam this closes
contract-review.mdended the chain's duty at label clearing;landing-operations.md§B assigned ready-flip + auto-merge to the lane PM's landing window. On paper the landing had an owner. In practice seats are ephemeral sessions, so a cleared PR sat in "gate cleared, nobody landing" until some seat happened to sweep — the exact statescripts/pm/check-half-states.mjsH12 already carries a detector for. A radar existed for the failure mode while the responsibility split that produced it stayed in place.The edit — two files, net zero lines
references/contract-review.md(归属 section) — a new bullet after thePASS 双载体同笔清标sentence. The maintainer ruling is quoted verbatim and untranslated with its date, per the file's own convention (⛔ that file forbids issue-number citations, so provenance is date + quote only):The bullet states: the landing is closed by the review chain itself — clear both carriers, then the landing-operations preflight (
mergeable_statefirst, closing-keyword scan, true-green job verdict, the non-reversible ready-before-auto-merge order), then ready-flip → auto-merge/enqueue. The lane-PM window and the half-states orphan patrol become backstops. Stated as explicitly unchanged in the same breath: governed surfaces stay draft-only + human/delegated merge and are never enqueued by the chain; FAIL/REWORK paths; and the tier fuse — a below-tier seat cannot clear, therefore cannot land.references/landing-operations.md(§B) — one sentence: such PRs reach the window already ready + armed; the window's own duties (跟到 MERGED、踢出处置、落地后对账) are unchanged.How the line ratchet was paid — no ceiling moved
Both files sit at a shrink-only ceiling with zero headroom (48 and 80).
scripts/pm/check-skill-line-ratchet.mjsalso enforces a 120-byte per-line budget, so lines cannot be widened to buy line count — the addition is paid inside each file.landing-operations.md— pure insertion, zero content lost. Repacking two §B paragraphs (whose wrapping wasted lines) freed exactly the lines the new sentence needed. A whitespace-insensitive character diff against the base shows the new sentence as the only change.contract-review.md— repack plus seven deliberate trims. The same whitespace-insensitive diff confirms these are the only content changes, so the rest of the file is verifiable as re-wrapped, not rewritten:档位CONTRACT_REVIEW_TIERalready carries "tier"的操作复审链的操作细则→复审链细则, the file's own title那一刻→时契约执行契约复审并清标→执行复审并清标, in a paragraph already about contract review豁免放宽豁免的是→放宽的是低于契约复审档位的席→低于档位的席—— 一行结论照样先落卡、后清标Nothing was moved out of the file and no ceiling was raised.
载体纪律bullet has ~4 bytes of slack across its three lines, so one break now orphans a closing」onto the next line. The file's existing convention already breaks mid-word (载体仍是标/签)), and the alternative was cutting unrelated protocol prose purely for typography.Verification
Exit codes captured before any pipe; gates quoted by their own verdict lines. Union re-run at final commit
adf6b825.Derived families for this diff —
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(7 matched):check:pm-skill-ratchet— exit 0.✓ … contract-review.md is 48 lines (ceiling 48; headroom 0).·✓ … landing-operations.md is 80 lines (ceiling 80; headroom 0).check:pm-skill-id-lint— exit 0.✓ check-skill-id-lint: 22 file(s) clean (pattern /#[0-9]{3,}/g).(no issue numbers added)check:pm-governed-merges— exit 0, 129 self-test assertions.check:skill-frame-sync— exit 0, 42 markdown files scanned.check:doc-authoring— exit 0, 390 files + 48 published skill files clean.check:agent-test-spelling— exit 0.check:doc-formula-expressions— declared, not counted. It refuses in a fresh worktree with nonode_modulesand says so itself: "PREREQUISITE NOT MET … Nothing was measured: this gate exited before running a single check, so this result says NOTHING about what it gates." CI runs it.Content-fidelity check (the claim the trim table rests on) — both files diffed against their base with all whitespace stripped, so re-wrapping is invisible and only real content changes appear.
landing-operations.md: one insert.contract-review.md: the seven trims above plus the new bullet. No control bytes in either file.Draft on purpose:
.claude/**is a governed surface — human merge, ⛔ never queued or armed by its author.Generated by Claude Code
Generated by Claude Code