From 9a1f16843c807f97c4fb6d08015510a7b22b4fcf Mon Sep 17 00:00:00 2001 From: os-steve Date: Sun, 6 Sep 2026 15:57:47 +0000 Subject: [PATCH] agents(os-dev): the verify-lock waiting discipline as protocol, and the finding admission threshold MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rule 1/7: one foreground call takes the full wait budget and stays blocked; never poll-and-retry; always name OS_VERIFY_LOCK_SLOT; a 99 is NOT MEASURED and a re-acquisition resumes the parked place under the same slot name. Rule 3: only three classes file a card (reproducible defect, declared-contract violation, metadata-authoring trap); everything else is listed under the PR's 验收备注 and reported as `noted, not filed`. Line-neutral (403/403), folds inside the touched rule blocks. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox --- .claude/agents/os-dev.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.claude/agents/os-dev.md b/.claude/agents/os-dev.md index 6e47e34064..f55d6c602d 100644 --- a/.claude/agents/os-dev.md +++ b/.claude/agents/os-dev.md @@ -38,8 +38,11 @@ model: opus - PR 上不是你设置的状态属于另一个 actor:去问,⛔ 永不去纠正。 - 共享身份让所有人的写入都像你写的;被改写的 body 只是关于 body 的证据,不证明别的。 - 回退他人的操作(尤其 ready 翻转)永不轮到你;把意外写进 `summary`。 -3. **范围 = 这张 issue,别无其它。** 顺路撞见的无关缺陷立成新的无 assignee issue。 - - 列进 `out_of_scope_findings`;⛔ 永不在本 PR 里修它。 +3. **范围 = 这张 issue,别无其它。** 顺路发现 ⛔ 不在本 PR 修,只有三类立卡且不打标签: + - (a) 可复现缺陷(复现或失败探针具名);(b) 违背已声明契约(引契约原文); + - (c) 让 AI 写出运行时拒收或静默丢弃的元数据的陷阱;三类内 ⛔ 不因看着小揣着不报。 + - 其余 ⛔ 不立卡:观察、死代码、未演练漂移、抛光、风格、文档 nit、命名。 + - 它们进 PR `## 验收备注`,报告 `out_of_scope_findings` 记 `noted, not filed: …`,席位 ACCEPT 时读。 - 先搜再立:关键词 + 文件路径扫 open issues;并行 dev 同一小时立的卡只有这一搜能看见。 - 通道先探后选:同容器先测一条 repo-scoped REST 读;通 ⇒ 走 REST 列表端点 + 本地 grep。 - 通道对照表见 `.claude/skills/pm-dispatch/references/rest-channel.md`,其 ✓ 按座位实测。 @@ -49,13 +52,10 @@ model: opus - 大宗读走零配额档:公开仓单卡网页内嵌 JSON payload 载原始 body + 全评论。 - 其拼写与边界住 platform-readings;它只覆盖单卡读,⛔ 不拿它做 search。 - 卡与评论先走 git 与 payload 档,MCP 留给写 + 那一次查重;报告记 MCP 调用计数(`mcp_calls`)。 - - 立不成 ⇒ 发现连同缘由写进报告交 PM 代立。 - - ⛔ 不查重硬立与静默弃报同为禁形:发现永不因通道断而消失。 + - 立不成 ⇒ 发现连同缘由写进报告交 PM 代立;⛔ 不查重硬立与静默弃报同为禁形。 - PM 的去重读数随派发词下发,当既有事实用,只复核其后增量,⛔ 不重跑。 - 归挂不散落:落在已排队 issue 完成范围内的发现,立成它的 sub-issue(自动进派发池)。 - 只是依赖它的,独立立单带一行 `Blocked-by:`;立在修复落地的仓,带回链。 - - 观察类发现(死代码、未演练漂移、外观抛光)打 `finding` 标签,⛔ 不打 `pm:queue`。 - - 具体缺陷不打标签,留给 PM 分诊;⛔ 不因看着小揣着不报,平实立单,分诊轮定级。 - 有界就地修豁免,四条全立才就地修:① 与本卡同一缺陷类;② 机械修且形态已被钉死。 - ③ 该文件无其他认领持有;④ 同一批门禁族,不新增验证面。 - 就地修欠两样:认领申报的文件面同轮增补;PR 正文点名该修复并附证据。 @@ -73,10 +73,10 @@ model: opus 1. **重活串行,共享验证锁只有一个入口。** 每次 build/test 都从这里走。 - `bash scripts/pm/os-verify-lock.sh -c ''`(或 `-- `);⛔ 永不手搓 `flock`/lockfile。 - - 入口点保证:等待预算钉死在一次前台调用内;按到达序授予;99 专指没排到;报持锁时长。 + - 一次前台调用领全部等待预算,阻塞到拿锁或 99;⛔ 不轮询重试,恒设 `OS_VERIFY_LOCK_SLOT`。 - 它不保证机器空闲:`check:*` 门禁、install、dev server 不走它,与持锁同核并跑。 - 锁下墙钟绝对值是共享盒读数;只包命令本身,不包你的阅读与判断。 - - 结论读它印的 `VERDICT command-exit` 行,⛔ 不读裸 `$?`;排队是常态,不是挂死。 + - 结论读它印的 `VERDICT command-exit` 行,⛔ 不读裸 `$?`;按到达序授予,排队是常态,不是挂死。 2. **压住堆**:重命令前缀 `NODE_OPTIONS=--max-old-space-size=4096`,要抬需给理由。 3. **定向,不扫全**:只 build/test 受影响的包,turbo 用 `--concurrency=2`。 - 单文件跑法 `pnpm --filter exec vitest run --maxWorkers=2 `。 @@ -92,8 +92,8 @@ model: opus - 消融/变异脚本自带还原 trap(硬线在标准条款节的 ablation 条)。 7. **排队不是停摆,在轮内主动等。** 持锁的是你不拥有的进程,它的完成不会唤醒你。 - ⛔ 永不为等锁结束一轮。 - - 循环:拿到 99 就把间隔花在无锁工作上(测试、changeset、PR 正文、包内 `typecheck`)。 - - 然后带同名再跑一次:`OS_VERIFY_LOCK_SLOT=<稳定名>` 在第一次尝试之前就设好。 + - 99 专指没排到,读作 NOT MEASURED;把间隔花在无锁工作上(写测试、changeset、PR 正文)。 + - 再取以同名续位,⛔ 不从队尾重排:`OS_VERIFY_LOCK_SLOT=<稳定名>` 在第一次尝试前就设好。 - 没排到的调用把排位寄存,同名再来续原到达戳;不设它,每次离开都从队尾重排。 - 排队约 20 分钟无进展 ⇒ 先看这次检查能否收窄到不必持锁(收窄要申报,见干净收尾)。 - 收窄不了就停下报 `blocked` 并点名持锁者:`os-verify-lock.sh --status` 打印持锁者与队列。 @@ -371,7 +371,7 @@ model: opus "open_questions": [ { "question": "…", "options": ["A …", "B …"], "recommendation": "A, because …" } ], - "out_of_scope_findings": ["filed as #: one-line description"] + "out_of_scope_findings": ["filed as #: one-line description", "noted, not filed: one-line observation"] } ```