@event4u/agent-config 14.10.0 → 14.12.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.
Files changed (667) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +161 -208
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/design.md +88 -0
  7. package/dist/agent-src/commands/project/analyze.md +47 -0
  8. package/dist/agent-src/commands/review/changes.md +67 -6
  9. package/dist/agent-src/commands/roadmap/create.md +49 -0
  10. package/dist/agent-src/commands/roadmap/next.md +27 -11
  11. package/dist/agent-src/commands/roadmap/process-full.md +14 -0
  12. package/dist/agent-src/commands/video/from-script.md +60 -3
  13. package/dist/agent-src/commands/video/stitch.md +14 -0
  14. package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
  15. package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
  16. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
  17. package/dist/agent-src/rules/active-remediation.md +3 -3
  18. package/dist/agent-src/rules/code-provenance.md +2 -2
  19. package/dist/agent-src/rules/context-hygiene.md +13 -33
  20. package/dist/agent-src/rules/council-availability.md +2 -2
  21. package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
  22. package/dist/agent-src/rules/design-fidelity.md +18 -0
  23. package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
  24. package/dist/agent-src/rules/evaluator-independence.md +56 -44
  25. package/dist/agent-src/rules/fix-what-you-see.md +9 -1
  26. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  27. package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
  28. package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
  29. package/dist/agent-src/rules/playbook-precedence.md +105 -0
  30. package/dist/agent-src/rules/recurring-criticism.md +3 -1
  31. package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
  32. package/dist/agent-src/rules/scale-discipline.md +24 -0
  33. package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
  34. package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
  35. package/dist/agent-src/rules/ui-audit-gate.md +27 -15
  36. package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
  37. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
  38. package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
  39. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
  40. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
  41. package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
  42. package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
  43. package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
  44. package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
  45. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
  46. package/dist/agent-src/skills/brand/SKILL.md +3 -0
  47. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
  48. package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
  49. package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
  50. package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
  51. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
  52. package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
  53. package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
  54. package/dist/agent-src/skills/code-review/SKILL.md +75 -5
  55. package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
  56. package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
  57. package/dist/agent-src/skills/condense-memory/SKILL.md +3 -0
  58. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  59. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +3 -0
  60. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +10 -0
  61. package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -0
  62. package/dist/agent-src/skills/design-intelligence/SKILL.md +3 -0
  63. package/dist/agent-src/skills/design-intelligence/data/landing.csv +36 -35
  64. package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +1 -0
  65. package/dist/agent-src/skills/design-review/SKILL.md +79 -1
  66. package/dist/agent-src/skills/design-review/references/verification-automation.md +41 -0
  67. package/dist/agent-src/skills/design-system-capture/SKILL.md +35 -40
  68. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +50 -0
  69. package/dist/agent-src/skills/design-tokens/SKILL.md +3 -0
  70. package/dist/agent-src/skills/design-variations/SKILL.md +3 -0
  71. package/dist/agent-src/skills/developer-like-execution/SKILL.md +3 -0
  72. package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
  73. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +28 -4
  74. package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
  75. package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
  76. package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
  77. package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
  78. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  79. package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
  80. package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
  81. package/dist/agent-src/skills/iconography/SKILL.md +3 -0
  82. package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
  83. package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
  84. package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
  85. package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
  86. package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
  87. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
  88. package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
  89. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
  90. package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
  91. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
  92. package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
  93. package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
  94. package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
  95. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
  96. package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -0
  97. package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
  98. package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
  99. package/dist/agent-src/skills/override-management/SKILL.md +3 -0
  100. package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
  101. package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
  102. package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
  103. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
  104. package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
  105. package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
  106. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
  107. package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
  108. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +81 -33
  109. package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
  110. package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
  111. package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
  112. package/dist/agent-src/skills/receiving-code-review/SKILL.md +2 -2
  113. package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
  114. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
  115. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  116. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  117. package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
  118. package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
  119. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
  120. package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
  121. package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
  122. package/dist/agent-src/skills/secrets-management/SKILL.md +4 -0
  123. package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
  124. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
  125. package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
  126. package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
  127. package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
  128. package/dist/agent-src/skills/skill-writing/references/procedure.md +24 -2
  129. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
  130. package/dist/agent-src/skills/storybook-workshop/SKILL.md +203 -0
  131. package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
  132. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  133. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
  134. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
  135. package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
  136. package/dist/agent-src/skills/terraform/SKILL.md +3 -0
  137. package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
  138. package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
  139. package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
  140. package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
  141. package/dist/agent-src/skills/ui-component-architect/SKILL.md +17 -1
  142. package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
  143. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
  144. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
  145. package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
  146. package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
  147. package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
  148. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  149. package/dist/agent-src/templates/playbook.md +75 -0
  150. package/dist/agent-src/templates/roadmaps.md +37 -0
  151. package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  152. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  153. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  154. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  155. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  156. package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  157. package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  158. package/dist/cli/commands/uiAudit.js +221 -0
  159. package/dist/cli/commands/uiRender.js +206 -0
  160. package/dist/cli/main.js +22 -1
  161. package/dist/cli/mcp/content.js +64 -1
  162. package/dist/cli/mcp/dispatch.js +175 -10
  163. package/dist/cli/registry.js +3 -0
  164. package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
  165. package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
  166. package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-JCW7ZLHK.js} +10 -0
  167. package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-JJA2QEWA.js} +413 -391
  168. package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
  169. package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
  170. package/dist/cli-delegate/cmd_brand_status.js +8 -6
  171. package/dist/cli-delegate/cmd_conformance.js +3 -3
  172. package/dist/cli-delegate/cmd_doctor.js +3 -3
  173. package/dist/cli-delegate/cmd_export.js +4 -4
  174. package/dist/cli-delegate/cmd_handoff.js +1 -1
  175. package/dist/cli-delegate/cmd_preflight.js +2 -2
  176. package/dist/cli-delegate/cmd_prune.js +4 -4
  177. package/dist/cli-delegate/cmd_session_recycle.js +70 -9
  178. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  179. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  180. package/dist/cli-delegate/cmd_sync.js +4 -4
  181. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  182. package/dist/cli-delegate/cmd_validate.js +4 -4
  183. package/dist/discovery/deprecation-report.md +1 -1
  184. package/dist/discovery/discovery-manifest.json +362 -127
  185. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  186. package/dist/discovery/discovery-manifest.summary.md +4 -4
  187. package/dist/discovery/dormancy-report.md +1 -1
  188. package/dist/discovery/orphan-report.md +1 -1
  189. package/dist/discovery/packs.json +18 -8
  190. package/dist/discovery/trust-report.md +3 -3
  191. package/dist/discovery/workspaces.json +16 -6
  192. package/dist/hooks/dispatch.js +2575 -1472
  193. package/dist/install/install.mjs +800 -708
  194. package/dist/mcp/registry-manifest.json +3 -3
  195. package/dist/mcp/server.json +2 -2
  196. package/dist/mcp/server.mjs +1685 -1250
  197. package/dist/router.json +1 -1
  198. package/dist/scripts/_lib/lean_projection_mode.js +40 -0
  199. package/dist/scripts/_lib/scoped_projection.js +84 -0
  200. package/dist/scripts/_lib/ui_surface.js +89 -0
  201. package/dist/scripts/condense.js +6 -10
  202. package/dist/scripts/project_thin_rules.js +40 -2
  203. package/dist/server/schemas/settings.js +6 -0
  204. package/dist/shared/skillRanking.js +159 -0
  205. package/docs/contracts/provider-lifecycle.md +47 -18
  206. package/docs/contracts/settings-classes.md +35 -5
  207. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
  208. package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  209. package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  210. package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
  211. package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  212. package/docs/guidelines/code-clarity.md +21 -0
  213. package/docs/guidelines/design-antipatterns.md +4 -2
  214. package/docs/guidelines/design-asset-discipline.md +38 -0
  215. package/docs/guidelines/design-fidelity-mechanics.md +45 -29
  216. package/docs/guidelines/design-handover-extraction.md +35 -5
  217. package/docs/guidelines/design-modes.md +41 -1
  218. package/docs/guidelines/monorepo-antipatterns.md +141 -0
  219. package/docs/guidelines/redundancy-taxonomy.md +180 -0
  220. package/llms.txt +50 -39
  221. package/package.json +6 -2
  222. package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  223. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  224. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  225. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  226. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  227. package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  228. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  229. package/src/config/agent-settings.template.yml +44 -0
  230. package/src/config/assurance-capability-registry.json +223 -0
  231. package/src/config/assurance-threshold-budget.json +65 -0
  232. package/src/config/budgets.yml +19 -0
  233. package/src/config/ci-local-parity.yml +29 -0
  234. package/src/config/discovery/prompt-patterns.yml +56 -0
  235. package/src/config/discovery/unassigned-artefacts.yml +2 -0
  236. package/src/config/dispatch-economy-metrics.json +4 -2
  237. package/src/config/estate-count-budget.json +8 -3
  238. package/src/config/evaluator-budgets.json +14 -14
  239. package/src/config/gate-coverage.yml +392 -8
  240. package/src/config/gate-violation-baselines.json +76 -72
  241. package/src/config/hook-latency-budget.json +1 -0
  242. package/src/config/hook-token-budget.json +137 -125
  243. package/src/config/pack-size-budget.json +39 -10
  244. package/src/config/preamble-payload-budget.json +97 -71
  245. package/src/config/quorum-attendance-budget.json +12 -4
  246. package/src/config/routing-coverage-seed.json +29 -0
  247. package/src/config/rule-activation-census.json +7 -3
  248. package/src/config/rule-enforcement-baseline.json +0 -1
  249. package/src/config/rule-stub-ceilings.json +112 -91
  250. package/src/config/suggestion-capture.json +28 -0
  251. package/src/config/surface-matrix.yml +21 -2
  252. package/src/config/web-launch-readiness.json +188 -0
  253. package/src/scripts/_cli/cmd_doctor.ts +15 -16
  254. package/src/scripts/_cli/doctor_install_mode.ts +49 -0
  255. package/src/scripts/_cli/doctor_overrides.ts +154 -0
  256. package/src/scripts/_dispatch.bash +17 -0
  257. package/src/scripts/_lib/as_of.ts +412 -0
  258. package/src/scripts/_lib/exec_evidence.ts +7 -0
  259. package/src/scripts/_lib/gate_baseline.ts +150 -1
  260. package/src/scripts/_lib/hook_settings.ts +33 -0
  261. package/src/scripts/_lib/host_listing_model.ts +192 -0
  262. package/src/scripts/_lib/lean_projection_mode.ts +44 -0
  263. package/src/scripts/_lib/mcp_bridge.ts +199 -0
  264. package/src/scripts/_lib/review_independence.ts +62 -10
  265. package/src/scripts/_lib/rule_injection.ts +239 -0
  266. package/src/scripts/_lib/run_checkpoint.ts +54 -1
  267. package/src/scripts/_lib/scoped_projection.ts +96 -0
  268. package/src/scripts/_lib/session_register.ts +44 -2
  269. package/src/scripts/_lib/skill_catalogue.ts +38 -2
  270. package/src/scripts/_lib/skill_estate.ts +115 -0
  271. package/src/scripts/_lib/transcript_reads.ts +207 -0
  272. package/src/scripts/_lib/ui_authority.ts +343 -0
  273. package/src/scripts/ai-video/adapters/fal.sh +8 -3
  274. package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
  275. package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
  276. package/src/scripts/ai-video/adapters/kling.sh +10 -0
  277. package/src/scripts/ai-video/adapters/sora.sh +10 -0
  278. package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
  279. package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
  280. package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
  281. package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
  282. package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
  283. package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
  284. package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
  285. package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
  286. package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
  287. package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
  288. package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
  289. package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
  290. package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
  291. package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
  292. package/src/scripts/ai-video/smoke-trace.sh +450 -2
  293. package/src/scripts/ai-video/stitch.sh +191 -10
  294. package/src/scripts/ai-video/test-pipeline.sh +84 -6
  295. package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
  296. package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
  297. package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
  298. package/src/scripts/ai_council/clients.ts +3 -2
  299. package/src/scripts/ai_council/consensus.ts +63 -6
  300. package/src/scripts/ai_council/events_log.ts +46 -1
  301. package/src/scripts/ai_council/orchestrator.ts +103 -108
  302. package/src/scripts/ai_council/orchestrator_results.ts +166 -0
  303. package/src/scripts/ai_council/prompts.ts +12 -5
  304. package/src/scripts/ai_council/quorum.ts +82 -1
  305. package/src/scripts/ai_council/quorum_wiring.ts +82 -5
  306. package/src/scripts/ai_council/stance_tally.ts +22 -0
  307. package/src/scripts/bench_hook_latency.ts +62 -0
  308. package/src/scripts/build_proof.ts +12 -1
  309. package/src/scripts/capture_skill_catalogue.ts +21 -0
  310. package/src/scripts/check_always_budget.ts +2 -1
  311. package/src/scripts/check_augmentignore.ts +2 -1
  312. package/src/scripts/check_beta_review_markers.ts +2 -1
  313. package/src/scripts/check_bundle_path_leakage.ts +162 -7
  314. package/src/scripts/check_command_examples.ts +557 -0
  315. package/src/scripts/check_composite_arming.ts +364 -0
  316. package/src/scripts/check_corpus_staleness.ts +2 -1
  317. package/src/scripts/check_council_pin_staleness.ts +3 -1
  318. package/src/scripts/check_enforcement_coverage.ts +116 -3
  319. package/src/scripts/check_enforcement_denominator.ts +365 -0
  320. package/src/scripts/check_estate_count.ts +122 -3
  321. package/src/scripts/check_gate_coverage.ts +2 -1
  322. package/src/scripts/check_hook_bundle_freshness.ts +13 -1
  323. package/src/scripts/check_knowledge_cards.ts +2 -1
  324. package/src/scripts/check_knowledge_pages.ts +3 -2
  325. package/src/scripts/check_memory.ts +2 -1
  326. package/src/scripts/check_no_automerge_key.ts +287 -0
  327. package/src/scripts/check_pack_conformance_fixture.ts +565 -0
  328. package/src/scripts/check_preamble_payload_budget.ts +30 -3
  329. package/src/scripts/check_proposal.ts +2 -1
  330. package/src/scripts/check_reach_staleness.ts +2 -1
  331. package/src/scripts/check_release_adjacent_health.ts +2 -1
  332. package/src/scripts/check_release_pr_shape.ts +5 -0
  333. package/src/scripts/check_review_schema.ts +34 -1
  334. package/src/scripts/check_roadmap_trackable.ts +48 -3
  335. package/src/scripts/check_routing_coverage.ts +352 -0
  336. package/src/scripts/check_score_contract.ts +505 -0
  337. package/src/scripts/check_skill_admissions.ts +514 -0
  338. package/src/scripts/check_source_size_budget.ts +2 -1
  339. package/src/scripts/check_standing_payload_delta.ts +505 -0
  340. package/src/scripts/check_trigger_evals.ts +2 -1
  341. package/src/scripts/check_web_launch_readiness.ts +705 -0
  342. package/src/scripts/classify_change_risk.ts +281 -0
  343. package/src/scripts/compute_skill_tiers.ts +186 -0
  344. package/src/scripts/condense.ts +8 -13
  345. package/src/scripts/council_attendance_metrics.ts +183 -0
  346. package/src/scripts/council_cli.ts +10 -8
  347. package/src/scripts/council_parse_rate.ts +116 -0
  348. package/src/scripts/derive_playbooks.ts +406 -0
  349. package/src/scripts/description_route_check.ts +494 -0
  350. package/src/scripts/design_slop_rules.ts +56 -2
  351. package/src/scripts/dispatch_r2_reviewer.ts +16 -0
  352. package/src/scripts/frontend_corpus_hash.ts +116 -0
  353. package/src/scripts/grade_target_readiness.ts +478 -0
  354. package/src/scripts/hook_manifest.json +1 -1
  355. package/src/scripts/hook_manifest.yaml +124 -16
  356. package/src/scripts/hooks/concern_registry.ts +6 -0
  357. package/src/scripts/hooks/design_pass_hook.ts +356 -0
  358. package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
  359. package/src/scripts/hooks/rule_inject_hook.ts +318 -0
  360. package/src/scripts/hooks/suggestion_capture_hook.ts +368 -0
  361. package/src/scripts/hot_context_hook.ts +74 -7
  362. package/src/scripts/install.ts +40 -89
  363. package/src/scripts/lint_adapter_tier.ts +663 -0
  364. package/src/scripts/lint_archived_skills.ts +93 -0
  365. package/src/scripts/lint_budget_ownership.ts +56 -5
  366. package/src/scripts/lint_deterministic_time.ts +470 -0
  367. package/src/scripts/lint_framework_leakage.ts +5 -0
  368. package/src/scripts/lint_handoffs.ts +525 -1
  369. package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
  370. package/src/scripts/lint_marketplace.ts +88 -0
  371. package/src/scripts/lint_media_policy_linkage.ts +140 -1
  372. package/src/scripts/lint_one_off_age.ts +6 -1
  373. package/src/scripts/lint_override_kernel_guard.ts +87 -5
  374. package/src/scripts/lint_roadmap_complexity.ts +56 -0
  375. package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
  376. package/src/scripts/lint_rule_norm_pin.ts +321 -0
  377. package/src/scripts/lint_skill_trigger_corpus.ts +349 -0
  378. package/src/scripts/lint_spawn_payload.ts +42 -5
  379. package/src/scripts/lint_symptom_intake.ts +2 -1
  380. package/src/scripts/mcp_parity_smoke.ts +30 -4
  381. package/src/scripts/mcp_render.ts +66 -1
  382. package/src/scripts/mcp_tool_fingerprint.ts +241 -0
  383. package/src/scripts/measure_risk_class_drift.ts +140 -0
  384. package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
  385. package/src/scripts/media/lib/adapter-common.sh +211 -1
  386. package/src/scripts/media/lib/adapter-contract.md +74 -6
  387. package/src/scripts/model_rule_injection.ts +907 -0
  388. package/src/scripts/pack_install_smoke.ts +363 -0
  389. package/src/scripts/pr_conflict_census.ts +187 -0
  390. package/src/scripts/project_thin_rules.ts +45 -2
  391. package/src/scripts/release.ts +66 -860
  392. package/src/scripts/release_drill.ts +59 -3
  393. package/src/scripts/release_env.ts +298 -0
  394. package/src/scripts/release_publication.ts +720 -0
  395. package/src/scripts/report_pack_delta.ts +204 -0
  396. package/src/scripts/roadmap_context.ts +778 -0
  397. package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
  398. package/src/scripts/schemas/rule.schema.json +24 -2
  399. package/src/scripts/schemas/skill.schema.json +39 -0
  400. package/src/scripts/schemas/ui-authority.schema.json +114 -0
  401. package/src/scripts/select_analysis_mode.ts +112 -0
  402. package/src/scripts/session_register_hook.ts +29 -3
  403. package/src/scripts/sessions_cli.ts +67 -3
  404. package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
  405. package/src/scripts/sync_pr_branch.ts +40 -1
  406. package/src/scripts/token_sink_report.ts +239 -0
  407. package/src/scripts/trigger_coverage.ts +122 -3
  408. package/src/scripts/update_counts.ts +7 -3
  409. package/src/scripts/validate_frontmatter.ts +66 -0
  410. package/src/server/schemas/settings.ts +10 -0
  411. package/src/shared/skillRanking.ts +183 -0
  412. package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +0 -15
  413. package/dist/agent-src/skills/agent-security-review/evals/triggers.json +0 -52
  414. package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +0 -52
  415. package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +0 -13
  416. package/dist/agent-src/skills/brand/evals/triggers.json +0 -17
  417. package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +0 -17
  418. package/dist/agent-src/skills/brand-audit/evals/triggers.json +0 -17
  419. package/dist/agent-src/skills/brand-identity/evals/triggers.json +0 -17
  420. package/dist/agent-src/skills/brand-strategy/evals/triggers.json +0 -17
  421. package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +0 -17
  422. package/dist/agent-src/skills/bug-analyzer/evals/evals.json +0 -13
  423. package/dist/agent-src/skills/canvas-design/evals/triggers.json +0 -17
  424. package/dist/agent-src/skills/character-consistency/evals/evals.json +0 -16
  425. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +0 -52
  426. package/dist/agent-src/skills/code-review/evals/evals.json +0 -100
  427. package/dist/agent-src/skills/command-routing/evals/evals.json +0 -14
  428. package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +0 -17
  429. package/dist/agent-src/skills/contract-review/evals/triggers.json +0 -17
  430. package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +0 -15
  431. package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +0 -17
  432. package/dist/agent-src/skills/dashboard-design/evals/evals.json +0 -16
  433. package/dist/agent-src/skills/dcf-modeling/evals/domain-truth.json +0 -29
  434. package/dist/agent-src/skills/dcf-modeling/evals/evals.json +0 -20
  435. package/dist/agent-src/skills/decision-record/evals/evals.json +0 -20
  436. package/dist/agent-src/skills/decision-record/evals/triggers.json +0 -87
  437. package/dist/agent-src/skills/design-intelligence/evals/evals.json +0 -14
  438. package/dist/agent-src/skills/design-intelligence/evals/triggers.json +0 -17
  439. package/dist/agent-src/skills/design-system-capture/evals/evals.json +0 -15
  440. package/dist/agent-src/skills/design-tokens/evals/triggers.json +0 -17
  441. package/dist/agent-src/skills/design-variations/evals/triggers.json +0 -17
  442. package/dist/agent-src/skills/developer-like-execution/evals/evals.json +0 -16
  443. package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +0 -16
  444. package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +0 -17
  445. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +0 -52
  446. package/dist/agent-src/skills/dpa-review/evals/triggers.json +0 -17
  447. package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +0 -16
  448. package/dist/agent-src/skills/editorial-calendar/evals/evals.json +0 -16
  449. package/dist/agent-src/skills/eloquent/evals/triggers.json +0 -17
  450. package/dist/agent-src/skills/estimate-ticket/evals/evals.json +0 -16
  451. package/dist/agent-src/skills/estimate-ticket/evals/output-schema.yml +0 -20
  452. package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +0 -19
  453. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +0 -52
  454. package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +0 -47
  455. package/dist/agent-src/skills/experiment-loop/evals/output-schema.yml +0 -27
  456. package/dist/agent-src/skills/experiment-loop/evals/triggers.json +0 -17
  457. package/dist/agent-src/skills/fe-design/evals/triggers.json +0 -55
  458. package/dist/agent-src/skills/forecasting/evals/domain-truth.json +0 -29
  459. package/dist/agent-src/skills/forecasting/evals/evals.json +0 -20
  460. package/dist/agent-src/skills/forensics-report/evals/triggers.json +0 -17
  461. package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +0 -52
  462. package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +0 -16
  463. package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +0 -16
  464. package/dist/agent-src/skills/gated-reach/evals/triggers.json +0 -72
  465. package/dist/agent-src/skills/github-ci/evals/evals.json +0 -25
  466. package/dist/agent-src/skills/history-design/evals/triggers.json +0 -17
  467. package/dist/agent-src/skills/html-deck/evals/triggers.json +0 -17
  468. package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +0 -57
  469. package/dist/agent-src/skills/humanizer/evals/triggers.json +0 -17
  470. package/dist/agent-src/skills/iconography/evals/triggers.json +0 -17
  471. package/dist/agent-src/skills/image-analyser/evals/triggers.json +0 -17
  472. package/dist/agent-src/skills/image-creator/evals/triggers.json +0 -17
  473. package/dist/agent-src/skills/image-editing/evals/triggers.json +0 -17
  474. package/dist/agent-src/skills/image-generation/evals/triggers.json +0 -17
  475. package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +0 -17
  476. package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +0 -16
  477. package/dist/agent-src/skills/incident-commander/evals/evals.json +0 -20
  478. package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +0 -17
  479. package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +0 -17
  480. package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +0 -17
  481. package/dist/agent-src/skills/launch-readiness/evals/evals.json +0 -21
  482. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +0 -52
  483. package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +0 -17
  484. package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +0 -17
  485. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +0 -52
  486. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +0 -52
  487. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +0 -52
  488. package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +0 -20
  489. package/dist/agent-src/skills/logging-monitoring/evals/evals.json +0 -16
  490. package/dist/agent-src/skills/logo-generation/evals/triggers.json +0 -17
  491. package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +0 -16
  492. package/dist/agent-src/skills/messaging-architecture/evals/evals.json +0 -16
  493. package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
  494. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +0 -52
  495. package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +0 -16
  496. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +0 -52
  497. package/dist/agent-src/skills/php-coder/evals/triggers.json +0 -17
  498. package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +0 -21
  499. package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +0 -17
  500. package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +0 -16
  501. package/dist/agent-src/skills/prompt-validator/evals/triggers.json +0 -17
  502. package/dist/agent-src/skills/quality-tools/evals/evals.json +0 -15
  503. package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +0 -17
  504. package/dist/agent-src/skills/refine-prompt/evals/evals.json +0 -16
  505. package/dist/agent-src/skills/refine-ticket/evals/evals.json +0 -16
  506. package/dist/agent-src/skills/refine-ticket/evals/output-schema.yml +0 -16
  507. package/dist/agent-src/skills/refine-ticket/evals/triggers.json +0 -17
  508. package/dist/agent-src/skills/release-comms/evals/evals.json +0 -16
  509. package/dist/agent-src/skills/rice-prioritization/evals/evals.json +0 -20
  510. package/dist/agent-src/skills/runway-cognition/evals/domain-truth.json +0 -29
  511. package/dist/agent-src/skills/runway-cognition/evals/evals.json +0 -20
  512. package/dist/agent-src/skills/scenario-modeling/evals/domain-truth.json +0 -29
  513. package/dist/agent-src/skills/scenario-modeling/evals/evals.json +0 -20
  514. package/dist/agent-src/skills/schema-review/evals/triggers.json +0 -17
  515. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +0 -52
  516. package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +0 -52
  517. package/dist/agent-src/skills/skill-writing/evals/triggers.json +0 -17
  518. package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +0 -47
  519. package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +0 -60
  520. package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +0 -52
  521. package/dist/agent-src/skills/systematic-debugging/evals/evals.json +0 -20
  522. package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +0 -52
  523. package/dist/agent-src/skills/test-driven-development/evals/evals.json +0 -16
  524. package/dist/agent-src/skills/threat-modeling/evals/evals.json +0 -21
  525. package/dist/agent-src/skills/typography-system/evals/evals.json +0 -14
  526. package/dist/agent-src/skills/typography-system/evals/triggers.json +0 -17
  527. package/dist/agent-src/skills/unit-economics-modeling/evals/domain-truth.json +0 -40
  528. package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +0 -24
  529. package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +0 -16
  530. package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +0 -20
  531. package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +0 -17
  532. package/dist/agent-src/skills/vision-articulation/evals/evals.json +0 -16
  533. package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +0 -16
  534. package/dist/agent-src/skills/wireframe/evals/triggers.json +0 -17
  535. package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +0 -38
  536. package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +0 -52
  537. package/dist/cli/agent-config.js.map +0 -1
  538. package/dist/cli/bash/runBash.js.map +0 -1
  539. package/dist/cli/commands/commands.js.map +0 -1
  540. package/dist/cli/commands/config.js.map +0 -1
  541. package/dist/cli/commands/doctorShell.js.map +0 -1
  542. package/dist/cli/commands/mcpServer.js.map +0 -1
  543. package/dist/cli/commands/packs.js.map +0 -1
  544. package/dist/cli/commands/profiles.js.map +0 -1
  545. package/dist/cli/commands/recordTriggerEval.js.map +0 -1
  546. package/dist/cli/commands/rtkDetect.js.map +0 -1
  547. package/dist/cli/commands/settings.js.map +0 -1
  548. package/dist/cli/commands/uiServe.js.map +0 -1
  549. package/dist/cli/commands/versions.js.map +0 -1
  550. package/dist/cli/commands/workspaces.js.map +0 -1
  551. package/dist/cli/configRoot.js.map +0 -1
  552. package/dist/cli/discovery/loadManifest.js.map +0 -1
  553. package/dist/cli/firstRunNotice.js.map +0 -1
  554. package/dist/cli/help.js.map +0 -1
  555. package/dist/cli/initRouting.js.map +0 -1
  556. package/dist/cli/log/logger.js.map +0 -1
  557. package/dist/cli/main.js.map +0 -1
  558. package/dist/cli/mcp/content.js.map +0 -1
  559. package/dist/cli/mcp/dispatch.js.map +0 -1
  560. package/dist/cli/mcp/stdio.js.map +0 -1
  561. package/dist/cli/paths.js.map +0 -1
  562. package/dist/cli/python/knowledge_ingest.js.map +0 -1
  563. package/dist/cli/python/workspace_analytics.js.map +0 -1
  564. package/dist/cli/python/workspace_crypto.js.map +0 -1
  565. package/dist/cli/python/workspace_documents.js.map +0 -1
  566. package/dist/cli/python/workspace_drive.js.map +0 -1
  567. package/dist/cli/python/workspace_drive_health.js.map +0 -1
  568. package/dist/cli/python/workspace_explain.js.map +0 -1
  569. package/dist/cli/python/workspace_hosts.js.map +0 -1
  570. package/dist/cli/python/workspace_inbox.js.map +0 -1
  571. package/dist/cli/python/workspace_render.js.map +0 -1
  572. package/dist/cli/python/workspace_roles.js.map +0 -1
  573. package/dist/cli/python/workspace_secrets.js.map +0 -1
  574. package/dist/cli/python/workspace_sessions.js.map +0 -1
  575. package/dist/cli/python/workspace_skills.js.map +0 -1
  576. package/dist/cli/registry.js.map +0 -1
  577. package/dist/install/agentSwitchDetection.js.map +0 -1
  578. package/dist/install/agentSwitchProfile.js.map +0 -1
  579. package/dist/install/atomic.js.map +0 -1
  580. package/dist/install/claudePathsPlan.js.map +0 -1
  581. package/dist/install/conflict.js.map +0 -1
  582. package/dist/install/detect.js.map +0 -1
  583. package/dist/install/emit_host_rules_cli.js.map +0 -1
  584. package/dist/install/globalRuleLayers.js.map +0 -1
  585. package/dist/install/hostLayerFingerprint.js.map +0 -1
  586. package/dist/install/partitionEligibility.js.map +0 -1
  587. package/dist/install/paths.js.map +0 -1
  588. package/dist/install/plan.js.map +0 -1
  589. package/dist/install/preflight.js.map +0 -1
  590. package/dist/install/rtkDetection.js.map +0 -1
  591. package/dist/install/ruleInScope.js.map +0 -1
  592. package/dist/install/ruleLayerPartition.js.map +0 -1
  593. package/dist/install/rule_scope.js.map +0 -1
  594. package/dist/install/rule_scope_cli.js.map +0 -1
  595. package/dist/install/selectedTools.js.map +0 -1
  596. package/dist/install/toolDetection.js.map +0 -1
  597. package/dist/install/txlog.js.map +0 -1
  598. package/dist/install/types.js.map +0 -1
  599. package/dist/install/wizard-plan.js.map +0 -1
  600. package/dist/install/wizardDismissals.js.map +0 -1
  601. package/dist/scripts/_lib/agent_settings.js.map +0 -1
  602. package/dist/scripts/_lib/agent_src.js.map +0 -1
  603. package/dist/scripts/_lib/claude_builtin_names.js.map +0 -1
  604. package/dist/scripts/_lib/claude_plugin.js.map +0 -1
  605. package/dist/scripts/_lib/claude_settings_hooks.js.map +0 -1
  606. package/dist/scripts/_lib/compile_time_toggles.js.map +0 -1
  607. package/dist/scripts/_lib/environment_detector.js.map +0 -1
  608. package/dist/scripts/_lib/host_launch.js.map +0 -1
  609. package/dist/scripts/_lib/install_layout.js.map +0 -1
  610. package/dist/scripts/_lib/installed_lock.js.map +0 -1
  611. package/dist/scripts/_lib/model_tier.js.map +0 -1
  612. package/dist/scripts/_lib/prune_empty_dirs.js.map +0 -1
  613. package/dist/scripts/_lib/scoped_projection.js.map +0 -1
  614. package/dist/scripts/_lib/script_output.js.map +0 -1
  615. package/dist/scripts/_lib/spawn_env.js.map +0 -1
  616. package/dist/scripts/_lib/surface_tiers.js.map +0 -1
  617. package/dist/scripts/_lib/token_count.js.map +0 -1
  618. package/dist/scripts/_lib/trigger_eval_floors.js.map +0 -1
  619. package/dist/scripts/_lib/user_global_paths.js.map +0 -1
  620. package/dist/scripts/ai_council/modes.js.map +0 -1
  621. package/dist/scripts/ai_council/transport_resolver.js.map +0 -1
  622. package/dist/scripts/condense.js.map +0 -1
  623. package/dist/scripts/project_thin_rules.js.map +0 -1
  624. package/dist/server/app.js.map +0 -1
  625. package/dist/server/io/atomicMultiWrite.js.map +0 -1
  626. package/dist/server/io/atomicWrite.js.map +0 -1
  627. package/dist/server/io/sharedWriteCheck.js.map +0 -1
  628. package/dist/server/io/substituteTemplate.js.map +0 -1
  629. package/dist/server/io/yamlIO.js.map +0 -1
  630. package/dist/server/nicknameResolver.js.map +0 -1
  631. package/dist/server/port.js.map +0 -1
  632. package/dist/server/routes/discovery.js.map +0 -1
  633. package/dist/server/routes/install.js.map +0 -1
  634. package/dist/server/routes/ping.js.map +0 -1
  635. package/dist/server/routes/schema.js.map +0 -1
  636. package/dist/server/routes/settings.js.map +0 -1
  637. package/dist/server/routes/settingsChanges.js.map +0 -1
  638. package/dist/server/routes/userMd.js.map +0 -1
  639. package/dist/server/routes/wizard.js.map +0 -1
  640. package/dist/server/routes/workspace.js.map +0 -1
  641. package/dist/server/schemas/settings.js.map +0 -1
  642. package/dist/server/serverInfo.js.map +0 -1
  643. package/dist/server/token.js.map +0 -1
  644. package/dist/server/writeRoot.js.map +0 -1
  645. package/dist/shared/capabilities.js.map +0 -1
  646. package/dist/shared/interactiveContext.js.map +0 -1
  647. package/dist/shared/nicknamePrefill.js.map +0 -1
  648. package/dist/shared/settingsAsks.js.map +0 -1
  649. package/dist/shared/settingsCarveOut.js.map +0 -1
  650. package/dist/shared/settingsClasses.js.map +0 -1
  651. package/dist/shared/settingsConsent.js.map +0 -1
  652. package/dist/shared/settingsSurface.js.map +0 -1
  653. package/dist/shared/userMd/formAdapter.js.map +0 -1
  654. package/dist/shared/userMd/schema.js.map +0 -1
  655. package/dist/shared/userMd/utils.js.map +0 -1
  656. package/dist/ui/assets/index-Cxgy63kz.js.map +0 -1
  657. package/src/scripts/_lib/adr_frontmatter.test.ts +0 -365
  658. package/src/scripts/_lib/adversarial_council_gate.test.ts +0 -112
  659. package/src/scripts/_lib/adversarial_reconcile.test.ts +0 -197
  660. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +0 -150
  661. package/src/scripts/_lib/secret_detector.test.ts +0 -108
  662. package/src/scripts/_lib/secret_detector_adversarial.test.ts +0 -116
  663. package/src/scripts/_lib/untrusted_content.test.ts +0 -175
  664. package/src/scripts/check_secret_leak.test.ts +0 -90
  665. package/src/scripts/design_slop_rules.test.ts +0 -239
  666. package/src/scripts/self_review_gate.test.ts +0 -296
  667. package/src/shared/capabilities.test.ts +0 -43
