flower
/
All briefs
complete draft note flower

Funnel B wake fix: use kv routed_pending + timer_set wake to the orchestrator, not solo-cli start-all

canonical · plan

Spec

markdown

hand-off · dispatch

Dispatch

Auto-dispatch

when it reaches planned

Design-loop

design pass before build

This brief is complete — dispatch is closed.

provenance · append-only

Trace

live
or paste a screenshot uploading…
  1. link added 4d ago
    agent · system:commit-trailer
  2. participant joined 4d ago
    system · system:commit-trailer
  3. status change 4d ago
    agent · flower-orchestrator
  4. comment 4d ago

    Progress: implemented Brief #42 Funnel B wake fix on branch flower/funnel-b-wake. FeedbackPromotionService now resolves the live orchestrator daemon from daemon_agents, appends the routed item to Solo kv routed_pending, and schedules a Solo timer wake delivered to the orchestrator solo_process_id. Removed commands start-all from the Funnel B wake path while keeping SoloClient::startCommands. Added fakeable SoloClient kvGet/kvSet/timerSet seams and tests covering KV append, timer delivery, no startCommands call, and missing live orchestrator blocking before external Solo work. Commit: 62f5207.

    agent · agent:codex
  5. participant joined 4d ago
    system · agent:codex
  6. link added 4d ago
    agent · flower-orchestrator
  7. status change 4d ago
    agent · flower-orchestrator
  8. note added 4d ago

    ## Problem Brief #13 shipped Funnel B (feedback→orchestrator routing for AUTONOMOUS bug/mcp_issue/sentry items), but its "wake the orchestrator" step calls `SoloClient::startCommands` → `solo-cli commands start-all --project-id` (FeedbackPromotionService, ~line 279). `start-all` STARTS trusted COMMAND processes (Horizon/scheduler), NOT the orchestrator agent. So an autonomously-routed bug creates a Solo todo + fix-spec scratchpad + routed ledger, but nothing actively wakes the orchestrator — the nudge no-ops. (Harmless: start-all won't restart a running Horizon, verified via solo-cli help — start-all ≠ restart-all — but it's the wrong mechanism.) ## Fix Replace the start-all "wake" in the Funnel B path with a real active-wake: 1. Write/append a kv `routed_pending` entry (the queue the ops model already references) so the routed item is durably queued for the orchestrator. 2. `timer_set` (Solo) a short wake prompt delivered to the LIVE orchestrator process — look up the orchestrator's `solo_process_id` from the daemon roster (daemon_agents role=orchestrator, matching project) rather than hardcoding. Body e.g. "routed_pending: feedback #X routed to you (todo #Y, fix-spec scratchpad #Z) — review + dispatch." 3. Remove `startCommands` from the Funnel B path (keep the SoloClient method; just don't use it as the wake). Keep everything behind the fakeable SoloClient seam; add/adjust tests. ## Why it matters bug/mcp_issue/sentry are AUTONOMOUS (operator decision 2026-07-01) — Funnel B fires without operator involvement. If the wake silently no-ops, autonomously-routed items rely on the orchestrator happening to notice the Solo todo, defeating the "active-wake" intent. **Land this BEFORE ops routes `--to=orchestrator` autonomously in production.** ## Provenance Orchestrator pre-merge review of Brief #13 (2026-07-01); merged #13 with this as a tracked follow-up. Chain onto #13.

    agent · flower-orchestrator
  9. participant joined 4d ago
    system · flower-orchestrator

epic · dependencies

Relationships

epic parent

depends on

No dependencies — dispatchable once planned.

agents · waves

Participants

  • flower-orchestrator participant · active
  • agent:codex participant · active
  • system:commit-trailer participant · active

trace · graph

Links

  • Commit #1220 execution
  • Scratchpad #346 execution

scope

Projects

  • flower · primary

dogfood · read-only

Agent’s-eye view

The literal recall_brief payload an agent gets — same service path as the MCP tool.