@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
@@ -0,0 +1,88 @@
1
+ ---
2
+ model_tier: medium
3
+ name: design
4
+ disable-model-invocation: true
5
+ argument-hint: "[audit|render|review|polish|quieter|bolder|distill|harden|clarify] [path]"
6
+ pack: engineering-base
7
+ intent: "Design dispatcher — inventory, capture, review, or run one bounded intervention verb"
8
+ routes_to: [existing-ui-audit, design-review, fe-design]
9
+ replaces: []
10
+ visibility: internal
11
+ description: Design orchestrator — routes audit/render/review to the Class-A commands and the six intervention verbs to fe-design with a declared operation
12
+ cluster: design
13
+ type: orchestrator
14
+ suggestion:
15
+ eligible: true
16
+ trigger_description: "audit this UI, render it, review the design, polish or tighten this screen"
17
+ trigger_context: "user wants something done to an existing UI surface without naming which design workflow"
18
+ workspaces:
19
+ - agent-config-maintainer
20
+ packs:
21
+ - meta
22
+ ---
23
+
24
+ # /design
25
+
26
+ One entry point for work on an existing UI surface. A **command**, not a skill —
27
+ the skill catalogue is already the largest standing cost in this suite, and this
28
+ adds a router rather than a 295th entry to it.
29
+
30
+ ## Sub-commands
31
+
32
+ | Verb | Routes to | What it does |
33
+ |---|---|---|
34
+ | `audit` | `agent-config ui:audit` | Inventory the tree into `agents/runtime/state/ui-audit.json`. Class A. |
35
+ | `render` | `agent-config ui:render` | Capture desktop / 375 / 320 into `agents/runtime/state/render/`. Class A. |
36
+ | `review` | [`design-review`](../../../skills/design-review/SKILL.md) | Two-pass review — judgement before detector, or the `DEGRADED: single-context` banner. |
37
+ | `polish` | [`fe-design`](../../../skills/fe-design/SKILL.md) | Spacing, rhythm, alignment. |
38
+ | `quieter` | `fe-design` | Spacing, weight, contrast within the palette. |
39
+ | `bolder` | `fe-design` | Palette, type family, weight, scale. |
40
+ | `distill` | `fe-design` | Content density, spacing. |
41
+ | `harden` | `fe-design` | Accessibility, focus, contrast within the palette. |
42
+ | `clarify` | `fe-design` | Hierarchy, copy, labels. |
43
+
44
+ ## The six verbs are one field, not six commands
45
+
46
+ Each verb declares the `ui_authority` dimensions it may touch
47
+ ([contract](../../../docs/contracts/ui-authority.md) § The six operations).
48
+ That makes a collision **decidable** rather than a judgement call:
49
+
50
+ ```
51
+ A VERB WHOSE DECLARED DIMENSIONS COLLIDE WITH A CONSTRAINT SURFACES A
52
+ `conflicts[]` ENTRY AND PERFORMS NO WRITE. IT NEVER "MOSTLY" APPLIES.
53
+ ```
54
+
55
+ `bolder` under `change_intent: preserve` is the worked case: it wants `palette`
56
+ and `type_family`, both locked, so it reports two conflicts and writes nothing.
57
+ `polish` under the same authority is clean, because spacing and rhythm are
58
+ outside the preserve threshold — which is the whole reason that threshold is
59
+ narrow.
60
+
61
+ ## No argument — the menu is built from artefacts, not from a list
62
+
63
+ With no verb, read what is actually on disk and offer only what applies:
64
+
65
+ 1. `agents/runtime/state/ui-audit.json` — present and fresh? Its `audit_path`
66
+ and `coherence_signals` say whether an audit is needed at all.
67
+ 2. `agents/runtime/state/render/*/manifest.json` — the last capture, its
68
+ `verification`, and any `horizontal_overflow: true` viewport.
69
+ 3. The changed UI files in the working tree, per `_lib/ui_surface.ts`.
70
+
71
+ A menu assembled from those three is a menu about this repository. A fixed list
72
+ of nine verbs is a menu about this command, which is not what the user asked.
73
+
74
+ ## Order
75
+
76
+ `audit` before any write on a non-trivial change; `render` before a verdict that
77
+ claims anything about a viewport; `review` after the write. A verdict with no
78
+ render says which static checks ran and scopes itself — it never says "looks
79
+ good" with nothing behind it.
80
+
81
+ ## Do NOT
82
+
83
+ - Do NOT add a tenth verb without removing one. The point of one field is that
84
+ the set stays small enough to reason about.
85
+ - Do NOT apply a verb whose conflicts array is non-empty.
86
+ - Do NOT infer `surface_mode` or `change_intent` here — read the authority
87
+ object. Re-deriving them is the drift the contract exists to prevent.
88
+ - Do NOT promote this to a skill. The routing is the whole content.
@@ -34,6 +34,27 @@ Gather in parallel:
34
34
  - Check for module roots (resolve via `scripts/_lib/agent_settings.ts::enumerate_modules()`; Laravel shape: `app/Modules/`), multi-tenant indicators (`customer_database`)
