# Evidence ## Relevant History - `executor-v2-output-contract`: Executor emits structured diagnostic material and no final-expression fields. - `executor-gatekeeper-hook`: Gatekeeper validates deterministic evidence failures before Verifier. - `executor-verifier-claim-checks`: Verifier emits `claim_checks` and effective verdict guardrails. ## Code Evidence - `src/main/resources/prompts/chat-composer-prompt.md`: defines Composer as an expression layer with strict JSON output. - `src/main/java/com/superbiz/agent/service/ChatService.java`: loads Composer prompt, invokes `chat_composer`, filters Composer input, parses Composer output, falls back safely, and persists Composer audit. - `src/test/java/com/superbiz/agent/service/ChatServiceSequentialAgentTest.java`: covers Composer invocation, fallback, REJECT/LOW_CONFID behavior, and no raw JSON leakage. ## Evidence-Driven Conclusions - Composer must be after Verifier because Verifier `claim_checks` are the authority for allowed final-answer material. - Composer must not receive raw tool output or full unscreened Executor output because that would re-open the evidence attribution problem. - Verifier malformed/missing output should not invoke Composer because there is no trustworthy decision to filter with. - Fixed fallback remains necessary because Composer is an LLM call with a strict JSON contract and can produce malformed output. ## Verification Evidence Passed: ```powershell mvn "-Dtest=ChatServiceSequentialAgentTest" test mvn "-Dtest=ExecutorGatekeeperServiceTest,VerifierInputHookTest,ChatServiceSequentialAgentTest" test cmd /c openspec validate executor-composer-final-answer cmd /c openspec validate --specs ``` Known existing warnings: - Maven reports duplicate `spring-boot-starter-test` dependency in `pom.xml`. - Existing Lombok `@Builder` default warnings remain.