Skip to content

docs(pm-dispatch): the claim template carries the Premise: line the pre-dispatch premise check writes - #25679

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-r6oa8t
Oct 24, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-r6oa8t

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #25663

Clause-②: no
Metadata-protocol: none

维护者速读(草稿)

What changed

  • .claude/skills/pm-dispatch/SKILL.md 〈模板与表〉, after Thread-read:: Premise: holds | corrected <comment id> | inbox (the pre-dispatch premise reading, dispatch-runbook.md 派发前置) (116 bytes). The three values are dispatch-runbook.md 〈派发前置〉's three outcomes: 成立 ⇒ 派, 改法明确 ⇒ 改卡再派, 判不了 ⇒ 入决策箱.
  • scripts/pm/check-skill-line-ratchet.mjs: the SKILL.md row 318 → 319, its comment citing ruling 6385407063. SKILL.md is not a CROSS_FILE_MOVES destination, so no ruledRaises record applies.

Gates

On this head: pnpm check:pm-skill-ratchet ✓ (319 / 319), pnpm check:pm-skill-id-lint ✓, pnpm check:skill-frame-sync ✓, pnpm check:skill-frame-freshness ✓, pnpm check:pm-governed-prose ✓; self-tests of the claim readers ✓ (post-stamped.mjs, check-half-states.mjs, check-expected-skips.mjs, check-governed-queue-guard.mjs, check-dispatch-gates.mjs); check-commit-card-trailers.mjs ✓. No claim parser keys on Premise: yet, so the line is inert to them. No package moves: skip-changeset.

Acceptance notes

🤖 Generated with Claude Code

https://claude.ai/code/session_01REMuzhz6MWRjg8uohedMnM

… pre-dispatch premise check writes

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01REMuzhz6MWRjg8uohedMnM
@objectstack-fleet objectstack-fleet Bot added documentation Improvements or additions to documentation skip-changeset PR has no user-facing published change; bypasses the changeset gate labels Oct 24, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: d7bc234d2db3c02622889e2d1a1ca297d06343bf
Local-runs: none
Scope: .claude/skills/pm-dispatch/SKILL.md, scripts/pm/check-skill-line-ratchet.mjs + .claude/skills/pm-dispatch/references/dispatch-runbook.md (〈派发前置〉 L149–L155, the rule the new line carries), scripts/pm/post-stamped.mjs (claimKeyedLineRefusals, CLAIM_KEY_SPELLINGS), scripts/pm/check-half-states.mjs (THREAD_READ_KEY_LINE, CLAIM_SEAT_KEY_LINE, H50), scripts/pm/dispatch-gates.mjs (CONTAINER_MODEL_KEY_LINE), scripts/pm/label-write.mjs (the Resume-from: reader), .github/workflows/lint.yml (the job that hosts the ratchet)

Card #25663 body and its three comments (triage 6385099830, ruling 6385407063, claim 6385415618); PR #25679 body and file list; net diff origin/main...origin/claude/project-thread-r6oa8t (2 files, +7/−1, one commit d7bc234d); the head's check-runs read four times, the last three at 2026-10-24T15:26Z, 2026-10-24T15:27Z and 2026-10-24T15:28Z. Rule text and readers read on origin/main at 061cc94d31f20d3c972453bad86b9fdd3563031d (the PR's base, which is also the merge-base; PR #25667 is already in it, as the claim's serial constraint required). Not an input: the dispatch order, the seat's own conclusions, or the gate results stated on the PR body.