35
35
  - Read: `AGENTS.md`, `.github/copilot-instructions.md` (if exist)
36
36
 
37
+ **Assurance dimensions — do NOT hand-detect these.** Run
38
+
39
+ ```bash
40
+ ./scripts-run src/scripts/grade_target_readiness --target <project root>
41
+ ```
42
+
43
+ It probes the ten readiness dimensions in one pass — test-runner config
44
+ (vitest/jest/phpunit/pest/pytest), mutation config (`stryker.conf.*`,
45
+ `infection.json*`, `[tool.mutmut]`), property-based libraries, static analysis
46
+ (`phpstan.neon`, `psalm.xml`, `tsconfig.json`), architecture gates
47
+ (`.dependency-cruiser.*`, `deptrac.yaml`), SAST (`.semgrep*`, bandit),
48
+ lockfiles, audit steps, `CODEOWNERS`, decision-record directories — **and
49
+ whether CI actually blocks on each**, which is the 1 → 2 distinction a
50
+ hand-read gets wrong: a job that exists is `Present`, a job that can fail the
51
+ build is `Enforced-in-CI`.
52
+
53
+ Hand-detecting these was tried and rejected: a gather list in this file cannot
54
+ be asserted by a test, and step 1.1 of the source roadmap requires that each
55
+ dimension's presence be detected **and its absence not be**, both pinned by a
56
+ vitest spec. That spec is `tests/scripts/grade_target_readiness.test.ts`.
57
+
37
58
  Display:
38
59
 