@@ -8,10 +8,62 @@ resolution, commit-step pre-scan, halt conditions, and archival check.
8
8
  The three command files are thin wrappers that bind only the **scope
9
9
  delta**.
10
10
 
11
- **Size budget:** ≤ 4,000 chars.
11
+ **Size budget:** ≤ 57,000 chars — restated from the original 4,000.
12
+
13
+ The old figure described nothing: the file measured 47,115 bytes against it, a
14
+ factor of 11.8, so it was a dead budget rather than a typo. Restated at the
15
+ measured size rather than split, because splitting a contract this load-bearing
16
+ into referenced fragments is a large change with its own risk, and the step that
17
+ found this asked for hygiene.
18
+
19
+ **Why it moved:** this file is not a page a reader skims but the canonical
20
+ autonomous-execution loop — roadmap discovery, cadence resolution, the step loop,
21
+ the flip-guard, the halt list, the terminal outcomes, and the archival check. The
22
+ original 4,000 was inherited from the sibling context docs (`≤ 3,000`, `≤ 6,000`)
23
+ without asking whether the same shape applied.
24
+
25
+ **Read it as a ratchet, not a target.** A budget that rises whenever the file
26
+ does is not a budget. It may fall; raising it again needs the same kind of note
27
+ as this one.
28
+
29
+ **Nothing enforces this line**, and saying so is the point: no gate reads it, so
30
+ it is a declaration a future edit can falsify exactly as the 4,000 was falsified.
31
+ A true declaration with a stated enforcement boundary is worth more than a false
32
+ one, and less than a check — the same `enforced_by: none` honesty the rules in
33
+ this tree state about their own obligations.
12
34
 
13
35
  ## 1. Resolve roadmap
14
36
 
37
+ ### Context probe — unconditionally, before resolving the roadmap
38
+
39
+ ```bash
40
+ agent-config roadmap:context --roadmap <slug> # slug omitted on a bare invocation
41
+ ```
42
+
43
+ Run it **before resolving the roadmap**, on every invocation, and print its
44
+ report in the pre-run summary (§ 2). Unconditional is the whole point: the live
45
+ merge-state clause below fires only when a message would *describe* a roadmap
46
+ as in-flight or merged, so a run that never makes such a claim has never looked.
47
+ Measured on the population that motivated this: 4 of 24 active roadmaps were
48
+ already closed in an open PR, and 2 of 22 six days later — the same sample
49
+ halved inside a week, which is why the probe re-runs on a cadence (§ 5e) rather
50
+ than once at branch time.
51
+
52
+ The report carries open PRs with the files they change, remote branches carrying
53
+ a roadmap slug, live sessions on both axes, `agents/tmp/` note names, sibling
54
+ roadmaps on the same topic, and roadmap-to-PR file overlap. Two readings act:
55
+
56
+ - **The roadmap is closed in an open PR** → name the PR number and stop. This is
57
+ a **selection error**, not a halt: nothing on the halt list fired, the run
58
+ simply picked work that is already done. It does not touch the halt list and
59
+ it is not a `blocked` outcome.
60
+ - **The roadmap is partially covered by an open PR** → name the PR and continue,
61
+ on a branch cut from `origin/main`. Never rebase onto the foreign branch.
62
+
63
+ Same honesty boundary the probe states in its own header: **the probe is
64
+ deterministic once invoked, and the invocation is model-carried.** Nothing fires
65
+ it and nothing notices when it is skipped.
66
+
15
67
  Search both locations:
16
68
 
17
69
  - `agents/roadmaps/*.md` (project root)
@@ -417,6 +469,34 @@ of [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md))
417
469
  forces an immediate regen regardless of cadence. The checkbox flip
418
470
  itself is **never** batchable — only the subprocess.
419
471
 
472
+ ### Context refresh — a comparison, not a third cadence key
473
+
474
+ There is **no `roadmap.context_refresh_cadence` setting**, deliberately. The
475
+ refresh trigger is derived:
476
+
477
+ ```bash
478
+ agent-config roadmap:context --fingerprint # cheap: one rev-parse + one gh call
479
+ ```
480
+
481
+ At every phase boundary (and at run end), take the fingerprint and compare it
482
+ with the one § 1's probe returned. **Differs → re-probe in full** and apply the
483
+ reaction table in § 5e. **Same → nothing moved; continue without paying for a
484
+ probe.** Cache the new value as the run's baseline either way.
485
+
486
+ The fingerprint covers `origin/main` **and the head SHA of every open PR**. The
487
+ second half is the case a `main`-only trigger misses: a peer pushing to their own
488
+ PR branch mid-run can add a file that now overlaps this run's owned paths while
489
+ `origin/main` has not moved at all.
490
+
491
+ Why a comparison and not a knob: `docs/contracts/settings-classes.md` classifies
492
+ a fixed-beat flag as `derivable` — "the mechanism itself can decide, from the
493
+ situation, better than a flag can" — behind a ratchet whose count may only fall.
494
+ A cadence enum was implemented, refused by `lint_settings_classes`, and replaced
495
+ by this; the full reasoning, the options rejected, and what the substitution costs
496
+ are in `agents/evidence/analysis/situational-awareness-cadence-key-decision.md`.
497
+ Turning the refresh off is a one-line revert of this subsection, which is the same
498
+ reversibility a `cadence: off` value would have bought.
499
+
420
500
  ## 5. Step loop
