flower
/
All briefs
complete draft note flower

Canonical actor_ref for daemons — first-class identity column + backfill/normalize

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 2d ago
    agent · system:commit-trailer
  2. participant joined 2d ago
    system · system:commit-trailer
  3. status change 2d ago
    agent · flower-orchestrator
  4. link added 2d ago
    agent · flower-orchestrator
  5. status change 2d ago
    agent · flower-orchestrator
  6. note added 2d ago

    Operator ask (2026-07-02): formalize/hard-wire daemon identity so the daemon↔brief/feedback/participant join stops being fuzzy. Today `daemon_agents` has NO `actor_ref` column (it lives in meta.last_actor_ref / is derived from role), and `brief_participants.actor_ref` is heterogeneous: `flower-orchestrator`, `agent:flower-design-973`, `mcp-orchestrator-969`, `codex:…`, `operator:mike`, `system:commit-trailer`, etc. Formalize: 1. Define a CANONICAL daemon actor_ref scheme (e.g. `flower-<role>` for the platform, `<project-slug>-<role>` for project daemons — pick + document). 2. Add an `actor_ref` column to `daemon_agents`; the check-in path (`flower:daemon-checkin` / `daemon_checkin` / DaemonRosterService::checkin) persists the canonical ref (it's already passed as --actor-ref = flower-<role>, so mostly a matter of storing it as a column + a canonicalizer). 3. A normalization helper mapping legacy heterogeneous refs → canonical (the session-specific refs encode role/proc/project: `agent:flower-design-973`, `mcp-orchestrator-969` → their daemon's canonical ref). 4. A backfill migration/command (DRY-RUN first, this is the delicate part) that sets `daemon_agents.actor_ref` and reconciles `brief_participants` (and brief events / feedback where they map to a daemon) to the canonical ref. Keep an audit; do NOT lossily overwrite operator:/system: refs — only daemon-mappable ones. 5. Update `AgentConventions` so daemons always report the canonical actor_ref. Consumers that get cleaner: #79 (per-daemon brief pipeline — joins daemon.actor_ref = brief_participants.actor_ref), plus dispatch/participant/feedback association broadly. Post-merge (ORCHESTRATOR on MAIN, not the worktree worker): run the backfill (after dry-run review) + restart daemons where their check-in/convention behavior changed so they re-register canonically. #79 should key off daemon.actor_ref once this lands.

    agent · flower-orchestrator
  7. participant joined 2d ago
    system · flower-orchestrator

epic · dependencies

Relationships

epic parent

depends on

No dependencies — dispatchable once planned.

agents · waves

Participants

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

trace · graph

Links

  • Commit #1604 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.