39
60
  ```
@@ -58,6 +79,32 @@ TECH STACK:
58
79
  Frontend: {Vue / React / Blade / none}
59
80
  Testing: {Pest / PHPUnit}
60
81
 
82
+ ───────────────────────────────────────────────
83
+ READINESS (verbatim from grade_target_readiness)
84
+ ───────────────────────────────────────────────
85
+
86
+ L{n} — bound by {dimension}
87
+
88
+ {the ten rows, exactly as the script printed them}
89
+
90
+ **Print the script's output verbatim. Do not summarise it and do not compute
91
+ anything from it.** Three rules, each of which the script already enforces and
92
+ which this template must not undo:
93
+
94
+ 1. **Never emit an aggregate.** No percentage, no `x/100`, no mean, no letter
95
+ grade. A single number is the vanity metric this section exists to avoid, and
96
+ a ten-row vector with a binding dimension is the whole point of the format.
97
+ 2. **The level is the MINIMUM over the four knockout dimensions** — test presence
98
+ & types, static analysis & types, CI enforcement, security & supply chain.
99
+ Nine dimensions at 3 and one knockout at 0 is `L0`, not "mostly ready".
100
+ 3. **`not detectable` is not `0`.** A `0` claims the target lacks something; `not
101
+ detectable` says this tool cannot tell. For a Python target, static analysis
102
+ prints `not detectable — quality-tools has no Python mode`, and because that
103
+ dimension is a knockout it **binds at L0 with the reason shown**.
104
+
105
+ Whether a missing gate then gets created in the target is out of scope here —
106
+ this section grades, it does not install.
107
+
61
108
  ───────────────────────────────────────────────
62
109
  TOOLING:
63
110
  ───────────────────────────────────────────────
@@ -3,12 +3,12 @@ model_tier: high
3
3
  name: review-changes
4
4
  pack: engineering-base
5
5
  intent: "Multi-judge review of the current diff — bugs, security, tests, quality, architecture"
6
- routes_to: [code-review, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens]
6
+ routes_to: [code-review, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, overbuild-review-lens]
7
7
  replaces: []
8
8
  visibility: internal
9
9
  sub: changes
10
10
  cluster: review
11
- skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, judge-synthesis, git-workflow]
11
+ skills: [code-review, subagent-orchestration, judge-bug-hunter, judge-security-auditor, judge-test-coverage, judge-code-quality, architecture-review-lens, overbuild-review-lens, judge-synthesis, git-workflow]
12
12
  description: Self-review local changes before creating a PR — dispatches to six specialized judges (bug, security, tests, quality, architecture, spec) and consolidates verdicts
13
13
  suggestion:
14
14
  eligible: false
@@ -122,10 +122,21 @@ PR body, commit messages) and runs independently. The judges are:
122
122
  | [`judge-code-quality`](../../skills/judge-code-quality/SKILL.md) | Naming, SRP, DRY, dead code, consistency with codebase conventions |
123
123
  | [`architecture-review-lens`](../../skills/architecture-review-lens/SKILL.md) | Layer violations, dependency direction, leaky abstractions, cross-service contract drift |
124
124
  | [`judge-spec-compliance`](../../skills/judge-spec-compliance/SKILL.md) | Does the diff satisfy every acceptance criterion **as stated**? Reads the criteria before the diff, and never infers them from it |
125
+ | [`overbuild-review-lens`](../../skills/overbuild-review-lens/SKILL.md) | Speculative abstraction, premature generality, features nobody asked for, a rewrite where an edit was the task |
125
126
 
126
- The six judges weight equally in the consolidated verdict — none
127
+ The seven judges weight equally in the consolidated verdict — none
127
128
  overrides another.
128
129
 
130
+ **Why the seventh exists (road-to-trigger-delivered-rule-bodies A5).**
131
+ `overbuild-review-lens` shipped and **no command routed to it** — `grep -rln
132
+ overbuild-review-lens dist/agent-src/commands/` returned nothing, so a lens
133
+ built to catch the most common failure of AI-written code was reachable only by
134
+ being asked for by name. The other six all ask whether the diff is *good*; this
135
+ one asks whether it should have been this *large*, which is the one question a
136
+ diff cannot answer about itself. It is dispatched on demand like the others, so
137
+ it adds no standing token cost — verified: `check_preamble_payload_budget`'s
138
+ measured total is unchanged by this routing.
139
+
129
140
  **Why the sixth exists, and why it is not a severity.** The other five all ask a
130
141
  craft-or-correctness question, so a change that is correct, clean, well-tested
131
142
  and architecturally sound — and **does not do what was asked** — used to pass
@@ -146,12 +157,12 @@ Pick dispatch mode based on diff size and environment:
146
157
 
147
158
  - **Sequential** (default, simplest) — run bug-hunter → security-auditor
148
159
  → test-coverage → code-quality → architecture-review-lens →
149
- spec-compliance, collect each verdict
160
+ spec-compliance → overbuild, collect each verdict
150
161
  - **Parallel** — if `subagents.max_parallel` in `.agent-settings.yml` is
151
- ≥ 5 and subagent dispatch is available, run all six concurrently
162
+ ≥ 5 and subagent dispatch is available, run all seven concurrently
152
163
  following the `do-in-parallel` pattern in
153
164
  [`subagent-orchestration`](../../skills/subagent-orchestration/SKILL.md);
154
- the six judges operate on the same diff but produce independent
165
+ the seven judges operate on the same diff but produce independent
155
166
  reports, so no shared-state risk
156
167
 
157
168
  Each judge returns its own `Judge / Model / Target / Verdict /
@@ -189,6 +200,56 @@ If picked **1**:
189
200
 
