71 lines
2.2 KiB
Markdown
71 lines
2.2 KiB
Markdown
# Decisions
|
|
|
|
## Scope Decision
|
|
|
|
Stage four is limited to Composer final-answer generation and routing.
|
|
|
|
Reason: Gatekeeper and Verifier contracts were stabilized in earlier stages; this phase should only close the final-expression path.
|
|
|
|
## Composer Responsibility
|
|
|
|
Composer is an expression layer, not a diagnosis layer.
|
|
|
|
It may rephrase and organize only filtered material. It must not call tools, introduce new facts, rejudge root cause, or read raw Executor/tool output.
|
|
|
|
## Filtering Decision
|
|
|
|
`ChatService` owns Composer input filtering:
|
|
|
|
| Verifier classification | Composer handling |
|
|
|---|---|
|
|
| `direct_observation` | `allowed_claims` |
|
|
| `reasonable_inference` | `allowed_claims`, with bounded wording |
|
|
| `overstated` | `allowed_hypotheses` or `missing_info` |
|
|
| `unsupported` | `missing_info` |
|
|
| `external_unknown` | `missing_info` |
|
|
| `contradicted` | `missing_info` / REJECT-safe output |
|
|
|
|
For REJECT, `allowed_hypotheses` is always empty.
|
|
|
|
## Fallback Decision
|
|
|
|
Malformed Composer output falls back to deterministic rendering from filtered Composer input.
|
|
|
|
Fallback must never expose:
|
|
|
|
- raw Composer JSON;
|
|
- raw Executor JSON;
|
|
- Executor `user_facing_answer`;
|
|
- full unscreened tool output.
|
|
|
|
## Audit Decision
|
|
|
|
No new table is added. Composer output is persisted under:
|
|
|
|
```text
|
|
diagnosis_session.self_evaluation.verifier_evaluation.composer_output
|
|
```
|
|
|
|
The audit snapshot is intentionally compact and stores status plus parsed user-facing fields.
|
|
|
|
## Apply Fix Record
|
|
|
|
Initial targeted verification exposed test drift:
|
|
|
|
- test file had a UTF-8 BOM and failed Java compilation;
|
|
- scripted chat model did not recognize `COMPOSER_TEST_PROMPT`;
|
|
- older tests expected three-Agent execution and temporary V2 renderer behavior;
|
|
- LOW_CONFID assertions required indirect support to disappear instead of appearing as a possible direction.
|
|
|
|
Resolution: remove BOM, add Composer script branch, and update assertions to match the committed Composer contract.
|
|
|
|
## Interface Impact
|
|
|
|
L2 internal behavior change:
|
|
|
|
- external Chat API still returns a final answer string;
|
|
- internal final-answer source changes from Executor/temporary renderer to Composer or safe fallback;
|
|
- audit JSON gains `composer_output` under existing `self_evaluation`.
|
|
|
|
No database schema change.
|