Files

17 lines
2.2 KiB
Markdown

# Delivery contract (current implementation)
- `task.json` atomically stores task revision, original instructions, output kind, template and checked terms. Secrets are not stored here. Server startup restores these sessions; interrupted pending work becomes failed, never silently resumes side effects. Browser refresh requests the prior session ID. This restores requirements, not full model conversation or events.
- PPT tools default to `purpose: debug`. Debug files cannot satisfy delivery or use the final download endpoint. `purpose: final` requires a pending PPT task. Each artifact snapshots its task revision/run ID.
- Formal PPT generation checks package/render validity, template selection, required term presence and remaining substantive template text. Rejection records `acceptance.json` and produces no accepted result. Final artifacts are bound to the producing run/revision and SHA-256.
- Only `run.completed` with accepted delivery data adds a PPT download link. A model statement saying “complete” is not an acceptance receipt.
- Approval refusal/expiry prevents further approval requests in the same run. A new user run is required to retry.
## Known limits — do not represent these as solved
Formal generation additionally invokes an independent, tool-free model review with the original user requirements, final text and every rendered slide. This checks topic, completeness, stale product imagery/text and readability; unavailable vision, timeout, malformed answers or rejection fail closed. The generating model's self-assessment is not used. This reviewer uses the configured model and may still make mistakes; it does not independently research or certify business facts. Source text checks are conservative and can reject legitimate reuse. Full conversation persistence is not implemented. Existing pre-contract artifacts are not retroactively accepted. Old sessions without a task file need migration.
## Verification
`pnpm test`, `pnpm typecheck`, `pnpm lint`, `pnpm build`; `node --test scripts/ppt-acceptance.test.mjs`; `pnpm exec tsx scripts/verify-ppt.mts`; `pnpm exec tsx scripts/verify-ppt.mts --template`.
The real-file template check produces a debug copy, rejects its final-download access, and confirms a one-object replacement fails formal acceptance.