skills(pm-dispatch, os-dev): five measured refinements to the finding admission threshold - #16557
Merged
Merged
Conversation
… admission threshold Read current state before every write (three lines in the finding-triage block), a named carrier for the acceptance-notes fallback (seat half in SKILL.md, dev half in os-dev.md), three criterion boundaries beside the three classes in all three carriers, one irreversibility gate before the close-not-planned line, and a falsifiable acceptance procedure in the runbook. Every pinned file stays at its pin by folding restated lines. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
Contributor
Author
维护者速读
Generated by Claude Code |
os-zhuang
approved these changes
Sep 7, 2026
os-zhuang
marked this pull request as ready for review
September 7, 2026 10:08
os-zhuang
enabled auto-merge
September 7, 2026 10:08
os-zhuang
deleted the
claude/issue-16551-finding-threshold-refinements
branch
September 7, 2026 10:34
This was referenced Sep 7, 2026
This was referenced Sep 7, 2026
os-zhuang
pushed a commit
that referenced
this pull request
Sep 7, 2026
…spatch-depth-check #16557 landed on main and removed 「PM 不写文件、不写代码;唯一例外及其全部条件见 红线。」 from 全体座位的不变量 — the second half of the fold this branch had just used to pay for its fourth depth-hold line. Conflict resolved by taking main's side: main's removal stands, no line #16557 landed is dropped, and the branch pays the resulting +1 with one more same-topic fold inside the same file — 「经验教训散文不再入技能文本」 joins 「交接按收尾清单逐步走完,并 `list_triggers` 清点自设定时器」 on one line (120 bytes), both inside 收班与交接. Ratchet after the resolution: SKILL.md 811/811 headroom 0, widest table row 342 (pin 342), core-rules.md 150/150. The four depth-hold rules and the `priority:p0` state-table row are unchanged from what the PR states. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TezFG8ZMrNH6n5VTNpPpdH
This was referenced Sep 7, 2026
This was referenced Sep 7, 2026
This was referenced Sep 7, 2026
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 free
to 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.
Fixes #16551
Five measured refinements to the finding admission threshold, on
origin/mainf48f3f1b21(BASE), head6e31ed35bb. Text-only diff: 16 insertions paid by 16 deletions of restated lines; every pinned file stays at its pin (SKILL.md 811 · os-dev.md 403 · core-rules.md 150 · dispatch-runbook.md 241); every new line is under the 120-byte cap; rules only, no issue numbers, no model identifiers, no narrative in the corpus. The three-class frame, the 「三类外关 not planned(不等批准…)」 line, 「定级即离标」, the nativetypelines and the English audit line are untouched.Item 1 — read current state before every write (SKILL.md, 发现分诊轮 block)
New lines, after 「三类内再过时前提检查,三选一:…判级只在此轮,不在立单时。」:
The third line carries a platform fact and is kept as the card wrote it.
references/platform-readings.md(not in this flight's surface) already has the labels half at its line 195 — 「issue_write的labels是整组替换不是追加:同一动作内重读现值合并再写。」 — and NO line for the other half (unpassed fields are cleared; assignees must be passed back). That half is the rider for the sixth readings increment.Item 2 — the acceptance-notes fallback needs a named carrier
Card evidence: 6 of 6 closed cards had no carrier. One carrier per file; the card's spelling kept.
SKILL.md (seat half), after 「(c) AI 写元数据会被运行时拒收或静默丢弃的陷阱;其余进 PR
## 验收备注,⛔ 不立卡。」 and the three boundary lines of item 3:os-dev.md (dev half), after 「它们进 PR
## 验收备注,报告out_of_scope_findings记noted, not filed: …,席位 ACCEPT 时读。」:SKILL.md line 779 (「席位在 ACCEPT 读 PR
## 验收备注…三类外已立的卡关 not planned。」) is unchanged: the close-reason rule beside the three classes is the one carrier in that file.Item 3 — three criterion boundaries, one line each, in all three carriers
SKILL.md, directly after the (c) line:
os-dev.md, directly after its (c) line (dev register):
core-rules.md, directly after 「立卡限三类:可复现缺陷、契约违背、元数据陷阱;…」 (summary register, one line for the three facts):
The third-failure-mode fact is recorded as the boundary, not widened into class (c).
Item 4 — one irreversibility gate (SKILL.md, before the 「每批先验三类…」 line)
Folded from the card's two-line spelling to one 120-byte line (「被消费而非编辑的文件」→「只被消费的文件」, 「窗口关闭后无法补做」→「过窗不可补」). It triggers on the thing's window only; no uncertainty trigger was added.
Item 5 — an acceptance metric that can fail (dispatch-runbook.md, 发现分诊轮细则 block)
Placed in the runbook, not SKILL.md, because: (1) it is a parameterised seat procedure (a sample size and a delay), which SKILL.md's own routing sends to references (SKILL.md 「细则是本文其余各节与其它 references」; runbook 「本文只放细则增量:参数、模板、步骤与原文」); (2) SKILL.md's 发现分诊轮 line already points the reader to this exact block (「每批约定与积压告警见
references/dispatch-runbook.md」), so the procedure lands beside the batch conventions it belongs to; (3) SKILL.md already owes ten folds for items 1–4 and an eleventh would remove a principle line where the runbook fold removes a pure restatement. 「阈值」 was prefixed so the line is self-contained. Not in os-dev.md (seat procedure, not a dev rule).The folds that paid — each folded line and where its content survives
SKILL.md (10 out, 10 in):
assignee 已设; 认领 section title 「认领(先认领后动工)」 and its 「跨账号 assignee 不是你 ⇒ 永不碰」AGENTS.md冲突时,AGENTS.md胜。」AGENTS.md> 红线 > …」domain:*」; 多仓协调 「执行座位信任标签,只在本车道认领;误标 ⛔ 不自行改…」os-dev.md (4 out, 4 in):
blocked报告」「其它任何收尾文本按定义即停摆」 (the PM-side reading stays in SKILL.md 收集)core-rules.md (1 out, 1 in): 「
needs-user-decision是决定待做:⛔ 永不派发,除代裁通道外 ⛔ 永不代答。」 survives at its 红线 「⛔ 永不派发 assignee 属于别人的 issue,⛔ 永不派发带决策标签的 issue」 and 「⛔ 永不代维护者回答产品或架构问题,唯一例外是已裁的代裁车道」. core-rules stays a subset of SKILL.md: every remaining core-rules line still has a SKILL.md counterpart, and the new boundary line summarises SKILL.md's three new boundary lines.dispatch-runbook.md (1 out, 1 in): 「修法是状态转换不是豁免评论;逐卡豁免评论机制已废弃,⛔ 不复活。」 survives at the block's own 「状态转换机制:定级出 hold ⇒ 同笔
finding→pm:on-hold」 and SKILL.md 「⛔ 不设逐卡豁免评论;每 fire 定完全部未定级 finding」.Serial record
claude/issue-14944-dispatch-depth-check, head4d3194ba74, draft; SKILL.md + core-rules.md). Cards [PM corpus] rules only, plain language: strip provenance narratives and incident post-mortems from the pm-dispatch skill corpus (maintainer 2026-09-04) — member 1: SKILL.md #15379 and skills(pm-dispatch): the queue-entry rule needs a third case — a non-required gate that is red BY DESIGN — andcheck-partof-closing-keywordmust stop telling agents to force-push #16516 have no open PR on these files.git clone --bare --sharedof the worktree;git --git-dir=PROBE.git config --get merge.os-regen.driverexit 1; no driver override anywhere):merge-tree --write-tree --name-only origin/main HEAD→ exit 0, clean (treefc91b735a7), withorigin/main=b1b978c8dfat probe time (one commit past BASE, touching none of the four files).4d3194ba74→ exit 1, CONFLICT (content) in.claude/skills/pm-dispatch/SKILL.md; core-rules.md auto-merged. Recorded as the brief asks; not taken as a landing condition against a head that is itselfdirtyagainst main — whichever of the two merges second re-folds.Gate verdicts (all on head
6e31ed35bb, exits captured before any pipe)node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(no paths; change set from git off merge basef48f3f1b2): 17 families derived; every one run as printed;--ran: 「✓ dispatch-gates --ran: 17 derived famil(ies) accounted for — 17 run, 0 NOT-MEASURED.」check:pm-skill-ratchet(self-test + live): 「✓ check-skill-line-ratchet self-test: 157 cases pass.」; live prints every pin at headroom 0, e.g. 「✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/SKILL.md is 811 lines (ceiling 811; headroom 0).」 and 「declared cross-file moves: 1, total ceilings down 9 lines.」check:pm-skill-id-lint: 「✓ check-skill-id-lint: 26 file(s) clean (pattern /#[0-9]{3,}/g).」check:skill-frame-sync(self-test 13 cases): 「✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files」check-clause2-carriers.mjs --self-test: 「✓ check-clause2-carriers self-test: 190 cases pass」;check-half-states.mjs --self-test: 「✓ check-half-states self-test: 2636 cases pass.」check-governed-merges.mjs --teston the four paths: exit 3, 「One hit governs the whole PR — 「混合 diff 一条命中即整 PR 分叉」」,.claude/** ×4listed — GOVERNED, as expected.pnpm check:nul-bytes: 「check-nul-bytes: OK (scanned 8143 text file(s) … no raw ASCII control bytes).」check:agent-model-declared,check:pm-governed-prose(「2 instruction surface(s) name all 5 registered governed surfaces」),check:pm-governed-mergesself-test,check:agent-test-spelling,check:doc-authoring,check:driver-memory-census,check:refd-timer-probe,check:watch-hint-literal,check-closing-keyword-parity(+ self-test),check-comment-mask-corpus,check-governed-queue-guard --self-test: all exit 0 with their own ✓/OK lines.pnpm --filter @objectstack/lint run check:doc-formula-expressions: first reading exit 3 「PREREQUISITE NOT MET — the workspace package@objectstack/formulais not built」;@objectstack/formula...then@objectstack/lint...built under the verify lock (VERDICT command-exit 0 both); second reading after the builds exit 0: 「✓ check:doc-formula-expressions self-test: 58 cases passed」「✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 434 files / 1371 TS blocks judged clean by @objectstack/formula.」pnpm lint(eslint . --no-inline-config) throughbash scripts/pm/os-verify-lock.shwithOS_VERIFY_LOCK_SLOT=issue-16551, one acquisition, lock free at--status: 「os-verify-lock: VERDICT command-exit 0 · held the lock 99s (1m39s) · waited 0s」 (shared-box seconds).skip-changeset: nothing here publishes from any package (.claude/**only).维护者速读(草稿)
🤖 Generated with Claude Code
Generated by Claude Code