Skip to content

feat(proto): manager-comms-substrate T1 delta — roster, channel policy, pinned board (SEA-1740) - #157

Merged
mattwilkinsonn merged 1 commit into
mainfrom
compass-repo-1740-comms-substrate-proto
Aug 5, 2026
Merged

feat(proto): manager-comms-substrate T1 delta — roster, channel policy, pinned board (SEA-1740)#157
mattwilkinsonn merged 1 commit into
mainfrom
compass-repo-1740-comms-substrate-proto

Conversation

@seal-agent

@seal-agent seal-agent commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

SEA-1740 — manager-comms-substrate T1 proto delta

The additive proto delta that gates the entire manager-comms substrate (handler legs T2–T8). T1 is the sole proto-tree write for SEA-1721/1722/1723; nothing downstream (roster read, channel policy, pinned board, tools, UI) can start until this merges. Frozen contract: docs/designs/product/compass-manager-comms-substrate/design.md §T1 (sealed #1090, merged 5f9326ef).

What changed

comms.proto (public CommsService)

  • Channel gains post_policy (ChannelPostPolicy: OPEN|OWNER_ONLY), owner_account_id, mandatory_subscription, pinned_entries (fields 7–10, next free after subscriber_account_ids = 6).
  • New PinnedEntry message; new RPCs SetChannelPolicy, GetRoster, UpdatePinnedBoard with their req/resp, plus RosterScope enum, RosterEntry, PinMessage.
  • AgentPresenceChanged gains activity = 3 so live streams and the roster read one presence vocabulary.

agent_gateway.proto (internal AgentGateway relay)

  • CommsCallRequest.call / CommsCallResult.result gain roster/set_status/pin arms (fields 4–6 / 5–7) — the agent-initiated relay path.
  • SetAgentStatusRequest { activity } / SetAgentStatusResponse {} (agent-only via the relay; no public CommsService RPC per the frozen contract).

Green-keeping (proto-first)

The frozen record has the handler legs "orphan until this lands" — T1 lands the contract, T2/T4/T6 replace the bodies. To keep compass-go self-green at T1:

  • Comms gains CodeUnimplemented stubs for the 3 new CommsService RPCs — comms.go asserts CommsServiceHandler with no Unimplemented embed, so the interface must be satisfied at compile time.
  • classifyProcedure classifies the 3 new procedures authenticatedOpen — the classify_exhaustive gate reds until every generated CommsService procedure is classified.

SetAgentStatus is not a CommsService method (internal relay arm), so it needs no stub/classifier entry. relay_comms.go's oneof switch is not //sumtype:decl-policed and has a graceful default, so no new arm handling is required until T3.

Base / stacking

Based on main (31b617df), not stacked on #149 (SEA-1731 forge carrier). Both touch agent_gateway.proto but in disjoint-additive regions — #149 adds the Forge RPC + ForgeCall*; this adds the comms CommsCall arms. Independent bases keep #149 at its merge gate untouched; the second-lander does a trivial regen-rebase. (Basing on new main is also required to clear buf breaking — old main pre-dates WhoAmI/DL-111.)

Verification

  • compass-proto:ci — lint, breaking, drift, gen-fence all green.
  • compass-go — build, test (all packages incl. auth/comms), fmt, vet, lint (0 issues), nilaway (advisory; no new findings).
  • TS — compass-client + compass-agent typecheck green.

Refs SEA-1740

…y, pinned board (SEA-1740)

The additive proto delta that gates the manager-comms substrate handler legs
(T2-T8). One change-set to proto/compass/v1/, regenerated across all three gen
lanes, plus the minimum to keep compass-go self-green:

comms.proto (public CommsService):
- Channel gains post_policy (ChannelPostPolicy: OPEN|OWNER_ONLY), owner_account_id,
  mandatory_subscription, pinned_entries (fields 7-10).
- New PinnedEntry message; new RPCs SetChannelPolicy, GetRoster, UpdatePinnedBoard
  with their req/resp, RosterScope enum, RosterEntry, PinMessage.
- AgentPresenceChanged gains activity=3 so live streams and the roster read one
  presence vocabulary.

agent_gateway.proto (internal AgentGateway relay):
- CommsCallRequest.call / CommsCallResult.result gain roster/set_status/pin arms
  (the agent-initiated relay path); SetAgentStatusRequest/Response (agent-only,
  no public CommsService RPC).

Green-keeping (T1 lands proto-first; the real handler bodies are the T1-gated
T2/T4/T6 legs that replace these):
- Comms gains CodeUnimplemented stubs for the 3 new CommsService RPCs (comms.go
  asserts CommsServiceHandler with no Unimplemented embed, so the interface must
  be satisfied at compile time).
- classifyProcedure classifies the 3 new procedures authenticatedOpen (the
  classify_exhaustive gate reds until every generated CommsService procedure is
  classified).

buf lint/breaking/drift/gen-fence, compass-go build/test/fmt/vet/lint/nilaway,
and compass-client/compass-agent typecheck all green.

Refs SEA-1740
Spec-impact: none
Ledger-impact: none

Co-Authored-By: seal <noreply@sealedsecurity.com>
@linear-code

linear-code Bot commented Aug 5, 2026

Copy link
Copy Markdown

SEA-1740

@mattwilkinsonn
mattwilkinsonn merged commit 986680f into main Aug 5, 2026
2 of 3 checks passed
@mattwilkinsonn
mattwilkinsonn deleted the compass-repo-1740-comms-substrate-proto branch August 5, 2026 14:59
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