@event4u/agent-config 14.9.0 → 14.11.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 (426) 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 +384 -0
  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/roadmap-process-loop.md +154 -2
  16. package/dist/agent-src/rules/active-remediation.md +3 -3
  17. package/dist/agent-src/rules/code-provenance.md +2 -2
  18. package/dist/agent-src/rules/context-hygiene.md +13 -33
  19. package/dist/agent-src/rules/council-availability.md +2 -2
  20. package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
  21. package/dist/agent-src/rules/design-fidelity.md +18 -0
  22. package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
  23. package/dist/agent-src/rules/evaluator-independence.md +56 -44
  24. package/dist/agent-src/rules/fix-what-you-see.md +9 -1
  25. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  26. package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
  27. package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
  28. package/dist/agent-src/rules/playbook-precedence.md +105 -0
  29. package/dist/agent-src/rules/recurring-criticism.md +3 -1
  30. package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
  31. package/dist/agent-src/rules/scale-discipline.md +24 -0
  32. package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
  33. package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
  34. package/dist/agent-src/rules/ui-audit-gate.md +27 -15
  35. package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
  36. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
  37. package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
  38. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
  39. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
  40. package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
  41. package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
  42. package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
  43. package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +17 -0
  44. package/dist/agent-src/skills/async-python-patterns/SKILL.md +1 -1
  45. package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
  46. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
  47. package/dist/agent-src/skills/brand/SKILL.md +3 -0
  48. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
  49. package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
  50. package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
  51. package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
  52. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
  53. package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
  54. package/dist/agent-src/skills/code-refactoring/SKILL.md +1 -1
  55. package/dist/agent-src/skills/code-review/SKILL.md +11 -0
  56. package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
  57. package/dist/agent-src/skills/condense-memory/SKILL.md +4 -1
  58. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  59. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +4 -1
  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 +80 -2
  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/discovery-interview/SKILL.md +1 -1
  73. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
  74. package/dist/agent-src/skills/docx-authoring/SKILL.md +1 -1
  75. package/dist/agent-src/skills/editorial-calendar/SKILL.md +1 -1
  76. package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
  77. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +20 -3
  78. package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
  79. package/dist/agent-src/skills/fe-design/evals/triggers.json +65 -53
  80. package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
  81. package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
  82. package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
  83. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  84. package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
  85. package/dist/agent-src/skills/github-ci/SKILL.md +1 -1
  86. package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
  87. package/dist/agent-src/skills/iconography/SKILL.md +3 -0
  88. package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
  89. package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
  90. package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
  91. package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
  92. package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
  93. package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +17 -0
  94. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
  95. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  96. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +1 -1
  97. package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
  98. package/dist/agent-src/skills/laravel-validation/SKILL.md +1 -1
  99. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
  100. package/dist/agent-src/skills/legal-intake-triage/SKILL.md +1 -1
  101. package/dist/agent-src/skills/legal-practice-profile/SKILL.md +1 -1
  102. package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
  103. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
  104. package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
  105. package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
  106. package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
  107. package/dist/agent-src/skills/messaging-architecture/SKILL.md +1 -1
  108. package/dist/agent-src/skills/migration-architect/SKILL.md +1 -1
  109. package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +1 -1
  110. package/dist/agent-src/skills/module-management/SKILL.md +1 -1
  111. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
  112. package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +17 -0
  113. package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -1
  114. package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
  115. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  116. package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
  117. package/dist/agent-src/skills/operational-readiness/evals/triggers.json +17 -0
  118. package/dist/agent-src/skills/override-management/SKILL.md +3 -0
  119. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  120. package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
  121. package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
  122. package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
  123. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
  124. package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
  125. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
  126. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +1 -1
  127. package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
  128. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +52 -21
  129. package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
  130. package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
  131. package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
  132. package/dist/agent-src/skills/receiving-code-review/SKILL.md +3 -3
  133. package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
  134. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
  135. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  136. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  137. package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
  138. package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
  139. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
  140. package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
  141. package/dist/agent-src/skills/scene-expander/SKILL.md +1 -1
  142. package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
  143. package/dist/agent-src/skills/secrets-management/SKILL.md +5 -1
  144. package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
  145. package/dist/agent-src/skills/server-hardening/evals/triggers.json +17 -0
  146. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
  147. package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
  148. package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
  149. package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
  150. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
  151. package/dist/agent-src/skills/storybook-workshop/SKILL.md +194 -0
  152. package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +17 -0
  153. package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
  154. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  155. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
  156. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
  157. package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
  158. package/dist/agent-src/skills/terraform/SKILL.md +3 -0
  159. package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
  160. package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
  161. package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
  162. package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
  163. package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -1
  164. package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
  165. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  166. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
  167. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
  168. package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
  169. package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
  170. package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
  171. package/dist/agent-src/skills/workspace-link/evals/triggers.json +17 -0
  172. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  173. package/dist/agent-src/templates/playbook.md +75 -0
  174. package/dist/agent-src/templates/roadmaps.md +37 -0
  175. package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  176. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  177. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  178. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  179. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  180. package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  181. package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  182. package/dist/cli/commands/uiAudit.js +221 -0
  183. package/dist/cli/commands/uiAudit.js.map +1 -0
  184. package/dist/cli/commands/uiRender.js +206 -0
  185. package/dist/cli/commands/uiRender.js.map +1 -0
  186. package/dist/cli/main.js +22 -1
  187. package/dist/cli/main.js.map +1 -1
  188. package/dist/cli/mcp/content.js +64 -1
  189. package/dist/cli/mcp/content.js.map +1 -1
  190. package/dist/cli/mcp/dispatch.js +175 -10
  191. package/dist/cli/mcp/dispatch.js.map +1 -1
  192. package/dist/cli/registry.js +3 -0
  193. package/dist/cli/registry.js.map +1 -1
  194. package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-236PNQZK.js} +413 -391
  195. package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
  196. package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
  197. package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
  198. package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-L43NCYPB.js} +5 -0
  199. package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
  200. package/dist/cli-delegate/cmd_brand_status.js +8 -6
  201. package/dist/cli-delegate/cmd_conformance.js +3 -3
  202. package/dist/cli-delegate/cmd_doctor.js +3 -3
  203. package/dist/cli-delegate/cmd_export.js +4 -4
  204. package/dist/cli-delegate/cmd_handoff.js +1 -1
  205. package/dist/cli-delegate/cmd_preflight.js +2 -2
  206. package/dist/cli-delegate/cmd_prune.js +4 -4
  207. package/dist/cli-delegate/cmd_session_recycle.js +70 -9
  208. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  209. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  210. package/dist/cli-delegate/cmd_sync.js +4 -4
  211. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  212. package/dist/cli-delegate/cmd_validate.js +4 -4
  213. package/dist/discovery/deprecation-report.md +1 -1
  214. package/dist/discovery/discovery-manifest.json +380 -145
  215. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  216. package/dist/discovery/discovery-manifest.summary.md +4 -4
  217. package/dist/discovery/dormancy-report.md +1 -1
  218. package/dist/discovery/orphan-report.md +1 -1
  219. package/dist/discovery/packs.json +18 -8
  220. package/dist/discovery/trust-report.md +3 -3
  221. package/dist/discovery/workspaces.json +16 -6
  222. package/dist/hooks/dispatch.js +2337 -1436
  223. package/dist/install/install.mjs +795 -708
  224. package/dist/mcp/registry-manifest.json +3 -3
  225. package/dist/mcp/server.json +2 -2
  226. package/dist/mcp/server.mjs +1685 -1250
  227. package/dist/router.json +1 -1
  228. package/dist/scripts/_lib/lean_projection_mode.js +40 -0
  229. package/dist/scripts/_lib/lean_projection_mode.js.map +1 -0
  230. package/dist/scripts/_lib/scoped_projection.js +84 -0
  231. package/dist/scripts/_lib/scoped_projection.js.map +1 -1
  232. package/dist/scripts/_lib/ui_surface.js +89 -0
  233. package/dist/scripts/_lib/ui_surface.js.map +1 -0
  234. package/dist/scripts/condense.js +6 -10
  235. package/dist/scripts/condense.js.map +1 -1
  236. package/dist/scripts/project_thin_rules.js +40 -2
  237. package/dist/scripts/project_thin_rules.js.map +1 -1
  238. package/dist/server/schemas/settings.js +3 -0
  239. package/dist/server/schemas/settings.js.map +1 -1
  240. package/dist/shared/skillRanking.js +159 -0
  241. package/dist/shared/skillRanking.js.map +1 -0
  242. package/docs/contracts/provider-lifecycle.md +47 -18
  243. package/docs/contracts/settings-classes.md +14 -4
  244. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
  245. package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  246. package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
  247. package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  248. package/docs/guidelines/design-antipatterns.md +4 -2
  249. package/docs/guidelines/design-asset-discipline.md +38 -0
  250. package/docs/guidelines/design-fidelity-mechanics.md +45 -29
  251. package/docs/guidelines/design-handover-extraction.md +35 -5
  252. package/docs/guidelines/design-modes.md +41 -1
  253. package/docs/guidelines/monorepo-antipatterns.md +141 -0
  254. package/llms.txt +50 -39
  255. package/package.json +1 -1
  256. package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  257. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  258. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  259. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  260. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  261. package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  262. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  263. package/src/config/agent-settings.template.yml +28 -0
  264. package/src/config/assurance-capability-registry.json +223 -0
  265. package/src/config/assurance-threshold-budget.json +65 -0
  266. package/src/config/ci-local-parity.yml +14 -0
  267. package/src/config/discovery/unassigned-artefacts.yml +2 -0
  268. package/src/config/dispatch-economy-metrics.json +4 -2
  269. package/src/config/evaluator-budgets.json +14 -14
  270. package/src/config/gate-coverage.yml +227 -8
  271. package/src/config/gate-violation-baselines.json +76 -72
  272. package/src/config/hook-latency-budget.json +1 -0
  273. package/src/config/hook-token-budget.json +137 -125
  274. package/src/config/pack-size-budget.json +4 -2
  275. package/src/config/preamble-payload-budget.json +71 -67
  276. package/src/config/quorum-attendance-budget.json +12 -4
  277. package/src/config/rule-activation-census.json +7 -3
  278. package/src/config/rule-enforcement-baseline.json +0 -1
  279. package/src/config/rule-stub-ceilings.json +112 -91
  280. package/src/scripts/_cli/cmd_doctor.ts +15 -16
  281. package/src/scripts/_cli/doctor_install_mode.ts +49 -0
  282. package/src/scripts/_cli/doctor_overrides.ts +154 -0
  283. package/src/scripts/_dispatch.bash +17 -0
  284. package/src/scripts/_lib/as_of.ts +412 -0
  285. package/src/scripts/_lib/exec_evidence.ts +7 -0
  286. package/src/scripts/_lib/hook_settings.ts +33 -0
  287. package/src/scripts/_lib/host_listing_model.ts +192 -0
  288. package/src/scripts/_lib/lean_projection_mode.ts +44 -0
  289. package/src/scripts/_lib/mcp_bridge.ts +199 -0
  290. package/src/scripts/_lib/review_independence.ts +62 -10
  291. package/src/scripts/_lib/rule_injection.ts +239 -0
  292. package/src/scripts/_lib/run_checkpoint.ts +54 -1
  293. package/src/scripts/_lib/scoped_projection.ts +96 -0
  294. package/src/scripts/_lib/session_register.ts +44 -2
  295. package/src/scripts/_lib/skill_catalogue.ts +38 -2
  296. package/src/scripts/_lib/transcript_reads.ts +207 -0
  297. package/src/scripts/_lib/ui_authority.test.ts +251 -0
  298. package/src/scripts/_lib/ui_authority.ts +343 -0
  299. package/src/scripts/ai-video/adapters/fal.sh +8 -3
  300. package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
  301. package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
  302. package/src/scripts/ai-video/adapters/kling.sh +10 -0
  303. package/src/scripts/ai-video/adapters/sora.sh +10 -0
  304. package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
  305. package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
  306. package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
  307. package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
  308. package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
  309. package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
  310. package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
  311. package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
  312. package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
  313. package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
  314. package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
  315. package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
  316. package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
  317. package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
  318. package/src/scripts/ai-video/smoke-trace.sh +450 -2
  319. package/src/scripts/ai-video/stitch.sh +191 -10
  320. package/src/scripts/ai-video/test-pipeline.sh +84 -6
  321. package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
  322. package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
  323. package/src/scripts/ai_council/clients.ts +3 -2
  324. package/src/scripts/ai_council/consensus.ts +63 -6
  325. package/src/scripts/ai_council/events_log.ts +46 -1
  326. package/src/scripts/ai_council/orchestrator.ts +103 -108
  327. package/src/scripts/ai_council/orchestrator_results.ts +166 -0
  328. package/src/scripts/ai_council/prompts.ts +12 -5
  329. package/src/scripts/ai_council/quorum.ts +82 -1
  330. package/src/scripts/ai_council/quorum_wiring.ts +82 -5
  331. package/src/scripts/ai_council/seating.ts +211 -0
  332. package/src/scripts/ai_council/stance_tally.ts +22 -0
  333. package/src/scripts/bench_hook_latency.ts +62 -0
  334. package/src/scripts/build_proof.ts +12 -1
  335. package/src/scripts/capture_skill_catalogue.ts +21 -0
  336. package/src/scripts/check_always_budget.ts +2 -1
  337. package/src/scripts/check_augmentignore.ts +2 -1
  338. package/src/scripts/check_beta_review_markers.ts +2 -1
  339. package/src/scripts/check_composite_arming.ts +364 -0
  340. package/src/scripts/check_corpus_staleness.ts +2 -1
  341. package/src/scripts/check_council_pin_staleness.ts +3 -1
  342. package/src/scripts/check_enforcement_coverage.ts +116 -3
  343. package/src/scripts/check_enforcement_denominator.ts +365 -0
  344. package/src/scripts/check_gate_coverage.ts +2 -1
  345. package/src/scripts/check_hook_bundle_freshness.ts +13 -1
  346. package/src/scripts/check_knowledge_cards.ts +2 -1
  347. package/src/scripts/check_knowledge_pages.ts +3 -2
  348. package/src/scripts/check_memory.ts +2 -1
  349. package/src/scripts/check_no_automerge_key.ts +287 -0
  350. package/src/scripts/check_pack_conformance_fixture.ts +565 -0
  351. package/src/scripts/check_pack_passport_reconciliation.ts +274 -0
  352. package/src/scripts/check_proposal.ts +2 -1
  353. package/src/scripts/check_reach_staleness.ts +2 -1
  354. package/src/scripts/check_release_adjacent_health.ts +2 -1
  355. package/src/scripts/check_release_pr_shape.ts +5 -0
  356. package/src/scripts/check_review_schema.ts +34 -1
  357. package/src/scripts/check_roadmap_trackable.ts +48 -3
  358. package/src/scripts/check_source_size_budget.ts +2 -1
  359. package/src/scripts/check_standing_payload_delta.ts +505 -0
  360. package/src/scripts/check_trigger_evals.ts +2 -1
  361. package/src/scripts/classify_change_risk.ts +281 -0
  362. package/src/scripts/compute_skill_tiers.ts +186 -0
  363. package/src/scripts/condense.ts +8 -13
  364. package/src/scripts/council_attendance_metrics.ts +183 -0
  365. package/src/scripts/council_cli.ts +10 -8
  366. package/src/scripts/council_parse_rate.ts +116 -0
  367. package/src/scripts/derive_playbooks.ts +406 -0
  368. package/src/scripts/design_slop_rules.test.ts +7 -0
  369. package/src/scripts/design_slop_rules.ts +56 -2
  370. package/src/scripts/dispatch_r2_reviewer.ts +16 -0
  371. package/src/scripts/frontend_corpus_hash.ts +116 -0
  372. package/src/scripts/generate_pack_manifests.ts +78 -0
  373. package/src/scripts/grade_target_readiness.ts +478 -0
  374. package/src/scripts/hook_manifest.json +1 -1
  375. package/src/scripts/hook_manifest.yaml +97 -16
  376. package/src/scripts/hooks/concern_registry.ts +4 -0
  377. package/src/scripts/hooks/design_pass_hook.ts +356 -0
  378. package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
  379. package/src/scripts/hooks/rule_inject_hook.ts +318 -0
  380. package/src/scripts/hot_context_hook.ts +74 -7
  381. package/src/scripts/install.ts +40 -89
  382. package/src/scripts/lint_adapter_tier.ts +663 -0
  383. package/src/scripts/lint_archived_skills.ts +93 -0
  384. package/src/scripts/lint_budget_ownership.ts +2 -1
  385. package/src/scripts/lint_deterministic_time.ts +470 -0
  386. package/src/scripts/lint_framework_leakage.ts +5 -0
  387. package/src/scripts/lint_handoffs.ts +525 -1
  388. package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
  389. package/src/scripts/lint_marketplace.ts +88 -0
  390. package/src/scripts/lint_media_policy_linkage.ts +140 -1
  391. package/src/scripts/lint_one_off_age.ts +6 -1
  392. package/src/scripts/lint_override_kernel_guard.ts +87 -5
  393. package/src/scripts/lint_roadmap_complexity.ts +56 -0
  394. package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
  395. package/src/scripts/lint_rule_norm_pin.ts +321 -0
  396. package/src/scripts/lint_spawn_payload.ts +42 -5
  397. package/src/scripts/lint_symptom_intake.ts +2 -1
  398. package/src/scripts/mcp_parity_smoke.ts +30 -4
  399. package/src/scripts/mcp_render.ts +66 -1
  400. package/src/scripts/mcp_tool_fingerprint.ts +241 -0
  401. package/src/scripts/measure_risk_class_drift.ts +140 -0
  402. package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
  403. package/src/scripts/media/lib/adapter-common.sh +211 -1
  404. package/src/scripts/media/lib/adapter-contract.md +74 -6
  405. package/src/scripts/model_rule_injection.ts +907 -0
  406. package/src/scripts/project_thin_rules.ts +45 -2
  407. package/src/scripts/release.ts +66 -860
  408. package/src/scripts/release_drill.ts +59 -3
  409. package/src/scripts/release_env.ts +298 -0
  410. package/src/scripts/release_publication.ts +720 -0
  411. package/src/scripts/roadmap_context.ts +778 -0
  412. package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
  413. package/src/scripts/schemas/pack.schema.json +62 -4
  414. package/src/scripts/schemas/rule.schema.json +24 -2
  415. package/src/scripts/schemas/skill.schema.json +41 -2
  416. package/src/scripts/schemas/ui-authority.schema.json +114 -0
  417. package/src/scripts/session_register_hook.ts +29 -3
  418. package/src/scripts/sessions_cli.ts +67 -3
  419. package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
  420. package/src/scripts/tighten_skill_descriptions.ts +264 -0
  421. package/src/scripts/token_sink_report.ts +239 -0
  422. package/src/scripts/trigger_coverage.ts +122 -3
  423. package/src/scripts/update_counts.ts +7 -3
  424. package/src/scripts/validate_frontmatter.ts +66 -0
  425. package/src/server/schemas/settings.ts +5 -0
  426. package/src/shared/skillRanking.ts +183 -0