421
501
 
422
502
  For each open step in the working set (scope-bound — see wrapper):
@@ -510,6 +590,26 @@ For each open step in the working set (scope-bound — see wrapper):
510
590
  links the directory. Not a gate: the memo is what makes an
511
591
  autonomous resolution reviewable after the fact, which is the
512
592
  condition under which it is legitimate at all.
593
+ 4b. **Stale-artefact check — a vanished file is never a closed step.**
594
+
595
+ Before flipping anything, check the step's own cited paths against the tree:
596
+
597
+ ```
598
+ NEVER MARK STALE WORK COMPLETE JUST BECAUSE IT DISAPPEARED.
599
+ ABSENCE OF THE FILE IS ABSENCE OF EVIDENCE, NOT EVIDENCE OF COMPLETION.
600
+ ```
601
+
602
+ Any cited path missing → the step resolves to **`unverified`**: surface it in
603
+ the run report, name the missing path, and flip **no** checkbox. Not `[x]`
604
+ (the evidence cannot be checked), not `[-]` (nobody decided to skip it), not
605
+ `[~]` (nobody deferred it) — the box stays open and the report carries the
606
+ reason. `staleArtefactVerdict` in `roadmap_context.ts` is the predicate.
607
+
608
+ The failure this catches is quiet: "nothing to do here" reads identically to
609
+ "already done", and one of those is a closed step while the other is a lost
610
+ one. A step citing no paths is unaffected — there is nothing to check, and
611
+ inventing a doubt would fire this on every prose step.
612
+
513
613
  5. **Atomic flip — same reply, every step.**
514
614
  Flip the checkbox in `agents/roadmaps/<file>.md`: `[x]` done ·
515
615
  `[~]` partial · `[-]` skipped. **Non-skippable, non-batchable**
@@ -634,10 +734,46 @@ sibling worktree moved, the dying session finished a step it never recorded),
634
734
  and the `actual` column is what to resume from. Treating progress as corruption
635
735
  would refuse every healthy resume.
636
736
 
737
+ **The checkpoint carries a repository fingerprint too, not only roadmap counts.**
738
+ `context_fingerprint` is the `roadmap:context --fingerprint` value the dying run
739
+ last held. Every other field on the checkpoint reports **roadmap** drift; none
740
+ reported **repository** drift, so a run resumed after a long gap trusted a context
741
+ reading it never re-took — the exact staleness § 4's refresh exists to end,
742
+ reappearing across the one boundary a mid-run cadence cannot see.
743
+
744
+ A resumed run therefore re-probes and passes the fresh fingerprint into
745
+ `verifyCheckpoint`. A disagreement forces a full re-probe and the § 5e reactions
746
+ **before the first step**. A `null` or absent value on either side reads as *not
747
+ known* and never as a disagreement — the same rule `head` already follows, and for
748
+ the same reason: a false alarm on the field whose job is to say whether anything
749
+ moved trains the reader to skip the line.
750
+
637
751
  `agent-config run:supervise --once` reports which runs died with open steps
638
752
  left. It never merges, pushes, or closes anything — that boundary is a named
639
753
  rejection, not a missing feature.
640
754
 
755
+ ### 5e. Context refresh — four reactions, enumerated and closed
756
+
757
+ At each due point (§ 4 — fingerprint differs) re-probe and act. **These four rows
758
+ are the whole set.** Nothing here is a halt: none of them appears on the halt list
759
+ and none of them is a `blocked` outcome.
760
+
761
+ | # | What the refresh found | Reaction |
762
+ |---|---|---|
763
+ | a | A PR touching my owned paths **merged** since the last refresh | Run `sync_pr_branch` now — already the documented resolution, only push-bound until this row existed. Re-read the current step's files, continue. |
764
+ | b | An **open** PR touches my owned paths | Continue. Name the collision in the PR description and in the final report. **Never rebase onto a foreign branch.** |
765
+ | c | A peer session shows `PATH OVERLAP` | Take disjoint steps first if ordering allows; otherwise name it and continue. The register is advisory, never a lock. |
766
+ | d | The roadmap itself was **archived on `origin/main`** | Stop. The same **selection error** as § 1, detected late — not a halt, and no checkbox is flipped to reach it. |
767
+
768
+ Deliberately NOT a drift-level taxonomy. A severity ladder over these four would
769
+ invite a fifth row for every new shape of surprise, and the value here is that the
770
+ set is closed: an agent that meets something outside it has met an ordinary step,
771
+ not a new reaction.
772
+
773
+ Row (a) is the one that changes behaviour mid-run rather than only reporting. Rows
774
+ (b) and (c) exist to make the collision **visible in the artefact** — a run that
775
+ silently produces a conflicting PR has spent the reviewer's time, not its own.
776
+
641
777
  ### Halt conditions
642
778
 
643
779
  - Hard-Floor trigger ([`non-destructive-by-default`](../../rules/non-destructive-by-default.md))
@@ -681,14 +817,30 @@ setting, pushing, opening a PR, re-running CI, updating a merge base, fixing a
681
817
  test, spending inside a budget — the agent can do all of it. That is remediation
682
818
  work, and a `process-full` invocation grants it.
683
819
 
684
- Three outcomes, and only one of them is success:
820
+ Four outcomes, and only one of them is success:
685
821
 
686
822
  | Outcome | When | What it reports |
687
823
  |---|---|---|
