Section 11 - design-consult directive + rejection gate (INV-8b)
Goal
The RUNTIME — not the LLM’s discretion — emits a MANDATORY design-agent consultation on every UI execution
step, and a UI work item that completed without consulting the design agent is REJECTED by the runtime.
Wrap the existing Anthropic frontend-design:frontend-design plugin (the approved fork: directive + gate
around the plugin + a thin repo-owned wrapper for the runtime-required role) — do not reinvent the generator.
Implementation Sketch
Mirror the proven engine-emitted directive pattern (the EXACT template):
intel_heal_directive / intel_digest_directive / intel_reground_directive
(scripts/plan_orchestrator/intel_heal_dispatch.py + handoff_enrichment.py:384), emitted at
roadmap.py:_enrich_route_envelope_for_execution (scripts/plan_orchestrator/roadmap.py:530, emit sites
:576/:591/:615), with a one-shot plan-local sentinel (intel_heal_dispatch.py:30 _sentinel_path) and
mutual-exclusion.
- New
scripts/plan_orchestrator/design_consult_dispatch.pywithdesign_consult_directive(...)emittingpayload.design_consult(kind + MANDATORY directive text mirroringINTEL_HEAL_DIRECTIVE+next_skill: frontend-design+ one-shot sentinel keyed on section/work_item). - Wire it into
roadmap.py:_enrich_route_envelope_for_executionANDfix_bug.py(UI work driven by either orchestrator), gated on the s-10has_web_frontendsignal AND aclassify_ui_scope== “ui” verdict. Use the DIRECTIVE-block shape (INV-20), not the advisory shape — “a UI work item cannot be built without it”. - Add the rejection gate:
verify_and_complete_v7(scripts/plan_orchestrator/review_phase.py) fail-closes when a UI work item completes without a recorded design-consult attestation (mirror the scope-conditionalbaseline_compare_criterion/baseline_gate_applies(scope)athandoff_enrichment.py:399/454). - Add the
design_consultblock tonext_action.schema.json. - Thin repo-owned wrapper skill for the runtime-required role (dispatches the
frontend-designplugin); the plugin stays the generator, the wrapper owns the mandatory-participant contract. - PLAN-AGNOSTIC per
script-first.md §11: fires only on the declared frontend signal + ui-scope verdict; a hard-coded project branch isSTRUCTURE:plan-specific-tooling-leakCritical.
Spec & Rule References
INV-8 (mission, approved fork: directive + gate around the plugin). script-first.md §11.
workflow-ownership.md §1 (engine emits the directive, not the LLM). Depends on s-10.
Layer Coverage
Tooling-scope: L1-L11 N/A. L12 = the engine emitting the directive on a UI+frontend served node, absent on
backend/non-UI, and verify_and_complete_v7 rejecting a UI item with no attestation. pytest gate:
scripts/plan_orchestrator/tests/test_design_consult_*.py + a review_phase UI-gate fail-closed test +
classify_ui_scope test.
Work Items
- Add scripts/plan_orchestrator/design_consult_dispatch.py emitting payload.design_consult (MANDATORY directive + next_skill: frontend-design + one-shot sentinel), mirroring intel_heal_dispatch.
- Wire it into roadmap.py:_enrich_route_envelope_for_execution + fix_bug.py, gated on has_web_frontend AND classify_ui_scope==ui; add the design_consult block to next_action.schema.json.
- Add the rejection gate in verify_and_complete_v7 failing-closed when a UI work item lacks a design-consult attestation; add a thin repo-owned wrapper skill dispatching the frontend-design plugin.
Fresh intel (regenerated)
{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “installable-harness/s-ddddff60” }, “generated_at”: “2026-06-25T18:12:59.975283+00:00”, “graph_state”: { “head_sha”: “b74d6b9a”, “last_code_import_at”: “2026-06-25T18:12:47.932Z”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:installable-harness/s-ddddff60] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/installable-harness” } } }
(full dossier: design-consult-directive-gate—s-ddddff60.intel.json)