Channel protocol v3: bounded recursive worker-tree topology #19
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/otel-a2a-relay#19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
v2 channels are flat. A single channel holds a flat set of concepts and a flat agent roster (
channels-protocol-events.md:orchestrator | worker | peer | observer). This models a fixed roster coordinating over one concept set well.It does not model a tree. When an orchestrator decomposes a goal into sub-goals, and a sub-worker may itself decompose further, v2 has no way to:
resultback up to the parent concept,Proposed v3 surface
expanded_into: <child-channel-id>. The child'sspeccarriesparent: {channel, concept}. The tree is reconstructable from the lineage links alone.speccarries a hardmax_depth. A channel at depth N refuses to spawn children past the budget. Default conservative, capped.done/abandoned), itsresultpropagates to the parent concept. The parent reaches terminal only when all children are terminal.5 x STATUS_CADENCE_SECONDSpresumed-dead rule extends to subtrees: a dead sub-orchestrator marks its owned subtree reclaimable.Builds on existing substrate
agent-channel-requests.mdalready carrieso2r_session_idandintended_role, and the relay gates trust once at ingress then inherits it downstream inside a session. v3 should confirm spawned child channels inherit that session trust rather than re-verifying per node.Non-goals
Stays consumer-agnostic. Does not name or assume any particular orchestrator or client. This is a pure protocol capability.
Sequencing (per repo AGENTS)
Protocol doc and harness updated together, re-run against a real Phoenix (both the GraphQL spans query and the Sessions query), then code. Version bump v2 to v3.
Open question
One-channel-per-node (a tree of channels linked by lineage) vs one channel with nested concepts. The draft above assumes the former. Worth deciding before writing the doc.
Iceboxed in the 2026-05-29 backlog burn-down: Speculative channel protocol v3 tree topology, no current dependency. Reopen anytime if it becomes real.