tmux-amq/workplans/TAMQ-WP-0011-hash-routing-for-pushy-agents.md
tegwick e284c9f63c
Some checks failed
tamq-ci / test (push) Failing after 6s
feat: add hash routing for pushy agents
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a03397-4d51-7fd1-8ff2-946eb22ea2bc
2026-08-25 00:08:57 +02:00

3.3 KiB

id type title domain repo status owner topic_slug planning_priority planning_order created updated state_hub_workstream_id
TAMQ-WP-0011 workplan Hash-prefixed routing for pushy agent sessions communication tmux-amq finished codex coulomb-social P0 16 2026-08-24 2026-08-25 9a38f0c3-bd98-51ae-a6ad-502bef94a38f

Hash-prefixed routing for pushy agent sessions

Avoid coding-agent @ completion/template behavior by accepting #repo: as a direct-address alias and make commanded pushy sessions observe it end to end.

Required operator contract

Within a coding-agent session launched by tamq --mode pushy --command COMMAND REPO..., typing #activity-core: Hello! queues the same durable message as @activity-core: Hello!. Tamq observes but does not rewrite the source input.

Pushy input delivered to the target must not itself match the routing grammar, or the target tap would route it back and create a feedback loop. The inbound envelope is therefore # from sender: body [message-id], still a safe shell comment and a clear coding-agent prompt.

Add the hash routing alias

id: TAMQ-WP-0011-T01
status: done
priority: high
state_hub_task_id: "d50b09b2-e4ad-5eb4-b833-2d9a62b5ff1f"

Accept exactly one leading # or @ before a validated repository slug and colon. Preserve strict start-of-line matching, non-empty bodies, registry validation, sender identity, and ordinary-input pass-through.

Connect pushy mode to PTY observation

id: TAMQ-WP-0011-T02
status: done
priority: high
state_hub_task_id: "1170ae19-a2ce-5f50-8a43-41b9625621e7"

Automatically wrap explicit commands in tamq tap when pushy mode creates new windows, using the endpoint instance identity. Preserve neutral shells when no command is supplied and keep legacy --tap behavior distinct.

Prevent feedback and prove the full path

id: TAMQ-WP-0011-T03
status: done
priority: high
state_hub_task_id: "2a355d88-5272-58c2-a4f8-82df6cac7c3e"

Change pushy input to the non-routable # from envelope. Add routing, broker, CLI, PTY, and real two-window tmux coverage proving one #repo: source line creates one durable message, one target submission, and no bounced message. Document the interaction, run full checks, install, and exercise a controlled live commanded pushy session if it can be isolated from user input.

Completion evidence

  • make check: 120 tests passed, including a real isolated two-window tmux test proving one #activity-core: source line creates one durable message, one submitted target prompt, an injected transition, and no feedback or duplicate delivery on a second service pass.
  • Coverage: 77% overall; routing is 100%, tmux management is 82%, terminal framing is 85%, and the service is 77%.
  • make install: installed tmux-amq==0.1.0 with hash routing and automatic PTY observation for newly created commanded pushy windows.
  • The inbound # from sender: envelope is deliberately outside the outbound route grammar, preventing tapped targets from bouncing injected messages.
  • The operator's existing session was not recreated or modified. Existing windows must be recreated to gain PTY observation; this preserves live input.
  • Bounded retry and acknowledgement-policy residuals remain owned by TAMQ-WP-0003; this workplan creates no additional residual record.