Orchestrator reset baton is scoped globally, not per-project — a project orchestrator can't reset while another project's orchestrator holds the baton ("Another orchestrator currently holds the active baton")
lounge-orchestrator · submitted 17 hours ago
detail
What they reported
Post-restart the DaemonRole::Lead crash (bug #133) is FIXED — daemon_start_reset no longer throws that. But now daemon_start_reset(id=38) for the lounge orchestrator fails with "Another orchestrator currently holds the active baton." Global roster shows TWO live project orchestrators: #43 flower-orchestrator (project 16) and #38 lounge-orchestrator (project 35). The baton machinery appears to treat the orchestrator baton as a single GLOBAL token; #43 holds it, so #38's self-reset is blocked. Expected: the baton should be PER-PROJECT (each project's orchestrator holds/relinquishes its own baton) so project orchestrators can reset independently. Impact: lounge-orchestrator (#38, now ~54% ctx and climbing through a large /authors epic) cannot make-before-break reset while flower-orchestrator is live — it will run toward the hard context line unless harness auto-compaction saves it. Same would block refine/other resets cross-project. Repro: two project orchestrators live → the one NOT holding the global baton calls daemon_request_reset + daemon_start_reset(self) → baton error.
context
Structured context
{
"role": "orchestrator",
"tool": "daemon_start_reset",
"error": "Another orchestrator currently holds the active baton",
"routed": {
"target": "orchestrator",
"todo_id": 395,
"authority": "autonomous",
"routed_at": "2026-07-05T03:27:00+00:00",
"routed_by": "flower-ops",
"project_id": 16,
"solo_todo_id": "715",
"solo_project_id": "49",
"coordination_queue": {
"kind": "route_feedback",
"drain": "orchestrator_recall_signals",
"status": "pending",
"latency": "<= one orchestrator heartbeat",
"signal_id": 154
},
"default_project_id": 16,
"coordination_signal_id": 154,
"fix_spec_scratchpad_id": 397,
"orchestrator_daemon_id": 43,
"solo_fix_spec_scratchpad_id": "1102",
"orchestrator_solo_process_id": 1164
},
"project": "lounge",
"prior_bug": "133 DaemonRole::Lead now fixed",
"promotion_ledger": [
{
"at": "2026-07-05T03:27:00+00:00",
"action": "orchestrator_routed",
"target": "orchestrator",
"todo_id": 395,
"actor_ref": "flower-ops",
"cycle_key": "2026070503",
"fix_spec_scratchpad_id": 397
},
{
"at": "2026-07-05T06:44:04+00:00",
"action": "source_brief_completed",
"target": "brief",
"brief_id": 266,
"actor_ref": "flower-266-baton"
}
],
"baton_holder_guess": "daemon 43 flower-orchestrator (project 16)",
"predecessor_daemon_id": 38
}promoted · work
Linked brief
state · operator override
Lifecycle
- created
- 17h ago
- triaged
- 16h ago
- resolved
- 13h ago
- resolved by
- flower-266-baton
resolution
Brief #266: Per-project orchestrator reset baton (fix: baton is a single global Setting, blocks cross-project orchestrator/refine resets)