Skip to content

review-checklist: add the git-first spot-check row, paid by in-place compression - #11987

Merged
hotlong merged 2 commits into
mainfrom
claude/issue-11872-review-checklist-gitfirst
Aug 25, 2026
Merged

review-checklist: add the git-first spot-check row, paid by in-place compression#11987
hotlong merged 2 commits into
mainfrom
claude/issue-11872-review-checklist-gitfirst

Conversation

@claude

@claudeclaudeBot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Closes#11872

Adds the git-first spot-check row to .claude/skills/pm-dispatch/references/review-checklist.md, the review half of the read-order rule whose instruction half already landed in .claude/agents/os-dev.md and dispatch-runbook.md. One file, net 0 lines.

The row

报告 tests/证据里有 git 本可回答的 API 读吗?(dev 契约的读序是 git → REST → MCP/GraphQL)判据:MCP list_issues/search_issues 一类 GraphQL 读,或重跑派发词已下发的去重读数 —— fetch 之后本地 git 就答得了文件内容、diff、提交史与分支态。⛔ 不因此判 REWORK,ACCEPT 照给,但把这条记进 ACCEPT 评论:复核不记它,退化就没有任何地方看得见。

Flag, not a verdict: the report stays acceptable and the ACCEPT still goes out — what the row buys is that the pattern becomes visible at review, which the evidence reading alone does not deliver.

The ceiling, and how the row was paid for

The card says 82/82; the file on origin/main is at 84/84. The re-pin that landed the 120-byte max-line rule moved this ceiling as part of its wholesale re-wrap, after the card was written. The constraint is unchanged — headroom 0, shrink-only, maintainer-only to raise — so the card's instruction stands exactly as written; only the number is stale. The ceiling in scripts/pm/check-skill-line-ratchet.mjs is untouched by this PR.

Two payments, both in place:

1. The two closing-keyword rows merge into one — 8 lines → 5. Real compression: both rows carried the parser facts and the same pointer at the platform-readings table. Every check survives, in the same chronological order:

substancebeforeafter
pre-ready scan of the body's closing-keyword shaperow 1「翻 ready 前扫正文」
⛔ never put a closing keyword beside another open card's numberrow 1kept verbatim in intent
the negation sentence written to prevent a misclose IS the miscloserow 1kept
half-state patroller only walks open PRs ⇒ this scan is the last human gate before mergerow 1kept
post-merge read of each related card's closed_by_pull_requestsrow 2「合并后读每张相关卡的 closed_by_pull_requests
confirm the right card closed and that no other card was closed with itrow 2kept
parser ignores negationboth rowsstated once
body and commit message parsed separately + pointer to the readings tableboth rowsstated once
a misclosed card hides as completed from every open-only filter; this read is the only mechanical catchrow 2kept

2. The CI-convergence row re-wrapped at the corpus's own 120-byte width — 8 lines → 7. No word changed. Proved the way the re-wrap that introduced the rule proved itself:

CI row byte-identical after whitespace normalization: true | normalized bytes: 688 vs 688
inline code spans identical in sequence: true
lines: 8 -> 7

Ledger: −3 −1 +4 = 0. check-skill-line-ratchet reads review-checklist.md is 84 lines (ceiling 84; headroom 0) — same ceiling, same headroom, one more check on the list.

Verification

Gate family derived from the real change set, not recalled: node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack (9 families). Union run after the final commit, at 6f7dfe58d — every one green, exit code captured before any pipe:

gateverdict line
check:pm-skill-ratchet✓ check-skill-line-ratchet: …review-checklist.md is 84 lines (ceiling 84; headroom 0). + ✓ self-test: 71 cases pass.
check:pm-skill-id-lint✓ check-skill-id-lint: 22 file(s) clean (pattern /#[0-9]{3,}/g).
check:skill-frame-sync✓ check-skill-frame-sync self-test: 12 cases pass, plus 5 dispatch-gates declaration cases.
check:doc-authoring✓ doc authoring guard: 389 files clean · ✓ 38 published skill files clean
check:required-contexts✓ check-required-contexts --self-test: 150 assertions (both legs exit 0)
check:pm-governed-merges✓ check-governed-merges --self-test: 129 assertions
check:agent-test-spelling✓ check-agent-test-spelling --self-test: all cases pass
check:doc-formula-expressions✓ …: 22 record-scoped formula example(s) across 421 files / 1448 TS blocks judged clean
check:nul-bytescheck-nul-bytes: OK (scanned 6658 text file(s) … no raw ASCII control bytes).

Plus a self-scan of the edited file for control bytes (grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]') — no match.

Declared narrowing — the repo-wide pnpm lint: not run, and empty by construction rather than skipped. Its governed population is read from eslint's own config, not guessed: none of the 7 config blocks in eslint.config.mjs carries a files pattern that matches markdown, so the one path in this diff is outside what eslint . judges. With no type-aware linting reaching a .md file, this diff cannot move a verdict on any untouched file either. CI runs the full farm regardless.

Changeset: none. .claude/-only, internal agent tooling, publishes nothing; the skip-changeset label carries that declaration in this repo.

Draft on purpose: .claude/skills/** is a governed surface, so this one merges by a human.

Generated by Claude Code


Generated by Claude Code

…compression (#11872)
The instruction half of the git-first read-order rule already landed in
os-dev.md + dispatch-runbook.md; a silent dev regression against it is not
visible at review unless the checklist asks for it. This adds that row.
The file sits at the line-ratchet ceiling with zero headroom, so the row is
paid for in place, not by raising the ceiling:
- the two closing-keyword rows (pre-ready body scan, post-merge
closed_by_pull_requests read) merge into one row, 8 -> 5 lines: both
carried the parser facts and the same pointer, now stated once
- the CI-convergence row is re-wrapped at the corpus's own 120-byte width,
8 -> 7 lines, proved byte-identical after whitespace normalization with
its inline code spans identical in sequence
Net 0 lines: 84/84, ceiling untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RMTpSRF5CjMmQBFfPtPCwJ
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

review-checklist: add the git-first spot-check row (#11365 half ③) — checklist sits at 82/82, pay by in-place compression

3 participants

@hotlong@claude@os-zhuang