@event4u/agent-config 9.8.0 → 9.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +278 -298
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/tool-safety.md +3 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +7 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +362 -78
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +90 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +31 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +775 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +4 -2
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +14 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +21 -11
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +52 -14
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +81 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +5 -0
- package/src/scripts/_lib/secret_detector.ts +9 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +45 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +181 -9
- package/src/scripts/code_graph/detect.ts +52 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/query.ts +143 -29
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +55 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +4 -4
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +74 -26
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +8 -2
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
- package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
- package/docs/CLAIMS.md +0 -286
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -785
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -726
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -87
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/local-server-ports.md +0 -53
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -74
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -696
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -191
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -157
- package/docs/decisions/engine-reclassification-2026-07.md +0 -104
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -126
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -51
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/gated-platform-reads.md +0 -221
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -252
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -30
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
- package/src/scripts/postinstall_gui.ts +0 -129
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: stable
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# ADR — Level-6 Productization Closure
|
|
6
|
-
|
|
7
|
-
> **Status:** Decided · 2026-05-14
|
|
8
|
-
> **Context:** Closure record for `road-to-productization.md` and its
|
|
9
|
-
> two sibling roadmaps (`road-to-proof-not-features.md`,
|
|
10
|
-
> `road-to-better-skills-and-profiles.md` Block A). PR #43 lifted the
|
|
11
|
-
> package from Level-4 (execution engine) to Level-5 (observable
|
|
12
|
-
> decision system); this roadmap was the Level-5 → Level-6 jump:
|
|
13
|
-
> **steerable + provable + onboardable**.
|
|
14
|
-
> **Cross-links:** sibling roadmaps `road-to-productization`,
|
|
15
|
-
> `road-to-proof-not-features`, and `road-to-better-skills-and-profiles`
|
|
16
|
-
> — see `agents/roadmaps/` (or `agents/roadmaps/archive/` for the
|
|
17
|
-
> closed ones) for current status.
|
|
18
|
-
|
|
19
|
-
## What shipped
|
|
20
|
-
|
|
21
|
-
### Decision-Engine steerability (Phase 2)
|
|
22
|
-
|
|
23
|
-
- [`decision-engine-gates.md`](decision-engine-gates.md) — additive
|
|
24
|
-
`decision_engine:` block in `.agent-settings.yml` with
|
|
25
|
-
`min_confidence`, `block_on_risk`, `require_memory_hits`, `on_block`,
|
|
26
|
-
`ask_timeout_seconds`, `on_block_fallback`. Absent block = unchanged
|
|
27
|
-
observe-only behaviour.
|
|
28
|
-
- Gate-conflict resolution matrix (P2.1a) + non-TTY timeout fallback
|
|
29
|
-
(P2.1b) shipped before the gates themselves; the engine refuses to
|
|
30
|
-
evaluate downstream gates after the first rejection and falls back
|
|
31
|
-
to `on_block_fallback` in non-interactive contexts.
|
|
32
|
-
- Confidence-band gate (P2.2) and risk-class gate (P2.3) wired into
|
|
33
|
-
the scoring path. Memory-required policy (P2.4) unblocks on P6.2
|
|
34
|
-
shipping (`affected` keys in the decision trace).
|
|
35
|
-
|
|
36
|
-
### UX simplification (Phase 3)
|
|
37
|
-
|
|
38
|
-
- README "Quickstart" block — install → `/onboard` → `/work "first
|
|
39
|
-
real task"`, contributor detail moved below the `## For contributors`
|
|
40
|
-
fold.
|
|
41
|
-
- Default `rule_loading_tier` flipped from `minimal` to `balanced`;
|
|
42
|
-
rationale in [`cost-profile-defaults.md`](cost-profile-defaults.md).
|
|
43
|
-
- `/onboard` step 11 prints the Quickstart command list inline.
|
|
44
|
-
- CI gate: `task smoke-quickstart` runs the installer into a tmpdir
|
|
45
|
-
and validates the documented default surface deterministically.
|
|
46
|
-
|
|
47
|
-
### Multi-stack skill depth (Phase 4)
|
|
48
|
-
|
|
49
|
-
- `symfony-workflow` skill (~8.6 KB) — DI, Doctrine, Messenger,
|
|
50
|
-
voters, Twig, console.
|
|
51
|
-
- `nextjs-patterns` skill (~9.9 KB) — App Router, RSC boundaries,
|
|
52
|
-
Server Actions, caching, route handlers, 14.x↔15.x deltas.
|
|
53
|
-
- README stack table now separates Symfony / Next.js / Zend-Laminas
|
|
54
|
-
rows; "Deepest reference stack" paragraph names the workflow-grade
|
|
55
|
-
second tier explicitly.
|
|
56
|
-
|
|
57
|
-
### Architecture cleanup (Phase 5)
|
|
58
|
-
|
|
59
|
-
- Auto-rules (`non-destructive-by-default`, `scope-control-policy`)
|
|
60
|
-
audited: already refactored to trigger + Iron Law + pointer shape;
|
|
61
|
-
bound by the kernel-budget linter at 4 000-char override ceiling
|
|
62
|
-
(P5.1).
|
|
63
|
-
- Rule-Interaction matrix marked rule-only by design;
|
|
64
|
-
[`rule-interactions.md`](rule-interactions.md) § "Out of scope —
|
|
65
|
-
orchestration surfaces" points at `decision-engine-gates`,
|
|
66
|
-
`decision-trace-v1`, `memory-visibility-v1`,
|
|
67
|
-
and the `ai-council` skill for Council × Memory × Work-Engine
|
|
68
|
-
interactions (P5.2).
|
|
69
|
-
- `type: orchestrator` frontmatter tag exempts cluster routers from
|
|
70
|
-
the `command_missing_skill_references` linter check; 15 commands
|
|
71
|
-
carry the tag (P5.3).
|
|
72
|
-
- Beta-review marker protocol shipped in [`STABILITY.md`](STABILITY.md)
|
|
73
|
-
§ Beta-review markers; `scripts/check_beta_review_markers.py` wired
|
|
74
|
-
into `task ci`; 39 beta contracts back-filled (P5.4).
|
|
75
|
-
- Test-redundancy audit produced the `step-5-test-cleanup` sibling
|
|
76
|
-
roadmap — audit-only, no deletions (P5.5).
|
|
77
|
-
|
|
78
|
-
### Release-trunk discipline (Phase 1)
|
|
79
|
-
|
|
80
|
-
- [`release-trunk-sync.md`](release-trunk-sync.md) protocol; CI gate
|
|
81
|
-
fails the release-prep branch when `main` is more than one tagged
|
|
82
|
-
release behind (P1.3).
|
|
83
|
-
|
|
84
|
-
### Proof + cognition layers (Phases 6 + 7)
|
|
85
|
-
|
|
86
|
-
- Memory-consequence in the trace: `affected` keys in
|
|
87
|
-
[`decision-trace-v1.md`](decision-trace-v1.md) (sibling P2.1a–c).
|
|
88
|
-
- README three-audience split (sibling P2.2a–c).
|
|
89
|
-
- Hook doctor (sibling P2.3).
|
|
90
|
-
- Persona spine: Core-tier 5-section + Specialist-tier 7-section
|
|
91
|
-
spines locked in [`persona-schema.md`](persona-schema.md) (sibling
|
|
92
|
-
Block A).
|
|
93
|
-
|
|
94
|
-
## What got cancelled
|
|
95
|
-
|
|
96
|
-
- **P6.1 — Three real showcase sessions** (sibling P1.1–P1.4).
|
|
97
|
-
Cancelled upstream — capturing real host-agent sessions requires a
|
|
98
|
-
hosted-LLM runner that is out of scope for this roadmap. P1.0
|
|
99
|
-
pre-flight shipped; the capture surface is ready when a runner
|
|
100
|
-
exists. Reopen as `road-to-showcase-capture.md` once a runner is
|
|
101
|
-
on the table.
|
|
102
|
-
- **P8.1 — End-to-end Level-6 smoke** — same gating as P6.1.
|
|
103
|
-
Structural coverage (`task smoke-quickstart` + decision-engine
|
|
104
|
-
schema validator + gate-evaluator unit tests) covers the
|
|
105
|
-
configuration surface deterministically; the live smoke remains
|
|
106
|
-
the manual pre-tag gate.
|
|
107
|
-
|
|
108
|
-
## What stayed beta
|
|
109
|
-
|
|
110
|
-
39 contracts carry `keep-beta-until: 2026-08-12` (next audit
|
|
111
|
-
deadline). None met the 30-day promotion floor at audit time.
|
|
112
|
-
First-commit age range: 0–12 days. Audit cap is 90 days from the
|
|
113
|
-
audit date; CI rejects undated betas, multiple markers, and
|
|
114
|
-
keep-beta-until dates beyond the window.
|
|
115
|
-
|
|
116
|
-
## What got deferred to siblings
|
|
117
|
-
|
|
118
|
-
- **Showcase capture** → future `road-to-showcase-capture.md` when a
|
|
119
|
-
hosted-LLM runner is on the table.
|
|
120
|
-
- **Test-suite deletion** → `step-5-test-cleanup` sibling roadmap
|
|
121
|
-
(audit-only sibling spawned by P5.5; non-destructive by default).
|
|
122
|
-
- **Persona Block B** (Architect / Risk-Officer extension) —
|
|
123
|
-
anti-recommended per the sibling closure decision; not deferred,
|
|
124
|
-
closed.
|
|
125
|
-
- **Distribution / adoption** →
|
|
126
|
-
`road-to-distribution-and-adoption.md`, gated on this roadmap
|
|
127
|
-
closing (which this ADR records).
|
|
128
|
-
- **MCP server work** — own strand, out of scope.
|
|
129
|
-
|
|
130
|
-
## Consequences
|
|
131
|
-
|
|
132
|
-
- **Steerable:** the Decision Engine now gates on configurable
|
|
133
|
-
thresholds; the configuration surface is documented and CI-tested.
|
|
134
|
-
- **Provable:** memory hits/misses surface as `affected` keys in the
|
|
135
|
-
decision trace; the trace shape is contract-stable.
|
|
136
|
-
- **Onboardable:** a fresh user can land at a working `/work`
|
|
137
|
-
invocation in three Quickstart steps without scrolling past the
|
|
138
|
-
fold.
|
|
139
|
-
- **Multi-stack credible:** Laravel stays the deepest reference;
|
|
140
|
-
Symfony and Next.js shipped at workflow-grade depth; other stacks
|
|
141
|
-
remain project-analysis-only with the honest delta language in the
|
|
142
|
-
README.
|
|
143
|
-
- **Architecturally tidy:** orchestrator commands no longer warn,
|
|
144
|
-
beta contracts cannot rot undated, and the contract surface itself
|
|
145
|
-
carries a periodic review obligation.
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: stable
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# ADR — MCP server runtime: Anthropic `mcp` Python SDK
|
|
6
|
-
|
|
7
|
-
> **Status:** Decided · 2026-05-10 (recorded 2026-05-15).
|
|
8
|
-
> **Context:**
|
|
9
|
-
> [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md),
|
|
10
|
-
> [`mcp-cloud-scope.md`](mcp-cloud-scope.md).
|
|
11
|
-
|
|
12
|
-
## Decision
|
|
13
|
-
|
|
14
|
-
The MCP server at `scripts/mcp_server/` runs on **Python 3.11+** using the
|
|
15
|
-
official Anthropic **`mcp` Python SDK** (PyPI; pinned to `mcp==1.27.1`
|
|
16
|
-
per [`scripts/mcp_server/requirements.txt`](../../src/scripts/mcp_server/requirements.txt)).
|
|
17
|
-
**FastMCP** (the higher-level decorator wrapper) and the **MCP TypeScript SDK**
|
|
18
|
-
are explicitly rejected for this surface.
|
|
19
|
-
|
|
20
|
-
The hosted Cloudflare Worker bridge (`internal/workers/mcp/`) is the only place a
|
|
21
|
-
non-Python runtime is allowed, and it stays bound to the same wire contract
|
|
22
|
-
(see [`mcp-cloud-scope.md`](mcp-cloud-scope.md)).
|
|
23
|
-
|
|
24
|
-
## Why this was a real question
|
|
25
|
-
|
|
26
|
-
The package already ships Python under `scripts/` (work engine, AI Council,
|
|
27
|
-
skill linter, install driver helpers) and ships zero Node-runtime code paths
|
|
28
|
-
outside the npx dispatcher. Picking a runtime for the MCP server had three
|
|
29
|
-
candidates that all could have shipped:
|
|
30
|
-
|
|
31
|
-
1. **MCP Python SDK** (low-level `Server` + `stdio_server` handlers).
|
|
32
|
-
2. **FastMCP** (higher-level Pythonic decorators built on the same SDK).
|
|
33
|
-
3. **MCP TypeScript SDK** (Node runtime, separate package).
|
|
34
|
-
|
|
35
|
-
Without an ADR, this choice would have stayed implicit in the code and
|
|
36
|
-
re-litigated every time a contributor read `scripts/mcp_server/server.py`.
|
|
37
|
-
|
|
38
|
-
## Why MCP Python SDK (low-level) wins
|
|
39
|
-
|
|
40
|
-
| Criterion | MCP Python SDK | FastMCP | MCP TypeScript SDK |
|
|
41
|
-
|---|---|---|---|
|
|
42
|
-
| Runtime already in repo | ✅ Python is the `scripts/` runtime | ✅ Same | ❌ Adds Node-runtime path for one server |
|
|
43
|
-
| A0 safety boundary fit (read-only `prompts/list`, `prompts/get`, narrow `tools/*` allowlist) | ✅ Direct handler control matches the [Phase 1 scope contract](mcp-phase-1-scope.md) | ⚠️ Decorator sugar can obscure the unimplemented-tool guard | ✅ Possible but duplicates Python helpers |
|
|
44
|
-
| Import-surface guard (`tests/test_mcp_server.py` asserts no `subprocess`, `os.system`, `os.popen`, no HTTP client in `scripts.mcp_server.prompts/tools`) | ✅ Trivial to enforce — one module set to audit | ⚠️ FastMCP pulls in extra deps that widen the audit surface | ❌ Would need a TS-side equivalent |
|
|
45
|
-
| Reuse of existing project helpers (`scripts/skill_linter.py`, `scripts/chat_history.py`) | ✅ Direct in-process call | ✅ Same | ❌ Cross-runtime IPC or duplicated logic |
|
|
46
|
-
| Pin / supply-chain footprint | One pin (`mcp==1.27.1`) + `PyYAML` | Adds FastMCP version coupling on top | Node toolchain (`npm`, `tsc`, `dist/`) |
|
|
47
|
-
| Smoke-test path | `task mcp:setup && task mcp:run` (already shipped) | Would re-wrap the same SDK | Separate test runner |
|
|
48
|
-
|
|
49
|
-
Evidence the decision is already realised in code:
|
|
50
|
-
|
|
51
|
-
- [`scripts/mcp_server/server.py`](../../src/scripts/mcp_server/server.py) — uses
|
|
52
|
-
`mcp.server.Server`, `mcp.server.stdio.stdio_server`, `InitializationOptions`
|
|
53
|
-
directly (no FastMCP decorators).
|
|
54
|
-
- [`scripts/mcp_server/__init__.py`](../../src/scripts/mcp_server/__init__.py) —
|
|
55
|
-
pins `__version__` and declares stability/contract pointer.
|
|
56
|
-
- [`scripts/mcp_server/requirements.txt`](../../src/scripts/mcp_server/requirements.txt)
|
|
57
|
-
— `mcp==1.27.1`, no FastMCP, no Node tooling.
|
|
58
|
-
- [`scripts/mcp_setup.sh`](../../src/scripts/mcp_setup.sh) — onboarding writes
|
|
59
|
-
the Claude Desktop config snippet against `python -m scripts.mcp_server`.
|
|
60
|
-
|
|
61
|
-
## Tool surface (Phase 1 scoping)
|
|
62
|
-
|
|
63
|
-
Locked separately by [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) Phase 4
|
|
64
|
-
amendment. The current ALLOWLIST is exactly two tools, registered as a
|
|
65
|
-
hardcoded module-level tuple in
|
|
66
|
-
[`scripts/mcp_server/tools.py`](../../src/scripts/mcp_server/tools.py):
|
|
67
|
-
|
|
68
|
-
| Tool | Mode | Source |
|
|
69
|
-
|---|---|---|
|
|
70
|
-
| `lint_skills` | read-only | wraps `scripts.skill_linter.lint_file` |
|
|
71
|
-
| `chat_history_append` | path-scoped write | wraps `scripts.chat_history.append`; writes restricted to `agents/runtime/.agent-chat-history` (current default), `agents/.agent-chat-history`, or `.agent-chat-history` under the consumer root |
|
|
72
|
-
|
|
73
|
-
No `push`, `merge`, `commit`, or prod-write surface is exposed. The
|
|
74
|
-
unimplemented-tool envelope from
|
|
75
|
-
[`mcp-tool-stub-envelope.md`](mcp-tool-stub-envelope.md) governs the rest of
|
|
76
|
-
the [`consumer_tool_catalog.json`](../../src/scripts/mcp_server/consumer_tool_catalog.json)
|
|
77
|
-
entries.
|
|
78
|
-
|
|
79
|
-
`agent-config init`, `agent-config skills list`, and
|
|
80
|
-
`agent-config council estimate` (the speculative tool surface in the
|
|
81
|
-
step-14 stub) are **not** exposed today. They stay terminal-gated because
|
|
82
|
-
their natural shape is a stateful CLI. The AI Council (claude-sonnet-4-5 +
|
|
83
|
-
gpt-4o, 2026-05-10, 2 rounds, $0.06) converged on a hardcoded module-level
|
|
84
|
-
ALLOWLIST with mandatory path-scoping for any write tool, and locked the
|
|
85
|
-
rule that engine-state-bearing operations stay off the MCP wire until a
|
|
86
|
-
real consumer ask justifies amending the A0 boundary.
|
|
87
|
-
|
|
88
|
-
## Install surface
|
|
89
|
-
|
|
90
|
-
The step-14 stub speculated about an `agent-config install --mcp` flag.
|
|
91
|
-
That shape was rejected in favour of two existing entrypoints, both
|
|
92
|
-
already shipped:
|
|
93
|
-
|
|
94
|
-
- **One-liner onboarding:** `task mcp:setup` runs
|
|
95
|
-
[`scripts/mcp_setup.sh`](../../src/scripts/mcp_setup.sh) — creates
|
|
96
|
-
`.venv-mcp/`, installs `mcp`, and prints the Claude Desktop JSON snippet
|
|
97
|
-
the operator pastes into
|
|
98
|
-
`~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
99
|
-
(with the per-OS variants documented in
|
|
100
|
-
[`docs/mcp-server.md`](../mcp-server.md)).
|
|
101
|
-
- **Config writer:** `./agent-config mcp:render --claude-desktop` writes
|
|
102
|
-
the user-scope Claude Desktop config directly.
|
|
103
|
-
|
|
104
|
-
Writing the global Claude Desktop config from the npx dispatcher without
|
|
105
|
-
an operator pasting JSON is **not** part of this contract — Claude Desktop
|
|
106
|
-
restarts and config-merge semantics make silent rewrites a footgun. The
|
|
107
|
-
copy-paste path stays the canonical install shape until non-dev recruit
|
|
108
|
-
evidence under `agents/evidence/eval-findings/` demonstrates the manual step is the
|
|
109
|
-
actual adoption blocker.
|
|
110
|
-
|
|
111
|
-
## Consequences
|
|
112
|
-
|
|
113
|
-
- Adding a third tool to the MCP server is a code-review event against
|
|
114
|
-
`ALLOWLIST` in `scripts/mcp_server/tools.py`. No settings flag, no env
|
|
115
|
-
var, no dynamic registration — see
|
|
116
|
-
[`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) Phase 4 amendment.
|
|
117
|
-
- Picking up a future protocol break (MCP SDK 2.x) is one pin bump in
|
|
118
|
-
`scripts/mcp_server/requirements.txt`, gated on the 12 import-surface +
|
|
119
|
-
behaviour tests in `tests/test_mcp_server.py` staying green.
|
|
120
|
-
- Re-opening FastMCP or the TypeScript SDK requires a new ADR that
|
|
121
|
-
supersedes this one with evidence (Python SDK shipping a deprecation
|
|
122
|
-
or FastMCP closing the safety-audit gap on `tools/*`).
|
|
123
|
-
|
|
124
|
-
## See also
|
|
125
|
-
|
|
126
|
-
- [`mcp-phase-1-scope.md`](mcp-phase-1-scope.md) — Phase 1–6 hard contract.
|
|
127
|
-
- [`mcp-cloud-scope.md`](mcp-cloud-scope.md) — hosted Worker bridge scope.
|
|
128
|
-
- [`mcp-tool-stub-envelope.md`](mcp-tool-stub-envelope.md) — unimplemented-tool wire shape.
|
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: stable
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# ADR — Product UI Track: audit-as-hard-gate, design-review loop, stack dispatch
|
|
6
|
-
|
|
7
|
-
> **Status:** Decided · R3 Phases 1–6 shipped · 2026-05-01
|
|
8
|
-
> **Context:** [`ui-track-flow.md`](ui-track-flow.md)
|
|
9
|
-
> **Builds on:** [`adr-prompt-driven-execution.md`](adr-prompt-driven-execution.md)
|
|
10
|
-
> — R2 envelope routing and the band-action gate that R3 widens to UI.
|
|
11
|
-
> **Defers to:** the visual-review-loop track for headless-browser
|
|
12
|
-
> screenshot capture and visual-regression assertions.
|
|
13
|
-
|
|
14
|
-
## Decision
|
|
15
|
-
|
|
16
|
-
R3 ships four directive sets — `backend` (R1/R2), **`ui`**, **`ui-trivial`**,
|
|
17
|
-
and **`mixed`** — dispatched at the engine boundary on
|
|
18
|
-
`state.directive_set`. The slot wiring is fixed by
|
|
19
|
-
[`directives/ui/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/__init__.py),
|
|
20
|
-
[`directives/ui_trivial/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/__init__.py),
|
|
21
|
-
and [`directives/mixed/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/mixed/__init__.py);
|
|
22
|
-
the contract for each lives in [`ui-track-flow.md`](ui-track-flow.md).
|
|
23
|
-
|
|
24
|
-
The UI set drives `audit → design → apply → review → polish → report`
|
|
25
|
-
with three load-bearing properties:
|
|
26
|
-
|
|
27
|
-
1. **Existing-UI-audit is a hard gate.** No `apply` runs without
|
|
28
|
-
`state.ui_audit` populated. The gate lives at directive level **and**
|
|
29
|
-
at always-on rule level ([`ui-audit-gate`](../../.agent-src.uncondensed/rules/ui-audit-gate.md))
|
|
30
|
-
so an agent acting outside the engine cannot bypass it.
|
|
31
|
-
2. **Design brief is locked microcopy.** `apply` consumes the brief
|
|
32
|
-
verbatim — `PLACEHOLDER_PATTERNS` (`<placeholder>`, `lorem`, `todo:`,
|
|
33
|
-
`tbd`, `xxx`) reject at producer and consumer.
|
|
34
|
-
3. **Polish has a hard 2-round ceiling.** Schema-level validation
|
|
35
|
-
(`work_engine.state._validate_ui_polish`) rejects `rounds > 2` on
|
|
36
|
-
disk; after round 2 the engine halts with ship-as-is / abort / hand-off.
|
|
37
|
-
|
|
38
|
-
Halt budget on the happy path: **2 user halts** — audit pick + design
|
|
39
|
-
sign-off. Apply / review / polish run silently when their producers
|
|
40
|
-
write clean envelopes.
|
|
41
|
-
|
|
42
|
-
## Why this was a real question
|
|
43
|
-
|
|
44
|
-
R1 + R2 produced a competent backend executor. UI work was the gap. The
|
|
45
|
-
package already shipped UI skills (`fe-design`, `blade-ui`, `livewire`,
|
|
46
|
-
`flux`) but they were flat tools: an agent could call `flux` directly,
|
|
47
|
-
write a component that duplicated three existing primitives, ignore the
|
|
48
|
-
project's design tokens, and ship microcopy with `<placeholder>` strings
|
|
49
|
-
intact. Tests passed; the result felt undesigned.
|
|
50
|
-
|
|
51
|
-
Three options were on the table:
|
|
52
|
-
|
|
53
|
-
1. **More UI skills, no directive set** — add `react-shadcn-ui`,
|
|
54
|
-
`existing-ui-audit`, `ui-design-brief` as flat skills and let
|
|
55
|
-
`/work` route to them via the existing dispatcher. Rejected:
|
|
56
|
-
the audit step is the load-bearing piece, and a flat skill cannot
|
|
57
|
-
enforce "no apply before audit". Rules can advise; only the
|
|
58
|
-
dispatcher can refuse.
|
|
59
|
-
2. **One mega-skill (`product-ui`) that orchestrates internally** —
|
|
60
|
-
single SKILL.md that runs audit → design → apply → review →
|
|
61
|
-
polish in one shot. Rejected: the engine's halt-budget,
|
|
62
|
-
sentinel-based replay, and Golden Transcript suite are designed
|
|
63
|
-
for slot-level granularity. Folding five steps into one skill
|
|
64
|
-
blinds the freeze-guard to mid-flow regressions.
|
|
65
|
-
3. **A new directive set per intent (chosen)** — `ui` for build /
|
|
66
|
-
improve, `ui-trivial` for provably bounded edits, `mixed` for
|
|
67
|
-
prompts that touch both layers. Adopted because each slot keeps
|
|
68
|
-
its own sentinel, halt surface, and replay coverage; the audit
|
|
69
|
-
gate is enforced at the dispatcher boundary and at the agent
|
|
70
|
-
boundary; and stack-specific implementation is dispatched without
|
|
71
|
-
widening the directive set.
|
|
72
|
-
|
|
73
|
-
## Audit as a hard gate (the load-bearing piece)
|
|
74
|
-
|
|
75
|
-
The Lovable-grade differentiator is **"audit existing UI first, design
|
|
76
|
-
before code, polish before ship"**. Everything in R3 follows from that.
|
|
77
|
-
|
|
78
|
-
The audit gate refuses `apply` until `state.ui_audit` is well-formed:
|
|
79
|
-
either `≥1 components_found` entry, or `greenfield=True` with a user-chosen
|
|
80
|
-
`greenfield_decision` ∈ `{scaffold, bare, external_reference}`. An empty
|
|
81
|
-
dict, `None`, or a populated dict without those keys is **not** findings;
|
|
82
|
-
the gate emits `@agent-directive: existing-ui-audit` and refuses to advance.
|
|
83
|
-
|
|
84
|
-
Two enforcement layers, deliberately redundant:
|
|
85
|
-
|
|
86
|
-
- **Dispatcher layer** —
|
|
87
|
-
[`directives/ui/audit.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/audit.py)
|
|
88
|
-
refuses to write `outcomes["refine"] = "success"` without a populated
|
|
89
|
-
audit. Purely structural; no LLM, no heuristic.
|
|
90
|
-
- **Agent layer** — [`ui-audit-gate`](../../.agent-src.uncondensed/rules/ui-audit-gate.md)
|
|
91
|
-
is an always-on rule that fires when the agent is about to write a
|
|
92
|
-
component file outside the engine (free-form edit, side conversation,
|
|
93
|
-
cloud surface). The rule encodes the same Iron Law in prose so cloud
|
|
94
|
-
agents that don't ship the engine still honour it.
|
|
95
|
-
|
|
96
|
-
**Why two layers.** A single layer would leak: cloud surfaces and
|
|
97
|
-
free-form edits bypass the dispatcher entirely. A rule alone would not
|
|
98
|
-
hold under engine-driven runs because rules don't refuse exit codes.
|
|
99
|
-
Belt-and-suspenders is cheap (no shared state, no double-write) and
|
|
100
|
-
the failure modes are different enough to justify it.
|
|
101
|
-
|
|
102
|
-
### Confidence-path resolution
|
|
103
|
-
|
|
104
|
-
Audit findings carry a confidence label and per-candidate similarity.
|
|
105
|
-
[`directives/ui/audit.py::_decide_path`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/audit.py)
|
|
106
|
-
resolves to one of:
|
|
107
|
-
|
|
108
|
-
- `high_confidence` — confidence `high` + ≥1 match with similarity
|
|
109
|
-
≥ `STRONG_SIMILARITY = 0.7` and no runner-up within
|
|
110
|
-
`TIE_GAP = 0.05`. Audit folds findings into the design brief — no
|
|
111
|
-
separate halt.
|
|
112
|
-
- `ambiguous` — populated but below the high-confidence threshold or
|
|
113
|
-
with a tie. Numbered-options halt records `audit_path = "ambiguous"`
|
|
114
|
-
+ `candidate_pick`.
|
|
115
|
-
- `greenfield` — no `components_found`, `greenfield = True`, user picks
|
|
116
|
-
`scaffold` / `bare` / `external_reference`.
|
|
117
|
-
|
|
118
|
-
Constants are named, exported, and imported by tests so a re-tune
|
|
119
|
-
re-captures Goldens explicitly rather than drifting silently.
|
|
120
|
-
|
|
121
|
-
## Design-review polish loop
|
|
122
|
-
|
|
123
|
-
`apply` writes the rendered envelope. `review` (stack-dispatched) emits
|
|
124
|
-
`findings` + `review_clean`. `polish` runs a bounded fix loop with a
|
|
125
|
-
hard ceiling of `POLISH_CEILING = 2` rounds, validated at three layers
|
|
126
|
-
(in-memory state, on-disk schema, dispatcher).
|
|
127
|
-
|
|
128
|
-
| `review_clean` | `rounds` | Behaviour |
|
|
129
|
-
|---|---|---|
|
|
130
|
-
| `True` | any | `SUCCESS` — advance to report |
|
|
131
|
-
| `False` | `< 2` | `BLOCKED` + `@agent-directive: ui-polish-<stack>`; agent applies fixes, re-runs review, increments `rounds` |
|
|
132
|
-
| `False` | `== 2` | `BLOCKED` numbered options: ship-as-is / abort / hand off |
|
|
133
|
-
|
|
134
|
-
**Why ceiling at 2.** Three rounds is one round too many: by round 3
|
|
135
|
-
the agent is either making cosmetic tweaks the user can't notice, or
|
|
136
|
-
spinning on a design problem the engine cannot resolve. Halting at 2
|
|
137
|
-
hands the decision to the user with the cheapest possible context
|
|
138
|
-
(two completed rounds of evidence). Rate of false-ceiling-hits will
|
|
139
|
-
be visible in delivery reports; a tune to 3 stays a one-line constant
|
|
140
|
-
change with a Golden re-capture.
|
|
141
|
-
|
|
142
|
-
**Token-violation extraction.** Findings with `kind == "token_violation"`
|
|
143
|
-
carry `category` and `value`. Polish classifies against
|
|
144
|
-
`state.ui_audit.design_tokens`:
|
|
145
|
-
|
|
146
|
-
- Matched value → fix uses the named token.
|
|
147
|
-
- Unmatched value repeated > `TOKEN_REPEAT_THRESHOLD = 2` times →
|
|
148
|
-
emits `polish_token_extraction_pending` to extract a new token
|
|
149
|
-
before the next round runs. One-off unmatched values stay inline.
|
|
150
|
-
|
|
151
|
-
This is the only place R3 mutates the design system. It runs only
|
|
152
|
-
after a finding identifies a violation, and only when the same value
|
|
153
|
-
appears three or more times — single-use values are not worth the
|
|
154
|
-
ceremony.
|
|
155
|
-
|
|
156
|
-
## Halt budget — why max 2 on the happy path
|
|
157
|
-
|
|
158
|
-
The Lovable feel comes from "user decides once, agent runs". Three
|
|
159
|
-
halts (audit + design + polish-final) is the obvious shape but
|
|
160
|
-
empirically wrong: by the time polish needs sign-off, the user is
|
|
161
|
-
context-switched away. Two halts that pin the **decisive** choices
|
|
162
|
-
(which existing UI to extend, what microcopy to ship) buy the agent
|
|
163
|
-
the runway to finish silently.
|
|
164
|
-
|
|
165
|
-
Additional halts surface only on real ambiguity:
|
|
166
|
-
greenfield-undecided, shadcn-version-mismatch, audit-ambiguous,
|
|
167
|
-
placeholder rejection, polish round (per dirty review, capped at 2),
|
|
168
|
-
polish ceiling. GT-U11 (high-confidence) and GT-U12 (ambiguous) pin
|
|
169
|
-
the budget at 1 and 2 halts respectively; a regression that adds a
|
|
170
|
-
third halt fails replay.
|
|
171
|
-
|
|
172
|
-
## Trivial path and reclassification
|
|
173
|
-
|
|
174
|
-
For provably bounded edits (single class swap, copy tweak, one-prop
|
|
175
|
-
adjustment), the Phase-1 intent classifier writes
|
|
176
|
-
`directive_set = "ui-trivial"`. The slot wiring collapses to
|
|
177
|
-
`refine → ⊘ → ⊘ → ⊘ → apply → test → ⊘ → report` with
|
|
178
|
-
`MAX_FILES = 1` and `MAX_LINES_CHANGED = 5` enforced inside
|
|
179
|
-
[`directives/ui_trivial/apply.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/apply.py).
|
|
180
|
-
|
|
181
|
-
**Mandatory reclassification at apply time.** When a trivial edit
|
|
182
|
-
exceeds the preconditions, apply flips
|
|
183
|
-
`state.directive_set = "ui"` and the dispatcher restarts at audit.
|
|
184
|
-
The reclassification is loud (delivery report records it) and
|
|
185
|
-
counted (delivery report tracks the rate). Silent skips are the
|
|
186
|
-
failure mode to watch for.
|
|
187
|
-
|
|
188
|
-
**Why the bypass exists.** Without it, "fix the typo on the login
|
|
189
|
-
button" runs the full audit + design loop. That is six halts the
|
|
190
|
-
user does not want to take. The bypass restores common sense without
|
|
191
|
-
weakening the audit gate — the gate stays in force whenever the
|
|
192
|
-
preconditions don't hold.
|
|
193
|
-
|
|
194
|
-
## Stack detection and dispatch
|
|
195
|
-
|
|
196
|
-
[`scripts/work_engine/stack/detect.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/stack/detect.py)
|
|
197
|
-
reads `composer.json` and `package.json` once, applies a four-rule
|
|
198
|
-
priority table, and writes `state.stack.frontend`:
|
|
199
|
-
|
|
200
|
-
1. `livewire/livewire` + `livewire/flux` → `blade-livewire-flux`
|
|
201
|
-
2. `react` + (`@radix-ui/*` OR `shadcn-ui` OR `components.json`) → `react-shadcn`
|
|
202
|
-
3. `vue` (any major) → `vue`
|
|
203
|
-
4. otherwise → `plain`
|
|
204
|
-
|
|
205
|
-
Cached on `state.stack` against the manifest `mtime`. A `composer.json`
|
|
206
|
-
or `package.json` change invalidates the cache; same conversation
|
|
207
|
-
re-detects on the next dispatch.
|
|
208
|
-
|
|
209
|
-
Errors (missing file, malformed JSON) downgrade to `plain` rather than
|
|
210
|
-
raising — a wrong stack label is recoverable (audit catches it, user
|
|
211
|
-
can override), a crash mid-dispatch is not.
|
|
212
|
-
|
|
213
|
-
`apply`, `review`, `polish` each route on `state.stack.frontend` to a
|
|
214
|
-
stack-specific directive (`ui-apply-blade-livewire-flux`,
|
|
215
|
-
`ui-apply-react-shadcn`, `ui-apply-vue`, `ui-apply-plain`). The
|
|
216
|
-
dispatch table shape is identical across all three slots; adding a
|
|
217
|
-
stack adds three rows, one per slot.
|
|
218
|
-
|
|
219
|
-
## fe-design migration — reference, not executor
|
|
220
|
-
|
|
221
|
-
`fe-design` previously functioned as both heuristics catalogue and
|
|
222
|
-
direct executor. R3 splits the responsibilities:
|
|
223
|
-
|
|
224
|
-
- **Reference (kept):** layout patterns, form / table design,
|
|
225
|
-
responsive strategy, a11y heuristics. Cited by
|
|
226
|
-
[`directives/ui/design.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/design.py).
|
|
227
|
-
- **Executor (removed):** code-writing responsibilities migrated to
|
|
228
|
-
the stack-specific apply / review / polish skills (`flux`,
|
|
229
|
-
`livewire`, `blade-ui`, `react-shadcn-ui`, `ui-apply-vue`).
|
|
230
|
-
|
|
231
|
-
The split lets the design step stay framework-agnostic while
|
|
232
|
-
implementation skills stay focused on a single stack's idioms.
|
|
233
|
-
|
|
234
|
-
## Mixed orchestration — contract first, then UI, then stitch
|
|
235
|
-
|
|
236
|
-
When a single input touches both layers, `mixed` runs
|
|
237
|
-
`refine → memory → analyze → contract → ui → stitch → verify → report`.
|
|
238
|
-
Sentinels:
|
|
239
|
-
|
|
240
|
-
- `state.contract.contract_confirmed` — UI sub-flow refuses to start
|
|
241
|
-
without it (defense-in-depth even if `outcomes["plan"] == "success"`).
|
|
242
|
-
- `state.ui_review.review_clean` — mixed `ui` step's success condition.
|
|
243
|
-
- `state.stitch.verdict = "success"` — stitch's success condition;
|
|
244
|
-
`blocked` / `partial` halts unless `state.stitch.integration_confirmed`
|
|
245
|
-
flips.
|
|
246
|
-
|
|
247
|
-
**Why contract first.** UI shape and microcopy depend on the API
|
|
248
|
-
surface (field names, error codes, paginated vs streamed). Building
|
|
249
|
-
UI before locking the contract leads to two rounds of churn — once
|
|
250
|
-
when the contract surfaces a constraint the design ignored, once
|
|
251
|
-
when the integration test reveals a field-name mismatch. Locking
|
|
252
|
-
the contract first costs one halt and saves an entire polish round.
|
|
253
|
-
|
|
254
|
-
## Tradeoffs accepted
|
|
255
|
-
|
|
256
|
-
- **Three new directive sets** — bigger surface to maintain, more
|
|
257
|
-
Goldens (12 GT-U entries vs. R2's 4 GT-P). Mitigated by shared
|
|
258
|
-
refine/report handlers and the strict-verb replay harness.
|
|
259
|
-
- **Hard 2-round polish ceiling** — some legitimate edge cases
|
|
260
|
-
(a11y compliance edits across multiple components) need 3 rounds.
|
|
261
|
-
Mitigated by ship-as-is / hand-off as explicit user choices at
|
|
262
|
-
the ceiling halt.
|
|
263
|
-
- **Stack detection is heuristic, not full-AST** — a project with
|
|
264
|
-
`react` + `flux` (e.g. test scaffold) misclassifies as
|
|
265
|
-
`react-shadcn`. Mitigated by user-override path: explicit `intent`
|
|
266
|
-
in prompt overrides detection.
|
|
267
|
-
- **Two-layer audit enforcement** — duplicates the gate logic in
|
|
268
|
-
rule prose and dispatcher Python. Accepted: cloud surfaces don't
|
|
269
|
-
ship the engine, and engine-driven flows can't rely on rule
|
|
270
|
-
enforcement. Both layers are needed; the cost is documentation.
|
|
271
|
-
|
|
272
|
-
## Non-goals
|
|
273
|
-
|
|
274
|
-
- Does **not** replace `/implement-ticket` or `/work` — same engine,
|
|
275
|
-
new directive sets only.
|
|
276
|
-
- Does **not** introduce a `/build` or `/build-screen` entrypoint.
|
|
277
|
-
Intent classification at refine is enough; new commands wait on
|
|
278
|
-
evidence of mis-routing.
|
|
279
|
-
- Does **not** pin a removal date for `fe-design`; the reference
|
|
280
|
-
positioning is stable.
|
|
281
|
-
- Does **not** ship visual review (headless browser, screenshot
|
|
282
|
-
capture, a11y tooling) — Roadmap 4 stub.
|
|
283
|
-
- Does **not** ship project-local design-memory beyond what the
|
|
284
|
-
audit step already extracts; the audit is the memory.
|
|
285
|
-
|
|
286
|
-
## Consequences — unblocks
|
|
287
|
-
|
|
288
|
-
- **Roadmap 4** (visual review loop) can register a post-polish
|
|
289
|
-
visual-assertion step against the existing `state.ui_apply`
|
|
290
|
-
envelope.
|
|
291
|
-
- **New stacks** (Svelte, SolidJS, Astro) plug in via the
|
|
292
|
-
extension recipe ([`ui-stack-extension.md`](ui-stack-extension.md)) —
|
|
293
|
-
detector heuristic + apply/review/polish skills + Golden fixture.
|
|
294
|
-
No engine change.
|
|
295
|
-
- **Mixed entrypoints** (`/refactor`, `/spike`, future) compose by
|
|
296
|
-
building a new envelope kind plus a new directive set; the audit
|
|
297
|
-
gate is reusable when the work touches UI.
|
|
298
|
-
|
|
299
|
-
## Follow-ups (not part of this ADR)
|
|
300
|
-
|
|
301
|
-
- Track reclassification rate (`ui-trivial` → `ui` flips) in
|
|
302
|
-
delivery reports; if > 30 % of trivial runs reclassify, the
|
|
303
|
-
classifier needs tuning.
|
|
304
|
-
- Track polish-ceiling-hit rate; if > 10 % of UI runs hit the
|
|
305
|
-
ceiling, raise to 3 with a Golden re-capture.
|
|
306
|
-
- Decide whether `state.ui_audit` should expire on long-running
|
|
307
|
-
state files (currently sticky for the lifetime of the file).
|
|
308
|
-
- Evaluate whether `react-shadcn` should split into
|
|
309
|
-
`react-shadcn-v2` / `react-shadcn-v3` once shadcn ships its next
|
|
310
|
-
major; the audit version-mismatch warning surfaces this signal
|
|
311
|
-
without forcing a split today.
|
|
312
|
-
|
|
313
|
-
## R4 amendment — Visual Review Loop (2026-05-01)
|
|
314
|
-
|
|
315
|
-
> **Status:** Decided · R4 Phases 0–4 shipped · Phase 5 in progress
|
|
316
|
-
|
|
317
|
-
R4 narrows the polish-termination contract from "subjective ceiling
|
|
318
|
-
only" to "subjective ceiling **plus** objective a11y block", adds a
|
|
319
|
-
preview envelope on `state.ui_review.preview` (engine reads, skill
|
|
320
|
-
writes — the engine never spawns a browser), and threads an a11y
|
|
321
|
-
baseline through the existing audit step so pre-existing violations
|
|
322
|
-
stay informational while new ones block.
|
|
323
|
-
|
|
324
|
-
### Acceptance criteria — locked verbatim from the roadmap
|
|
325
|
-
|
|
326
|
-
- **AC #1 — Objective polish anchoring:** Polish loop terminates when
|
|
327
|
-
(a) `findings` is empty OR (b) `rounds == POLISH_CEILING` AND no
|
|
328
|
-
`a11y_violation` entries remain at severity ≥ floor. Round 2 with
|
|
329
|
-
remaining a11y findings halts via `polish_a11y_blocking`, not via
|
|
330
|
-
`polish_ceiling_reached`.
|
|
331
|
-
- **AC #2 — Preview envelope:** `state.ui_review.preview` shape
|
|
332
|
-
validated by engine; `render_ok: False` halts via
|
|
333
|
-
`preview_render_failed`; trivial path bypasses the envelope
|
|
334
|
-
entirely.
|
|
335
|
-
- **AC #3 — A11y baseline:** `state.ui_audit.a11y_baseline` is read
|
|
336
|
-
by the review gate; only NEW/CHANGED violations are actionable.
|
|
337
|
-
Pre-existing violations stay in findings as informational, never
|
|
338
|
-
block polish.
|
|
339
|
-
- **AC #4 — Goldens pinned:** GT-U13, GT-U14, GT-U15 captured and
|
|
340
|
-
replay-byte-equal. GT-U4 still passes (regression guard for the
|
|
341
|
-
narrowed `polish_ceiling_reached`).
|
|
342
|
-
- **AC #5 — `task ci` green** with all three new baselines wired
|
|
343
|
-
into the harness and CHECKSUMS regenerated.
|
|
344
|
-
- **AC #6 — Contracts updated:** `ui-track-flow.md` and
|
|
345
|
-
`adr-product-ui-track.md` reflect the new gates and the
|
|
346
|
-
polish-termination rewrite.
|
|
347
|
-
|
|
348
|
-
### Termination rewrite — load-bearing change
|
|
349
|
-
|
|
350
|
-
The pre-R4 polish step had one ceiling halt
|
|
351
|
-
(`polish_ceiling_reached`) with three options: ship as-is / abort /
|
|
352
|
-
hand off. R4 keeps that branch for **subjective** findings (visual
|
|
353
|
-
polish, design tweaks) and adds an explicit **objective** branch
|
|
354
|
-
when remaining findings include `a11y_violation` entries:
|
|
355
|
-
|
|
356
|
-
- `polish_a11y_blocking` halt with options:
|
|
357
|
-
1. **Extend** — sets `state.ui_polish.extension_used = True`; the
|
|
358
|
-
schema validator widens `rounds` from `[0, 2]` to `[0, 3]` only
|
|
359
|
-
while the flag is set. Once spent, the Extend option disappears
|
|
360
|
-
on re-entry.
|
|
361
|
-
2. **Accept** — appends rule ids to
|
|
362
|
-
`state.ui_review.a11y.accepted_violations`; on replay the review
|
|
363
|
-
gate's `_apply_a11y_gate` filters those rule ids before
|
|
364
|
-
synthesising findings, so the run round-trips through `SUCCESS`
|
|
365
|
-
idempotently.
|
|
366
|
-
3. **Abort** — drops the UI request.
|
|
367
|
-
|
|
368
|
-
The two halts share the polish step but never fire together: the
|
|
369
|
-
explicit branch in `polish.run()` checks for `a11y_violation` entries
|
|
370
|
-
before falling through to the subjective ceiling.
|
|
371
|
-
|
|
372
|
-
### Iron law
|
|
373
|
-
|
|
374
|
-
The engine **never** renders. Playwright integration lives in the
|
|
375
|
-
stack-specific review skills. The engine reads
|
|
376
|
-
`state.ui_review.preview`; the skill writes it. `render_ok: False`
|
|
377
|
-
halts the user; `skipped: True` bypasses the gate idempotently;
|
|
378
|
-
`render_ok: True` with `screenshot_path` set threads the path into
|
|
379
|
-
the delivery report's `artifacts` list. This boundary keeps the
|
|
380
|
-
package Python + Bash and pushes the browser dependency into
|
|
381
|
-
consumer-project setup.
|