# Decisions: executor-v2-output-contract ## Key Decisions ### Executor V2 removes final-expression fields Decision: Chat Executor final output now uses `executor_evidence_v2` and must not include `diagnosis_summary` or `user_facing_answer`. Reason: Executor should collect evidence and produce structured diagnostic material, not write final user-facing conclusions. ### Temporary renderer bridges the gap before Composer Decision: `ChatService` renders V2 structured fields into readable Chinese only when Verifier returns `PASS`. Reason: Composer is a later phase, but external users must not receive raw JSON during this intermediate stage. ### V1 compatibility remains Decision: Existing V1 `user_facing_answer` extraction remains. Reason: It keeps old tests and any lingering V1 output compatible while the staged migration continues. ### Gatekeeper and Verifier V2 are deferred Decision: This phase does not add Gatekeeper or `claim_checks`. Reason: The user requested phase-by-phase implementation with archive and commit after each phase. Gatekeeper is phase two. ## Interface Impact - Internal Agent output contract: L4, because fields are removed. - Verifier payload: L2, because raw `executor_final_answer` and parsed `executor_structured_output` remain. - External Chat answer: compatible intent; users still get readable Chinese. ## Risks - The temporary renderer is not a full Composer and should be replaced in the Composer phase. - Verifier prompt still uses V1 `facts_checked`; Verifier V2 is a later phase.