Scope
tmq <repo> <issue> re-dispatch silently reuses the previous session's command — new --provider/--model flags are ignored when an aoe registration for the session title survives.
Repro (2026-07-20, feat-openagent#66):
- Original dispatch:
tmq openagent 66 --agent pi --provider minimax --model MiniMax-M3 → session command carries MiniMax.
- Session hung; operator ran
aoe session stop feat-openagent#66 (stop, not remove).
- Re-dispatch:
tmq openagent 66 --agent pi --provider deepseek --model deepseek-v4-pro → tmq printed the normal "Spawned:" output, but aoe session show revealed the command was STILL pi --provider minimax --model MiniMax-M3 .... The wrong model ran for ~45 minutes before the mismatch was noticed via the pane's model indicator.
- Workaround that fixed it:
aoe rm feat-openagent#66 --purge before re-dispatching — then the new flags took.
Root cause hypothesis: the deployed bash tmq's aoe rm --purge step before aoe add either fails silently or is skipped when the session exists in stopped state, so aoe add no-ops ("Session already exists with same title and path") and session start revives the stale command. The Python plugin (bogocat/tmq spawn.py) has the same rm→add→start sequence — verify whether it fails the same way.
Why it matters
Redispatch-after-kill is the standard recovery move for hung agents (twice today). A silent model/provider mismatch corrupts routing decisions AND provenance: the dispatch event logs the requested model while the served model differs — exactly the class of gap tms#74 and distillery's served-model provenance work exist to prevent.
Acceptance criteria
References
- 2026-07-20 wave: feat-openagent#66 double-dispatch incident (this issue's repro)
- tms#74 (provider-only dispatch can log mismatched default model — sibling provenance gap)
- bogocat/tmq spawn.py:151-183 (rm→add→start sequence in the Python port)
Scope
tmq <repo> <issue>re-dispatch silently reuses the previous session's command — new--provider/--modelflags are ignored when an aoe registration for the session title survives.Repro (2026-07-20, feat-openagent#66):
tmq openagent 66 --agent pi --provider minimax --model MiniMax-M3→ session command carries MiniMax.aoe session stop feat-openagent#66(stop, not remove).tmq openagent 66 --agent pi --provider deepseek --model deepseek-v4-pro→ tmq printed the normal "Spawned:" output, butaoe session showrevealed the command was STILLpi --provider minimax --model MiniMax-M3 .... The wrong model ran for ~45 minutes before the mismatch was noticed via the pane's model indicator.aoe rm feat-openagent#66 --purgebefore re-dispatching — then the new flags took.Root cause hypothesis: the deployed bash tmq's
aoe rm --purgestep beforeaoe addeither fails silently or is skipped when the session exists in stopped state, soaoe addno-ops ("Session already exists with same title and path") andsession startrevives the stale command. The Python plugin (bogocat/tmq spawn.py) has the same rm→add→start sequence — verify whether it fails the same way.Why it matters
Redispatch-after-kill is the standard recovery move for hung agents (twice today). A silent model/provider mismatch corrupts routing decisions AND provenance: the dispatch event logs the requested model while the served model differs — exactly the class of gap tms#74 and distillery's served-model provenance work exist to prevent.
Acceptance criteria
References