190
201
  If picked **2** → continue with internal judges only.
191
202
 
203
+ ### 4b-fresh. The fresh reviewer — the one input with no implementation context
204
+
205
+ The six judges above all read **the same diff plus the task context**, and on the common
206
+ path they run in-session: the party that wrote the diff also reads it, with the whole
207
+ implementation context in scope. That is a self-review, and calling it a review is the
208
+ defect `road-to-review-independence` exists to close.
209
+
210
+ So a **seventh input** is added, and its distinguishing property is a negative one: it
211
+ has **no implementation context**. Not a new mechanism —
212
+ [`dispatch_r2_reviewer.ts`](../../../../scripts/dispatch_r2_reviewer.ts) already derives
213
+ the scope and persists the prompt it sent:
214
+
215
+ ```bash
216
+ ./scripts-run src/scripts/dispatch_r2_reviewer --slug <slug> --base origin/main
217
+ ```
218
+
219
+ The six in-session judges stay exactly as they are. This is an addition, not a
220
+ replacement — a fresh reviewer is worse than a spec judge at spec compliance, and the
221
+ point is not to be better at their job but to be uncontaminated by the author's framing.
222
+
223
+ **When the route is taken.** Whenever the diff is going to a PR — i.e. every
224
+ pre-PR review, which is what this command's own opening line describes itself as. It is
225
+ skipped only for a diff that will not be proposed to anyone: a scratch branch, a probe,
226
+ a measurement re-run.
227
+
228
+ **When dispatch is unavailable — the honest degraded answer.** If a fresh dispatch cannot
229
+ be made (no subagent primitive on this host, a spend ceiling, a dispatcher error), the
230
+ review **says so in the report** and records `fresh_review: unavailable` with the reason.
231
+ It does **not** fall back to the in-session judges and present the result as a review:
232
+
233
+ ```
234
+ A SELF-REVIEW PRESENTED AS A REVIEW IS THE DEFECT, NOT THE DEGRADED MODE.
235
+ NO FRESH REVIEWER -> THE REPORT SAYS SO. NEVER SILENTLY.
236
+ ```
237
+
238
+ That wording is deliberate. A silent fallback is worse than a missing input, because the
239
+ reader cannot tell which one they got — and this command's own `criteria_source` table
240
+ already applies the same rule to a different input (`not_provided` is never a pass).
241
+
242
+ **The implementer envelope does NOT reach this reviewer.** The judge prompts hand it over
243
+ on purpose — `prompts/do-and-judge.md:70` carries an `IMPLEMENTER ENVELOPE:` line with the
244
+ envelope placeholder — which is correct for a judge validating a claim and wrong for a
245
+ reviewer whose entire value is not having the author's framing.
246
+
247
+ The placeholder is described rather than written out here on purpose: step 1.3's verify is
248
+ a grep for its **absence** from this route, and prose that trips a grep-shaped verify is a
249
+ trap for the next reader. The asymmetry is stated in
250
+ [`prompts/README.md`](../../../../skills/subagent-orchestration/prompts/README.md) so the
251
+ next prompt author does not copy the envelope line into a fresh-reviewer template.
252
+
192
253
  ### 4c. Optional adversarial verification council (opt-in, high-risk)
193
254
 
