Skip to content

V2: clean up session event schema names and payloads before beta #35014

Closed

Description

@opencode-agent

Summary

Clean up the V2 session event schema before beta based on the live gang-grill review.

Source discussion: https://discord.com/channels/1391832426048651334/1522263729318658181

Locked decisions

  • Drop session.next.*; next was migration scaffolding, not domain language.
  • Event creation time belongs on the event envelope (created), not repeated as payload timestamp on ordinary events.
  • Keep durability explicit in event definitions. Current durable naming is fine; make the durable/ephemeral split clear at the definition/API level.
  • Remove projection-only messageID fields from events when projected message IDs can be derived from event IDs.
  • Use session.agent.selected, session.model.selected, and session.location.selected.
  • Rename location subdirectory to subpath to match Session.subpath; keep it on the event so projectors do not need filesystem/project resolution.
  • Keep session.prompt.admitted / session.prompt.promoted; promoted should reference admitted input by inputID and must not duplicate the prompt payload.
  • Leave legacy session.prompted compatibility alone for now; remove old cruft in a later boring cleanup release once V2 is stable.

Proposed cleaned shapes

session.prompt.admitted { inputID, prompt, delivery }
session.prompt.promoted { inputID }
session.agent.selected { agent }
session.model.selected { model }
session.location.selected { location, subpath? }
session.renamed { title }
session.forked { parentID, from? }

Follow-up checks

  • Decide how deterministic projected IDs are derived from event IDs.
  • Confirm which event payload IDs remain domain-significant (callID, from, etc.) vs projection leakage.
  • Update generated schema/client/plugin APIs together.

Activity

  1. added
    coreAnything pertaining to core functionality of the application (opencode server stuff)
    gang-grillDesign topics queued for later group grilling
    on Jul 2, 2026
  2. kitlangton commented on Jul 3, 2026

    @kitlangton
    Contributor

    Done. Landed in two PRs: #35172 (durability declared at the event definition level, wire envelope requires the durable block) and #35217 (dropped the session.next prefix across all 36 events, envelope-level created timestamp stored on the event row, payload timestamp/messageID strips, prompt.admitted/prompt.promoted, and the single reset migration). Remaining naming discussion for session.context.updated is tracked in #35057.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions