Story: Comms features
Table of Contents
This page documents a story in Sprint 07. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Stretch the comms substrate: optional payload compression, LISTEN/NOTIFY through the shell, and type-traits-based message classification.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 07 |
| Now | Completed 2025-12-25. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2025-12-25 |
Acceptance
- Payload compression negotiated at session setup; benchmarks recorded.
- Shell receives Postgres notifications via the comms layer.
- Type traits classify every message; dispatch uses traits.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Consider compressing payload | DONE | 2026-05-19 | 2025-12-23 | Add optional zstd compression to comms payloads; benchmark against representative messages and decide thresholds. |
| Add listen/notify to shell | DONE | 2026-05-19 | 2025-12-24 | Route Postgres LISTEN/NOTIFY events through the comms substrate to the shell so users see live state updates. |
| Define type traits for message grouping | DONE | 2026-05-19 | 2025-12-25 | Add type traits to group messages by component and concern; basis for cleaner dispatch tables. |
Decisions
- Negotiate compression at setup
- keeps the protocol forward-compatible; clients without compression keep working.
- Notifications first in the shell
- cheap to inspect; Qt wiring comes later once we know the shape works.
Out of scope
- Per-message dynamic compression policies — we negotiate once per session.
See also
- Roles and permissions — consumes the type-traits classification.