Skip to content

feat(proto): add RunnerService.CommitConversationFrame sink-ack RPC - #42

Merged
mattwilkinsonn merged 1 commit into
mainfrom
compass-repo-sink-ack-proto
Jul 30, 2026
Merged

feat(proto): add RunnerService.CommitConversationFrame sink-ack RPC#42
mattwilkinsonn merged 1 commit into
mainfrom
compass-repo-sink-ack-proto

Conversation

@mattwilkinsonn

@mattwilkinsonn mattwilkinsonn commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

What

Adds the CommitConversationFrame unary RPC to RunnerService (proto/compass/v1/runner.proto) plus its request/response messages, and regenerates the internal-go stubs. This is T1 of the agent↔runner sink-ack seam (closes #24 OQ-3).

  • RPC (after RelayCommsCall): CommitConversationFrame(CommitConversationFrameRequest) returns (CommitConversationFrameResponse) — the Server-terminated half of the agent's PostConversationFrame. The Runner forwards a durable conversation frame here (rather than onto the loss-tolerable PublishEvents spine) and gets back the sink result, so a durable post resolves delivered-or-erred with real coordinates instead of fire-and-forget.
  • CommitConversationFrameRequest { string session_id = 1; AgentFrame frame = 2; string idempotency_key = 3; } — mirrors PostConversationFrameRequest (same AgentFrame + agent-minted idempotency_key envelope-dedup field), plus an explicit session_id because on the Runner→Server hop there is no per-container socket to carry session identity. The Runner asserts no account; the Server resolves session_id → account from its own binding, fail-closed CodeNotFound, same posture as RelayCommsCall.
  • CommitConversationFrameResponse { bool committed = 1; string message_id = 2; uint64 seq = 3; } — the sink ack: message_id + seq are the durable coordinates the Server's commsConversationSink (CommitAgentPost/CommitAgentUpdate) assigns.

Naming note

The response type is ...Response, not ...Ack (as the seam spec sketched it): runner.proto keeps every STANDARD buf-lint rule armed, and RPC_RESPONSE_STANDARD_NAME requires the Response suffix. The only existing exemption (agent_gateway.proto's CommsCallResult) is justified by cross-hop envelope reuse, which this type does not have. The ack semantics live in the fields + doc-comment. Flagged to compass-server for confirmation.

Surface / safety

  • Internal-go only. runner.proto generates solely into go/internal/gen (via buf.gen.internal-go.yaml); verified zero new surface in go/gen, the TS client, or the agent gen tree, so the @compass/client server-door fence holds.
  • buf lint clean; buf breaking (glob compass/**/*.proto vs main) clean — purely additive in the owned compass.v1 package.
  • Internal gen package builds (go build ./internal/gen/... rc=0).

Downstream (dogfood critical path)

Once merged: compass-server wires the Server handler (commsConversationSink → fills message_id/seq); compass-runner swaps its downstream PostConversationFrame from publisher.forward to this unary. Unblocks the C-series stack (#24#38).

Refs SEA-1507

Co-Authored-By: seal noreply@sealedsecurity.com

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@sealedsecurity-bot
sealedsecurity-bot marked this pull request as ready for review July 29, 2026 22:23
@linear-code

linear-code Bot commented Jul 29, 2026

Copy link
Copy Markdown

SEA-1507

@seal-agent
seal-agent force-pushed the compass-repo-sink-ack-proto branch 3 times, most recently from bf1cfe1 to c45ba25 Compare July 29, 2026 22:51
The Server-terminated half of the agent's PostConversationFrame: the Runner forwards a durable conversation frame here and gets back the sink result (committed + message_id + seq) so a durable post resolves delivered-or-erred with real coordinates, not fire-and-forget. Internal-go gen only; no public gen or TS client surface. Additive to compass.v1 (buf-breaking-safe).

Co-Authored-By: seal <noreply@sealedsecurity.com>
@seal-agent
seal-agent force-pushed the compass-repo-sink-ack-proto branch from c45ba25 to 7804e72 Compare July 29, 2026 22:57
@mattwilkinsonn
mattwilkinsonn merged commit f5fb433 into main Jul 30, 2026
3 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the compass-repo-sink-ack-proto branch July 30, 2026 02:21
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.

1 participant