@@ -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
@@ -0,0 +1,105 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "2a"
4
+ description: "A repository's own playbook outranks a shipped skill for the same task — run its configured steps first, and treat an observed playbook as advisory"
5
+ triggers:
6
+ - keyword: "playbook"
7
+ - keyword: "generator"
8
+ - keyword: "scaffold"
9
+ - phrase: "our own generator"
10
+ - phrase: "add a component"
11
+ - phrase: "new package"
12
+ - phrase: "unser generator"
13
+ applies_to_user_types:
14
+ - "developer"
15
+ - "maintainer"
16
+ # obligation: the precedence question comes due when a task arrives that both a
17
+ # playbook and a shipped skill answer — once per task, not per turn or per edit.
18
+ enforced_by:
19
+ - "instruction-only: no gate can tell a playbook-first run from a skill-first one — both produce a diff, and which answer was consulted leaves no artefact"
20
+ obligation_frequency: "per-task"
21
+ # frequency-override: the prose heuristic reads the Iron Law's "when both match a
22
+ # task" as a turn-level phrase. It is not: the precedence question is settled once
23
+ # per task, and re-deciding it on every turn of the same task would be the churn
24
+ # this rule exists to prevent.
25
+ routes_to:
26
+ - "skill:playbook-authoring"
27
+ workspaces: [engineering]
28
+ packs: [engineering-base]
29
+ ---
30
+
31
+ # Playbook Precedence
32
+
33
+ A shipped skill is a generic answer to a generic question. A **playbook** (ADR-244) is *this*
34
+ repository's answer to the same question, carrying decisions the repository already made —
35
+ file layout, barrel exports, test co-location, naming — that no generic skill can know.
36
+ When both match a task, running the generic one produces output that looks right and is
37
+ wrong for this repository.
38
+
39
+ ## The Iron Law
40
+
41
+ ```
42
+ A MATCHING PLAYBOOK GOES FIRST. THE SHIPPED SKILL COVERS ONLY WHAT IT DOES NOT.
43
+ `configured` STEPS ARE RUN. AN `observed` PLAYBOOK IS ADVISORY — READ IT, AND THE
44
+ SHIPPED SKILL'S GATES STILL APPLY IN FULL.
45
+ NEVER RUN A PLAYBOOK'S COMMAND SILENTLY — PROPOSE IT, THE HUMAN RUNS IT.
46
+ NEVER SYNTHESISE A COMMAND A PLAYBOOK DID NOT NAME.
47
+ ```
48
+
49
+ ## Routing — matched on scope, dispatched on grade
50
+
51
+ A playbook matches when its `scope` contains the current `scope_root`, or is the literal
52
+ `repo`. **The `grade` axis then decides what the match buys:**
53
+
54
+ | `grade` | What the agent does | Why |
55
+ |---|---|---|
56
+ | `configured` | run its steps first; the shipped skill covers only the remainder | every step's `invokes` id was resolved in the tree, so the procedure is verified, not inferred |
57
+ | `observed` | read it, follow it as advice, keep every shipped-skill gate | at least one id did not resolve — the steps are a hypothesis, and a hypothesis does not get to suspend a gate |
58
+
59
+ The grade is written by [`playbook-authoring`](../skills/playbook-authoring/SKILL.md), which
60
+ refuses to write `configured` for a generator it did not see. That refusal is what makes
61
+ this table safe to act on: without it, precedence would be granted on a claim rather than
62
+ on evidence.
63
+
64
+ ## When NOT to fire
65
+
66
+ - **No playbook matches** the task's scope — unchanged behaviour, and the absence is not a
67
+ reason to write one mid-task.
68
+ - **The task is not what the playbook covers.** A playbook for adding a component says
69
+ nothing about deleting one; a partial scope match is not a match.
70
+ - **The playbook's own § What this playbook does NOT cover** names the current task — it
71
+ ends where it says it ends, which is why that section is mandatory.
72
+
73
+ ## Failure modes
74
+
75
+ - Running a `configured` command **silently** because the playbook looks authoritative. It
76
+ is still a command the human runs; propose-never-silent-run is unchanged.
77
+ - Treating an `observed` playbook as `configured` because its steps read confidently.
78
+ - **Synthesising a neighbouring command** — the playbook names `turbo gen component`, the
79
+ agent runs `turbo gen page` because the task mentioned a page. A command the playbook did
80
+ not name has no repository authority behind it.
81
+ - Reaching for the shipped skill first *and then* reconciling with the playbook. The
82
+ reconciliation never happens; the generic output is already written.
83
+
84
+ ## Provenance
85
+
86
+ The precedence shape — prefer a repository's local generator over a general one, and let the
87
+ local answer bound the generic one — is taken from an external reference's generator skill.
88
+ The source is deliberately not named here: per
89
+ [`source-confidentiality`](source-confidentiality.md), a shipped artifact does not carry
90
+ derivation attribution to a named external project. The attribution lives with the
91
+ maintainer-side record.
92
+
93
+ ## See also
94
+
95
+ - [`playbook-authoring`](../skills/playbook-authoring/SKILL.md) — writes the playbooks and owns the grade.
96
+ - **ADR-244** — the artefact class, its home, and the two deferred generator kinds. Cited by number rather than linked: `docs/` is not projected into a consumer install, so a relative link here resolves in this repository and nowhere else.
97
+ - [`agents-md-thin-root`](../skills/agents-md-thin-root/SKILL.md) § Workspace files — the per-workspace pointer list.
98
+ - [`standards-from-config`](../skills/standards-from-config/SKILL.md) — the Class-A rule this applies to procedure.
99
+
100
+ ## Honest enforcement — `instruction-only`
101
+
102
+ Nothing can see which answer was consulted. A playbook-first run and a
103
+ skill-first run both produce a diff, and the precedence decision leaves no
104
+ artefact a gate could read — so this rule is model-carried, and saying so is
105
+ cheaper than a check that would have to guess.
@@ -21,6 +21,8 @@ workspaces: [agent-config-maintainer, engineering]
21
21
  packs: [meta]
22
22
  collision_ok:
23
23
  "schon wieder": "active-remediation makes a user 'leave it' terminal against the AGENT re-raising a closed item; this rule fires only when the USER brings it back — a decision-maker reopening their own decision is not the nagging that rule prevents"
24
+ enforced_by:
25
+ - "instruction-only: the earlier disposition, the three outcomes and the hardening are all prose; the self-repair occurrence counter covers only detector-matched defects"
24
26
  obligation_frequency: "per-task"
25
27
  ---
26
28
 
@@ -85,7 +87,7 @@ analysis prose by design, so "I found nothing" means *prose was grepped*, never
85
87
  - **The agent is the one repeating** — that is [`no-cheap-questions`](no-cheap-questions.md).
86
88
  - **Already resolved this task.** Once decided, it is decided.
87
89
 
88
- ## Honest enforcement — `enforced_by: none`
90
+ ## Honest enforcement — `instruction-only`
89
91
 
90
92
  One narrow deterministic signal exists. `src/scripts/_lib/self_repair.ts` keeps one
91
93
  record per defect fingerprint with an `occurrences` counter and reopens a released
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
+ norm:
5
+ tokens: 2400
6
+ remainder:
7
+ - "../docs/guidelines/agent-infra/roadmap-progress-mechanics.md"
8
+ - "../docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md"
4
9
  description: "Any roadmap touch (file move, checkbox flip, phase change) regens dashboard same response; archive at 0 open"
5
10
  triggers:
6
11
  - path_prefix: "agents/roadmaps/"
@@ -9,6 +14,7 @@ triggers:
9
14
  - command: "/roadmap:process-full"
10
15
  routes_to:
11
16
  - "guideline:agent-infra/roadmap-progress-mechanics"
17
+ - "guideline:agent-infra/roadmap-deferred-resolution-provenance"
12
18
  workspaces: [agent-config-maintainer, engineering]
13
19
  packs: [meta]
14
20
  roles: [planner]
@@ -86,16 +92,12 @@ in the estate?**
86
92
  blocker id · every option · verdict + one-sentence rationale · dissent ·
87
93
  destination when carried · what closes it. A verdict with no record is a
88
94
  silent drop wearing a procedure.
89
- - **The residual hole, stated not papered over.** Both authoring seats named
90
- it in their own strongest counter: a carried follow-up can still become an
91
- indefinite deferral, so this test bounds *who decides*, not *whether the work
92
- happens*. Only fix-now discharges it. A carried item untouched at the next
93
- task boundary is raised again per [`active-remediation`](active-remediation.md).
94
- - **Why it changed.** Adopted 2026-08-19, unanimous 2/2 council (blind peer
95
- review). The prior text — *"Wait for the user"* — handed back a fully
96
- analysed choice with four costed options, the low-value interruption
97
- [`no-cheap-questions`](no-cheap-questions.md) forbids. The gate protects the
98
- item, not the maintainer's attention.
95
+ - **The residual hole, and why the test changed** — a carried follow-up can
96
+ still become an indefinite deferral, so this test bounds *who decides*, not
97
+ *whether the work happens*; only fix-now discharges it, and a carried item
98
+ untouched at the next task boundary is raised again per
99
+ [`active-remediation`](active-remediation.md). Provenance and the argument:
100
+ [`roadmap-deferred-resolution-provenance`](../docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md).
99
101
 
100
102
  ### `deferred_policy` — a declared contract removes the round, never the route
101
103
 
@@ -112,9 +114,8 @@ It changes **when the round happens**, never **who decides**:
112
114
  Recorded-or-it-did-not-happen applies unchanged to an automatic spawn, and
113
115
  fail-closed binds hardest here: a spawn naming a follow-up that does not exist
114
116
  yet reaches the user, because a contract cannot pre-authorize a promise.
115
- Reversible — `wait` is the default, so removing the field restores always-wait
116
- (`decision 2026-08-20`, AI council 2/2; record
117
- `agents/evidence/council/drain-blocker-dispositions-a.md`).
117
+ Reversible — `wait` is the default, so removing the field restores always-wait;
118
+ provenance in the mechanics guideline.
118
119
 
119
120
  ## Later disposition — blocked-for-later roadmaps are parked, never left active
120
121