RF-02 — FAIL has no consequential disposition route

State: open
Repair shape: disposition-lifecycle design plus implementation
Severity: high
Related: RF-01, RF-03

Finding

A FAIL completes normally, establishes a freshness baseline, and is omitted from later stale selection. The standard warning/fix path consumes WARN only. Job-list can expose the stored outcome, but no normal route turns FAIL into the downstream disposition work promised by the gate contract.

Evidence

Why it matters

Freshness means input applicability, not approval. Using freshness as the only batch-completion check nevertheless hides the most severe verdict from the normal workflow.

Provisional repair direction

Represent handling separately from freshness. A dedicated or unified disposition selector should return every unresolved FAIL until an operator records fix, reject, or defer. This need not make FAIL a merge blocker.

Done when

  • A finalized FAIL is returned by the normal batch handoff and a documented disposition selector.
  • It remains visible until an explicit disposition event resolves it.
  • Freshness selection remains about input change and does not become an outcome queue by accident.
  • End-to-end tests cover finalize, select, disposition, and resolution.