Skip to content

RFC: Session interface (astrid-bus:session conversation-thread contract)#34

Open
joshuajbouw wants to merge 2 commits into
mainfrom
rfc/session-interface
Open

RFC: Session interface (astrid-bus:session conversation-thread contract)#34
joshuajbouw wants to merge 2 commits into
mainfrom
rfc/session-interface

Conversation

@joshuajbouw

Copy link
Copy Markdown
Contributor

Standardises astrid-bus:session 1.1.0 as a publishable contract, so anyone can write a conforming session capsule (encrypted-at-rest, fleet-synced, ephemeral, or a bespoke per-deployment backend) as a drop-in for the incumbent astrid-capsule-session.

Documents the conversation-thread interface end-to-end: the verbs (append / get_messages / clear / list / get_meta / update / delete / search), the payload records, the per-request scoped reply-topic + correlation-id convention, the metadata model (title / first- & last-message previews / archived / timestamps + the opaque meta forward-compat escape hatch), the session.v1.event.* lifecycle fan-out for live multi-device sync, and the normative per-principal scoping invariant that makes the surface safe to expose to paired devices and untrusted agent tools.

Modelled on the astrid:users interface RFC (#28); governed by the topic-versioning convention per the Host ABI RFC (#22), not the kernel-to-capsule host ABI. Additive over 1.0.0.

Stays open and accrues toward 1.0. Relates to astrid#974 / astrid#1041; implemented by the capsule-session and gateway (astrid#1045) PRs.

Copilot AI review requested due to automatic review settings June 24, 2026 04:21
Document astrid-bus:session 1.1.0 as a publishable standard so any
conforming session capsule (encrypted, synced, ephemeral, bespoke) is a
drop-in: verbs (append/get_messages/clear/list/get_meta/update/delete/
search), payload records, scoped reply-topic + correlation-id convention,
the title/preview/archived/timestamps/meta metadata model with the opaque
meta forward-compat escape hatch, session.v1.event.* lifecycle fan-out,
and the normative per-principal scoping invariant.

Models on the astrid:users interface RFC (rfcs#28); governed by the
topic-versioning convention per the Host ABI RFC (rfcs#22), not the host
ABI. Relates to astrid#974 / astrid#1041.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a draft RFC that standardizes the astrid-bus:session@1.1.0 conversation-thread IPC contract so multiple interchangeable “session capsule” backends can be implemented against a stable, published spec.

Changes:

  • Adds a new RFC document defining the session thread model, verbs, payload records, topic conventions, and lifecycle events.
  • Specifies per-principal isolation as a normative invariant and documents pagination/search semantics.
  • Includes a WIT excerpt and capsule manifest topic declarations for implementers.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
Comment thread text/0000-session-interface.md Outdated
…it path

Address review precision feedback on the session-interface RFC:
- Scope the request/response + correlation-id rules to the request/response
  verbs; describe append (fire-and-forget, no correlation id) separately.
- Drop the implied non-existent `create` verb — describe creation as a
  lifecycle outcome (created/updated/deleted, creation via `clear`).
- Clarify the canonical WIT lives in unicity-astrid/wit, not this repo.
- Note session-cleared is a legacy agent-loop fan-out, distinct from the
  session.v1.event.* lifecycle events.
- Specify update's option semantics precisely: omitted/null = unchanged,
  empty string = clear, non-empty = set.
@joshuajbouw

Copy link
Copy Markdown
Contributor Author

Thanks — all addressed in 8496372:

  • Scoped the request/response + correlation-id rules to the request/response verbs; append (fire-and-forget, no correlation id) is now described separately.
  • Removed the implied non-existent create verb — creation is described as a lifecycle outcome (created/updated/deleted), with creation happening via clear.
  • Clarified that the canonical WIT lives in unicity-astrid/wit, not this RFC repo.
  • Noted session-cleared is a legacy agent-loop fan-out, distinct from the session.v1.event.* lifecycle events.
  • Specified update's option semantics precisely: omitted/null = unchanged, empty string = clear, non-empty = set.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants