Skip to content

skills(pm-dispatch, AGENTS.md): finding admission threshold — three classes file, the rest rides the PR's acceptance notes - #16368

Draft
claude[bot] wants to merge 1 commit into
mainfrom
claude/issue-16351-finding-admission-threshold
Draft

skills(pm-dispatch, AGENTS.md): finding admission threshold — three classes file, the rest rides the PR's acceptance notes#16368
claude[bot] wants to merge 1 commit into
mainfrom
claude/issue-16351-finding-admission-threshold

Conversation

@claude

@claude claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Refs #16351

The SKILL.md + references/core-rules.md + AGENTS.md half of the finding admission threshold. The .claude/agents/os-dev.md half is held by another flight on that file and rides the flight that follows it, so this PR carries Refs, not a closing keyword; the card stays open until that half lands.

The rule landed — one rule, three registers

A card is filed for exactly three classes: (a) a reproducible defect (a repro or a failing probe named); (b) a violation of a declared contract (the contract text cited); (c) a trap that leads an AI authoring metadata to write what the runtime refuses or silently drops. Everything else — observations, dead code, drift not yet exercised, polish, style, doc nits, naming — is NOT a card: the dev lists it under a ## 验收备注 section of its PR body and in the report's out_of_scope_findings as noted, not filed: …; the seat reads it at ACCEPT and files a card itself only for an item that is in fact class (a)–(c). A filed finding outside the three classes is closed not planned in one stroke by the grading seat. The finding label keeps its meaning for what IS filed (待首次定级); a three-class card carries its evidence in the body, and the triage seat refuses one that carries none.

改前 → 改后 — every touched line, with the fold that paid for it

Line numbers are on origin/main at b9a14dd64f, the base of this branch. All three files are line-neutral — SKILL.md 811 → 811 (widest table row 342 → 342), core-rules.md 150 → 150, AGENTS.md 1058 → 1058 — and every changed line is ≤120 bytes (LC_ALL=C awk). Rules-only register: no dates, quotations, issue numbers or model names were added.

site 改前 改后 lines
SKILL.md:116 — 状态模型, finding row | \finding` | 观察类记录,恒 = 待首次定级;定级即离标;不占队列不进收件箱 |` | \finding` | 立卡三类内待首次定级,定级即离标;三类外关 not planned;不占队列不进收件箱 |` 1 → 1
SKILL.md:354 — 分诊座位职责, 分类 - \finding` = 观察类(死代码、未演练漂移、抛光;真实但今天没有用户撞上),待首次定级。` - \finding` = 三类内待定级:(a) 可复现缺陷(复现或失败探针);(b) 违背已声明契约(引契约文);then- (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR `## 验收备注`,⛔ 不立卡。` 1 → 2 (paid by the 387–388 fold below)
SKILL.md:377 — 发现分诊轮 - 每批先过时前提检查再三选一:晋级 / 关闭 not planned(维护者可否决重开,PM 不等批准)/ hold。 - 每批先验三类:三类外关 not planned(不等批准,维护者可否决重开);三类内无证据拒收。 1 → 1
SKILL.md:378 — 发现分诊轮 - 判级发生在发现分诊轮,不在立单时;车道座位可附证据/前提重验,⛔ 不定级不改标。 - 三类内再过时前提检查,三选一:晋级 / 关闭 not planned / hold;判级只在此轮,不在立单时。 1 → 1
SKILL.md:379 — 发现分诊轮 - 唯一例外:skills 车道 finding 由该席自分诊,全仓轮跳过。 - 车道席可附证据/前提重验,⛔ 不定级不改标;skills 车道 finding 由该席自分诊,全仓轮跳过。 1 → 1
SKILL.md:387–388 — 发版板 (the fold) - 每张板恰好一个生产者。 then - 鲜度节奏、清板三选一、pin 前置细则见 \references/seat-post-protocol.md`。` - 每张板恰好一个生产者;鲜度节奏、清板三选一、pin 前置见 \references/seat-post-protocol.md`。` 2 → 1 (content kept; 「细则见」→「见」, the spelling of the section's sibling pointer lines)
SKILL.md:778 — 报告契约 - \out_of_scope_findings` 应已由 dev 立成无 assignee 的卡:查重先行、归挂判据、立在修复落地仓。` - \out_of_scope_findings` 只列三类立卡与 `noted, not filed`;立卡查重先行、归挂、立在修复仓。` 1 → 1
SKILL.md:779 — 报告契约 - 范围外发现的标签按种分:观察类打 \finding`,具体缺陷不打标留分诊。` - 席位在 ACCEPT 读 PR \## 验收备注`,其中实属三类的由席位补立;三类外已立的卡关 not planned。` 1 → 1
core-rules.md:89 — 分诊座位职责 digest - 观察类记录打 \finding` 待首次定级;正文被截断的卡先发修复指令再跳过,不可派发。` - 立卡限三类:可复现缺陷、契约违背、元数据陷阱;截断卡先发修复指令再跳过,不可派发。 1 → 1
core-rules.md:150 — 报告契约 digest - 报 needs_decision 时 open_questions 非空;范围外发现须已立卡,PM 核验并对读同轮报告。 - needs_decision 必带 open_questions;范围外发现三类立卡、其余 noted not filed,核验对读同轮报告。 1 → 1
AGENTS.md:211–213 — Prime Directive 10, first sentence 10. **File issues for out-of-scope findings — don't silently expand scope or leave them buried.** When you hit a bug, gap, or unenforced capability that's unrelated to the current task, or too large to fix in scope, open a GitHub issue with a clear repro/decision and link it from your PR. 10. **File an issue for a reproducible defect, a contract violation, or a metadata-authoring trap; note everything else in the PR's acceptance notes — never expand scope, never bury a defect.** A card names its evidence (repro, contract text or trap); the reviewer files a note that is one. 3 → 3 (the corollary from mid-213 through 216 is byte-identical)

Untouched by construction: the four-axis frame block (SKILL.md ~733–751), the 候选与批次 block (~430–460), the six lines the sibling flight changed (81 · 534 · 538 · 543 · 637 · 647), CLAUDE.md, and the finding definition at AGENTS.md ~973 (a registry-read rule, a different rule).

Merge-tree proofs against both open heads on these files

git merge-tree --write-tree ea4cd7c0e4 d88c29c76a   # PR #16339 head  → exit 0, 0 CONFLICT lines
git merge-tree --write-tree ea4cd7c0e4 4d3194ba74   # PR #16271 head  → exit 0, 0 CONFLICT lines

Nearest hunks of those heads to this diff: PR #16271 edits the priority:p0 state-table row (three untouched rows below the finding row) and core-rules.md lines 8 and 36; PR #16339 edits SKILL.md 81/534/538/543/637/647 and core-rules.md 139–147. None of those lines is touched here. (The two heads conflict with each other in 候选与批次; that block is not touched by this PR.)

Verification — at ea4cd7c0e4, every exit captured before any pipe, verdict lines quoted from the gates' own output

  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on the three paths → 18 commands; the no-path derivation off the merge base (ea4cd7c0e4) is identical. --ran reconciliation: ✓ dispatch-gates --ran: 18 derived famil(ies) accounted for — 18 run, 0 NOT-MEASURED.
  • pnpm check:pm-skill-ratchet exit 0 — ✓ check-skill-line-ratchet self-test: 155 cases pass. · SKILL.md is 811 lines (ceiling 811; headroom 0) · SKILL.md: widest table row is 342 bytes (pin 342; headroom 0) · core-rules.md is 150 lines (ceiling 150; headroom 0) · AGENTS.md is 1058 lines (ceiling 1058; headroom 0). Before, at the base b9a14dd64f (wc -l): 811 / 150 / 1058, widest SKILL.md row 342.
  • pnpm check:pm-skill-id-lint 0 · pnpm check:skill-frame-sync 0 · pnpm check:pm-governed-prose 0 · pnpm check:pm-governed-merges 0 · pnpm check:pm-half-states 0 (✓ check-half-states self-test: 2535 cases pass.) · pnpm check:nul-bytes 0 · check-closing-keyword-parity (+ --self-test) 0 · check-comment-mask-corpus 0 · check-governed-queue-guard --self-test 0 · check:agent-test-spelling 0 · check:watch-hint-literal 0 · check:refd-timer-probe 0 · check:required-contexts 0 · check:doc-authoring 0 · check:docs-audit-scope 0 · check:driver-memory-census 0.
  • pnpm --filter @objectstack/lint run check:doc-formula-expressions: first run exit 3 PREREQUISITE NOT MET (unbuilt @objectstack/formula) — NOT MEASURED, not red; after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint (under the lock, exit 0) the re-run is exit 0 — ✓ check:doc-formula-expressions (spec TSDoc, #6763): 9 @example(s) judged clean across 1297 packages/spec/src files.
  • H-row sweep: each of the 14 removed or rewritten sentences grepped fixed-string over scripts/ and .claude/hooks/ → 0 hits; positive control 认领 >~24h → 2 hits.
  • node scripts/pm/check-governed-merges.mjs --test on the three paths → exit 3 (GOVERNED, all three named).
  • Whole-repo pnpm lint (eslint . --no-inline-config) through bash scripts/pm/os-verify-lock.sh (slot issue-16351, one acquisition, waited 0s, held 106s shared-box seconds) → lint exit=0.
  • Diff scan: 0 model identifiers; 0 control bytes in the three files.

验收备注 (noted, not filed)

  • noted, not filed: references/dispatch-runbook.md line 31 still reads 「范围外发现照旧单开」 in the sweep-batch context; under the rule landed here it reads as "filed per the admission threshold rather than folded into the sweep PR". A wording drift not yet exercised, outside this flight's declared file surface — not a card under this very rule.
  • noted, not filed: the .claude/agents/os-dev.md 范围 rule (「顺路撞见的无关缺陷立成新的无 assignee issue」 / 「观察类发现…打 finding 标签」) still states the old admission; it is the other half of the card, held by another flight on that file — not a finding, a known remaining half.

维护者速读(草稿)

改了什么。 把「什么样的发现才立卡」的门槛写进 PM 派发协议(SKILL.md)、它的规则摘要(core-rules.md)和仓根 AGENTS.md 的第 10 条基本纪律:只有可复现缺陷、契约违背、会让 AI 写错元数据的陷阱三类才开卡;其余观察、死代码、抛光、风格、文档小问题写进 PR 正文的「验收备注」,由复核席在验收时读,其中真属三类的由席位补立;三类之外已立的卡由定级席一笔关 not planned。三个文件行数不变,每加一行都在同一节内折一行付账。

为什么改。 来源是您在席位对话里的指示:两个仓库都需要 finding 准入门槛,从源头减流。看板读数是 open 卡里近半是 finding、每日新立几十张,绝大多数是 dev 顺路记下的观察,定级为 p3 后长期积压;吞吐不是问题,入流是,而入流是舰队自己按旧规则制造的。objectui 没有自己的 finding 规则,读的就是这几份文件,所以一次落地覆盖两仓。

风险与代价(含回滚)。 代价是三类之外的观察不再有卡片留痕,只留在 PR 正文里;如果 dev 把一个真缺陷判成了观察,复核席在验收时是第二道眼,这是本规则有意留下的兜底。纯文本协议改动,不动代码、不动门禁、不放宽任何 ratchet;回滚就是 revert 本 PR。os-dev.md 那一半由另一趟落地,落地前 dev 侧读到的仍是旧规则,PM 侧已按新规则读报告,这段窗口里两侧不一致但不冲突(PM 只会多关、不会少收)。

席位意见。 (留空)

你要做的。 批准并合并本 PR;若认为三类的边界应放宽或收紧,回复要调整的那一类即可。

Labels

skip-changeset — nothing here is published from any package (.claude/** and AGENTS.md only).

🤖 Generated with Claude Code

https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox


Generated by Claude Code

…lasses file, the rest rides the PR's acceptance notes

A card is filed for exactly three classes — a reproducible defect (repro or
failing probe named), a violation of a declared contract (contract text
cited), or a trap that leads an AI authoring metadata to write what the
runtime refuses or silently drops. Everything else (observations, dead code,
drift not yet exercised, polish, style, doc nits, naming) is listed under a
`## 验收备注` section of the PR body and reported as `noted, not filed`; the
seat reads it at ACCEPT and files only what is in fact one of the three.
A filed finding outside the three classes is closed not planned in one
stroke by the grading seat.

Line-neutral on every pinned file (SKILL.md 811, core-rules.md 150,
AGENTS.md 1058); every added line paid by a fold inside its own section.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
@github-actions github-actions Bot added the size/s label Sep 6, 2026
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 6, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 6, 2026
@claude

claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

ACCEPT — contract-tier review of PR #16368, head ea4cd7c0e4 (skills seat, 2026-09-06T16:0xZ).

Implemented-by: claude/issue-16351-finding-admission-threshold (os-dev subagent, contract tier — launched at tier, no refusal)
Reviewed-by: session_019RfFHiRCSs3JXLK4cwcfox (skills seat)

Verified in a detached compare worktree at the PR head, not from the report:

One rider recorded, not owed here: references/dispatch-runbook.md's sweep-batch line 「范围外发现照旧单开」 will read as the old admission once this lands; it is one line in a file the next SKILL.md flight (#16352 + #16229 + #16372, after PR #16339 and PR #16271 merge) already touches for the selection order — folded there.

Landing regime: governed (.claude/**, AGENTS.md) ⇒ the PR stays a draft; reviewers os-zhuang + hotlong requested in this same act, needs-user-decision added, the final 维护者速读 posted as the next comment; human merge. Nothing is flipped, queued or approved from the seat.


Generated by Claude Code

@claude
claude Bot requested review from hotlong and os-zhuang September 6, 2026 16:00
@claude

claude Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

维护者速读

事情:您今天下午的指示——「finding 准入门槛,两个仓库都需要,只有可复现缺陷、契约违背、会让 AI 写错元数据三类才立卡,其余写进 PR 验收评论」——的前一半落地:PM 派发协议(SKILL.md)、它的规则摘要(core-rules.md)与仓根 AGENTS.md 第 10 条。后一半(dev 契约 os-dev.md)在另一趟里,今天稍后到。

改了什么:三个文件各说一遍同一条规则。只有三类立卡,每张卡带自己的证据(复现或失败探针 / 契约原文 / 陷阱);其余观察、死代码、抛光、风格、文档小问题进 PR 正文的「验收备注」,复核席在验收时读,其中真属三类的由席位补立;三类之外已立的卡由定级席一笔关 not planned,不等批准。三个文件行数全部不变,每加一行都在同一节内折一行付账。

为什么值得:objectui 411 张开卡里 189 张是 finding,今天到 14 时已新立 83 张,几乎都是 dev 顺路记的观察。吞吐不是问题(今天合了 120 个 PR),入流是——而入流是舰队自己按旧规则制造的。objectui 没有自己的 finding 规则,读的就是这几份文件,一次落地覆盖两仓。

代价与兜底:三类之外的观察不再有卡片留痕,只留在 PR 正文。若 dev 把真缺陷判成观察,复核席验收时是第二道眼——这是规则有意留的兜底。纯协议文本,不动代码不动门禁,回滚一次 revert。

席位意见:建议合并。落地一周后在两块板上复测每日新 finding 数,目标降到 09-05/09-06 水平的一半以下。


Generated by Claude Code

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 needs-user-decision size/s 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.

1 participant