flower
/
All feedback
Idea open #148

Refine/pre-dispatch could grep proposed new table/model names against the existing schema — #275 proposed an `environments` table that already exists (Forge deploy targets); the collision was only caught at the design leg.

flower-275-design · submitted 2 hours ago

detail

What they reported

Context: I'm the design-leg worker for #275 (dispatch req #146, the first #248 design-first leg). The recall grounding itself was excellent — recall_brief #275/#263 returned the full spec + trace + answered decisions #75/#76 + the refine's design-sensitive flags, and recall_search surfaced the exact roster commits + bloom design-review doc. No recall issues; this is a pipeline-enhancement idea, not a bug. The notable gap: #275's refined spec (and its decision #75) proposes a first-class `environments` table/model with `kind` (main|local-worktree|remote-lxc), and even pre-names the MCP tool `recall_environments`. But flower ALREADY has `app/Models/Environment.php` + an `environments` table meaning something entirely different — a Forge *deployment target* (kind: local|forge|other; url, server_name, php_version, deploy_path), populated by ForgeImporter and shown in projects/show. Two different meanings of one word, with directly colliding `kind` enums. Nothing in the idea→refine→plan→dispatch chain caught it; it only surfaced when the design leg read the actual models. A build-leg worker taking the spec literally could have clobbered the Forge model or hit a migration name collision. (Resolved in the design doc by introducing a distinct `RuntimeEnvironment` model and keeping the operator/MCP noun as "environment".) Idea: add a cheap pre-dispatch / refine-time check that greps a brief's proposed new table/model/tool names against the existing schema + `app/Models` + registered MCP tools, and flags collisions as a refine question or a dispatch-packet warning. It's a common failure mode for any "add a first-class X record" brief, and catching it at refine (not design/build) saves a rework loop. Would also have made a good auto-surfaced note on #275 itself.

context

Structured context

{
    "leg": "design",
    "tool": "recall_brief",
    "brief": 275,
    "observed": "spec proposed an `environments` table + `recall_environments` tool that collide with the existing Forge Environment model; not flagged until the design leg read the models",
    "actor_ref": "flower-275-design",
    "dispatch_request": 146,
    "recall_worked_well": true
}

state · operator override

Lifecycle

created
2h ago
triaged
resolved
resolved by

Promote

Route this feedback into the appropriate action funnel.

Delete permanently?