flower
/
All briefs
complete draft note flower

With our Briefs, it seems we're a little _too_ focused on the full ref

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. participant joined 4d ago
    system · flower-orchestrator
  5. note added 4d ago

    Progress: implemented Capture & dispatch UX, direct-request dispatch packet placeholder, default prompt metadata migration, and focused tests. Verification: targeted feature tests passed; full php artisan test passed (486 tests, 485 passed, 1 skipped).

    agent · codex:flower-lightweight-dispatch
  6. participant joined 4d ago
    system · codex:flower-lightweight-dispatch
  7. note added 4d ago

    Refined to build-ready → PLANNED. Single-dispatch: a "Capture & dispatch" affordance + a spec-less `{{direct_request_contract}}` packet placeholder (editable template from #17). Backend already supports spec-less dispatch, so no new plumbing. No blocking questions.

    agent · flower-other
  8. status change 4d ago
    agent · flower-other
  9. refinement 4d ago

    ## Goal Make the refine→spec pipeline **optional, not a gate**: a fresh note can go straight to an agent when the request is clear, and the AGENT decides at execution time whether a refine is actually needed. Keep Briefs from feeling heavyweight for quick, straightforward requests. ## Scope (single dispatch) The backend already supports spec-less dispatch — `DispatchService::dispatch()` runs on any non-terminal brief (no spec required; the packet renders the note + trace as the task) and the lifecycle already permits `idea → dispatched`. So this is a **UX affordance + a packet-contract tweak**, not new plumbing. 1. **"Dispatch directly" affordance.** - `/briefs` capture box: add a **"Capture & dispatch"** action beside "Capture" / "Capture & Refine". It creates the draft brief (origin=note) and redirects to the brief detail with the existing **Dispatch** section focused — no refine loop. (Reuses the Show dispatch form for target project/branch/worktree — no new routing/decision.) - Brief detail: the Dispatch form already works for any non-terminal brief; add one line of framing ("direct dispatch — no refine required") so the fast path is clearly offered. 2. **Spec-less packet contract.** Add a `{{direct_request_contract}}` placeholder to the `dispatch_packet` prompt template (editable via /prompts — shipped in #17). `DispatchService` fills it ONLY when the brief has no spec, with: *"This is a direct request, not a fully-specced plan. If it's clear, resolve it. If you hit a blocking ambiguity, call brief_ask (or brief_append) with your questions and flip the brief to `refining` before proceeding — don't guess."* Empty string when a spec exists. Re-seed the template so **specced dispatches render byte-identically to today**. 3. **Agent-initiated refine = the contract, no new code.** The contract above IS the mechanism: a dispatched agent that finds the request unclear flips to `refining` + posts questions. The straightforward path becomes a refine loop only when it has to. ## Acceptance - Capture box offers "Capture & dispatch" → creates the brief and lands on detail ready to dispatch, never entering `refining`. - Dispatching a **spec-less** brief includes the direct-request contract in the packet; dispatching a **specced** brief renders no contract (assert unchanged vs the seeded template). - `{{direct_request_contract}}` appears in the prompt-library placeholder reference. - Tests: contract present/absent by spec presence; capture→dispatch creates a brief without a refining transition. `php artisan test` green + pint. `Brief: #9` trailer. ## Provenance Operator note (#9, 2026-06-30) + orchestrator refinement (event 49): the full refine pipeline is too heavy; leave a door open for quick note→dispatch. Tightened to build-ready by flower-design (2026-07-01). Independent of, but complements: **#36** (direct-to-agent routing — a different axis: skip the orchestrator, not skip refine) and **#17** (editable packet template — shipped; this rides on it, changes nothing core).

    agent · flower-other
  10. spec snapshot 4d ago

    ## Spec: Lightweight "note → direct dispatch" path (refine is optional, not a gate) **Reframe (agreeing with the note):** the full refine→spec pipeline should be a tool you *reach for*, not a wall every brief must pass. Many requests are clear enough to hand straight to an agent. **Key finding — the backend already supports this.** `DispatchService::dispatch()` works on ANY non-terminal brief (no spec required); the packet renders the note + trace as the task, and the lifecycle already permits `idea → dispatched` (skipping refining/planned). So this is mostly a UX + agent-contract change, not new plumbing. **Approach:** 1. **One-step capture → dispatch.** On the /briefs capture box and the brief detail, offer **"Dispatch directly"** beside "Refine first." A fresh note can become a dispatch_request without entering the refine loop. 2. **Strengthen the packet contract for spec-less briefs.** When a brief has no spec, the dispatch prompt should say: *"This is a direct request, not a fully-specced plan. If it's clear, just resolve it. If you hit a blocking ambiguity, post questions back (brief_ask / append to the brief) and flip it to `refining` before proceeding."* → the AGENT decides whether a refine is needed, at execution time. 3. **Refine = on-demand.** Keep quick/headless/interactive refine surfaced but never required; the simple path is the default. 4. **Agent-initiated refine.** A dispatched agent that finds the request unclear flips the brief to `refining` + posts async questions → the straightforward path becomes a refine loop *only when it has to*. Simple-by-default, refine-when-necessary. **Net:** a "Dispatch directly" affordance + a packet-contract tweak; the data model + dispatch primitive already support it. Small, high-leverage — and it keeps Briefs from feeling heavyweight for quick requests.

    system · flower-other
  11. participant joined 4d ago
    system · flower-other
  12. comment 4d ago

    Refined by flower-orchestrator (969) at Mike's request: the full refine/spec pipeline feels too heavy; proposed a first-class lightweight note→dispatch path. Backend already supports spec-less dispatch — the gap is UX + the agent contract.

    agent · flower-orchestrator
  13. refinement 4d ago

    ## Spec: Lightweight "note → direct dispatch" path (refine is optional, not a gate) **Reframe (agreeing with the note):** the full refine→spec pipeline should be a tool you *reach for*, not a wall every brief must pass. Many requests are clear enough to hand straight to an agent. **Key finding — the backend already supports this.** `DispatchService::dispatch()` works on ANY non-terminal brief (no spec required); the packet renders the note + trace as the task, and the lifecycle already permits `idea → dispatched` (skipping refining/planned). So this is mostly a UX + agent-contract change, not new plumbing. **Approach:** 1. **One-step capture → dispatch.** On the /briefs capture box and the brief detail, offer **"Dispatch directly"** beside "Refine first." A fresh note can become a dispatch_request without entering the refine loop. 2. **Strengthen the packet contract for spec-less briefs.** When a brief has no spec, the dispatch prompt should say: *"This is a direct request, not a fully-specced plan. If it's clear, just resolve it. If you hit a blocking ambiguity, post questions back (brief_ask / append to the brief) and flip it to `refining` before proceeding."* → the AGENT decides whether a refine is needed, at execution time. 3. **Refine = on-demand.** Keep quick/headless/interactive refine surfaced but never required; the simple path is the default. 4. **Agent-initiated refine.** A dispatched agent that finds the request unclear flips the brief to `refining` + posts async questions → the straightforward path becomes a refine loop *only when it has to*. Simple-by-default, refine-when-necessary. **Net:** a "Dispatch directly" affordance + a packet-contract tweak; the data model + dispatch primitive already support it. Small, high-leverage — and it keeps Briefs from feeling heavyweight for quick requests.

    agent · flower-orchestrator
  14. spec snapshot 4d ago

    With our Briefs, it seems we're a little _too_ focused on the full refine/spec pipeline - or, we should at least leave the door open for and support the idea of something like an initial note/request/observation that we can then just directly push to an agent to resolve if they don't have any questions. ie: something rather straightforward. How might we work that out?

    system · flower-orchestrator
  15. participant joined 4d ago
    system · flower-orchestrator
  16. note added 4d ago

    With our Briefs, it seems we're a little _too_ focused on the full refine/spec pipeline - or, we should at least leave the door open for and support the idea of something like an initial note/request/observation that we can then just directly push to an agent to resolve if they don't have any questions. ie: something rather straightforward. How might we work that out?

    operator · operator:mike
  17. participant joined 4d ago
    system · operator:mike

epic · dependencies

Relationships

epic parent

depends on

No dependencies — dispatchable once planned.

agents · waves

Participants

  • operator:mike participant · active
  • flower-orchestrator participant · active
  • flower-other participant · active
  • codex:flower-lightweight-dispatch participant · active
  • system:commit-trailer participant · active

trace · graph

Links

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