① Derived judgments

  1. The new template line (SKILL.md L316, after Thread-read:, before Serial constraints cleared:) against dispatch-runbook.md 〈派发前置〉 — TRUE and faithful. The runbook's three outcomes at L151 are 「成立 ⇒ 派;不成立而改法明确 ⇒ 改卡再派;判不了 ⇒ 入决策箱」, and L154 ends 「读数落认领 Premise: 行」, which named the key before any template carried it. holds is 成立; corrected plus a comment id is 改卡再派, where L152 fixes what that comment is — 「评论记原前提、读数与改法,再改正文」, so the id the claim names is the comment holding the original premise, the reading and the fix, and that is the one artefact a later reader needs; inbox is 入决策箱, the word SKILL.md itself uses for 决策箱 everywhere (L38, L74, L130, L224, L240, L276). The fourth path at L154 (砍范围、降级、关卡 ⇒ 人工地板) correctly has no value: a card on that path is not dispatched, so no claim is written. The card's suggested wording carried a 「card-thread cards」 qualifier; the head drops it, and that is the more faithful reading: L150 puts the check on every dispatch (「派发前前提核实由只读子代理做」) and makes card-thread cards only the case that does it earlier (「卡线程卡在交候选给 coordinator 之前做」). The parenthetical names the runbook file and section, which is how the sibling lines point at their sources (Metadata-protocol: points at AGENTS.md's Post-Task Checklist).

  2. Shape of the line, measured — consistent with its siblings. 116 bytes (the PR body's figure holds), under the 120-byte cap that the ratchet applies to prose; the line sits inside the ```text fence, which scanLineLengths exempts (`isFence`, the `fence` exemption class), so the cap is a style reading here, not a gate, and the fenced siblings run 20–290 bytes. The placeholder for the comment id is in bare angle brackets, which is exactly how `Thread-read:` on L315 spells its own id placeholder (bare, unbackticked), whereas `Resume-from:` backticks `BRANCH@SHA`; the new line follows the nearer sibling, the one whose value is the same kind of thing. The `a | b | c` value-set spelling is `Clause-②:`'s (L312) and `Metadata-protocol:`'s (L313). The English key with a Chinese-named source (「派发前置」) matches `File surface:` and `Serial constraints cleared:`, both of which mix the two inside one line.

  3. Readers of claim keyed lines — none refuses or misreads a claim because of this line, and none reads it. post-stamped.mjs claimKeyedLineRefusals grades exactly four keys (Seat:, Thread-read:, Clause-②:, Container & model:; CLAIM_KEY_SPELLINGS is the closed set) and passes any other line through; check-half-states.mjs THREAD_READ_KEY_LINE and CLAIM_SEAT_KEY_LINE and dispatch-gates.mjs CONTAINER_MODEL_KEY_LINE are all anchored on their own key at line start, so a Premise: line is invisible to H50 and to the seat and tier readers; label-write.mjs reads Resume-from: only. No reader keys on Premise: anywhere in scripts/pm/ or .github/ on main, which is what the PR body says (「inert」). Whether one should is ③.1.

  4. The ratchet raise — exactly the ruled +1 and nothing else. main row: ['.claude/skills/pm-dispatch/SKILL.md', 318]; head row: 319. The head file counts 319 by the script's own idiom (text.split('\n').length less the trailing newline, countLines at the head's L2300), so the ceiling is the landed count, headroom 0, as every neighbouring row states. The comment quotes the ruling's own words 「同意 318→319」, which is byte-for-byte what comment 6385407063 records (「maintainer 「同意 318→319」」, option A), and names the comment id, the card and the date, the form the header requires (「the raising PR quotes that ruling comment's id」, L66–L71). The PR body carries the same id and the measured increment (「318 → 319」, 「+1」), as the 守卫索引 row in SKILL.md asks (「其评论 id 与实测行数增量引在 PR 正文,同 PR 移上限行至多增量」). SKILL.md is not a key of CROSS_FILE_MOVES on the head (the destinations are platform-readings.md and landing-operations.md), so no ruledRaises record is owed; the comment says so in the same words the 811 → 812 and the heading-rename rows already use. The file's MAX_TABLE_ROW_BYTES pin (341) is untouched and still correct: the widest unfenced line on the head is 341 bytes, the domain:server table row, and the new line is fenced.

  5. The ruling's workload paragraph against the head: 「adds the one Premise: line … 〈模板与表〉, raises the … ceiling row for that file 318 → 319 citing this comment, and lands it under Tier S after a CONTRACT_REVIEW_TIER PASS record and green checks」 — the diff is those two edits and nothing more; the claim's 「⛔ Not in scope」 (no other template line, runbook L154 untouched, no Tier H file) holds: dispatch-runbook.md is not in the diff. Commit trailers model-free (Co-Authored-By: Claude, Claude-Session:); PR author objectstack-fleet[bot], so no login note is owed; the login in the PR body is the relay's standard attribution header.

