37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
# 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.
|