recipe-generalization-sweep
Recipe: Bundle Generalization Sweep
Project-local audit recipe that sweeps the plan-marshall bundle (optionally all bundles) for implementations specific to developing the meta-project itself — "meta-leaks" — classifies each leak under a fixed disposition vocabulary, and emits a solution_outline.md whose deliverables carry out the remedies. Deliverables are grouped by disposition with a confirmation gate on destructive and contested calls.
Where recipe-plugin-compliance sweeps for plugin-architecture compliance and recipe-plan-review reviews a landed plan against its request, this recipe sweeps for generalization defects: bundle-shipped surfaces that only make sense when the working tree is the plan-marshall repo. The defect class is real — recipe-marshal-json-config-audit itself slipped into the bundle with a "domain-invariant" description despite being meta-only, and was caught only because its recipe_domain row was missing (the load-bearing discovery row). This recipe encodes the methodology so future meta-leaks are caught the same way without re-deriving the MOVE-signature, the disposition vocabulary, or the decision rules each time.
Like the sibling project-local recipes it is LLM-driven (no backing script for adjudication), with a deterministic candidate-surfacer used only as an accelerator — never the sole filter (Step 2). It is loaded by phase-3-outline's recipe path; it is not user-invocable.
Input Parameters
| Parameter | Source |
|---|---|
plan_id |
From phase-3-outline |
The recipe's discovery metadata (recipe_domain, recipe_profile) is declared in this skill's YAML frontmatter — manage-config list-recipes reads it from frontmatter, the sole source of truth. A recipe whose frontmatter lacks recipe_domain is silently skipped from discovery (the containment that originally exposed the missing-metadata defect in recipe-marshal-json-config-audit). The discovery scanner does NOT read the markdown body for these keys.
There is no recipe_scope / recipe_thoroughness input — the cell is pinned (Step 0). The package-source parameter is omitted because the sweep audits a bundle surface rather than iterating packages. The recipe is plan-bound; it persists the resolved cell to status.json metadata.