docs(gate): decision 221 stated where the plan loop reads it

The verifier's look at ff46f57 found three fail-safe MINOR findings, all
text that did not yet say decision 221 or said it inaccurately:

- commands/trekplan.md Phase 9 and the plan-gate.mjs comment said only that a
  backed finding leaves the count and the stop rule; both now say it applies
  to the round's new findings, and a finding counted in an earlier round
  stays counted until a reviewer marks it resolved.
- Handover 4 said a known_outside entry "left the counted findings"; it now
  says that holds for a new finding of its round, and that a carried copy of
  the same id stays counted, so one id can sit in both findings and
  known_outside.
- The CHANGELOG Known issues bullet said the loop "then stops" and that the
  way on is the operator's choice at the stop rule. The stop rule fires only
  when the blocking findings do not get fewer, and a counting security
  finding is never accepted (PLAN_GATE_SECURITY_OPEN): the way on is a
  reviewer marking it resolved or "New mechanism". The bullet also names the
  shared id (two findings at one line and key, one mark resolves both).

No code change.

Part 2 of the E plan, decision 221.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-11-08 12:23:25 +01:00
commit d72d3667f6
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
4 changed files with 12 additions and 8 deletions

View file

@ -405,8 +405,10 @@ export function recordVerdict(text, dedup, opts = {}) {
}
const extra = prevExtra + (capped ? 1 : 0);
const diffMode = opts.base !== undefined || opts.baseNote !== undefined || opts.planPaths !== undefined;
// The threat model (E 2.4): a backed finding leaves the counted set (and so
// the stop rule) before countRound and is listed in known_outside.
// The threat model (E 2.4): a backed finding new in this round leaves the
// counted set (and so the stop rule) before countRound and is listed in
// known_outside; a copy rule A carries from an earlier round stays counted
// until a reviewer marks it resolved (decision 221).
const use = opts.threatModel;
const tm = use && use.usable === true ? use.threatModel : null;
const backed = [];