100%

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.py with design_consult_directive(...) emitting payload.design_consult (kind + MANDATORY directive text mirroring INTEL_HEAL_DIRECTIVE + next_skill: frontend-design + one-shot sentinel keyed on section/work_item).
  • Wire it into roadmap.py:_enrich_route_envelope_for_execution AND fix_bug.py (UI work driven by either orchestrator), gated on the s-10 has_web_frontend signal AND a classify_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-conditional baseline_compare_criterion / baseline_gate_applies(scope) at handoff_enrichment.py:399/454).
  • Add the design_consult block to next_action.schema.json.
  • Thin repo-owned wrapper skill for the runtime-required role (dispatches the frontend-design plugin); 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 is STRUCTURE:plan-specific-tooling-leak Critical.

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)