verify_task_body per-unit-evidence WARN vocabulary misses per-character grain
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Goal
Extend scripts/verify_task_body.py's per-unit-evidence WARN vocabulary so bodies whose natural unit is the character (or another established grain synonym) are not false-positive-WARNed. The check currently recognizes a fixed set of per-unit phrase forms and misses "per-character", so a body that fully satisfies the underlying-data rule at character grain still draws the WARN.
Provenance
Surfaced in prose by the #2479 interpretation-critic round-3 report (2026-08-24): #2479's clean-result reports every aggregate with labeled per-character plots and per-character JSON fields, yet the verifier emitted the per-unit-evidence WARN because its vocabulary lacks the "per-character" form.
Design sketch
Locate the per-unit-evidence WARN's phrase list/regex in verify_task_body.py and generalize it: add "per-character" (and audit the list for the project's other recurring grains — per-cell, per-seed, per-behavior, per-rung, per-conversation — adding any that appear in promoted v4 bodies but not in the vocabulary). Keep the check's intent unchanged: WARN only when NO per-unit evidence form is present.
Acceptance criteria
- A v4 body whose only per-unit evidence phrasing is "per-character" no longer draws the per-unit-evidence WARN.
- A body with no per-unit evidence at all still WARNs (no weakening).
- Tests in
tests/test_verify_task_body.pycover both cases. - Run the verifier against #2479's current body as a live fixture check (WARN disappears; other verdict lines unchanged).