The self-contained durable `EventV2` core service is implemented. It owns
sync-versioned persistence, transactional sequencing, pub/sub, replay, and
replay-owner claims without relying on the old bus system.
Remaining slices:
- expose the embedded consumer-facing Session cursor API over HTTP and the
generated SDK where remote consumers need it
- keep replay-owner claims distinct from future clustered Session execution
ownership and stale-runtime fencing
## Deferred hardening cleanup
Keep these visible, but do not block functionality slices on them unless a concrete
failure appears during canary work:
- serialize database migration claiming across processes; current migration
application is protected only by an in-process semaphore, so two processes
starting against one SQLite database can still race
- simplify process-local durable-tail wake lifecycle with Effect `RcMap` and one
shared `PubSub.sliding<void>(1)` per active aggregate; keep SQLite cursor replay
and subscribe-before-history semantics unchanged
- page large durable aggregate replay reads instead of loading every row after a
stale cursor into one array
- decide whether connected tails need a periodic polling fallback for
cross-process SQLite writers; current advisory wakes are intentionally
process-local
- stream-cap websearch body collection before parsing
- add ripgrep execution timeout and bounded line framing
- materialize or consistently reject unresolved URL and file attachment sources
- decide stateless OpenAI Responses hosted-tool continuation behavior; reconstructed hosted output can replay as a stored `item_reference` when `store !== false`, while `store: false` intentionally omits the unavailable reference path
- decide whether to preserve deprecated `@opencode-ai/llm` orchestration exports
- preserve or alias renamed filesystem SDK generated type names if compatibility
consumers require them
- revisit syscall-level mutation confinement for hostile external processes
(`openat`, `O_NOFOLLOW`, and descriptor-relative mutation where supported)
Instead of needing to tear down things when something changes every service should emit granular events so services can react to them and reconfigure themselves. Allows frontend to receive these too, eg model.added. also prevents startup from blocking