Skip to content

V2: event audit tracker #35021

Description

@opencode-agent

Summary

Mega tracker for the V2 event/schema audit from the Discord gang-grill session.

Source discussion: https://discord.com/channels/1391832426048651334/1522263729318658181
V2 TODO post: https://discord.com/channels/1391832426048651334/1520962938733723720/1522327808465043566

The goal is to make the V2 event contract beta-ready: domain-shaped, replayable, deterministic, and pleasant for SDK/UI consumers.

Child issues

Big decisions to preserve

  • Drop session.next.*; next was migration scaffolding.
  • Put event creation time on the event envelope as created instead of payload timestamp.
  • Remove projection-only messageID fields where projected IDs can be derived from event IDs.
  • Keep domain IDs only where they are real correlation facts, e.g. callID, shell IDs, fork from.
  • Replace session.status with explicit execution lifecycle events.
  • Retry should reduce into current assistant retry state, not become message spam.
  • Event errors need a closed structured union with dot-cased type discriminators.
  • Rename provider continuation payloads from providerMetadata to state.
  • Keep metadata only for actual app/plugin extension metadata, e.g. synthetic messages.
  • Session shell should reuse Shell.Info and Shell.Output.
  • Durable log replay should use a fixed replay watermark, paged reads, and log.synced.

Acceptance themes

  • Reconnect/replay consumers can reconstruct durable state without timing races.
  • UI can render terminal states, retries, blocked provider content, guidance changes, and shell output without parsing hidden model text.
  • Provider finish: "content-filter" never looks like an empty successful assistant response.
  • Generated schema/client/plugin APIs reflect the cleaned event contract.

Notes

This tracker is intentionally broad. Use the child issues for implementation-sized work and close this when the event audit is complete or intentionally split into a later cleanup milestone.

Metadata

Metadata

Assignees

Labels

2.0coreAnything pertaining to core functionality of the application (opencode server stuff)gang-grillDesign topics queued for later group grilling

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions