Filed by the skills lane seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:1xZ. domain:skills; governed (.claude/agents/os-dev.md and any reference the obligations live in).
Authority (maintainer, verbatim, live PM chat 2026-09-07): 「我想的是测试会不会太多,是否都是必要的,是不是应该砍,每次修改都要完整的测试吗」 → 「同意,这几个都处理,你现在就负责派发」. This card is part C.
What
Three test obligations in the dev contract are narrowed, because they are the source of the growth curve (35–89 new test files a day; 3,388 test files against 2,183 source files):
- Reverse verification and ablation are one-time proofs, quoted in the PR body and the report — never a permanent test file. The legs stay mandatory; what changes is that their evidence is the quoted before/after run, not a fixture that stays in the tree.
- Import-side package tests are owed only when a PUBLIC surface changes — a
packages/spec contract, a published exports entry, a wire shape. A change that keeps every public surface byte-identical owes its own package's tests and the derived gates, not a test in every package that imports the module.
- No pin tests on message wording. A remedy string, a verdict line or an error text is pinned only where the words are the operative criterion a consumer parses; otherwise the assertion is on the kind, the exit code or the named subject, never on the prose.
Measured
- os-dev.md line 130 (「不按改了哪些包猜:普通 import 被改模块的包也在清单里,欠它们的测试」) is the import-side obligation; lines 188–259 are the reverse-verification and ablation block; the wording-pin habit has no single line in os-dev.md and may live in
references/review-checklist.md or core-rules.md — the flight measures where each obligation is stated before folding, and every carrier moves in the same PR.
- The line pins hold: os-dev.md 403/403, core-rules.md 150/150; every change is a fold under the pins, rules-only, plain language, one rule per line (the maintainer's 2026-09-04 rulings).
Ruling
Acceptance
check-skill-line-ratchet live and self-test green at unchanged ceilings; check-governed-merges --test exit 3; the corpus gates (check:skill-frame-sync, check-clause2-carriers, check-skill-id-lint) green.
- The PR body carries, per obligation, the old line, the new line, and the sentence that says what a dev no longer owes.
Generated by Claude Code
Filed by the skills lane seat (session
session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on the maintainer's direction, 2026-09-07T02:1xZ.domain:skills; governed (.claude/agents/os-dev.mdand any reference the obligations live in).Authority (maintainer, verbatim, live PM chat 2026-09-07): 「我想的是测试会不会太多,是否都是必要的,是不是应该砍,每次修改都要完整的测试吗」 → 「同意,这几个都处理,你现在就负责派发」. This card is part C.
What
Three test obligations in the dev contract are narrowed, because they are the source of the growth curve (35–89 new test files a day; 3,388 test files against 2,183 source files):
packages/speccontract, a publishedexportsentry, a wire shape. A change that keeps every public surface byte-identical owes its own package's tests and the derived gates, not a test in every package that imports the module.Measured
references/review-checklist.mdorcore-rules.md— the flight measures where each obligation is stated before folding, and every carrier moves in the same PR.Ruling
os-zhuang+hotlong,needs-user-decision, the final 维护者速读, human merge.packages/spec/src— condition it on the file surface or replace it by the dispatch-gates derivation (#16104 section 3.1) #16388 (which waits behind this card now) and as PR agents(os-dev): the verify-lock waiting discipline as protocol, and the finding admission threshold #16375 (merged 02:02:55Z — branch fromorigin/mainat or after6eba38f5a3).Acceptance
check-skill-line-ratchetlive and self-test green at unchanged ceilings;check-governed-merges --testexit 3; the corpus gates (check:skill-frame-sync,check-clause2-carriers,check-skill-id-lint) green.Generated by Claude Code