# Decisions ## Scope Decision Stage three is limited to Verifier V2 claim checks. Composer is explicitly deferred to stage four. Reason: Composer requires stable verifier output and allowed-material filtering; mixing it into this stage would make rollback and acceptance unclear. ## Contract Decision `claim_checks` is the authoritative V2 verifier output. `facts_checked` remains as a compatibility projection generated from `claim_checks` when present. Reason: existing low-confidence rendering, retry context, trace output, and evaluation code still depend on `facts_checked`. ## Mapping Decision Claim verification maps to legacy facts as follows: | claim verification | legacy facts_checked verification | |---|---| | `direct_observation` | `direct_evidence` | | `reasonable_inference` | `indirect_support` | | `overstated` | `indirect_support` | | `unsupported` | `no_evidence` | | `external_unknown` | `no_evidence` | | `contradicted` | `contradicted` | ## Guardrail Decision Effective verdict is enforced in code: - `gatekeeper_result.status=fail` cannot remain `PASS`. - `evidence.invocation_ref` failure downgrades to `REJECT`. - Other Gatekeeper failures downgrade at least to `LOW_CONFID`. - missing/malformed Executor structured output cannot remain `PASS`. Reason: prompt compliance is not deterministic enough for safety-critical evidence attribution. ## Apply Fix Record Initial targeted Maven verification failed because older tests expected PASS to return Executor natural-language output or V1 `user_facing_answer`. Classification: test drift from the committed OpenSpec, not a design blocker. Resolution: update tests to use valid Executor V2 output for PASS paths and assert downgrade behavior for malformed or Gatekeeper-failed outputs. ## Interface Impact L2 internal contract extension: - Verifier output gains `claim_checks`. - Existing `facts_checked` remains available. - Persistence JSON gains `claim_checks` under existing `self_evaluation`. No external API or database schema changes.