{
  "id": "voice-backend-noun-free",
  "kind": "voice",
  "runner": "scripts/check-voice-style.cjs",
  "args": [],
  "rung": "declared",
  "evidence_log": "$MINDRIAN_HOME/voice-style.jsonl",
  "promotion_rule": { "window_runs": 100, "max_false_positive_rate": 0.1, "min_true_positives": 50 },
  "owner": "voice",
  "pinned_by": ["tests/test-3696-voice-log-denominator.cjs"],
  "applies_to": ["stop-hook"],
  "notes": "Larry never names backend implementation nouns (tool ids, database words, hooks, guards, error codes, file paths, run and leaf ids, engine scores, Brain as a backend noun) in a turn to the user, unless the navigator named the term or asked how Larry works (D-29). The scanner now exists: the Stop observer logs one row per hit through findMachineryNarration in lib/hmi/larry-reply-checks.cjs, in shadow mode only (A-04), with the D-29 never-say list without Theo (R-20) and the verification-stamp sentences allowlisted (R-13). The rung stays declared: promotion is a human edit after a reviewed window of evidence, and a blocking rung is a Phase 369.7 decision against a measured rate (R-14). This reuses the existing declared policy instead of minting a second one (Canon Part 7). min_true_positives is grounded in the same 50 to 100 human-reviewed-traces baseline from Vanishing Gradients Ep. 57 (Shreya Shankar) used by the other voice policies."
}