688
824
  | `complete` | `count_open == 0` and the PR is open | the roadmap is finished; archival check runs (§ 6) |
689
825
  | `blocked` | every remaining open step is **externally impossible** for the agent | the work that DID close, plus the specific impossibility |
826
+ | `superseded` | the remaining work **already landed** on `origin/main`, in a merged PR | which steps the tree already satisfies, with the PR number and the evidence per step |
690
827
  | a halt | one of the five conditions above fired | the halt, its evidence, and what remains |
691
828
 
829
+ **Why `superseded` is here and not on the halt list.** A run that meets a merged
830
+ PR which already closed its remaining steps had, until this row existed, no legal
831
+ move: *"let the open PRs merge first"* is a forbidden non-halt reason below, the
832
+ halt list calls itself exhaustive, and neither `complete` nor `blocked` is true —
833
+ the work is done and it was not externally impossible. The only two available
834
+ actions were a rule violation or duplicate work. This row is the third.
835
+
836
+ It is a **report**, not a licence to flip anything. Marking a step the tree
837
+ already closed is a separate, deliberately unbuilt mechanism: it needs the step's
838
+ own `verify:` green against `origin/main`, a decision memo, and a one-strike kill
839
+ criterion, and an autonomous run writing a completion marker into the source of
840
+ truth is not switched on unasked. Until it is, `superseded` reports and the boxes
841
+ stay open — the same discipline the `[~]` prohibition below enforces for
842
+ `blocked`.
843
+
692
844
  `blocked-preflight` **no longer exists** (ADR-237 § 4). A run always starts.
693
845
 
694
846
  ```
@@ -17,7 +17,7 @@ routes_to:
17
17
  workspaces: [engineering]
18
18
  packs: [engineering-base]
19
19
  enforced_by:
20
- - "none"
20
+ - "instruction-only: the note, the ask and the user decision are all prose, so no gate can tell a discharged issue from a mentioned one"
21
21
  collision_ok:
22
22
  "refactor": "an explicit clean-up/refactor ask is the remediation ladder's own trigger"
23
23
  # obligation: line 31
@@ -97,11 +97,11 @@ While implementing/modifying code you pass an issue outside the literal task. Al
97
97
  - The issue is the task itself — then it's just the task (no ladder needed).
98
98
  - The user already decided this item (fixed later, or explicitly ignored).
99
99
 
100
- ## Honest enforcement — `enforced_by: none`
100
+ ## Honest enforcement — `instruction-only`
101
101
 
102
102
  The note, the ask and the user's decision are all prose, and the issue set is
103
103
  whatever the agent happened to see, so no gate can tell a discharged issue from a
104
- mentioned one. This rule ships `enforced_by: none` — the honesty boundary
104
+ mentioned one. This rule ships `instruction-only` — the honesty boundary
105
105
  [`security-sensitive-stop`](security-sensitive-stop.md) and
106
106
  [`ui-audit-gate`](ui-audit-gate.md) state for their own obligations. The ladder
107
107
  is the control; skipping it is caught by nothing.
@@ -22,7 +22,7 @@ workspaces: [engineering]
22
22
  packs: [engineering-base]
23
23
  roles: [developer, reviewer, tester, po, incident, planner]
24
24
  enforced_by:
25
- - "none"
25
+ - "instruction-only: close-the-source-and-re-derive is a pre-write reasoning step only the model observes; CI checks the ledger, never the derivation"
26
26
  # obligation: line 40
27
27
  obligation_frequency: "per-edit"
28
28
  ---
@@ -129,7 +129,7 @@ checks the ledger's own records, not similarity, and cannot catch an
129
129
  unrecorded borrow. The discipline above **is** the control; skipping it is
130
130
  not caught downstream by anything automatic. No script can enforce "close
131
131
  the source and re-derive" — a pre-write reasoning step only the model
132
- observes — so this rule ships `enforced_by: none`, same honesty stance as
132
+ observes — so this rule ships `instruction-only`, same honesty stance as
133
133
  `security-sensitive-stop` and `untrusted-input-defense`.
134
134
 
135
135
  `lint_harvest_provenance.ts` stands in exactly the same relation to the
@@ -2,6 +2,10 @@
2
2
  type: "auto"
3
3
  tier: "1"
4
4
  alwaysApply: false
5
+ norm:
6
+ tokens: 2000
7
+ remainder:
8
+ - "../docs/guidelines/agent-infra/context-hygiene-mechanics.md"
5
9
  description: "Debugging, fixing errors, or long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers"
6
10
  triggers:
7
11
  - keyword: "3-failure"
@@ -81,37 +85,14 @@ A NUMBER THAT CHANGED IS NOT NEW INFORMATION UNLESS IT CHANGES WHAT YOU DO NEXT.
81
85
  ```
82
86
 
83
87
  Waiting on something external — CI, a deploy, a queue, a background job — is the
84
- one shape the loop test above systematically misses, in both of its clauses.
85
-
86
- - **"Same parameters" fails.** A `sleep 240` followed by `sleep 420` followed by
87
- `sleep 595` are three different calls by any parameter comparison, so nothing
88
- reads them as repetition.
89
- - **"Repetition without new information" fails too**, and this is the subtler
90
- half: the poll genuinely returns a different value each round — 31 green, then
91
- 34, then 36 — which *feels* like progress. It is not information unless a
92
- different digit would make you act differently. It would not: the only actions
93
- available were wait, or stop and report, and 34 licensed neither more than 31
94
- did. **The discriminator is the decision, not the digits.**
95
-
96
- For CI, do not hand-write the loop: `ci_settle <pr>` (mechanics below).
97
-
98
- So state it separately: pick **one** waiter for the condition and let it finish.
99
- Where the harness re-invokes on completion, waiting costs nothing and polling
100
- costs a turn per expiry — and every stacked waiter is a turn that arrives *after*
101
- the answer already did. Where it does not, one `until <condition>` loop is still
102
- one call rather than N.
103
-
104
- **Measured once, at n=1, and worth naming for its shape rather than its
105
- frequency** (2026-08-12): a CI wait started roughly 35 background commands —
106
- a fresh timer *and* a fresh condition-watcher per round, none cancelled when the
107
- next pair started. CI settled with about fifteen still live; each then expired
108
- and produced an empty turn. Nothing was corrupted, which is exactly why it ran
109
- so long: every individual step looked reasonable.
110
-
111
- **Enforcement: none, and the reason is structural.** The `context-hygiene` hook
112
- counts tool calls; a waiter is indistinguishable from any other call at that
113
- layer, and nothing in the envelope says two live waiters are watching one
114
- condition. This is model-carried on every host.
88
+ one shape the loop test above systematically misses. Pick **one** waiter for the
89
+ condition and let it finish; for CI use `ci_settle <pr>` rather than a
90
+ hand-written loop. Enforcement is `none` and structurally so: the hook counts
91
+ tool calls and a waiter is indistinguishable from any other call at that layer.
92
+
93
+ Why the loop test misses it in both clauses, the n=1 measurement behind the
94
+ clause, and the enforcement argument: [`context-hygiene-mechanics § Waiting is one
95
+ waiter`](../docs/guidelines/agent-infra/context-hygiene-mechanics.md).
115
96
 
116
97
  ## Read-Loop Detection — the 15 / 25 rule
117
98
 
@@ -134,8 +115,7 @@ A mandated analysis/audit/review protocol is exactly the case that legitimately
134
115
  - **Undeclared reading keeps 3-warn / 5-abort.** Unchanged.
135
116
  - **A declared protocol raises the abort to 8 read-only turns** — and never suspends it. "Non-bypassable" narrows to **no *silent* bypass**: a declared protocol is not silent.
136
117
 
137
- > **The 8 is a guess, and specifically a LOWER BOUND.** One observed run — the coherence audit that motivated this clause — needed 8+ read turns and was legibly the protocol working, not a loop. So 8 is "the number that was enough once", not a measured optimum: n=1 says almost nothing about where the tail of the distribution sits, and nobody knows how many sessions silently hit the old 5 and should have continued. Calling this a derivation would be false advertising, which is the same failure class as the "17 rules carry absolutes" figure this rule's own roadmap refuted.
138
- > **Revisit-if — whichever comes first:** (a) **≥ 10 declared-protocol sessions** have been observed, at which point set the cap from their p95 and delete this note; or (b) **90 days** elapse with fewer than 10, which is itself the answer — declared protocols are rare, the cap is not load-bearing, and it drops back to the undeclared 5. A condition like "once a distribution exists" was rejected as unfalsifiable: it is gradual, never feels urgent, and absence of complaints is indistinguishable from absence of measurement.
118
+ > **The 8 is a guess, a LOWER BOUND, and revisitable** — derivation, the n=1 run behind it, and the two-branch `revisit-if`: [`context-hygiene-mechanics § The declared-protocol cap`](../docs/guidelines/agent-infra/context-hygiene-mechanics.md).
139
119
 
140
120
  A declaration is only valid when it states, before the reading starts, all three of:
141
121
 
@@ -13,7 +13,7 @@ self_contained: true
13
13
  workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
14
14
  packs: [meta]
15
15
  enforced_by:
16
- - "none"
16
+ - "instruction-only: no gate reads a chat claim about availability; check_council_config_location covers the tree side only"
17
17
  # obligation: line 27
18
18
  obligation_frequency: "per-task"
19
19
  ---
@@ -79,7 +79,7 @@ Availability is already settled this session, or the question is about council
79
79
 