CI on this head (last read 2026-10-24T15:28Z, 48 check-runs): success — Lint · repo & tooling gates (the job that hosts pnpm check:pm-skill-ratchet, check:pm-skill-id-lint and check:pm-governed-prose; its closing step reads every continue-on-error gate's outcome and fails the job on any red, so the green carries the ratchet), Type Check · source gates (hosts check:skill-frame-sync and -freshness), Lint · PM dispatch-gates, Lint · docs & code guards, Lint · ESLint, Lint · CI, release & engine gates, Lint & Repo Gates, Governed Surface Queue Guard, filter, The card this PR closes must claim this branch, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card, Auto Label, Check PR Size, Check Changeset, Check Documentation Links, Dogfood Regression Gate, Test Core (2/6, 3/6, 4/6, 5/6, 6/6), Lint · scoped · tooling self-tests, Lint · scoped · slot lookup & corpus, Lint · scoped · query-options erasure. In progress — Test Core (1/6), Type Check · consumer gates, Type Check · debt ledger, Type Check · workspace. Skipped (path-filtered or opt-in) — Build Core, Build Docs, Console Pin Gate, Dogfood Verify CLI, Temporal Conformance, Dogfood Regression Gate shards, 18.x upgrade harness, Packed-tarball smoke, and the duplicate Auto Label / Check PR Size / Check Changeset rows. No red at any of the four reads. Every gate the card's acceptance names is green on this head. This verdict is on the diff and the rule text; landing waits for the four in-progress runs to conclude green, as the claim's Tier S terms require.

② Semver level

skip-changeset — right. No package source moves: one governed skill file and a PM gate script, both off the published surface. Clause-②: no holds: a claim-template line and a ceiling integer widen no accepted set and no public face. Metadata-protocol: none holds: no schema, no manifest field, no conversion.

③ Boundary flags

  1. No reader for the new key — flag only, not owed here. post-stamped.mjs refuses a Thread-read: left as the unfilled placeholder and an empty value, but a Premise: line pasted unfilled, empty, or spelt outside the three values passes the pre-write check and is then invisible to every H-row. The card asked for the template line only and the ruling priced one line; a reader (a fifth entry in CLAIM_KEY_SPELLINGS, and an H-row beside H50 that compares corrected ids against the card's thread) is a separate filing-gate ③ card for domain:skills if the lane wants the reading enforced rather than declared. Recorded so the next reviewer does not take 「inert」 for 「checked」.

  2. The runbook's 〈派发前置〉 is the only text defining the three values; SKILL.md carries them as bare words. That is the same arrangement as Metadata-protocol:, whose level table lives in AGENTS.md, so nothing is owed; noted because a reader of the template alone sees inbox without the 决策箱 it stands for until they follow the pointer.

  3. The deferral chain closes: PR docs(pm-dispatch): every card carries a business rationale the 分诊席 judges, every card is triaged (pre-applied labels are a suggestion), and a seat verifies a card's premise before dispatch #25552's review (6377468190 ③), scope update 6377494099 on pm-dispatch: after the thin 分诊席 (#25414) lands, five lines elsewhere still give triage its old duties (seat-post liveness, main-repo producer, the 析取④ reference, the release-by-triage step, central grading) #25490, and PR docs(pm-dispatch): seat liveness, release and the main-repo release board name the director seat, and lane findings take triage's first touch #25658's review ③.1 (「Owed at landing: a carrier」) all pointed at this line; pm-dispatch SKILL.md claim template gains the Premise: line the pre-dispatch check writes (needs a ruled 318 → 319 raise) #25663 was that carrier and 「Fixes pm-dispatch SKILL.md claim template gains the Premise: line the pre-dispatch check writes (needs a ruled 318 → 319 raise) #25663」 closes it. Nothing further is owed on pm-dispatch: after the thin 分诊席 (#25414) lands, five lines elsewhere still give triage its old duties (seat-post liveness, main-repo producer, the 析取④ reference, the release-by-triage step, central grading) #25490.

Implemented-by: claude/project-thread-r6oa8t
Reviewed-by: session_01REMuzhz6MWRjg8uohedMnM

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:skills#2 · os-elon-musk · session_01REMuzhz6MWRjg8uohedMnM · 2026-10-24T15:39Z · head d7bc234d2db3c02622889e2d1a1ca297d06343bf · Tier S (.claude/** ×1; scripts/pm/check-skill-line-ratchet.mjs is off the register; no Tier H path)

Landing authority: the maintainer's ruling 6385407063 on #25663, option A 「同意 318→319」, chosen on the decision card in this seat's thread of the Claude Code project "Objectstack" (os-elon-musk account) at 2026-10-24T14:27Z; and his standing Tier S word of 2026-10-23T14:14Z: 「后续按 pm-dispatch 规则审核通过的都可以落地」. His instruction of 2026-10-24T14:27Z, 「skills 车道应该处理完当前的任务再下班」, keeps this card in hand before the lane signs off.

  1. Shape: draft, base main, Fixes #25663 the only closing keyword, skip-changeset; author objectstack-fleet[bot] (relay-opened).
  2. Premise measured: dispatch-runbook.md L154 「读数落认领 Premise: 行」 names a key the template lacked; SKILL.md was at its 318 ceiling.
  3. Gates (check-runs pinned to this head): 50 check-runs, all completed — 32 success, 18 skipped, 0 failed.
  4. Contract review: CONTRACT_REVIEW_TIER PASS on this head, 6386033564.
  5. Accepted deviations: none beyond the ruled raise 318 → 319. The card's 「card-thread cards」 qualifier is dropped, as the review reads dispatch-runbook.md L150 (the check runs on every dispatch).
  6. Carried: no reader keys on Premise: yet, so an empty or misspelt value passes; enforcing it (a fifth CLAIM_KEY_SPELLINGS entry and an H-row) would be its own card if the lane wants it.
  7. Landing: merges cleanly onto main 24d350b451 (git merge-tree, no conflict; no commit on main since the head's base touches these two files). This seat flips ready and arms auto-merge now.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 24, 2026 15:40
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 24, 2026 15:40
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 24, 2026
Merged via the queue into main with commit b2909fd Oct 24, 2026
51 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-r6oa8t branch October 24, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pm-dispatch SKILL.md claim template gains the Premise: line the pre-dispatch check writes (needs a ruled 318 → 319 raise)

2 participants