194
255
  Read `subagents.adversarial_council` from `.agent-settings.yml` (default
@@ -35,6 +35,50 @@ lookup, and assess the four 95%-conditions against the seed.
35
35
  - **Explicit user bypass** ("just write it") → skip the gate for this turn;
36
36
  count the bypass.
37
37
 
38
+ ### 0b. Context probe — before step 1
39
+
40
+ ```bash
41
+ agent-config roadmap:context
42
+ ```
43
+
44
+ Run it before gathering any content, and surface its hits to the user as ONE
45
+ list:
46
+
47
+ - an `agents/tmp/` inbox note on the same topic (names only — the probe never
48
+ reads the bodies);
49
+ - a sibling roadmap in `later/`, `stubs/`, `archive/` or the active set whose
50
+ slug or title shares the topic;
51
+ - an open PR touching the paths the new roadmap would cite.
52
+
53
+ This is the axis step 6's collision check cannot reach. That check is a
54
+ recursive `find -iname`, so it already covers `later/`, `stubs/` and `archive/`
55
+ — **lexically**. Same topic under a different name passes it clean, and the
56
+ probe is the semantic half.
57
+
58
+ Naming an overlap is **required**, not optional, and it is coordination rather
59
+ than content generation — see the amended rule below.
60
+
61
+ **Then write the `relates:` block from the hits** (template rule 18). One
62
+ numbered-options question per hit — `extends` / `supersedes` / `depends` /
63
+ `disjoint` — and the relation is never inferred: `extends` and `supersedes` rest
64
+ on the same lexical evidence and are opposite decisions, so guessing manufactures
65
+ the reflex-empty failure in a louder form. A `depends` answer mirrors into
66
+ `depends:` in the same edit.
67
+
68
+ Zero hits needs no question — it is fully determined, so write it silently:
69
+
70
+ ```bash
71
+ agent-config roadmap:context --relates # prints the block, ready to paste
72
+ ```
73
+
74
+ ```yaml
75
+ relates: [] # scanned: 716 roadmap file(s), 0 sibling hits
76
+ ```
77
+
78
+ The `scanned:` count is what separates *somebody looked and found nothing* from
79
+ *nobody looked*; without it the empty list carries no information and is worse
80
+ than an absent field.
81
+
38
82
  ### 1. Determine location
39
83
 
40
84
  Ask the user (in their language) where the roadmap should be created:
@@ -313,6 +357,11 @@ Failure modes covered by this hard stop:
313
357
  ### Rules
314
358
 
315
359
  - **Do NOT auto-generate content** — always ask the user for input.
360
+ - **Naming an overlap is coordination, not content generation, and it is
361
+ required.** The rule above governs the roadmap's *substance*; it never
362
+ licenses staying silent about a sibling roadmap, an inbox note, or an open PR
363
+ that step 0b's probe surfaced. Report every hit, let the user decide what it
364
+ means, and write the outcome into the `relates:` block (template rule 18).
316
365
  - **Do NOT commit or push.**
317
366
  - **Do NOT offer execution after save** — Step 11 is a hard stop.
318
367
  Execution starts on a later turn with an explicit execution verb
@@ -34,20 +34,28 @@ One invocation = one roadmap = one branch = one PR.
34
34
  Selection reads live state, never memory, a dashboard count, or an
35
35
  earlier fetch (per [`direct-answers`](../../rules/direct-answers.md)
36
36
  Iron Law 2 and [`roadmap-process-loop § 1`](../../contexts/execution/roadmap-process-loop.md#1-resolve-roadmap)).
37
- Run as ONE block:
37
+ Run ONE command:
38
38
 
39
39
  ```bash
40
- git fetch origin --prune
41
- git ls-tree --name-only origin/main agents/roadmaps/ # still active?
42
- git ls-tree --name-only origin/main agents/roadmaps/archive/ # already closed?
43
- gh pr list --state open --json number,title,headRefName # in flight?
44
- agent-config sessions:list # claimed right now?
40
+ agent-config roadmap:context
45
41
  ```
46
42
 
47
- `sessions:list` without `--json` on purpose: the human form carries **both**
48
- axes — the live records AND the unmerged branches checked out in other
49
- worktrees. `--json` returns only the records unless `--branches` is passed, and
50
- the branch axis is the one that does not need a peer to have claimed anything.
43
+ The four hand-written reads this block used to carry — the pruning fetch, the
44
+ active and archived roadmap listings, the open-PR listing, and the session
45
+ register — are now one probe
46
+ ([`roadmap_context.ts`](../../../../scripts/roadmap_context.ts)), so all five
47
+ `/roadmap:*` entry points screen the same way instead of one command file
48
+ screening well and four not screening at all.
49
+
50
+ Both session axes are still in the report and for the same reason: the live
51
+ records AND the unmerged branches checked out in other worktrees. The branch
52
+ axis is the one that does not need a peer to have claimed anything, and it is
53
+ the half that cannot be silent.
54
+
55
+ The probe never refuses. With no network, no `gh`, or no authentication it
56
+ prints `scanned: 0 PRs (network unavailable)` and exits 0 — a probe that failed
57
+ closed would make the call site conditional, which is the failure this
58
+ extraction removes.
51
59
 
52
60
  Excluded from the candidate set: `template.md`, `archive/`,
53
61
  `skipped/`, `later/`, anything with `status: draft` whose promotion
@@ -157,9 +165,17 @@ GOODHART MOVE THIS PACKAGE'S OWN DISCIPLINE FORBIDS.
157
165
  ### 3b. Claim the pick, so the next session's screen sees it
158
166
 
159
167
  ```bash
160
- agent-config sessions:claim <roadmap-slug>
168
+ agent-config sessions:claim <roadmap-slug> [--paths src/a.ts,src/b.ts]
161
169
  ```
162
170
 
171
+ `--paths` publishes the run's owned-path set — the same set the § 2 screen
172
+ derived — into the session record as `owned_paths`. It is what turns the third
173
+ collision axis on: without it a peer editing the same file under a different
174
+ roadmap and a different branch name is invisible on every axis, which is the
175
+ shape of the two duplications the branch axis already failed to catch. Declaring
176
+ nothing degrades to today's behaviour exactly, and the field is absent rather
177
+ than empty in the record.
178
+
163
179
  Immediately after the pick, before any branch or commit. This writes the slug
164
180
  into `agents/runtime/state/roadmap-claim-<session>.json`; the next heartbeat lifts
165
181
  it into this session's register record, so another session's step 1 excludes it
@@ -98,6 +98,20 @@ command already does.
98
98
  `archive/` and `stubs/` are out of scope.
99
99
  2. **Order the queue.** Roadmaps at or above 10 % checkbox progress first, in
100
100
  **descending** progress — nearly-done first, because they convert soonest.
101
+
102
+ **This is a recorded exception to [`/roadmap:next` § 3](../next/command.md),
103
+ not an oversight.** That command's Iron Law is explicit: *"RANK BY DEFECT
104
+ SEVERITY, NEVER BY PERCENT-DONE OR STEP COUNT … picking by checkbox count is
105
+ the Goodhart move this package's own discipline forbids."* This step orders by
106
+ exactly that. The two are not in conflict because they answer different
107
+ questions: `next` **selects one** roadmap out of many and must not be gamed by
108
+ a cheap-to-finish file, while `--all` has already committed to draining the
109
+ **whole** estate — every member runs, so the ranking decides only the order in
110
+ which finished work becomes reviewable, never what gets done. Under a total
111
+ drain the Goodhart pressure is absent by construction: there is nothing to
112
+ pick, so a proxy cannot be optimised against.
113
+ The exception is scoped to `--all`. A single-roadmap invocation of this
114
+ command selects nothing and inherits `next`'s doctrine unchanged.
101
115
  Roadmaps below 10 % are appended after, ascending by declared `complexity:`
102
116
  tier (lightweight → bounded → structural), tiebreak ascending total
103
117
  checkbox count. Both buckets need a **total** order or two runs over the
@@ -6,7 +6,7 @@ visibility: internal
6
6
  cluster: video
7
7
  sub: from-script
8
8
  description: Drive a script end-to-end through the AI video pipeline — scenes → blueprint → image → operator pick → motion → video → stitch. Preview default; --mode commit spends behind the cost gate.
9
- argument-hint: "<path-to-script.md> [--mode preview|commit] [--max-spend-usd <usd>] [--image-provider <id>] [--video-provider <id>]"
9
+ argument-hint: "<path-to-script.md> [--mode preview|commit] [--max-spend-usd <usd>] [--no-calibrate] [--{image,video}-provider <id>]"
10
10
  personas: [hollywood-director, ai-video-technical-director]
11
11
  skills: [scene-expander, video-director, pixar-storyteller, character-consistency, motion-choreographer]
12
12
  suggestion:
@@ -20,7 +20,7 @@ packs:
20
20
 
21
21
  # /video:from-script
22
22
 
23
- `/video:from-script <path-to-script.md> [--mode preview|commit] [--max-spend-usd <usd>] [--image-provider <id>] [--video-provider <id>]`
23
+ `/video:from-script <path-to-script.md> [--mode preview|commit] [--max-spend-usd <usd>] [--no-calibrate] [--image-provider <id>] [--video-provider <id>]`
24
24
 
25
25
  Drives a Markdown script through the full pipeline. Provider flags
26
26
  override the `<default-image-provider>` / `<default-video-provider>`
@@ -89,9 +89,66 @@ For each scene blueprint:
89
89
  `0`). When `--max-spend-usd` is set and the summed estimate exceeds
90
90
  it, hard-block before the first live call — confirmation does not
91
91
  override the cap.
92
- 3. Call the image adapter (`run` subcommand) N times where N =
92
+ 3. **Calibration probe (default on; `--no-calibrate` skips).** Before the
93
+ batch, render exactly **one** still and **one** clip, then run:
94
+
95
+ ```bash
96
+ scripts/ai-video/lib/calibrate-cost.sh <project> <scene-id> \
97
+ --adapter <id> --model <id> --scenes <n>
98
+ ```
99
+
100
+ It reads the `charged_usd` the pipeline already writes to
101
+ `<project>/scenes/<id>/cost.json` and prints one line:
102
+
103
+ ```
104
+ calibration: modeled $0.0800/s · charged $0.1100/s · +37.5 % · extrapolated batch $4.40 (modeled $3.20)
105
+ ```
106
+
107
+ Re-confirm **only** when the charged figure exceeds the modeled one by
108
+ more than **25 %** — the script exits **13** in that case and **0**
109
+ otherwise. Under the threshold, print the line and continue: a calibration
110
+ that interrupts on every run is a confirmation nobody reads.
111
+
112
+ Exit 13 is a halt for a human, not a failure. `--max-spend-usd` is not a
113
+ substitute for it — that cap bounds *total spend*, while this catches a
114
+ wrong *per-second model*, which is what makes the total wrong in the first
115
+ place.
116
+
117
+ This folds into the existing `lib/operator-pick.sh` moment rather than
118
+ adding a gate of its own, so the operator sees the calibration line at
119
+ the checkpoint they were already stopping at.
120
+
121
+ `charged: null` is **not** `0`: an unpriceable or not-yet-charged scene
122
+ prints `charged: null`, extrapolates nothing, and never re-confirms. A
123
+ modeled figure is only ever corrected by a measured one.
124
+
125
+ Every reading appends one row to
126
+ `agents/evidence/ai-video/cost-ledger.jsonl` — see § Cost ledger below.
127
+ The read-back itself is not new: `lib/resume-scan.sh` already reads
128
+ `cost.json .charged_usd` and sums it as `spent_usd`. What is new is that
129
+ the number now **feeds back**: before this, money spent was recorded and
130
+ never read into the model it contradicted.
131
+
132
+ 4. Call the image adapter (`run` subcommand) N times where N =
93
133
  `<tuning/best-of-n>` (default 1).
94
134
 
135
+ ### 5b. Cost ledger — the only route from charged to modeled
136
+
137
+ `manifest.cost_per_second_usd` is a **modeled** estimate. It may be
138
+ re-modeled only from measured charges, and only with the rows it averaged
139
+ cited in the same diff:
140
+
141
+ ```bash
142
+ # one row per (adapter, model) reading, append-only
143
+ {"adapter":"fal","model":"fal-ai/ltx-2/text-to-video","modeled":0.16,"charged":0.21,"date":"2026-08-23"}
144
+ ```
145
+
146
+ `lint_adapter_tier --cost-diff <base-ref>` **warns** when a manifest's
147
+ `cost_per_second_usd` changed in a diff that adds no ledger row. A warning,
148
+ not a failure: re-modelling an estimate is a legitimate human act. Doing it
149
+ silently *after* a live run measured the real charge is not — that is the
150
+ moment a guess becomes a contradicted measurement.
151
+
95
152
  ### 6. Operator pick (best-of-N checkpoint)
96
153
 
97
154
  ```bash
@@ -55,6 +55,20 @@ the first missing clip) flags. Reject any other flag — this command
55
55
  does not render, so `--image-provider` / `--video-provider` are
56
56
  contract bugs.
57
57
 
58
+ **`--mode` and `--xfade` exist on the script and are deliberately not
59
+ reachable from here.** `stitch.sh` now carries `--mode cut|handoff`, and in
60
+ handoff mode an optional `--xfade <s>` (≤ 0.25) at handoff seams. `cut` is the
61
+ default and is byte-identical to the only behaviour this command has ever
62
+ produced. `handoff` **re-encodes** (`libx264 -crf 20 -g 8 +faststart -an`) where
63
+ `cut` stream-copies, so it pays a generation loss and drops audio — a spend-free
64
+ but not cost-free change of the output. Reaching it needs the seam plan that
65
+ `lib/seam-plan.sh` builds from per-scene `continuity:` directives, which this
66
+ command does not read. Passing either flag here is therefore rejected by the
67
+ rule above, and that is the intended answer, not a gap: the continuity path is
68
+ driven from `/video:from-script`, and `--crossfade` remains refused in every
69
+ mode. Port invariants: `docs/contracts/skill-bundled-assets.md` § Port
70
+ invariants.
71
+
58
72
  ### 4. Stitch
59
73
 
60
74
  ```bash
@@ -11,6 +11,7 @@ before writing or reviewing code); this file is the catalog.
11
11
  |---|---|
12
12
  | `abstraction-thresholds.md` | Per-class extraction-threshold canon (code 2 · UI shell 3+ · stateful component ~4+state · utility-class string ≥3) — the single source every numeric threshold cites (ADR-213) |
13
13
  | `code-clarity.md` | Cross-language clarity rules — inline single-use values, carve-outs (side effects, loops, type narrowing, debugger) |
14
+ | `monorepo-antipatterns.md` | Diff-detectable monorepo task-graph anti-patterns (root scripts bypassing the runner, lifecycle-hook sibling builds, `&&`-chained tasks, shared code under `apps/`, `../` in `inputs`, missing `outputs`) plus the classes deliberately not harvested |
14
15
  | `component-oriented-and-oop-development.md` | Reuse-first components (FE) + OOP-where-it-reduces-complexity (backend); carve-out index; bounded by the anti-over-engineering anchors |
15
16
 
16
17
  ## PHP (`docs/guidelines/php/`)
@@ -95,6 +95,32 @@ L0–L4 are human shorthand for how deep a discovery went; they are documentatio
95
95
  only. The **same** evidence rules apply at every tier — no enforced state
96
96
  machine, no per-tier evidence relaxation.
97
97
 
98
+ ## Re-orient when the tree contradicts what you last read
99
+
100
+ External edits invalidate evidence. When the user mentions they changed something
101
+ outside this session, or a read contradicts the last known state of a file, the
102
+ prior observation is **stale, not wrong** — and acting on it overwrites work that
103
+ is not yours.
104
+
105
+ Five steps, in order:
106
+
107
+ 1. Treat every prior observation of the affected paths as invalidated.
108
+ 2. Re-read the state — `git status`, then the affected files themselves.
109
+ 3. Reconstruct the assumption that broke. A file did not vanish; it was renamed,
110
+ a block moved, a symbol was extracted. Find where it went before concluding
111
+ it is gone.
112
+ 4. Preserve the external work. Never restore from your own stale copy.
113
+ 5. Say what changed if the scope or the conclusion moved, rather than
114
+ continuing as though the earlier reading still held.
115
+
116
+ The failure this prevents is narrower than "be careful": it is re-applying a
117
+ diff computed against a tree that no longer exists, which looks like a clean
118
+ apply and silently reverts somebody's edit.
119
+
120
+ **No gate covers this.** It is a re-read the transcript cannot distinguish from
121
+ a first read, so it is model-carried — the same honesty boundary § Honest
122
+ enforcement reality states for the rest of this file.
123
+
98
124
  ## Honest enforcement reality
99
125
 
100
126
  ```