80
80
  ## Enforcement
81
81
 
82
- `enforced_by: none` — no gate reads a chat claim. Deterministic instead:
82
+ `instruction-only` — no gate reads a chat claim. Deterministic instead:
83
83
  `check_council_config_location` fails the build when a council surface ties the
84
84
  config to `.agent-settings.yml`, which never carried it, or to a project-tree
85
85
  path, and its §4 fails when no always-loaded rule carries this fact at all.
@@ -23,6 +23,8 @@ packs: [meta]
23
23
  collision_ok:
24
24
  "honest null": "this rule asks whether a recorded null may be REVISITED; evaluator-independence asks how one was PRODUCED — different decision points on the same artefact"
25
25
  # obligation: line 31
26
+ enforced_by:
27
+ - "instruction-only: no gate can observe an agent citing a decision it never opened; adr_cite_check is deterministic where it runs and nothing makes it run"
26
28
  obligation_frequency: "per-task"
27
29
  ---
28
30
 
@@ -176,7 +178,7 @@ precedent-creates-no-authority clause: [`adr-layout § Reopen authority`](../doc
176
178
  - [`ask-when-uncertain`](ask-when-uncertain.md) — the numbered-options shape
177
179
  used to present the revisit offer.
178
180
 
179
- ## Honest enforcement — `enforced_by: none`
181
+ ## Honest enforcement — `instruction-only`
180
182
 
181
183
  `adr_cite_check` is deterministic where it runs, and nothing makes it run. No
182
184
  gate can observe an agent citing a decision it never opened, so step 2 above is
@@ -89,6 +89,24 @@ this": a prototype (HTML / JSX / Figma export), a mockup or screenshot, a
89
89
  design-system file (tokens, component library), or a URL / path. It encodes
90
90
  decisions already made — treat it like brand tokens, not like inspiration.
91
91
 
92
+ ## Two axes — artefact maturity is not instruction mandate
93
+
94
+ ```
95
+ MATURITY IS A PROPERTY OF THE ARTEFACT. MANDATE IS A PROPERTY OF THE INSTRUCTION.
96
+ A HANDOVER WHOSE OWN ARTEFACT DECLARES ITSELF LOW-FIDELITY CARRIES A **STRUCTURE**
97
+ MANDATE, NEVER A **PIXEL** MANDATE — WHATEVER `design.fidelity_mode` SAYS.
98
+ REPRODUCING A WIREFRAME'S GREYS 1:1 HONOURS THE WRONG HALF OF THE ARTEFACT.
99
+ ```
100
+
101
+ `strict` means *do not redesign*; never *reproduce a wireframe's placeholder greys*, which
102
+ are **non-decisions** ([`wireframe`](../skills/wireframe/SKILL.md) § Gotchas).
103
+ **The discriminator reads the ARTEFACT, never the prose.** A finished comp whose prose
104
+ mentions a wireframe it replaces routes **strictly** — a reference to a previous artefact,
105
+ not a declaration about this one. **When the artefact does not declare its maturity,
106
+ it is treated as finished**: the 1:1 floor is stricter, and guessing *low fidelity*
107
+ would authorise the redesign this rule prevents. Maturity→spec table + the pinned near-miss:
108
+ [`design-fidelity-mechanics § Artefact maturity`](../docs/guidelines/design-fidelity-mechanics.md).
109
+
92
110
  ## Strictness — set by `design.fidelity_mode`
93
111
 
94
112
  Read `design.fidelity_mode` from `.agent-settings.yml`. Missing → `strict`.
@@ -27,7 +27,7 @@ routes_to:
27
27
  workspaces: [agent-config-maintainer, engineering]
28
28
  packs: [frontend-design]
29
29
  enforced_by:
30
- - "none"
30
+ - "instruction-only: no artefact proves a design review happened outside the work-engine dispatcher; the review verdict is self-report"
31
31
  collision_ok:
32
32
  # The "component" and "design token" entries were removed with their triggers
33
33
  # (2026-08-17): a collision note for a trigger that no longer exists is an
@@ -107,7 +107,7 @@ AS IF IT WERE VERIFIED.
107
107
 
108
108
  There is no artefact a chat session can point at to prove a design review
109
109
  happened — "I ran `design-review`" is self-report, and self-report is not
110
- enforcement. So this rule ships `enforced_by: none`, the same honesty boundary
110
+ enforcement. So this rule ships `instruction-only`, the same honesty boundary
111
111
  `ui-audit-gate`, `security-sensitive-stop`, and `untrusted-input-defense` state
112
112
  for their own obligations, rather than pretending a satisfiable-by-assertion
113
113
  condition is a gate.
@@ -2,6 +2,10 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  alwaysApply: false
5
+ norm:
6
+ tokens: 1500
7
+ remainder:
8
+ - "../docs/guidelines/agent-infra/evaluator-independence-mechanics.md"
5
9
  description: "Commissioning a review/judge/blind-pass on your own work — never author the verdict, never narrow the scope, record the prompt with the result"
6
10
  triggers:
7
11
  - keyword: "blind review"
@@ -13,6 +17,8 @@ triggers:
13
17
  - phrase: "review my own"
14
18
  - phrase: "commission a review"
15
19
  - phrase: "second opinion on my"
20
+ routes_to:
21
+ - "guideline:agent-infra/evaluator-independence-mechanics"
16
22
  self_contained: true
17
23
  workspaces: [engineering]
18
24
  packs: [engineering-base]
@@ -73,6 +79,29 @@ was manufactured anyway.
73
79
  4. **One evaluation per turn per subject.** Re-running with a different prompt or
74
80
  scope after an unwelcome verdict selects the answer instead of measuring it.
75
81
 
82
+ ## The softer form — stating an expectation without stating the verdict
83
+
84
+ The Iron Law forbids **authoring the verdict** into an evaluator's prompt. There is a
85
+ weaker move that evades it while doing the same work, and it is the one an orchestrator
86
+ reaches for without noticing: **stating an expectation.**
87
+
88
+ ```
89
+ THE ORCHESTRATOR STATES NO EXPECTATION OF THE OUTCOME IN A PROMPT IT WRITES
90
+ FOR A JUDGE OF ITS OWN WORK. NOT THE VERDICT, AND NOT THE DIRECTION.
91
+ "THIS SHOULD BE CLEAN", "I BELIEVE THIS IS CORRECT", "JUST CONFIRM",
92
+ "I EXPECT NO FINDINGS" — NONE OF THESE NAME A VERDICT, AND ALL OF THEM SUPPLY ONE.
93
+ ```
94
+
95
+ The distinction the phrase list cannot see is exactly this one: *"NO-FINDINGS is
96
+ expected"* is a prediction, not a verdict, and it steered a real review into an
97
+ honest-null that was later refuted by five findings on the trunk. A prompt that says what
98
+ the author thinks the answer is has authored the answer, whatever grammatical mood it
99
+ used.
100
+
101
+ **What to write instead:** the scope, the diff, and the question. Nothing about how it is
102
+ expected to come out — including a reassurance that no particular outcome is expected,
103
+ which is itself an expectation stated in the negative.
104
+
76
105
  ## When it does NOT fire
77
106
 
78
107
  - **Ordinary parallel fan-out.** Dispatching many subagents to read, map,
@@ -85,51 +114,34 @@ was manufactured anyway.
85
114
 
86
115
  ## Enforcement — honest scope
87
116
 
117
+ ```
118
+ ITEM 1 IS ENFORCED. ITEMS 2, 3 AND 4 ARE NOT — 4 ONLY WARNS.
119
+ NEVER CITE A GUARD THAT WARNS AS ONE THAT BLOCKS.
120
+ ```
121
+
88
122
  [`evidence_independence.ts`](../scripts/hooks/evidence_independence.ts) is a
89
- `pre_tool_use` concern. It **blocks** a dispatch whose prompt carries a
90
- pre-loaded verdict, and **blocks** a second *self-scoped* evaluation dispatch in
91
- the same turn; it **warns** on the first. It reads the prompt the agent is about
92
- to send, so items 1 and 4 above are mechanically enforced.
93
-
94
- Three limits, stated because they were measured. The pre-loaded-verdict list is
95
- a **phrase list**, so a paraphrase evades it — it catches recurrences of known
96
- steering wording, not steering as such. The turn boundary is the
97
- authorization ledger's `detected_at` stamp, because the envelope carries no turn
98
- id; with no ledger yet, the counter falls back to session scope. And the guard
99
- does not deny everywhere it exists: `pre_tool_use` is **bound** on three hosts —
100
- augment, claude, cowork — and only `claude` honours the deny. Everywhere else,
101
- augment and cowork included, items 1 and 4 join 2 and 3 as model-carried.
102
- `agent-config hooks:status` answers it for the host you are on right now.
103
-
104
- **Corrected 2026-08-17 — this paragraph was wrong on both sides of the line it
105
- drew.** It said `pre_tool_use` "exists on three hosts" and that the guard has
106
- "nowhere to bind" on the other five. Neither half survived a re-read of the
107
- tree. **Downward:** the manifest's own `native_event_aliases` table already maps
108
- `preToolUse` (cursor), `PreToolUse` (cline) and `BeforeTool` (gemini) onto
109
- `pre_tool_use`, so there the guard is **unbound, not unbindable**; only windsurf
110
- and copilot carry no pre-tool surface at all. **Upward, and worse:**
111
- `host_semantics.ts` certifies **claude alone**, and the augment and cowork
112
- trampolines discard dispatcher output and `exit 0` unconditionally — so on two
113
- of the three "enforcing" hosts this guard runs and is then ignored. Nor may the
114
- inverse be asserted downward: nothing records whether an unbound host's
115
- pre-tool event can *deny*, and `severity: blocking` is a property of the concern
116
- rather than of the host. The four states are tabulated once in
117
- [`hook-architecture-v1 § Which hosts carry pre_tool_use`](../docs/contracts/hook-architecture-v1.md).
118
-
119
- Stated at this length because this rule exists over a case where a process that
120
- *looked* followed produced fabricated evidence. An unbacked reason for a real
121
- gap and an unmeasured claim of enforcement are the same failure in a smaller
122
- font, and this paragraph had shipped one of each. Note also what the frequency
123
- join actually reports: `check_enforcement_coverage.ts` skips `fallback_only`
124
- platforms, so its gap set is **four** — cursor, cline, windsurf, gemini — never
125
- copilot, which is excluded by declaration rather than measured as a gap.
126
-
127
- Items 2 and 3 — an honestly chosen scope, and recording the prompt with the
128
- verdict — are **not** enforced by anything. A narrowed scope is not decidable
129
- from the prompt alone, and no validator reads the artefacts a verdict lands in.
130
- They are stated here as obligations and are model-carried. Saying so is the
131
- point: this rule exists because a process that *looked* followed produced
132
- fabricated evidence, and claiming coverage it does not have would repeat that.
123
+ `pre_tool_use` concern reading the prompt the agent is about to send.
124
+
125
+ - **Item 1 (pre-loaded verdict) BLOCKS** — `EXIT_BLOCK` at `:253`, on the one
126
+ host that honours a deny. Bound on augment, claude and cowork; only `claude`
127
+ denies. `agent-config hooks:status` answers it for the host you are on.
128
+ - **Item 4 (second self-scoped evaluation) WARNS** — `EXIT_ALLOW` with
129
+ `decision: "warn"` (`:301-324`). The turn-budget clause is advisory, and the
130
+ manifest's `severity: blocking` is true of the item-1 path only.
131
+ - **Item 2 (an honestly chosen scope) is enforced by nothing.** A narrowed scope
132
+ is not decidable from the prompt alone.
133
+ - **Item 3 (recording the prompt with the verdict) IS enforced** by
134
+ [`check_review_prompt_binding.ts`](../../src/scripts/check_review_prompt_binding.ts),
135
+ with one limit that matters: **omission beats substitution** — not committing
136
+ the prompt package drops the round out of the checkable set with no finding.
137
+
138
+ Where the guard does not deny, every item is model-carried. Never claim the
139
+ review ran as if it were verified.
140
+
141
+ Why each branch behaves that way, the phrase-list and turn-boundary limits, the
142
+ four host states, the two corrections this section has taken, and the
143
+ 11-of-19 measurement behind item 3:
144
+ [`evaluator-independence-mechanics`](../docs/guidelines/agent-infra/evaluator-independence-mechanics.md).
133
145
 
134
146
  ## See also
135
147
 
@@ -23,7 +23,7 @@ triggers:
23
23
  workspaces: [engineering]
24
24
  packs: [engineering-base]
25
25
  enforced_by:
26
- - "none"
26
+ - "instruction-only: ownership-as-excuse is a disposition in prose; no gate can see a red check handed back with its cause named"
27
27
  ---
28
28
 
29
29
  # Fix What You See
@@ -106,3 +106,11 @@ maintainer decision, recorded), a kernel rule shortened to make room, or a
106
106
  option that would fire on tool output rather than on wording. Until then, `auto`
