Skip to content

docs(pm-dispatch): retire duty-7's reader half per maintainer ruling - #13603

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-13304-retire-reader-half
Aug 31, 2026
Merged

docs(pm-dispatch): retire duty-7's reader half per maintainer ruling#13603
os-zhuang merged 1 commit into
mainfrom
claude/issue-13304-retire-reader-half

Conversation

@claude

@claude claude Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes #13304

Retires duty ⑦'s reader half from .claude/skills/pm-dispatch/references/dispatch-runbook.md, executing the maintainer ruling.

The ruling

Maintainer ruling 2026-08-31 (chat), verbatim:

「13580 B(荐」

Option B as put to the maintainer, verbatim from the ruling comment on the card:

B (recommended) — retire duty ⑦'s reader half outright: the 读者半边 and 正对照 bullets of the runbook's ⑦ section. The instrument is measured structurally blind on 104 of 121 keys; text explaining when to trust a blind instrument helps no PM decision. Construct removal, net-negative lines. The surface half (canonical diff, measured good) stays.

The ruling also settles what does not land here, verbatim:

The 同类 family's transferable sentence (grading comment above) does NOT get a replacement carrier in the runbook — under this ruling, fewer methodology sentences is the point.

Accordingly this diff adds zero replacement prose. PR #13580 (the earlier +7-line applicability-domain repair on this card) was stood down unmerged and is superseded by this one; none of its text is imported here.

The diff

One file, .claude/skills/pm-dispatch/references/dispatch-runbook.md. 271 → 265 lines (1 insertion, 7 deletions).

Deleted — the two bullets carrying the reader-count method:

  • the 读者半边 bullet (3 lines): the per-key git grep recipe plus its three hit-adjudication rules.
  • the 正对照恒先跑 bullet (3 lines): the sys_share_link.email_allowlist calibration control.

Kept, untouched — the section heading and the surface half bullet (canonical member-level diff, measured good), including its pinned baseline ref.

The one coherence repair

The heading suffix 「与校准」 ("and calibration") named the calibration bullet that this PR deletes, so leaving it would have made the heading actively false. It is dropped in place, word-level, no re-wrap:

## security-object 无判决枚举(座位贴常设 ⑦)的方法与校准## security-object 无判决枚举(座位贴常设 ⑦)的方法

Measured: that line goes 73 → 64 bytes — it shrinks, so it is byte-bounded in the sense the in-passage word-tightening rounds on this file established (#13427, #13403, #13505 are cited here as precedent for the shape of an in-passage tightening, not as a standing permission — the authority for this edit is the ruling above).

A second rename was considered and rejected on measurement. Renaming the surviving bullet 「表面半边」 ("surface half") — whose name still references a two-half structure that no longer exists — to 「成员级 diff」 would take its line from 116 → 118 bytes, i.e. it grows. Under the byte-bound it is therefore not taken: the words stay as-is and the residual naming incoherence is left for the corpus-audit card's Phase 3 to fold in.

Verification

Acceptance table, evaluated at BOTH refs via git show REF:path

Base d47583841 (merge base) vs head 0a424c942:

check at base at head expected verdict
negative anchor: 读者半边 1 0 1 → 0 PASS
negative anchor: 正对照恒先跑 1 0 1 → 0 PASS
negative anchor: sys_share_link.email_allowlist 1 0 1 → 0 PASS
negative anchor: heading suffix 与校准 1 0 1 → 0 PASS
POSITIVE control: 表面半边 survives 1 1 1 → 1 PASS
POSITIVE control: section heading survives 1 1 1 → 1 PASS
POSITIVE control: pinned baseline ref b000ab59 survives 1 1 1 → 1 PASS
line count 271 265 271 → 265 PASS

The positive-control rows are load-bearing, not decoration: a zero on those would mean the instrument broke rather than that the text is gone. All three read 1 at head, so the negative-anchor zeros above them are measurements and not instrument failure.

Repo-wide sweep: git grep -n 读者半边 and git grep -n 正对照恒先跑 over the whole tree return no hits after this change — the runbook was the only carrier, so no other file needs a follow-up and none was edited.

Why no ablation applies

The ratchet is a ceiling (an upper bound on line count), and this diff only removes lines. A deletion cannot breach an upper bound, so there is no red to predict and no mutation that would produce one — an ablation here would have no failing leg to demonstrate. The reverse verification that is meaningful for a pure deletion is the two-ref acceptance table above, which is why that is what was run.

Gates

Family derived from the ACTUAL diff with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack (7 families; the script derived the change set itself from the merge base). All 7 run and green at head 0a424c942. Each gate's own verdict line:

  • check:agent-test-spelling✓ check-agent-test-spelling: 0 violations — 413 file(s) · 5084 bare -- token(s) · 1284 launcher-rooted run(s) · 9 separator(s) JUDGED · 5 vitest-backed script name(s) derived from 80 manifest(s)
  • check:doc-authoring✓ doc authoring guard: 393 files clean — no bare metadata literals. and ✓ doc authoring guard: 48 published skill files clean — no internal issue-id references.
  • check:doc-formula-expressions✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 426 files / 1451 TS blocks judged clean by @objectstack/formula.
  • check:pm-governed-merges✓ check-governed-merges --self-test: 228 assertions
  • check:pm-skill-id-lint✓ check-skill-id-lint: 23 file(s) clean (pattern /#[0-9]{3,}/g).
  • check:pm-skill-ratchet✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/dispatch-runbook.md is 265 lines (ceiling 278; headroom 13).
  • check:skill-frame-sync✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 files

Two of the seven first reported PREREQUISITE NOT MET in the fresh worktree and were treated as NOT MEASURED rather than as failures, per each gate's own text: check:doc-authoring named pnpm install, and check:doc-formula-expressions named pnpm install then two builds (@objectstack/formula, then @objectstack/lint). Each prerequisite was satisfied and the gate re-run; the green lines quoted above are from those re-runs. Every exit code was captured directly (cmd > log 2>&1; EXIT=$?), never through a pipe.

The ratchet pin is deliberately not followed down (278 → 265) in this PR: scripts/pm/check-skill-line-ratchet.mjs is serial behind another in-flight chain, and the pin follow-down is deferred to the corpus audit's Phase 3 per the ruling. The ceiling is an upper bound, so 265 ≤ 278 passes it untouched — as the quoted verdict line shows, with headroom 13.

Posture

  • Governed surface (.claude/**): this PR stays draft. No ready flip, no auto-merge, no review submitted — landing is the maintainer's call.
  • skip-changeset: applied. The diff publishes nothing from any package — it is confined to .claude/**.
  • Control-character self-scan over the edited file: clean, zero hits.

Generated by Claude Code


Generated by Claude Code

Maintainer ruling 2026-08-31, verbatim: 「13580 B(荐」 — option B adopted.

Deletes the two bullets of the runbook's duty-7 section that carry the
reader-count method: the 读者半边 bullet (the git-grep-per-key method) and
the 正对照恒先跑 bullet (the sys_share_link.email_allowlist calibration).
The instrument they describe was measured structurally blind on 104 of 121
keys, so prose explaining when to trust a blind instrument helps no PM
decision. Construct removal, net-negative lines.

The section heading and the surface half (canonical member-level diff,
measured good) stay. No replacement prose is added.

One coherence repair rides along, byte-bounded and in place: the heading
suffix drops 「与校准」 now that the calibration bullet is gone (73 -> 64
bytes, shrinks). The surviving bullet's name is left untouched because
renaming it would grow its line by 2 bytes.

271 -> 265 lines.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXxTW8mvPBhoHxmyPZ63de
@os-zhuang
os-zhuang marked this pull request as ready for review August 31, 2026 05:11
@os-zhuang
os-zhuang enabled auto-merge August 31, 2026 05:12
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit f4d5308 Aug 31, 2026
29 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-13304-retire-reader-half branch August 31, 2026 05:27
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 size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants