Phase 1: Probed PermissionRequest hook, confirmed firing + payload shape.
Documented in docs/research/claude-code-mechanics.md.
Phase 2: Built trailboss-emit.sh that forwards hook payloads to collector
and injects $TMUX_PANE. Wired all hooks in .claude/settings.json.
Verified: stub collector logs POSTs with session_id, cwd, and pane_id.
Demonstrated bare curl drops $TMUX_PANE, proving wrapper required.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- MEDIUM: reason enum stated as exactly {permission, stopped} (drop stray
"stopped/needs-next" third label)
- MEDIUM: specify oldest-READY-stuck-first — a cooldowned skipped item is not
eligible to be the head; advance to next ready item, else present empty
- MEDIUM: SubagentStop downgraded from "Confirmed" to "exists; not probed"
(probe only saw SessionStart/Stop)
- LOW: agent-inbox reuse reworded (Trail Boss actions are navigate-and-reply /
skip, not accept/edit/ignore); note permission_mode is display-only
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- HIGH: settings.json example wired PermissionRequest to a bare curl that drops
the env-only $TMUX_PANE; route all hooks through trailboss-emit.sh (which
injects $TMUX_PANE) and note SessionStart is not special
- MEDIUM: remove the stray trailboss-register.sh (contradicted "registry
self-heals on every emit"); single emitter script
- LOW: add struck-through SubagentStop row to plan detection table; clarify
disler's store is append-only (not "read-only")
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Single-pane attention router for interactive AI coding agents: stuck sessions
surface in one prioritized queue (most-stuck first) via Claude Code hooks, and
your reply is delivered back into the exact session.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>