107
107
  plus this paragraph is the honest state: the obligation is real, its delivery is
108
108
  partial, and the partiality is named rather than implied away.
109
+
110
+ ## Honest enforcement — `instruction-only`
111
+
112
+ Nothing observes a disposition. "I fixed it", "I landed a roadmap for it" and
113
+ "I named the author and moved on" are the same prose to every gate in this tree,
114
+ and the issue set is whatever the agent happened to see. So the two dispositions
115
+ above are model-carried, and the activation gap named in the previous section
116
+ sits on top of that rather than beside it.
@@ -72,7 +72,7 @@ framework-specific): `laravel*`, `symfony*`, `nextjs*`, `react-*`,
72
72
  `^php-*`, `^pest-*`, `^eloquent`, `^blade*`, `^livewire`, `^flux`,
73
73
  `^artisan-*`, `^composer-*`, `^docker*`, `^aws-*`, `^grafana`,
74
74
  `^openapi$`, `^quality-tools`, `^sql-writing`, `^tailwind*`,
75
- `^terraform*`, `^terragrunt*`, `^traefik`, `^mobile-e2e`,
75
+ `^terraform*`, `^terragrunt*`, `^traefik`, `^mobile-e2e`, `^monorepo-workspace$`, `^workspace-link$`,
76
76
  `-routing$`, `project-analysis-(laravel|symfony|nextjs|react|node-express|zend-laminas)`.
77
77
 
78
78
  ## The discipline in one breath
@@ -43,29 +43,23 @@ change.
43
43
  - Never consolidate or split unrelated code paths as a side effect.
44
44
  - Never delete code that *looks* dead without proof it is unreachable.
45
45
 
46
- ## Before writing the diff
46
+ ## Repair the shared path, don't patch the reported call site
47
47
 
48
- Ask yourself, in order:
49
-
50
- 1. **What is the minimum set of files that must change for the stated task?**
51
- If your answer includes files with no causal link to the task, stop and
52
- remove them.
53
- 2. **What is the minimum number of lines per file?** If you are editing a
54
- method, edit the method — not the surrounding class.
55
- 3. **Is any of this a refactor?** If yes, it belongs in its own commit or
56
- PR, clearly labeled as a refactor, with no behavior change.
57
-
58
- ## Red flags in your own diff — reject them
59
-
60
- Files the task never mentioned · import reordering, whitespace, or comments
61
- outside the edited region · "small improvements" to neighboring methods ·
62
- test-only mixed with behavior changes in one commit · renames outside the
63
- task scope · dependency bumps "because it was close to the cache".
48
+ ```
49
+ BEFORE EDITING A SHARED PATH, ENUMERATE ITS CALLERS AND REPAIR THE PATH ONCE.
50
+ PATCHING ONLY THE REPORTED CALL SITE IS NOT THE SMALLEST CHANGE — IT IS THE
51
+ SMALLEST-LOOKING ONE, AND IT LEAVES EVERY OTHER CALLER BROKEN.
52
+ ```
64
53
 
65
- ## When in doubt
54
+ Fires when the defect sits in something several callers reach — a shared
55
+ helper, a base class, a middleware, a query builder. The minimum set of files
56
+ then INCLUDES the shared path and EXCLUDES the N call sites a per-caller patch
57
+ would touch: repairing once is both smaller and complete.
66
58
 
67
- Ask. A minimal diff plus one follow-up is cheaper than a sprawling diff the
68
- reviewer has to untangle.
59
+ **The PRE-fix half of a pair.** The post-fix half ships in
60
+ [`downstream-changes`](downstream-changes.md) § Defect-pattern search — name
61
+ the construct, grep the tree, report the count, AFTER the fix. Enumerate
62
+ before, sweep after; the two run over different sets.
69
63
 
70
64
  ## Own-orphan cleanup
71
65
 
@@ -16,6 +16,8 @@ self_contained: true
16
16
  workspaces: [engineering]
17
17
  packs: [meta]
18
18
  # obligation: line 41
19
+ enforced_by:
20
+ - "instruction-only: nothing can observe an agent concluding that no skill exists; the skill-route concern covers only the prompts where the ranker is confident"
19
21
  obligation_frequency: "per-turn"
20
22
  ---
21
23
 
@@ -60,6 +62,16 @@ NEVER REBUILD A CAPABILITY BECAUSE ITS SKILL WAS NOT DELIVERED.
60
62
  inventing one. A ranked empty list and an unreachable catalogue are
61
63
  different answers; the tool distinguishes them (`status: no_catalogue`) and
62
64
  so should you.
65
+ 5. **If the tool is not registered, say THAT — and proceed.** This rule may
66
+ never instruct a call it cannot verify is possible. The tool arrives with
67
+ this package's MCP server, which `agent-config install` registers for the
68
+ `claude-code` tool in the project's `.mcp.json`. No entry there, or the
69
+ server not started, and there is no tool to call: name the gap in one clause,
70
+ proceed without a skill, and — only if the missing catalogue entry actually
71
+ mattered — point at `agent-config mcp:check`, which reports whether
72
+ `.mcp.json` carries the entry. Never retry a call that is not wired, and
73
+ never report "no skill covers this" when what you learned is "no tool
74
+ answered".
63
75
 
64
76
  ## When NOT to fire
65
77
 
@@ -70,7 +82,7 @@ NEVER REBUILD A CAPABILITY BECAUSE ITS SKILL WAS NOT DELIVERED.
70
82
  - A host that delivers its catalogue whole — the rule costs nothing there and
71
83
  simply never has a gap to close.
72
84
 
73
- ## Honest enforcement — `enforced_by: none`
85
+ ## Honest enforcement — `instruction-only`
74
86
 
75
87
  Nothing can observe an agent concluding "no skill exists". The `skill-route`
76
88
  concern injects ranked pointers on `user_prompt_submit` when its floor is