flower
/
All briefs
complete draft note flower

Remove the ≤2 promotions/cycle cap from feedback_promote (and charter routing-cap language)

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.

#41 done fresh flower
1 scratchpad
You are being dispatched from flower Brief #132: Remove the ≤2 promotions/cycle cap from feedback_promote (and charter routing-cap language)

Recall pointer:
- Use recall_brief with id 132 for the full folder if you need provenance.

Target:
- project: flower (/Users/mikeferrara/Documents/code/flower)
- branch: choose an appropriate branch
- worktree: not specified
- kind: fresh

Current brief spec:
(no spec yet)

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.

Recent/key trace events:
[1] participant_joined flower-ops: (no body)
[2] note_added flower-ops: **Operator (Mike) directive, 2026-07-03:** remove the ≤2 promotions/cycle cap on feedback_promote. (Operator thought a brief might already exist — recall_briefs found none, so creating this.)

## What
`feedback_promote` currently enforces a "≤2 promotions/cycle" cap (keyed by `cycle_key`, defaulting to the current hour). Remove that cap so daemons can promote as many route-worthy items as genuinely warranted rather than being throttled.

## Where (to confirm during implementation)
- `app/Services/Feedback/FeedbackPromotionService.php` — the promotion-cap logic (cycle_key counting / the ≤2 guard). Remove the cap check (or make it a very high/again config-gated ceiling if a safety valve is desired — operator's call; default ask = remove).
- The MCP tool `feedback_promote` (`app/Mcp/Tools/...`) — drop the `cycle_key`/cap language from its description + params if the cap is gone.
- **Charter/template alignment:** the ops + orchestrator daemon charters (v3, seeded from Solo scratchpads e.g. ops charter scratchpad 1023, orchestrator equivalent) say "Cap routings at 2 per cycle" / "Cap routings at 2 per cycle". Remove that cap language so the charters and code agree. Also check the #126 auto_dispatch drain contract (scratchpad 1026) for any matching cap wording.

## Why
Operator wants throughput on triage→route without an artificial per-cycle throttle; the daemons already exercise judgment ("route only route-worthy", "if unsure report") so the numeric cap is redundant and can drop genuinely-actionable items on the floor in a busy cycle.

## Verify
- feedback_promote succeeds for 3+ promotions in the same hour/cycle with no cap error.
- Charter text no longer instructs a 2/cycle cap; code no longer enforces it.
- `php artisan test` green; pint clean.
[3] participant_joined operator:mike: (no body)
[4] status_change operator:mike: (no body)
[5] link_added flower-ops: (no body)

Recommended linked context:
{
    "todos": [],
    "scratchpads": [
        {
            "id": 333,
            "solo_scratchpad_id": "1005",
            "name": "flower-ops — triage log",
            "archived": false,
            "revision": 211
        }
    ]
}

Execution notes:
- Treat the brief as the source of truth.
- Keep work scoped to this dispatch request.
- Use brief_append / brief_update_status when reporting material progress; as your final dispatched-worker step, call brief_dispatch_complete with dispatch_request_id (or brief_id) and actor_ref.
- Codex workers should verify mutating Flower tools with tool_search query `brief_append brief_dispatch_complete flower_feedback` (limit 20) when tool availability is in doubt; report raw SEE/LOAD vs NOT visible instead of silently using local fallbacks.
- Add a git commit trailer `Brief: #132` to every commit for this brief so flower can exact-link commits back to the brief.

provenance · append-only

Trace

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

    Dispatch request #41 marked done.

    agent · codex-flower-132
  6. comment 2d ago

    Implemented promotion fixes for Brief #132 / Feedback #44 / Feedback #43 in branch flower/132-promotion-fixes, commit 55fc95236b3fee07454f0cdd52c3fa6e85b172cb. Changes: - Removed the feedback_promote per-cycle throttle entirely from FeedbackPromotionService: no guard, no per-cycle Setting writes, no operator/agent cap path remains. - Kept cycle_key only as promotion metadata/correlation and removed cap language from feedback_promote MCP schema plus the CLI option text. - Removed the dead /config promotion-cap setting UI and Livewire save path so the app no longer exposes a nonexistent cap. - Added Feedback::briefLinks(), creates a BriefLink relation from promoted brief to source feedback using relation=seed, backfills that link on deduped brief promotion, and exposes linked feedback in recall_brief links.feedback. - Removed the stale ops charter default sentence "Cap routings at 2 per cycle." PromptTemplateSeeder was not edited, but because DaemonCharterDefaults feeds seeded prompt templates, orchestrator should re-seed prompt templates after merge if the live charter row needs the updated text. Verification: - Focused: MEILISEARCH_KEY=LARAVEL-HERD ANTHROPIC_API_KEY= ~/bin/php artisan test tests/Feature/Feedback/FeedbackPromotionServiceTest.php tests/Feature/Feedback/FeedbackPromoteEntryPointsTest.php tests/Feature/Feedback/ShowTest.php tests/Feature/Config/IndexTest.php --compact passed: 25 tests, 124 assertions. - Full before Pint: MEILISEARCH_KEY=LARAVEL-HERD ANTHROPIC_API_KEY= ~/bin/php artisan test passed: 701 tests, 690 passed, 11 skipped, 4779 assertions. - ~/bin/php ./vendor/bin/pint fixed formatting. - ~/bin/php ./vendor/bin/pint --test passed. - Full after Pint: MEILISEARCH_KEY=LARAVEL-HERD ANTHROPIC_API_KEY= ~/bin/php artisan test passed: 701 tests, 690 passed, 11 skipped, 4779 assertions. Worktree is clean on flower/132-promotion-fixes; not merged or pushed.

    agent · codex-flower-132
  7. participant joined 2d ago
    system · codex-flower-132
  8. link added 2d ago
    agent · flower-orchestrator
  9. dispatched 2d ago

    Dispatch request #41 queued for flower.

    agent · flower-orchestrator
  10. status change 2d ago
    agent · flower-orchestrator
  11. participant joined 2d ago
    system · flower-orchestrator
  12. link added 2d ago
    agent · flower-ops
  13. status change 2d ago
    agent · operator:mike
  14. participant joined 2d ago
    system · operator:mike
  15. note added 2d ago

    **Operator (Mike) directive, 2026-07-03:** remove the ≤2 promotions/cycle cap on feedback_promote. (Operator thought a brief might already exist — recall_briefs found none, so creating this.) ## What `feedback_promote` currently enforces a "≤2 promotions/cycle" cap (keyed by `cycle_key`, defaulting to the current hour). Remove that cap so daemons can promote as many route-worthy items as genuinely warranted rather than being throttled. ## Where (to confirm during implementation) - `app/Services/Feedback/FeedbackPromotionService.php` — the promotion-cap logic (cycle_key counting / the ≤2 guard). Remove the cap check (or make it a very high/again config-gated ceiling if a safety valve is desired — operator's call; default ask = remove). - The MCP tool `feedback_promote` (`app/Mcp/Tools/...`) — drop the `cycle_key`/cap language from its description + params if the cap is gone. - **Charter/template alignment:** the ops + orchestrator daemon charters (v3, seeded from Solo scratchpads e.g. ops charter scratchpad 1023, orchestrator equivalent) say "Cap routings at 2 per cycle" / "Cap routings at 2 per cycle". Remove that cap language so the charters and code agree. Also check the #126 auto_dispatch drain contract (scratchpad 1026) for any matching cap wording. ## Why Operator wants throughput on triage→route without an artificial per-cycle throttle; the daemons already exercise judgment ("route only route-worthy", "if unsure report") so the numeric cap is redundant and can drop genuinely-actionable items on the floor in a busy cycle. ## Verify - feedback_promote succeeds for 3+ promotions in the same hour/cycle with no cap error. - Charter text no longer instructs a 2/cycle cap; code no longer enforces it. - `php artisan test` green; pint clean.

    agent · flower-ops
  16. participant joined 2d ago
    system · flower-ops

epic · dependencies

Relationships

epic parent

depends on

No dependencies — dispatchable once planned.

agents · waves

Participants

  • flower-ops participant · active
  • operator:mike participant · active
  • flower-orchestrator participant · active
  • codex-flower-132 participant · active
  • system:commit-trailer participant · active

trace · graph

Links

  • Commit #1706 execution
  • Commit #1707 execution
  • Scratchpad #346 execution
  • Scratchpad #333 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.