Advances #8828.
Confirmed production failure class, found during the 2026-07-26 decision-audit backfill adjudication.
The review pipeline truncates long PR descriptions before they reach the AI reviewers. When the truncation point falls before a PR's Screenshots section, reviewers conclude the required visual evidence is absent and the gate closes the PR for a policy violation the contributor did not commit.
Evidence:
Requirements (model/fact boundary — same doctrine as #8833):
- Whether a PR body contains image/video attachments is a deterministic FACT, not a judgment call: extract an
attachment_count/has_images fact from the FULL untruncated body (cheap regex over , user-attachments, image extensions) and inject it as a structured fact the prompt cannot contradict — reviewers must never infer evidence-absence from prose.
- When the description IS truncated, any evidence-absence finding (screenshots, linked-issue text, checklists) must be demoted to a nit/question, never a blocker — absence of evidence inside a truncated window is not evidence of absence.
- Regression tests: a long-body fixture with images beyond the truncation point must produce zero evidence-absence blockers.
Test coverage: 99%+ branch-counted on changed src/** lines, both truncated/untruncated arms and with/without attachments.
Advances #8828.
Confirmed production failure class, found during the 2026-07-26 decision-audit backfill adjudication.
The review pipeline truncates long PR descriptions before they reach the AI reviewers. When the truncation point falls before a PR's Screenshots section, reviewers conclude the required visual evidence is absent and the gate closes the PR for a policy violation the contributor did not commit.
Evidence:
incorrect / policy_misappliedin the audit ledger.uncertain.Requirements (model/fact boundary — same doctrine as #8833):
attachment_count/has_imagesfact from the FULL untruncated body (cheap regex over,user-attachments, image extensions) and inject it as a structured fact the prompt cannot contradict — reviewers must never infer evidence-absence from prose.Test coverage: 99%+ branch-counted on changed
src/**lines, both truncated/untruncated arms and with/without attachments.