Skip to content

[finding] .claude/agents/os-dev.md rule 1 lists the verify lock's four guarantees and no non-guarantee, one line above a wall-clock absolute — every dev agent reads exclusivity the brief never promised #12800

Description

@os-zhuang

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions