Twinned from https://github.com/cfsh/ninefold/issues/597 by tools/beads/import_github.py's reconcile pass.
Suggestions from ninefold-reviewer's review of #596. All advisory, none blocking that PR — it is CONVERGED. They are the four things that decide whether the new B2 gate check actually fires in practice, plus the surface it is duplicated on.
tools/reviewer/CHARTER.md § *Severity floor* binds "NEW advisory findings" across passes and exempts only regressions. B2's motivating case is the long-lived, many-round PR (#578: six verdict posts over five head shas) — which is precisely where the floor sits highest, and where "the body's third paragraph is stale" reads as sub-floor next to the defects already fixed on the thread.
Nothing in the diff says whether a *standing per-pass gate result* is a "new finding" for floor purposes. B2 itself says silence is a real result and the reviewer should state the body is current when it is — that only works if the floor does not apply. One clause, in either section, settles it.
B2 says to read the body last, after the diff and the threads. But that instruction lives in *What to produce*, while CHARTER.md's *Procedure — read everything, no shortcuts* still puts --json title,body,... at step 1, and section A mines the body for chat-quoted asks before anything else is read. An agent following the numbered procedure has read the body long before it meets B2, and nothing in the procedure tells it to come back. A step 6 ("re-read the body last, for B2 — the check is only possible once you know the truth") would make the sequencing real rather than aspirational.
This PR adds a sixth item to a list that exists in two places — CHARTER.md §B and DESIGN.md §4 — and updates both by hand, correctly. But the PR's own argument for doing so is the verdict-schema precedent: stale for months across four copies, which is why tools/tests/test_nflib_verdict.py exists. That contract test scrapes exactly one line (REVIEWER-VERDICT sha=…) and knows nothing about the gate-check list, so the same drift class is still unguarded on this list.
Cheapest shape: extend the existing contract test to assert that every **<letter>. heading in CHARTER.md's *What to produce* section has a counterpart bullet in DESIGN.md §4 — structural, not prose-matching.
dispatch.py's trigger policy is review-requested + head-moved (dispatch.py:271-272, :298). A PR body edit moves no sha. So:
./tools/pr/review_now.py <n> --force (merged in #578) is the affordance that closes this. Worth one line in B2 telling the coder to use it after a body fix, so the check has a completion path instead of an open end.
None.
No comments.