Filed unassigned and ungraded by the domain:devx lane PM (session session_01PfaSTikked61BkcsB5Rn69, round 15), on behalf of the #12528 dev, which found it while writing PR #12796 and ⛔ correctly did not edit it — .claude/** is governed surface, so a hunk there would have parked the whole PR for a human. It handed the exact wording up instead. ⛔ Not graded, not routed, severity not judged.
What was found
#12528 established that scripts/pm/os-verify-lock.sh guarantees "no concurrent locked heavy job" while every reader takes it to mean "an idle box". PR #12796 makes the script say so at four surfaces. This card is about the place a dev agent actually reads the rule from.
.claude/agents/os-dev.md, 资源纪律 rule 1, states the entry point's guarantees:
入口点保证:等待预算钉死在一次前台调用之内(更长表达不出来)· 按到达顺序授予 · 99 仍专指「没排到」· 收尾打印持锁时长,过长自己喊。
⭐ Four guarantees, no non-guarantee. The omission is the finding — not a wrong sentence, a missing one. A reader completing that list in the obvious direction concludes the lock excludes concurrent work, which is what #12528 measured it does not do.
Rule 6, one line further on, carries the reading in a form that is defensible as written:
重活走规则 1 的锁 —— 串行化后不再与并行 build 抢 CPU,争用下顶到上限的命令轻载只要 ~2 分钟
⚠️ It says parallel build, and builds are routed through the lock, so the clause is literally true. What makes it load-bearing is its position: it sits immediately above a wall-clock absolute (~2 分钟), so the two read as one claim about a quiet machine — and that absolute is exactly the kind of figure #12528 showed is taken on a shared box.
The dev's own recommendation, carried unchanged
⛔ Do not rewrite rule 6; add one clause to rule 1's list — the lock excludes only what comes through it, and check:* gate runs are not routed there.
⭐ That is the smaller and more durable edit: rule 6's sentence is true, and the list is where a reader forms the belief. It also stays short now that PR #12796 makes the script state the boundary on every acquisition — the brief can point rather than explain.
⚠️ Also checked by that dev and reported as needing nothing: .claude/skills/pm-dispatch/references/true-green.md — its three lock bullets claim no exclusivity.
⛔ Governed surface — what that means for whoever takes this
.claude/** is governed surface. A PR touching it is recorded as ACCEPT but stays draft, is never armed and never enqueued, and is left for the maintainer to merge. ⛔ No PM seat lands it. Scope it so the whole PR is that one file, rather than riding on a code change.
Refs
⚠️ Dedup — declared narrow, because the instrument is broken on this seat
Checked against the open domain:devx board by label listing (101 open) and against the three sibling lock cards #12782 / #12783 / #12795; none names this file or this rule. The #12528 dev separately pulled 337 open items over REST and grepped locally, finding only #12528 itself on the routing axis.
⛔ This was NOT verified by free-text search, and the reason is worth recording:search_issues with in:body returns total_count: 0 from this seat even for a term demonstrably present in an open issue's body — the positive control "os-verify-lock" returned 0 while #12795, which contains it, was returned by the very next label: query. ⇒ Free-text search here is a refusal to measure, not a zero, and any dedupe resting on it is unsupported. Declared rather than implied.
Filed unassigned and ungraded by the
domain:devxlane PM (sessionsession_01PfaSTikked61BkcsB5Rn69, round 15), on behalf of the #12528 dev, which found it while writing PR #12796 and ⛔ correctly did not edit it —.claude/**is governed surface, so a hunk there would have parked the whole PR for a human. It handed the exact wording up instead. ⛔ Not graded, not routed, severity not judged.What was found
#12528 established that
scripts/pm/os-verify-lock.shguarantees "no concurrent locked heavy job" while every reader takes it to mean "an idle box". PR #12796 makes the script say so at four surfaces. This card is about the place a dev agent actually reads the rule from..claude/agents/os-dev.md, 资源纪律 rule 1, states the entry point's guarantees:⭐ Four guarantees, no non-guarantee. The omission is the finding — not a wrong sentence, a missing one. A reader completing that list in the obvious direction concludes the lock excludes concurrent work, which is what #12528 measured it does not do.
Rule 6, one line further on, carries the reading in a form that is defensible as written:
~2 分钟), so the two read as one claim about a quiet machine — and that absolute is exactly the kind of figure #12528 showed is taken on a shared box.The dev's own recommendation, carried unchanged
⭐ That is the smaller and more durable edit: rule 6's sentence is true, and the list is where a reader forms the belief. It also stays short now that PR #12796 makes the script state the boundary on every acquisition — the brief can point rather than explain.
.claude/skills/pm-dispatch/references/true-green.md— its three lock bullets claim no exclusivity.⛔ Governed surface — what that means for whoever takes this
.claude/**is governed surface. A PR touching it is recorded as ACCEPT but staysdraft, is never armed and never enqueued, and is left for the maintainer to merge. ⛔ No PM seat lands it. Scope it so the whole PR is that one file, rather than riding on a code change.Refs
os-verify-lockserialises locked heavy jobs but NOT gate scripts — so every timing card measures a contended box while believing the lock gave it an idle one #12528 / PR fix(pm): make the verify lock state the coverage boundary it does not cover #12796 — the coverage boundary and its disclosure half (scripts/**, lands normally)check:*runs should be routed throughos-verify-lock— the throughput/contention trade is currently unmeasured #12795 — the throughput half: whethercheck:*should be routed through the lock at all, ⛔ unmeasuredos-verify-lock's 540s wait budget is shorter than a single legitimate hold — a compliant caller times out systematically, not occasionally #12538 / PR fix(pm): serve a verify-lock queue whose holds outlast one foreground turn #12788 — the wait-budget change that makes older affordability arithmetic staleChecked against the open
domain:devxboard by label listing (101 open) and against the three sibling lock cards #12782 / #12783 / #12795; none names this file or this rule. The #12528 dev separately pulled 337 open items over REST and grepped locally, finding only #12528 itself on the routing axis.⛔ This was NOT verified by free-text search, and the reason is worth recording:
search_issueswithin:bodyreturnstotal_count: 0from this seat even for a term demonstrably present in an open issue's body — the positive control"os-verify-lock"returned 0 while #12795, which contains it, was returned by the very nextlabel:query. ⇒ Free-text search here is a refusal to measure, not a zero, and any dedupe resting on it is unsupported. Declared rather than implied.