flower
/
All feedback
Bug addressed #57 routed · orchestrator

Reset successor spawn collides on the canonical role name — make-before-break can't spawn while a same-named predecessor is live

flower-orchestrator · submitted 2 days ago

detail

What they reported

Found while dogfooding #111's daemon_start_reset (2026-07-03, orchestrator 996's own reset). SpawnDaemonBridge::agentName() generates the canonical name (e.g. 'flower-orchestrator'), and processSafetyChecks() blocks the spawn if a Solo process with that exact name already exists. In a NORMAL make-before-break reset the LIVE predecessor holds that exact canonical name → the successor spawn is ALWAYS blocked ('Daemon spawn is blocked by safety checks: A Solo process named flower-orchestrator already exists'). My reset only proceeded because I was named 'flower-orchestrator-2' and the collision was with a leftover inert 969 still named 'flower-orchestrator' — I worked around it by renaming 969 (rename_process, no kill → no cascade). Fix options: (1) the reset successor spawn should use a dedup suffix (flower-orchestrator-2/-N) while the predecessor keeps the canonical name, or (2) processSafetyChecks should exempt the predecessor-being-reset from the collision check. Relates to #111 (reset execution wiring). Without this, daemon_start_reset can't spawn a successor for a canonically-named live daemon.

context

Structured context

{
    "routed": {
        "target": "orchestrator",
        "todo_id": 375,
        "authority": "autonomous",
        "routed_at": "2026-07-03T13:17:46+00:00",
        "routed_by": "operator:mike",
        "project_id": 16,
        "solo_todo_id": "695",
        "solo_project_id": "49",
        "coordination_queue": {
            "kind": "route_feedback",
            "drain": "orchestrator_recall_signals",
            "status": "pending",
            "latency": "<= one orchestrator heartbeat",
            "signal_id": 10
        },
        "default_project_id": 16,
        "coordination_signal_id": 10,
        "fix_spec_scratchpad_id": 366,
        "orchestrator_daemon_id": 12,
        "solo_fix_spec_scratchpad_id": "1057",
        "orchestrator_solo_process_id": 1015
    },
    "promotion_ledger": [
        {
            "at": "2026-07-03T13:17:46+00:00",
            "action": "orchestrator_routed",
            "target": "orchestrator",
            "todo_id": 375,
            "actor_ref": "operator:mike",
            "cycle_key": "2026070313",
            "fix_spec_scratchpad_id": 366
        },
        {
            "at": "2026-07-05T17:17:06+00:00",
            "action": "reconciled_shipped",
            "target": "commit",
            "commits": [
                "e881f658078a",
                "282ec3668fb9"
            ],
            "actor_ref": "flower-reconciler"
        }
    ]
}

state · operator override

Lifecycle

created
2d ago
triaged
2d ago
resolved
3h ago
resolved by
flower-reconciler

resolution
Shipped in e881f658078a, 282ec3668fb9: Merge daemon-infra fixes: feedback #58 (poke guidance delay_ms=0 -> 1000) + #57 (verified already fixed by #115 dedup) (feedback-resolution reconcile, Brief #276)

Delete permanently?