Store agent session events and transcripts locally
Supersedes draft 10171.
Reproduction (Task 10133, real local install): a Claude Code session ran on the container node, but every `POST /api/agent/sessions/<id>/events` answers `503 event storage is not configured on this control plane — retry later`; the api logs at boot "session transcript storage is UNCONFIGURED (AWS_REGION, SESSION_TRANSCRIPT_BUCKET)". No session can be observed as completed (AC-10, AC-16 session view), and the node log fills with retries.
Cause: session events/transcripts only have an S3 backend; PRD §7 forbids S3/MinIO in the local edition.
Fix: add a local-volume backend for session events and transcripts, selected by `edition.IS_LOCAL` (not an env var), mirroring how attachments use the `jaah-attachments` volume (`apps/api/app/routes/local_storage.py`, `apps/api/app/attachment_storage.py`). Add the volume to `infra/local-edition/compose.yml`.
Out of scope: the cloud S3 path (unchanged); retention policy.
Done means:
- On a fresh `docker compose up -d` of the local edition, a finished agent session shows its events and transcript in Audit > Sessions; the node logs no 503 for events.
- A test pins that the local edition stores events with no AWS variable set.
- `./dc check quick` green; cloud storage tests unchanged and green.
Outcome
Local edition now stores session events and transcripts on a jaah-sessions volume (edition.IS_LOCAL, no S3). Merged #6962 (db4962e). Quick gate and changed-area tests green. Live install not verified: tree api build (10177). Filed draft 10193. Memory: none applied.
Artifacts
Activity
- Ready
- Runner started
- Runner ended (done)