Uh oh!
There was an error while loading. Please reload this page.
docs(pm-skill): record the spec lane's ledger-append class pre-approval; give the hotcrm lane a patrol criterion it can satisfy - #12101
Merged
Conversation
…al, and give the hotcrm lane a patrol criterion it can actually satisfy
Two lane-file facts, both paid for by compression inside the existing
ceilings (46 / 57, neither raised).
- lanes/spec.md: the gate-mandated cross-lane error-code ledger append is
pre-approved as a class, with the three conditions and the out-of-class
boundary the spec seat ruled on its seat post. Written id-free because
check:pm-skill-id-lint bans /#[0-9]{3,}/ under .claude/skills/pm-dispatch.
- lanes/hotcrm.md: record that the half-state patrol has no carrier in that
repo (measured today) and name the manual half a hotcrm seat reads instead,
so SKILL.md's execution-seat first criterion stops being unsatisfiable
there. The already-corrected changeset paragraph is untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJhotlong
marked this pull request as ready for review
August 25, 2026 09:17
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.
Closes#11368, closes#11516.
Two lane-file facts, folded into one PR because both are one-bullet recordings into
ceilinged files. Gate union re-run at the final commit
922ee8f9; no changeset (thisdiff is
.claude/**only and publishes nothing —skip-changesetapplied).Per item
references/lanes/spec.md常设承诺 (#11368)git grep -n "ledger" lanes/spec.md= 0 hitsreferences/lanes/hotcrm.md常设承诺 (#11516)lanes/spec.mdceilinglanes/hotcrm.mdceiling#11368 — the pre-approval line
The card's drafted text, landed with its substance intact and rendered in the file's own
idiom (the lane files are Chinese prose; the draft already ended in it). Written
id-free on purpose:
check:pm-skill-id-lintscans every.mdunder.claude/skills/pm-dispatch/with/#[0-9]{3,}/, so the card's suggested precedent-PRcitation could not be included — the rule stands on its own conditions instead, which is
what that gate exists to enforce.
Not incorporated, and deliberately so: the engine seat's comment on the card suggests the
lane file state the test ("does this defect give a consumer a branch it could act on
differently?") rather than only the permission. That would extend the spec seat's ruling
rather than record it, and this card is a recording card — filed separately as #12100 so
it outlives this card.
#11516 — premise moved while the card sat, and the sweep result
The line the card names is already gone.
lanes/hotcrm.mdno longer opens 常设承诺with the patrol-anchor sentence: PR #11393 (
6d35509, 2026-08-24) deleted that sentencefrom all seven lane files after hoisting one copy into
SKILL.md执行座位职责. Thecard's own grading comment recorded "all 7 lane files reference the patrol (measured
today)" — that reading was against a stale tree; on
origin/maingrep -rn "half-state-patrol" .claude/skills/pm-dispatch/references/lanes/returns zero.So the sibling sweep the card asked for has a different answer than expected: it is
not "six siblings point at repos where the patrol runs" — it is no lane file carries the
sentence at all. The duty now lives once, in
SKILL.md执行座位职责 (plus the H17 indexread in 派发前必查), and it binds execution seats unconditionally.
The defect therefore survived the deletion, just relocated: a hotcrm seat reading
SKILL.md still meets a ⛔-carrying first criterion it cannot clear. This PR settles that
for the hotcrm seat at the place the grading named — in the lane file, by
recording the repo fact and naming the readable substitute — and does not touch
SKILL.md, whose wording covers objectstack/objectui seats too, where the patrol doesrun. Provisioning the patrol in hotcrm stays declined per the grading.
Measurement, re-run today rather than assumed:
objectstack-ai/hotcrmat HEAD holds 14workflows (
changeset-check,ci,code-quality,codeql,deploy-docs,docs-app,e2e,label-sync,labeler,link-check,publish-production,publish-staging,release,stale) and nohalf-state-patrol.yml— read from a fresh clone, sincethis session has git read but no GitHub API access to that repo. The anchor-issue half
(
tracking-labelled open issues = 0, with the unfiltered control at 86) is the card's2026-08-24 measurement, not re-run here; the landed text rests on the workflow reading and
states the inference explicitly (无 workflow 即无锚 issue). The already-fixed changeset
paragraph is untouched.
Paying for both bullets — the compression arithmetic
Both files sit at headroom 0, so eight added lines were bought back. Every other change in
this diff is a re-wrap produced by the ratchet's own
wrapLineexport, so the wrapsare the canonical form the gate would produce and move whitespace only.
lanes/spec.md: +4 (new bullet) −4, from(a) 一般开发工具面留 devx bullet re-wrapped 2→1;
(b) fixture-triage bullet re-wrapped 3→2;
(c) 候选卡评论必读 bullet: dropped 「看起来」, 2→1;
(d) 派发前触发文件 bullet: dropped the trailing 「跨仓 pin 滞后读法在 SKILL.md 多仓协调」
clause, 2→1. That clause was a bare signpost whose destination is still signposted twelve
lines above it in the same file (「判据见 SKILL.md 多仓协调」 on the objectui bullet), so
the pointer survives the cut.
lanes/hotcrm.md: +4 (new bullet) −4, from(a) header paragraph re-wrapped 4→3;
(b) 双版本兼容 bullet re-wrapped 5→3;
(c) 依赖是已发布的 bullet: dropped the connective 「因此」, 3→2.
Proof that nothing else moved: with all whitespace stripped, the two files differ from
origin/mainby exactly the two inserted bullets and the three declared deletions(「看起来」, the pin-lag clause, 「因此」) — nothing else, in either file.
Checks run (verdict lines as each gate printed them, at
922ee8f9)Derived with
node scripts/pm/dispatch-gates.mjs(no paths passed — it reads its ownchange set), which named eight families for this diff. All eight green:
Exit codes were captured before any pipe (
cmd > file 2>&1; EXIT=$?), not read throughtail.Governed surface ⇒ draft, human merge. Not marked ready.
Generated by Claude Code
Generated by Claude Code