@event4u/agent-config 16.5.0 → 17.0.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 (1026) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +2 -2
  4. package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
  5. package/CHANGELOG.md +463 -498
  6. package/CONTRIBUTING.md +47 -0
  7. package/README.md +25 -25
  8. package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
  9. package/dist/agent-src/commands/agents/init.md +66 -3
  10. package/dist/agent-src/commands/agents/user/init.md +3 -0
  11. package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
  12. package/dist/agent-src/commands/analyze/inbox.md +168 -37
  13. package/dist/agent-src/commands/analyze/pr.md +144 -0
  14. package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
  15. package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
  16. package/dist/agent-src/commands/analyze.md +28 -12
  17. package/dist/agent-src/commands/audit.md +115 -0
  18. package/dist/agent-src/commands/brand/review.md +13 -2
  19. package/dist/agent-src/commands/brand/tokens.md +3 -3
  20. package/dist/agent-src/commands/brand/voice.md +8 -5
  21. package/dist/agent-src/commands/brand.md +2 -2
  22. package/dist/agent-src/commands/challenge-me/closure.md +25 -0
  23. package/dist/agent-src/commands/design-system/import.md +8 -3
  24. package/dist/agent-src/commands/design-system/sync.md +98 -0
  25. package/dist/agent-src/commands/design-system.md +6 -1
  26. package/dist/agent-src/commands/evals/analyze.json +44 -0
  27. package/dist/agent-src/commands/evals/audit.json +12 -0
  28. package/dist/agent-src/commands/evals/retro.json +12 -0
  29. package/dist/agent-src/commands/fix/ci.md +10 -8
  30. package/dist/agent-src/commands/ghostwriter/write.md +22 -0
  31. package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
  32. package/dist/agent-src/commands/memory/propose.md +12 -0
  33. package/dist/agent-src/commands/memory.md +1 -1
  34. package/dist/agent-src/commands/optimize.md +4 -3
  35. package/dist/agent-src/commands/post-as/me.md +18 -0
  36. package/dist/agent-src/commands/pr/create.md +17 -342
  37. package/dist/agent-src/commands/pr/merge.md +129 -368
  38. package/dist/agent-src/commands/retro.md +121 -0
  39. package/dist/agent-src/commands/review/routing.md +1 -1
  40. package/dist/agent-src/commands/roadmap/next.md +4 -1
  41. package/dist/agent-src/commands/roadmap/process-full.md +46 -333
  42. package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
  43. package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
  44. package/dist/agent-src/commands/team-knowledge.md +1 -1
  45. package/dist/agent-src/commands/threat-model.md +1 -1
  46. package/dist/agent-src/commands/upstream-contribute.md +91 -101
  47. package/dist/agent-src/commands/worktree/cleanup.md +18 -11
  48. package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
  49. package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
  50. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
  51. package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
  52. package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
  53. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
  54. package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
  55. package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
  56. package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
  57. package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
  58. package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
  59. package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
  60. package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
  61. package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
  62. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
  63. package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
  64. package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
  65. package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
  66. package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
  67. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
  68. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
  69. package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
  70. package/dist/agent-src/contexts/model-recommendations.md +5 -5
  71. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  72. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
  73. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
  74. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
  75. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
  76. package/dist/agent-src/guidelines/design-antipatterns.md +5 -0
  77. package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
  78. package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
  79. package/dist/agent-src/guidelines/php/api-design.md +10 -1
  80. package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
  81. package/dist/agent-src/rules/code-provenance.md +1 -1
  82. package/dist/agent-src/rules/context-hygiene.md +0 -1
  83. package/dist/agent-src/rules/design-fidelity.md +12 -13
  84. package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
  85. package/dist/agent-src/rules/fix-what-you-see.md +1 -1
  86. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
  87. package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
  88. package/dist/agent-src/rules/neighbour-precedence.md +1 -1
  89. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  90. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
  91. package/dist/agent-src/rules/self-repair-loop.md +2 -2
  92. package/dist/agent-src/rules/token-budget-discipline.md +1 -1
  93. package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
  94. package/dist/agent-src/scripts/roadmap_age.ts +175 -0
  95. package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
  96. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
  97. package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
  98. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
  99. package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
  100. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
  101. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
  102. package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
  103. package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
  104. package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
  105. package/dist/agent-src/skills/api-design/SKILL.md +2 -2
  106. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
  107. package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
  108. package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
  109. package/dist/agent-src/skills/brand/SKILL.md +7 -3
  110. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
  111. package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
  112. package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
  113. package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
  114. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
  115. package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
  116. package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
  117. package/dist/agent-src/skills/canvas-design/SKILL.md +12 -2
  118. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  119. package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
  120. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  121. package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
  122. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  123. package/dist/agent-src/skills/context-document/SKILL.md +2 -2
  124. package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
  125. package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
  126. package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
  127. package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
  128. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  129. package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
  130. package/dist/agent-src/skills/database/SKILL.md +5 -4
  131. package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
  132. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
  133. package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
  134. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  135. package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
  136. package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
  137. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
  138. package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
  139. package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
  140. package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +14 -14
  141. package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
  142. package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
  143. package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
  144. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
  145. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
  146. package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
  147. package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
  148. package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
  149. package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
  150. package/dist/agent-src/skills/docker/SKILL.md +1 -1
  151. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  152. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
  153. package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
  154. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
  155. package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
  156. package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
  157. package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
  158. package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
  159. package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
  160. package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
  161. package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
  162. package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
  163. package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
  164. package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
  165. package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
  166. package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
  167. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  168. package/dist/agent-src/skills/fe-design/references/design-patterns.md +16 -2
  169. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
  170. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  171. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
  172. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  173. package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
  174. package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
  175. package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
  176. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
  177. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
  178. package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
  179. package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
  180. package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
  181. package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
  182. package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
  183. package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
  184. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
  185. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  186. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
  187. package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
  188. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
  189. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  190. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
  191. package/dist/agent-src/skills/logo-generation/SKILL.md +9 -3
  192. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
  193. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  194. package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
  195. package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
  196. package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
  197. package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
  198. package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
  199. package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
  200. package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
  201. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  202. package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
  203. package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
  204. package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
  205. package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
  206. package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
  207. package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
  208. package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
  209. package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
  210. package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
  211. package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
  212. package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
  213. package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
  214. package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
  215. package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
  216. package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
  217. package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
  218. package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
  219. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
  220. package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
  221. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
  222. package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
  223. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  224. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  225. package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
  226. package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
  227. package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
  228. package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
  229. package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
  230. package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
  231. package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
  232. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
  233. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
  234. package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
  235. package/dist/agent-src/skills/security/SKILL.md +41 -5
  236. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
  237. package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
  238. package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
  239. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
  240. package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
  241. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
  242. package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
  243. package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
  244. package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
  245. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
  246. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
  247. package/dist/agent-src/skills/svg-authoring/SKILL.md +7 -1
  248. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  249. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
  250. package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
  251. package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
  252. package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
  253. package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
  254. package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
  255. package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
  256. package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
  257. package/dist/agent-src/skills/type-design/SKILL.md +196 -0
  258. package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
  259. package/dist/agent-src/skills/type-design/references/gates.md +113 -0
  260. package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
  261. package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
  262. package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
  263. package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
  264. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  265. package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
  266. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
  267. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
  268. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
  269. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
  270. package/dist/agent-src/templates/AGENTS.md +1 -1
  271. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  272. package/dist/agent-src/templates/agents/proposal.example.md +1 -1
  273. package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
  274. package/dist/agent-src/templates/roadmaps.md +39 -1
  275. package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
  276. package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
  277. package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
  278. package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
  279. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
  280. package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
  281. package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
  282. package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
  283. package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
  284. package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
  285. package/dist/cli/commands/uiRender.js +72 -17
  286. package/dist/cli/commands/uiRenderAsset.js +10 -2
  287. package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
  288. package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
  289. package/dist/cli/initRouting.js +1 -1
  290. package/dist/cli/mcp/dispatch.js +31 -9
  291. package/dist/cli/python/knowledge_ingest.js +7 -39
  292. package/dist/cli/python/workspace_secrets.js +4 -177
  293. package/dist/cli/registry.js +4 -1
  294. package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
  295. package/dist/cli-delegate/check_update_banner.js +635 -266
  296. package/dist/cli-delegate/{chunk-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -437
  297. package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
  298. package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
  299. package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
  300. package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
  301. package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
  302. package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
  303. package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
  304. package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
  305. package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
  306. package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
  307. package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
  308. package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
  309. package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
  310. package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
  311. package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
  312. package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
  313. package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
  314. package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
  315. package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
  316. package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
  317. package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
  318. package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
  319. package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
  320. package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
  321. package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
  322. package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
  323. package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
  324. package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
  325. package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
  326. package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
  327. package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
  328. package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
  329. package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
  330. package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
  331. package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
  332. package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
  333. package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
  334. package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
  335. package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
  336. package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
  337. package/dist/cli-delegate/cmd_adr_effective.js +41 -2
  338. package/dist/cli-delegate/cmd_analyze_session.js +7 -7
  339. package/dist/cli-delegate/cmd_brand_status.js +1287 -10
  340. package/dist/cli-delegate/cmd_ci_settle.js +330 -0
  341. package/dist/cli-delegate/cmd_conformance.js +483 -817
  342. package/dist/cli-delegate/cmd_doctor.js +26 -16
  343. package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
  344. package/dist/cli-delegate/cmd_explain.js +9 -24
  345. package/dist/cli-delegate/cmd_export.js +14 -11
  346. package/dist/cli-delegate/cmd_fleet.js +5 -3
  347. package/dist/cli-delegate/cmd_git_convention.js +8 -4
  348. package/dist/cli-delegate/cmd_handoff.js +79 -242
  349. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  350. package/dist/cli-delegate/cmd_memory_get.js +4 -2
  351. package/dist/cli-delegate/cmd_migrate.js +2 -2
  352. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  353. package/dist/cli-delegate/cmd_preflight.js +7 -5
  354. package/dist/cli-delegate/cmd_prune.js +16 -13
  355. package/dist/cli-delegate/cmd_route_audit.js +11 -8
  356. package/dist/cli-delegate/cmd_route_explain.js +649 -16
  357. package/dist/cli-delegate/cmd_session_recycle.js +15 -6
  358. package/dist/cli-delegate/cmd_settings_check.js +2 -2
  359. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  360. package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
  361. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  362. package/dist/cli-delegate/cmd_sync.js +16 -13
  363. package/dist/cli-delegate/cmd_uninstall.js +185 -31
  364. package/dist/cli-delegate/cmd_update.js +67 -3
  365. package/dist/cli-delegate/cmd_upgrade.js +38 -7
  366. package/dist/cli-delegate/cmd_validate.js +16 -13
  367. package/dist/cli-delegate/cmd_versions.js +1 -1
  368. package/dist/cli-delegate/dashboard_mode.js +1 -1
  369. package/dist/cli-delegate/gate_execute.js +4 -3
  370. package/dist/cli-delegate/roadmap_age.js +22 -0
  371. package/dist/cli-delegate/roadmap_gates.js +4 -3
  372. package/dist/cli-delegate/update_roadmap_progress.js +3 -2
  373. package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
  374. package/dist/discovery/deprecation-report.md +1 -1
  375. package/dist/discovery/discovery-manifest.json +373 -190
  376. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  377. package/dist/discovery/discovery-manifest.summary.md +5 -5
  378. package/dist/discovery/dormancy-report.md +1 -1
  379. package/dist/discovery/orphan-report.md +1 -1
  380. package/dist/discovery/packs.json +21 -16
  381. package/dist/discovery/trust-report.md +3 -3
  382. package/dist/discovery/workspaces.json +16 -11
  383. package/dist/hooks/chat_history.chunk.cjs +6852 -0
  384. package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
  385. package/dist/hooks/dispatch.js +17506 -18692
  386. package/dist/hooks/dispatch.sha256 +1 -1
  387. package/dist/hooks/egress_engine.chunk.cjs +915 -0
  388. package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
  389. package/dist/hooks/svg_rules.chunk.cjs +281 -49
  390. package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
  391. package/dist/install/conflict.js +36 -6
  392. package/dist/install/conflictTracker.js +81 -7
  393. package/dist/install/detect.js +3 -3
  394. package/dist/install/hostPermissionsAdapter.js +106 -0
  395. package/dist/install/install.mjs +3117 -1949
  396. package/dist/install/installThinLayer.js +1 -1
  397. package/dist/install/manifestFiles.js +21 -0
  398. package/dist/install/noGoDenyRows.js +300 -0
  399. package/dist/install/noGoRules.js +368 -0
  400. package/dist/install/ownershipLedger.js +133 -0
  401. package/dist/install/plan.js +1 -1
  402. package/dist/install/preflight.js +39 -8
  403. package/dist/install/preserve.js +74 -12
  404. package/dist/install/recordedOwnership.js +88 -5
  405. package/dist/install/rule_scope.js +20 -3
  406. package/dist/install/stagedRuntime.js +455 -0
  407. package/dist/install/toolsArg.js +19 -0
  408. package/dist/install/userPin.js +47 -0
  409. package/dist/install/wizard-plan.js +26 -4
  410. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  411. package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
  412. package/dist/mcp/registry-manifest.json +6 -5
  413. package/dist/mcp/server.json +3 -3
  414. package/dist/mcp/server.mjs +9831 -5546
  415. package/dist/router.json +1 -1
  416. package/dist/scripts/_lib/agent_settings.js +7 -12
  417. package/dist/scripts/_lib/asset_render_record.js +219 -0
  418. package/dist/scripts/_lib/claude_builtin_names.js +9 -4
  419. package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
  420. package/dist/scripts/_lib/egress_rules.js +766 -0
  421. package/dist/scripts/_lib/environment_detector.js +24 -33
  422. package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
  423. package/dist/scripts/_lib/guidelines_lane.js +10 -1
  424. package/dist/scripts/_lib/identifier_redaction.js +24 -0
  425. package/dist/scripts/_lib/installed_layer.js +17 -0
  426. package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
  427. package/dist/scripts/_lib/lean_projection_mode.js +34 -152
  428. package/dist/scripts/_lib/project_tree_form.js +118 -0
  429. package/dist/scripts/_lib/scoped_projection.js +133 -3
  430. package/dist/scripts/_lib/settings_removed_keys.js +29 -0
  431. package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
  432. package/dist/scripts/_lib/subagent_native_fields.js +35 -0
  433. package/dist/scripts/_lib/svg_filled_counter.js +285 -0
  434. package/dist/scripts/_lib/svg_rules.js +2 -0
  435. package/dist/scripts/_lib/ui_surface.js +19 -0
  436. package/dist/scripts/_lib/verification_command.js +364 -0
  437. package/dist/scripts/_lib/workspace_secrets.js +229 -0
  438. package/dist/scripts/ai_council/seat_policy.js +27 -0
  439. package/dist/scripts/ai_council/transport_resolver.js +9 -10
  440. package/dist/scripts/condense.js +25 -29
  441. package/dist/server/io/substituteTemplate.js +2 -2
  442. package/dist/server/io/yamlIO.js +2 -2
  443. package/dist/server/routes/install.js +5 -1
  444. package/dist/server/routes/settings.js +2 -2
  445. package/dist/server/routes/wizard.js +1 -1
  446. package/dist/server/schemas/settings.js +22 -16
  447. package/dist/server/serverInfo.js +1 -1
  448. package/dist/shared/brandTokenDocument.js +47 -0
  449. package/dist/shared/brandTokenPaths.js +43 -0
  450. package/dist/shared/settingsCarveOut.js +0 -7
  451. package/dist/shared/skillRanking.js +103 -5
  452. package/dist/shared/userMd/formAdapter.js +16 -0
  453. package/dist/shared/userMd/schema.js +17 -0
  454. package/dist/ui/assets/index-w70Ado09.js +23 -0
  455. package/dist/ui/index.html +1 -1
  456. package/docs/MIGRATION.md +89 -2
  457. package/docs/THIRD-PARTY-NOTICES.md +27 -0
  458. package/docs/contracts/settings-classes.md +27 -9
  459. package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
  460. package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
  461. package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
  462. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
  463. package/docs/guidelines/design-antipatterns.md +5 -0
  464. package/docs/guidelines/design-asset-discipline.md +17 -0
  465. package/docs/guidelines/design-fidelity-routing.md +1 -0
  466. package/docs/guidelines/php/api-design.md +10 -1
  467. package/llms.txt +12 -10
  468. package/package.json +13 -4
  469. package/src/agent-src/scripts/dashboard_mode.ts +4 -1
  470. package/src/agent-src/scripts/roadmap_age.ts +175 -0
  471. package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
  472. package/src/agent-src/templates/AGENTS.md +1 -1
  473. package/src/agent-src/templates/scripts/check_memory.ts +2 -2
  474. package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
  475. package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
  476. package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
  477. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
  478. package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
  479. package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
  480. package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
  481. package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
  482. package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
  483. package/src/config/agent-settings.template.yml +120 -57
  484. package/src/config/agents-paths.yml +13 -7
  485. package/src/config/ci-local-parity.yml +44 -0
  486. package/src/config/continuity-surface.json +51 -2
  487. package/src/config/depth-audit-samples.json +5 -0
  488. package/src/config/discovery/command-verbs.yml +1 -0
  489. package/src/config/dispatch-economy-metrics.json +1 -0
  490. package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
  491. package/src/config/egress-mutations/credential-token-restores.json +7 -0
  492. package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
  493. package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
  494. package/src/config/evaluator-budgets.json +4 -4
  495. package/src/config/gate-coverage.yml +149 -3
  496. package/src/config/gate-reachability-exemptions.json +3 -5
  497. package/src/config/gate-violation-baselines.json +26 -22
  498. package/src/config/gitignore-block.txt +6 -3
  499. package/src/config/hook-bundle-budget.json +34 -3
  500. package/src/config/hook-carrier-probes.json +30 -0
  501. package/src/config/hook-latency-budget.json +4 -2
  502. package/src/config/host-injection-effect.json +8 -1
  503. package/src/config/host-skill-frontmatter-keys.json +56 -0
  504. package/src/config/layer-form-brakes.json +4 -0
  505. package/src/config/layer-form-comparison-corpus.json +42 -0
  506. package/src/config/loop-surfaces.yaml +28 -47
  507. package/src/config/memory-twin-verdicts.yml +9 -1
  508. package/src/config/metric-registry.yml +40 -3
  509. package/src/config/pack-size-budget.json +15 -0
  510. package/src/config/procedure-core-budget.json +21 -0
  511. package/src/config/profiles/minimal.ini +1 -1
  512. package/src/config/project-tree-form.json +24 -0
  513. package/src/config/reach-channels.yml +3 -3
  514. package/src/config/reach-prescriptions-intake.yml +1 -1
  515. package/src/config/roadmap-step-size-baseline.json +118 -0
  516. package/src/config/routing-coverage-seed.json +93 -2
  517. package/src/config/skill-body-budget.json +686 -0
  518. package/src/config/skill-fork-pilot.json +17 -0
  519. package/src/config/skill-lifecycle-probes-codex.json +57 -0
  520. package/src/config/skill-lifecycle-probes.json +57 -0
  521. package/src/config/skill-output-shape.json +316 -0
  522. package/src/config/step-depth-table.json +58 -0
  523. package/src/config/turnaround-budget.json +90 -0
  524. package/src/install/conflict.ts +38 -6
  525. package/src/install/conflictTracker.ts +126 -8
  526. package/src/install/detect.ts +3 -3
  527. package/src/install/hostPermissionsAdapter.ts +136 -0
  528. package/src/install/installThinLayer.ts +6 -1
  529. package/src/install/manifestFiles.ts +24 -0
  530. package/src/install/noGoDenyRows.ts +368 -0
  531. package/src/install/noGoRules.ts +438 -0
  532. package/src/install/ownershipLedger.ts +180 -0
  533. package/src/install/plan.ts +1 -1
  534. package/src/install/preflight.ts +42 -10
  535. package/src/install/preserve.ts +94 -12
  536. package/src/install/recordedOwnership.ts +121 -3
  537. package/src/install/rule_scope.ts +20 -3
  538. package/src/install/stagedRuntime.ts +528 -0
  539. package/src/install/toolsArg.ts +16 -0
  540. package/src/install/types.ts +23 -2
  541. package/src/install/userPin.ts +54 -0
  542. package/src/install/wizard-plan.ts +25 -4
  543. package/src/scripts/_cli/_doctor_emit.ts +24 -0
  544. package/src/scripts/_cli/cmd_brand_status.ts +223 -12
  545. package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
  546. package/src/scripts/_cli/cmd_doctor.ts +23 -44
  547. package/src/scripts/_cli/cmd_route_explain.ts +176 -2
  548. package/src/scripts/_cli/cmd_uninstall.ts +270 -26
  549. package/src/scripts/_cli/cmd_update.ts +34 -1
  550. package/src/scripts/_cli/cmd_upgrade.ts +38 -2
  551. package/src/scripts/_cli/detection_report.ts +7 -0
  552. package/src/scripts/_cli/doctor_execution.ts +1 -2
  553. package/src/scripts/_cli/doctor_install_mode.ts +39 -0
  554. package/src/scripts/_cli/doctor_network_posture.ts +3 -3
  555. package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
  556. package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
  557. package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
  558. package/src/scripts/_cli/upgrade_unattended.ts +548 -0
  559. package/src/scripts/_dispatch.bash +42 -9
  560. package/src/scripts/_lib/activation_ladder.ts +1 -1
  561. package/src/scripts/_lib/advisory_inventory.ts +405 -0
  562. package/src/scripts/_lib/advisory_notice.ts +270 -0
  563. package/src/scripts/_lib/advisory_sources.ts +752 -0
  564. package/src/scripts/_lib/advisory_verdicts.ts +363 -0
  565. package/src/scripts/_lib/agent_artifact_location.ts +177 -0
  566. package/src/scripts/_lib/agent_settings.ts +7 -12
  567. package/src/scripts/_lib/arrival_record.ts +217 -0
  568. package/src/scripts/_lib/asset_render_record.ts +247 -0
  569. package/src/scripts/_lib/billing_grant.ts +4 -2
  570. package/src/scripts/_lib/brand_voice_slot.ts +258 -0
  571. package/src/scripts/_lib/canary_status.ts +24 -0
  572. package/src/scripts/_lib/cc_transcript.ts +276 -0
  573. package/src/scripts/_lib/changelog_eras.ts +83 -0
  574. package/src/scripts/_lib/claim_phrases.ts +71 -0
  575. package/src/scripts/_lib/classify_update.ts +171 -0
  576. package/src/scripts/_lib/claude_builtin_names.ts +9 -4
  577. package/src/scripts/_lib/claude_hook_scope.ts +195 -0
  578. package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
  579. package/src/scripts/_lib/codex_resident_set.ts +460 -0
  580. package/src/scripts/_lib/codex_skill_finder.ts +225 -0
  581. package/src/scripts/_lib/confusables.ts +19 -0
  582. package/src/scripts/_lib/consumer_impact.ts +199 -0
  583. package/src/scripts/_lib/content_class.ts +127 -0
  584. package/src/scripts/_lib/counted_probe.ts +68 -1
  585. package/src/scripts/_lib/credential_deny_rows.ts +151 -0
  586. package/src/scripts/_lib/credential_files.ts +367 -0
  587. package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
  588. package/src/scripts/_lib/depth_flip.ts +141 -0
  589. package/src/scripts/_lib/design_lock.ts +117 -0
  590. package/src/scripts/_lib/design_sync_ledger.ts +142 -0
  591. package/src/scripts/_lib/design_sync_plan.ts +177 -0
  592. package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
  593. package/src/scripts/_lib/design_sync_verify.ts +99 -0
  594. package/src/scripts/_lib/design_system_claude_design.ts +323 -0
  595. package/src/scripts/_lib/design_system_import.ts +84 -6
  596. package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
  597. package/src/scripts/_lib/egress_credential_env.ts +35 -0
  598. package/src/scripts/_lib/egress_engine.ts +22 -0
  599. package/src/scripts/_lib/egress_known_values.ts +223 -0
  600. package/src/scripts/_lib/egress_normalize.ts +67 -0
  601. package/src/scripts/_lib/egress_prefixes.ts +42 -0
  602. package/src/scripts/_lib/egress_rules.ts +896 -0
  603. package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
  604. package/src/scripts/_lib/egress_sender_scan.ts +290 -0
  605. package/src/scripts/_lib/egress_session_table.ts +510 -0
  606. package/src/scripts/_lib/egress_text.ts +63 -0
  607. package/src/scripts/_lib/egress_token.ts +252 -0
  608. package/src/scripts/_lib/empty_cycles.ts +1 -1
  609. package/src/scripts/_lib/environment_detector.ts +45 -30
  610. package/src/scripts/_lib/exemption_shape.ts +75 -1
  611. package/src/scripts/_lib/floor_posture.ts +185 -0
  612. package/src/scripts/_lib/forge_protection.ts +140 -2
  613. package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
  614. package/src/scripts/_lib/guidelines_lane.ts +12 -1
  615. package/src/scripts/_lib/hand_kinds.ts +65 -0
  616. package/src/scripts/_lib/headless_invocation.ts +3 -3
  617. package/src/scripts/_lib/host_capability.ts +34 -2
  618. package/src/scripts/_lib/host_env_write.ts +39 -18
  619. package/src/scripts/_lib/host_listing_model.ts +14 -7
  620. package/src/scripts/_lib/identifier_redaction.ts +26 -0
  621. package/src/scripts/_lib/impact_bump.ts +70 -0
  622. package/src/scripts/_lib/install_reach_checks.ts +53 -1
  623. package/src/scripts/_lib/installed_layer.ts +31 -0
  624. package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
  625. package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
  626. package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
  627. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  628. package/src/scripts/_lib/layer_form_corpus.ts +165 -0
  629. package/src/scripts/_lib/layer_form_decision.ts +248 -0
  630. package/src/scripts/_lib/layer_form_evidence.ts +112 -0
  631. package/src/scripts/_lib/lean_projection_mode.ts +32 -161
  632. package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
  633. package/src/scripts/_lib/loop_guards.ts +8 -120
  634. package/src/scripts/_lib/major_surface.ts +207 -0
  635. package/src/scripts/_lib/mcp_bridge.ts +30 -69
  636. package/src/scripts/_lib/merge_clearance_record.ts +384 -0
  637. package/src/scripts/_lib/neighbour_census.ts +18 -1
  638. package/src/scripts/_lib/orchestration_record.ts +61 -0
  639. package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
  640. package/src/scripts/_lib/pin_advice.ts +49 -0
  641. package/src/scripts/_lib/platform_anchor.ts +222 -0
  642. package/src/scripts/_lib/procedure_checks.ts +5 -0
  643. package/src/scripts/_lib/project_tree_form.ts +134 -0
  644. package/src/scripts/_lib/projection_key_migration.ts +122 -0
  645. package/src/scripts/_lib/prompt_shape.ts +13 -2
  646. package/src/scripts/_lib/provenance_verify.ts +272 -0
  647. package/src/scripts/_lib/quota_parked.ts +27 -1
  648. package/src/scripts/_lib/ratification_artifact.ts +64 -1
  649. package/src/scripts/_lib/ratification_subject.ts +508 -46
  650. package/src/scripts/_lib/release_findings_ingest.ts +52 -5
  651. package/src/scripts/_lib/release_highlights.ts +72 -2
  652. package/src/scripts/_lib/release_settings_surface.ts +392 -0
  653. package/src/scripts/_lib/review_round.ts +134 -0
  654. package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
  655. package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
  656. package/src/scripts/_lib/roadmap_step_size.ts +75 -0
  657. package/src/scripts/_lib/run_checkpoint.ts +60 -3
  658. package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
  659. package/src/scripts/_lib/scope_guard.sh +64 -5
  660. package/src/scripts/_lib/scoped_projection.ts +136 -3
  661. package/src/scripts/_lib/secret_detector.ts +24 -103
  662. package/src/scripts/_lib/security_fix.ts +429 -0
  663. package/src/scripts/_lib/security_fix_context.ts +133 -0
  664. package/src/scripts/_lib/self_repair.ts +69 -39
  665. package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
  666. package/src/scripts/_lib/self_repair_payload.ts +86 -0
  667. package/src/scripts/_lib/session_eol.ts +3 -0
  668. package/src/scripts/_lib/session_pr_watch.ts +207 -0
  669. package/src/scripts/_lib/session_register.ts +51 -1
  670. package/src/scripts/_lib/session_tag.ts +51 -0
  671. package/src/scripts/_lib/settings_removed_keys.ts +30 -0
  672. package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
  673. package/src/scripts/_lib/skill_catalogue.ts +66 -25
  674. package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
  675. package/src/scripts/_lib/skill_leases.ts +203 -0
  676. package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
  677. package/src/scripts/_lib/skill_materialisation.ts +388 -0
  678. package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
  679. package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
  680. package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
  681. package/src/scripts/_lib/skill_origin.ts +21 -1
  682. package/src/scripts/_lib/skill_reach.ts +342 -0
  683. package/src/scripts/_lib/source_shape.ts +7 -2
  684. package/src/scripts/_lib/sqlite_guard.ts +1 -1
  685. package/src/scripts/_lib/step_anatomy.ts +330 -0
  686. package/src/scripts/_lib/subagent_capsule.ts +8 -2
  687. package/src/scripts/_lib/subagent_native_fields.ts +30 -0
  688. package/src/scripts/_lib/subagent_spawn.ts +36 -0
  689. package/src/scripts/_lib/subagent_steering.ts +367 -0
  690. package/src/scripts/_lib/svg_filled_counter.ts +287 -0
  691. package/src/scripts/_lib/svg_rules.ts +2 -0
  692. package/src/scripts/_lib/test_delta.ts +89 -6
  693. package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
  694. package/src/scripts/_lib/tool_result_census.ts +62 -0
  695. package/src/scripts/_lib/trigger_routers.ts +1 -0
  696. package/src/scripts/_lib/turnaround_throughput.ts +378 -0
  697. package/src/scripts/_lib/ui_surface.ts +22 -0
  698. package/src/scripts/_lib/unattended_gates.ts +100 -0
  699. package/src/scripts/_lib/undeployed_fixes.ts +34 -0
  700. package/src/scripts/_lib/update_check.ts +143 -12
  701. package/src/scripts/_lib/update_invite.ts +116 -0
  702. package/src/scripts/_lib/update_notice.ts +259 -0
  703. package/src/scripts/_lib/verify_clause.ts +4 -2
  704. package/src/scripts/_lib/version_order.ts +146 -0
  705. package/src/scripts/_lib/worker_reuse.ts +191 -0
  706. package/src/scripts/_lib/workspace_secrets.ts +273 -0
  707. package/src/scripts/_lib/worktree_git.ts +67 -0
  708. package/src/scripts/_lib/worktree_ignored.ts +116 -0
  709. package/src/scripts/adoption_status.ts +330 -3
  710. package/src/scripts/adr_cite_check.ts +93 -0
  711. package/src/scripts/advisories.ts +803 -0
  712. package/src/scripts/ai-image/adapters/flux.sh +1 -0
  713. package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
  714. package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
  715. package/src/scripts/ai-image/adapters/recraft.sh +1 -0
  716. package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
  717. package/src/scripts/ai-video/adapters/fal.sh +1 -0
  718. package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
  719. package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
  720. package/src/scripts/ai-video/adapters/kling.sh +1 -0
  721. package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
  722. package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
  723. package/src/scripts/ai-video/adapters/replicate.sh +1 -0
  724. package/src/scripts/ai-video/adapters/sora.sh +1 -0
  725. package/src/scripts/ai-video/adapters/syncso.sh +1 -0
  726. package/src/scripts/ai-video/stitch.sh +115 -2
  727. package/src/scripts/ai_council/airgap.ts +1 -0
  728. package/src/scripts/ai_council/api_transport.ts +27 -4
  729. package/src/scripts/ai_council/budget_guard.ts +300 -11
  730. package/src/scripts/ai_council/bundler.ts +20 -29
  731. package/src/scripts/ai_council/chairman.ts +17 -2
  732. package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
  733. package/src/scripts/ai_council/cli_launch_env.ts +54 -0
  734. package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
  735. package/src/scripts/ai_council/clients.ts +55 -73
  736. package/src/scripts/ai_council/config.ts +16 -22
  737. package/src/scripts/ai_council/council_egress.ts +167 -0
  738. package/src/scripts/ai_council/exposure_ledger.ts +117 -0
  739. package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
  740. package/src/scripts/ai_council/free_route.ts +216 -0
  741. package/src/scripts/ai_council/free_route_catalog.ts +173 -0
  742. package/src/scripts/ai_council/free_route_client.ts +95 -0
  743. package/src/scripts/ai_council/free_rung.ts +61 -0
  744. package/src/scripts/ai_council/hand_payload.ts +230 -0
  745. package/src/scripts/ai_council/hand_schemas.ts +123 -0
  746. package/src/scripts/ai_council/jury_aggregate.ts +155 -1
  747. package/src/scripts/ai_council/kind_flip.ts +221 -0
  748. package/src/scripts/ai_council/kind_flip_state.ts +19 -0
  749. package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
  750. package/src/scripts/ai_council/modification_review.ts +98 -5
  751. package/src/scripts/ai_council/necessity.ts +7 -0
  752. package/src/scripts/ai_council/orchestrator.ts +16 -16
  753. package/src/scripts/ai_council/pricing.ts +10 -0
  754. package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
  755. package/src/scripts/ai_council/response_render.ts +27 -4
  756. package/src/scripts/ai_council/round_reservations.ts +119 -0
  757. package/src/scripts/ai_council/route_chooser.ts +161 -0
  758. package/src/scripts/ai_council/route_liveness.ts +152 -0
  759. package/src/scripts/ai_council/route_member.ts +52 -0
  760. package/src/scripts/ai_council/seat_policy.ts +40 -0
  761. package/src/scripts/ai_council/seat_resume.ts +40 -0
  762. package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
  763. package/src/scripts/ai_council/spend_gate.ts +18 -2
  764. package/src/scripts/ai_council/status_surface.ts +37 -0
  765. package/src/scripts/ai_council/transport_resolver.ts +15 -18
  766. package/src/scripts/analysis_analysts.ts +226 -0
  767. package/src/scripts/analysis_anchors.ts +140 -0
  768. package/src/scripts/analysis_and_optimize.ts +44 -0
  769. package/src/scripts/analysis_emit.ts +150 -0
  770. package/src/scripts/analysis_exchange.ts +186 -0
  771. package/src/scripts/analysis_gate.ts +158 -0
  772. package/src/scripts/analysis_inbox_final.ts +173 -0
  773. package/src/scripts/analysis_ledger.ts +119 -0
  774. package/src/scripts/analysis_pr_optimize.ts +219 -0
  775. package/src/scripts/analysis_pr_review.ts +240 -0
  776. package/src/scripts/analysis_pr_target.ts +121 -0
  777. package/src/scripts/analysis_prompts.ts +130 -0
  778. package/src/scripts/analysis_publish.ts +358 -0
  779. package/src/scripts/analysis_questions.ts +78 -0
  780. package/src/scripts/analysis_run.ts +248 -0
  781. package/src/scripts/analysis_run_record.ts +210 -0
  782. package/src/scripts/analysis_target.ts +343 -0
  783. package/src/scripts/analysis_validate.ts +161 -0
  784. package/src/scripts/anchor_eval_falsify.ts +1 -1
  785. package/src/scripts/arrival_report.ts +115 -0
  786. package/src/scripts/ask_transport.ts +284 -35
  787. package/src/scripts/backfill_model_tier.ts +4 -5
  788. package/src/scripts/before_complete_hook.ts +48 -2
  789. package/src/scripts/bench_hook_latency.ts +3 -3
  790. package/src/scripts/bench_procedure_cursor.ts +440 -0
  791. package/src/scripts/bootstrap.sh +3 -3
  792. package/src/scripts/build_exit_code_register.ts +440 -0
  793. package/src/scripts/build_proof.ts +23 -1
  794. package/src/scripts/cache_realization_report.ts +155 -14
  795. package/src/scripts/canary_liveness.ts +117 -0
  796. package/src/scripts/chat_history.ts +12 -15
  797. package/src/scripts/check_account_surface.ts +318 -0
  798. package/src/scripts/check_agent_artifact_location.ts +17 -160
  799. package/src/scripts/check_bundle_path_leakage.ts +6 -0
  800. package/src/scripts/check_ci_local_parity.ts +21 -13
  801. package/src/scripts/check_claims.ts +77 -2
  802. package/src/scripts/check_completion_review.ts +34 -1
  803. package/src/scripts/check_concern_admissions.ts +41 -5
  804. package/src/scripts/check_consumer_scope_flip.ts +1 -1
  805. package/src/scripts/check_context_paths.ts +2 -0
  806. package/src/scripts/check_council_layout.ts +9 -0
  807. package/src/scripts/check_credential_spelling.ts +267 -0
  808. package/src/scripts/check_egress_mutations.ts +239 -0
  809. package/src/scripts/check_enforcement_coverage.ts +16 -3
  810. package/src/scripts/check_estate_count.ts +16 -1
  811. package/src/scripts/check_finding_dispositions.ts +147 -0
  812. package/src/scripts/check_gate_coverage.ts +123 -21
  813. package/src/scripts/check_gate_reachability.ts +16 -2
  814. package/src/scripts/check_generator_sync.ts +46 -0
  815. package/src/scripts/check_hook_bundle_composition.ts +139 -1
  816. package/src/scripts/check_host_docs_digest.ts +142 -5
  817. package/src/scripts/check_kernel_edit_ratified.ts +301 -76
  818. package/src/scripts/check_kernel_rule_bundle.ts +14 -10
  819. package/src/scripts/check_knowledge_cards.ts +83 -3
  820. package/src/scripts/check_memory.ts +13 -3
  821. package/src/scripts/check_pack_size.ts +1 -1
  822. package/src/scripts/check_permission_deny_syntax.ts +247 -0
  823. package/src/scripts/check_platform_anchor.ts +243 -0
  824. package/src/scripts/check_proposal.ts +183 -1
  825. package/src/scripts/check_reach_channels.ts +5 -3
  826. package/src/scripts/check_references.ts +5 -2
  827. package/src/scripts/check_release_manifest_content.ts +33 -0
  828. package/src/scripts/check_release_pr_shape.ts +5 -0
  829. package/src/scripts/check_rule_invariants.ts +9 -1
  830. package/src/scripts/check_skill_body_budget.ts +343 -0
  831. package/src/scripts/check_skill_requires.ts +137 -1
  832. package/src/scripts/check_step_receipts.ts +246 -0
  833. package/src/scripts/check_structural_breaking.ts +7 -1
  834. package/src/scripts/check_suppression_hygiene.ts +8 -0
  835. package/src/scripts/check_test_weakening.ts +14 -0
  836. package/src/scripts/check_token_quality_golden.ts +5 -1
  837. package/src/scripts/check_update_banner.ts +50 -3
  838. package/src/scripts/check_verify_expectation_delta.ts +2 -1
  839. package/src/scripts/check_voice_lexicon.ts +531 -0
  840. package/src/scripts/ci_os_attribution.ts +327 -0
  841. package/src/scripts/ci_platform_scope.ts +69 -0
  842. package/src/scripts/ci_settle.ts +4 -1
  843. package/src/scripts/ci_status.ts +0 -1
  844. package/src/scripts/ci_time_to_green.ts +748 -0
  845. package/src/scripts/classify_merge_risk.ts +407 -19
  846. package/src/scripts/code_graph/sqlite_store.ts +1 -1
  847. package/src/scripts/compile_trigger_evals.ts +353 -0
  848. package/src/scripts/condense.ts +25 -31
  849. package/src/scripts/consumer_matrix.ts +61 -3
  850. package/src/scripts/council_availability_hook.ts +12 -4
  851. package/src/scripts/council_cli.ts +48 -38
  852. package/src/scripts/cross_repo_retrieve.ts +9 -72
  853. package/src/scripts/design_lock.ts +106 -0
  854. package/src/scripts/design_slop_rules.ts +30 -0
  855. package/src/scripts/design_sync.ts +264 -0
  856. package/src/scripts/design_system_import.ts +30 -13
  857. package/src/scripts/dispatch_economy_report.ts +46 -1
  858. package/src/scripts/dispatch_r2_reviewer.ts +41 -5
  859. package/src/scripts/egress_canary.ts +166 -0
  860. package/src/scripts/egress_sender_census.ts +101 -0
  861. package/src/scripts/external_sources_denylist.json +94 -12
  862. package/src/scripts/generate_catalog.ts +6 -2
  863. package/src/scripts/generate_owned_digest.ts +163 -0
  864. package/src/scripts/generate_reference_toc.ts +143 -0
  865. package/src/scripts/generate_subagent_floor.ts +11 -1
  866. package/src/scripts/handoff_context_hook.ts +34 -0
  867. package/src/scripts/hook_carrier_census.ts +263 -0
  868. package/src/scripts/hook_chunks.d.mts +12 -0
  869. package/src/scripts/hook_chunks.mjs +114 -0
  870. package/src/scripts/hook_manifest.json +1 -1
  871. package/src/scripts/hook_manifest.yaml +65 -42
  872. package/src/scripts/hooks/block_config_weakening.ts +127 -3
  873. package/src/scripts/hooks/block_credential_reads.ts +165 -0
  874. package/src/scripts/hooks/block_no_verify.ts +47 -23
  875. package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
  876. package/src/scripts/hooks/category_a.ts +202 -25
  877. package/src/scripts/hooks/concern_failure_policy.ts +6 -6
  878. package/src/scripts/hooks/concern_registry.ts +31 -6
  879. package/src/scripts/hooks/concern_registry_types.ts +11 -0
  880. package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
  881. package/src/scripts/hooks/design_pass_hook.ts +42 -10
  882. package/src/scripts/hooks/dispatch_hook.ts +13 -12
  883. package/src/scripts/hooks/egress_engine_loader.ts +125 -0
  884. package/src/scripts/hooks/egress_stage.ts +440 -0
  885. package/src/scripts/hooks/hook_stdin.ts +29 -4
  886. package/src/scripts/hooks/host_docs_pages.ts +194 -0
  887. package/src/scripts/hooks/host_docs_pages.yaml +75 -0
  888. package/src/scripts/hooks/host_lowering.json +1 -1
  889. package/src/scripts/hooks/host_lowering.yaml +22 -21
  890. package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
  891. package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
  892. package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
  893. package/src/scripts/hooks/lazy_concern.ts +148 -0
  894. package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
  895. package/src/scripts/hooks/payload_stub.ts +16 -6
  896. package/src/scripts/hooks/permission_gate.ts +7 -7
  897. package/src/scripts/hooks/push_settle_hook.ts +32 -3
  898. package/src/scripts/hooks/replay_hook.ts +43 -0
  899. package/src/scripts/hooks/reread_guard_hook.ts +87 -10
  900. package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
  901. package/src/scripts/hooks/rule_inject_hook.ts +8 -1
  902. package/src/scripts/hooks/session_eol_hook.ts +48 -1
  903. package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
  904. package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
  905. package/src/scripts/hooks/state_io.ts +2 -2
  906. package/src/scripts/hooks/svg_obligation.ts +75 -19
  907. package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
  908. package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
  909. package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
  910. package/src/scripts/hooks_doctor.ts +31 -0
  911. package/src/scripts/hooks_status.ts +58 -3
  912. package/src/scripts/inbox_source_census.ts +74 -13
  913. package/src/scripts/install +25 -3
  914. package/src/scripts/install.ts +60 -91
  915. package/src/scripts/interruption_report.ts +11 -1
  916. package/src/scripts/layer_baseline_report.ts +267 -0
  917. package/src/scripts/learning_sidecar.ts +1 -1
  918. package/src/scripts/lint_agents_layout.ts +3 -0
  919. package/src/scripts/lint_blocker_citations.ts +104 -0
  920. package/src/scripts/lint_breaking_changes_index.ts +40 -7
  921. package/src/scripts/lint_consolidation_lineage.ts +144 -16
  922. package/src/scripts/lint_consumer_internal_refs.ts +90 -42
  923. package/src/scripts/lint_context_spine_usage.ts +21 -0
  924. package/src/scripts/lint_design_antipattern_parity.ts +39 -7
  925. package/src/scripts/lint_evidence_artifacts.ts +31 -0
  926. package/src/scripts/lint_example_fences.ts +11 -2
  927. package/src/scripts/lint_ghostwriter_source.ts +42 -10
  928. package/src/scripts/lint_hook_manifest.ts +94 -0
  929. package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
  930. package/src/scripts/lint_mcp_config_security.ts +9 -11
  931. package/src/scripts/lint_plan_risk_register.ts +28 -1
  932. package/src/scripts/lint_positioning.ts +4 -4
  933. package/src/scripts/lint_provenance.ts +1 -0
  934. package/src/scripts/lint_roadmap_blockers.ts +65 -4
  935. package/src/scripts/lint_roadmap_complexity.ts +98 -0
  936. package/src/scripts/lint_skill_link_reach.ts +251 -9
  937. package/src/scripts/lint_skill_procedures.ts +252 -0
  938. package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
  939. package/src/scripts/lint_subagent_determinism.ts +14 -1
  940. package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
  941. package/src/scripts/mcp_registry_submit.sh +2 -2
  942. package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
  943. package/src/scripts/mcp_server/suggest_skill.ts +89 -4
  944. package/src/scripts/mcp_server/tools.ts +2 -33
  945. package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
  946. package/src/scripts/measure_turn_end_gate.ts +61 -1
  947. package/src/scripts/merge_clearance.ts +225 -0
  948. package/src/scripts/migrate_command_suggestions.ts +1 -1
  949. package/src/scripts/network_sources.ts +236 -0
  950. package/src/scripts/no_go_deny_rows.ts +225 -0
  951. package/src/scripts/orchestration_record.ts +15 -2
  952. package/src/scripts/plan_test_shards.ts +103 -0
  953. package/src/scripts/pr_url_reminder_hook.ts +10 -0
  954. package/src/scripts/print_required_checks.ts +5 -5
  955. package/src/scripts/probe_depth_shadow.ts +406 -0
  956. package/src/scripts/probe_turnaround.ts +342 -10
  957. package/src/scripts/ratification_subject.ts +176 -0
  958. package/src/scripts/rdp_gate_classify.ts +1 -0
  959. package/src/scripts/rdp_quality_eval.ts +1 -0
  960. package/src/scripts/release.ts +26 -55
  961. package/src/scripts/release_drill.ts +52 -23
  962. package/src/scripts/release_env.ts +37 -0
  963. package/src/scripts/release_publication.ts +11 -1
  964. package/src/scripts/report_consumer_gate_reach.ts +233 -0
  965. package/src/scripts/report_merge_gate_load.ts +295 -0
  966. package/src/scripts/report_project_contract.ts +123 -0
  967. package/src/scripts/report_reducible_classes.ts +342 -0
  968. package/src/scripts/report_required_checks_drift.ts +5 -3
  969. package/src/scripts/report_skill_host_census.ts +199 -0
  970. package/src/scripts/report_standing_payload_by_host.ts +7 -7
  971. package/src/scripts/retro.ts +758 -0
  972. package/src/scripts/retro_facts.ts +575 -0
  973. package/src/scripts/retro_queue.ts +739 -0
  974. package/src/scripts/retro_session_facts.ts +218 -0
  975. package/src/scripts/retro_sweep.ts +493 -0
  976. package/src/scripts/retro_triage.ts +126 -0
  977. package/src/scripts/roadmap_context.ts +2 -2
  978. package/src/scripts/roadmap_drain_queue.ts +601 -0
  979. package/src/scripts/run_supervise.ts +24 -2
  980. package/src/scripts/schemas/agent-settings.schema.json +0 -16
  981. package/src/scripts/schemas/command.schema.json +3 -3
  982. package/src/scripts/schemas/review-findings.schema.json +8 -0
  983. package/src/scripts/schemas/skill.schema.json +7 -6
  984. package/src/scripts/schemas/subagent.schema.json +33 -2
  985. package/src/scripts/score_skill_selection.ts +5 -2
  986. package/src/scripts/second_brain_retrieval.ts +1 -0
  987. package/src/scripts/second_brain_run.ts +1 -0
  988. package/src/scripts/self_repair_cli.ts +563 -87
  989. package/src/scripts/self_review_gate.ts +59 -4
  990. package/src/scripts/session_register_hook.ts +91 -4
  991. package/src/scripts/sessions_cli.ts +100 -5
  992. package/src/scripts/skill_collision_clusters.ts +1 -1
  993. package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
  994. package/src/scripts/skill_trigger_eval.ts +4 -2
  995. package/src/scripts/source_adapters.ts +183 -0
  996. package/src/scripts/step_receipt.ts +100 -0
  997. package/src/scripts/sync_pr_branch.ts +4 -0
  998. package/src/scripts/test_council_qualification.ts +1 -1
  999. package/src/scripts/trigger_eval_grandfather.json +3 -49
  1000. package/src/scripts/trigger_eval_rotation.ts +31 -3
  1001. package/src/scripts/ui_conformance_probe.ts +405 -1
  1002. package/src/scripts/update_counts.ts +230 -11
  1003. package/src/scripts/update_invite_hook.ts +245 -0
  1004. package/src/scripts/update_notice_hook.ts +298 -0
  1005. package/src/scripts/validate_frontmatter.ts +85 -0
  1006. package/src/scripts/worker_reuse_shadow_report.ts +121 -0
  1007. package/src/scripts/worktree_cleanup_check.ts +915 -121
  1008. package/src/server/io/yamlIO.ts +2 -2
  1009. package/src/server/schemas/settings.ts +37 -23
  1010. package/src/shared/brandTokenDocument.ts +46 -0
  1011. package/src/shared/brandTokenPaths.ts +43 -0
  1012. package/src/shared/settingsCarveOut.ts +0 -8
  1013. package/src/shared/skillRanking.ts +106 -5
  1014. package/src/shared/userMd/formAdapter.ts +15 -1
  1015. package/src/shared/userMd/schema.ts +22 -0
  1016. package/src/templates/agent-user.md +4 -0
  1017. package/src/templates/agent-user.yml +4 -0
  1018. package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
  1019. package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
  1020. package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
  1021. package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
  1022. package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
  1023. package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
  1024. package/dist/ui/assets/index-C3djEJah.js +0 -23
  1025. package/src/scripts/_lib/continuation_ladder.ts +0 -335
  1026. package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
@@ -30,6 +30,8 @@ import {
30
30
  _load_yaml,
31
31
  } from "./hooks/dispatch_hook.js";
32
32
  import { loadHostLowering } from "./hooks/host_lowering.js";
33
+ import { type ClaudeHookScope, claudeHookScope } from "./_lib/claude_hook_scope.js";
34
+ import { event4u_root } from "./_lib/user_global_paths.js";
33
35
  import { type SlotReading, readSlots } from "./report_enforcement_drift.js";
34
36
 
35
37
  // src/scripts/hooks_status.ts → parents[1] is the repo root (.../parents[2]
@@ -106,6 +108,13 @@ export interface PlatformRow {
106
108
  */
107
109
  blocking_enforcement: Record<string, string>;
108
110
  hint: string | null;
111
+ /**
112
+ * Claude only. Where the managed hooks are registered (global and/or
113
+ * project), which runtime they would reach, and the resulting state. Present
114
+ * because Claude Code MERGES `~/.claude/settings.json` with the project file,
115
+ * so one file cannot answer "are the hooks installed" for that host.
116
+ */
117
+ claude_scope?: ClaudeHookScope;
109
118
  }
110
119
 
111
120
  export interface StatusMatrix {
@@ -206,8 +215,27 @@ function _blocking_enforcement(
206
215
  return out;
207
216
  }
208
217
 
218
+ /** Where to look for the user-scope half of Claude's merged settings. Injected by tests. */
219
+ export interface UserScope {
220
+ home: string;
221
+ runtimeRoot: string;
222
+ pathEnv: string;
223
+ }
224
+
225
+ function _defaultUserScope(): UserScope {
226
+ return {
227
+ home: process.env["HOME"] ?? "",
228
+ runtimeRoot: path.join(event4u_root(), "runtime"),
229
+ pathEnv: process.env["PATH"] ?? "",
230
+ };
231
+ }
232
+
209
233
  /** Build the runtime matrix as a plain object — JSON-serialisable. */
210
- export function collect(project_root: string, manifest: JsonObject): StatusMatrix {
234
+ export function collect(
235
+ project_root: string,
236
+ manifest: JsonObject,
237
+ userScope: UserScope = _defaultUserScope(),
238
+ ): StatusMatrix {
211
239
  const platformsRaw = manifest["platforms"];
212
240
  const platforms = _isObject(platformsRaw) ? platformsRaw : {};
213
241
  const severities = _severities(manifest);
@@ -226,9 +254,20 @@ export function collect(project_root: string, manifest: JsonObject): StatusMatri
226
254
  }
227
255
  }
228
256
  }
257
+ // Claude merges the user-scope settings file with the project one, so its
258
+ // status comes from the managed commands in BOTH, never from whether the
259
+ // project file merely exists.
260
+ const claude_scope =
261
+ platform === "claude" && !fallback_only
262
+ ? claudeHookScope({ projectRoot: project_root, ...userScope })
263
+ : undefined;
229
264
  const status = fallback_only
230
265
  ? "degraded"
231
- : _bridge_status(project_root, rel);
266
+ : claude_scope !== undefined
267
+ ? claude_scope.registered_in.length > 0
268
+ ? "installed"
269
+ : "missing"
270
+ : _bridge_status(project_root, rel);
232
271
  rows.push({
233
272
  platform,
234
273
  status,
@@ -240,6 +279,7 @@ export function collect(project_root: string, manifest: JsonObject): StatusMatri
240
279
  hint: ["missing", "empty", "degraded", "n/a"].includes(status)
241
280
  ? hint
242
281
  : null,
282
+ ...(claude_scope !== undefined ? { claude_scope } : {}),
243
283
  });
244
284
  }
245
285
  return { schema_version: 1, platforms: rows };
@@ -277,10 +317,25 @@ export function _render_table(matrix: StatusMatrix): string {
277
317
  for (const row of matrix.platforms) {
278
318
  const marker = _STATUS_MARKER[row.status] ?? "? ";
279
319
  let head = `${marker}${row.platform.padEnd(9)} ${row.status}`;
280
- if (row.bridge_path) {
320
+ if (row.claude_scope !== undefined) {
321
+ const where = row.claude_scope.registered_in.length > 0 ? row.claude_scope.registered_in.join(" + ") : "neither scope";
322
+ head += ` (managed hooks in: ${where} — ~/.claude/settings.json and <project>/.claude/settings.json are merged)`;
323
+ } else if (row.bridge_path) {
281
324
  head += ` (${row.bridge_path})`;
282
325
  }
283
326
  lines.push(head);
327
+ if (row.claude_scope !== undefined) {
328
+ const s = row.claude_scope;
329
+ lines.push(` state → ${s.state}`);
330
+ lines.push(
331
+ ` runtime → ${s.runtime}` + (s.runtime_version !== null ? ` v${s.runtime_version}` : ""),
332
+ );
333
+ lines.push(
334
+ ` managed / foreign → global ${s.managed_commands.global} / ${s.foreign_commands.global}, ` +
335
+ `project ${s.managed_commands.project} / ${s.foreign_commands.project} (foreign hooks are never counted as ours)`,
336
+ );
337
+ if (s.version_skew !== null) lines.push(` ⚠️ ${s.version_skew}`);
338
+ }
284
339
  lines.push(
285
340
  ` ask → ${row.ask}` +
286
341
  (row.ask === "native"
@@ -113,6 +113,13 @@ export interface TopicCensus {
113
113
  decisionIds: string[];
114
114
  fileCount: number;
115
115
  anchorTotal: number;
116
+ /**
117
+ * Paths under this topic the census did NOT read, relative to the topic
118
+ * directory. A file the walk skipped is not a file that is not there, and
119
+ * the closing coverage line cannot be read as complete while this is
120
+ * non-empty.
121
+ */
122
+ uncounted: string[];
116
123
  }
117
124
 
118
125
  /**
@@ -195,13 +202,46 @@ function censusFile(abs: string, rel: string): FileCensus {
195
202
  };
196
203
  }
197
204
 
198
- /** Group one topic folder's files into source sets and count its anchors. */
199
- export function censusTopic(dir: string, topic: string): TopicCensus {
200
- const names = fs
201
- .readdirSync(dir, { withFileTypes: true })
202
- .filter((d) => d.isFile() && TEXT_EXT.has(path.extname(d.name).toLowerCase()))
203
- .map((d) => d.name)
204
- .sort();
205
+ /**
206
+ * Every path under `dir`, recursively, split into the text files the census
207
+ * reads and everything else. Both are relative to `dir` and sorted.
208
+ *
209
+ * The recursion is the repair. The previous reader took only the files
210
+ * DIRECTLY in a topic directory, so a nested folder of later-loop plans was
211
+ * invisible while the closing line still claimed every anchor left with a
212
+ * ledger row. Measured on the round that found it: twelve files reported
213
+ * against fourteen present, and zero revision sets against three.
214
+ */
215
+ function collect(dir: string, recursive: boolean): { text: string[]; other: string[] } {
216
+ const text: string[] = [];
217
+ const other: string[] = [];
218
+ const walk = (abs: string, rel: string): void => {
219
+ for (const d of fs.readdirSync(abs, { withFileTypes: true })) {
220
+ const childRel = rel === '' ? d.name : `${rel}/${d.name}`;
221
+ if (d.isDirectory()) {
222
+ if (recursive) walk(path.join(abs, d.name), childRel);
223
+ continue;
224
+ }
225
+ if (!d.isFile()) continue;
226
+ if (TEXT_EXT.has(path.extname(d.name).toLowerCase())) text.push(childRel);
227
+ else other.push(childRel);
228
+ }
229
+ };
230
+ walk(dir, '');
231
+ text.sort();
232
+ other.sort();
233
+ return { text, other };
234
+ }
235
+
236
+ /**
237
+ * Group one topic folder's files into source sets and count its anchors.
238
+ *
239
+ * `recursive` is true for a topic, false for the round root — `censusRoot`
240
+ * treats each immediate subdirectory as its own topic, so a recursive root
241
+ * pass would count those files twice.
242
+ */
243
+ export function censusTopic(dir: string, topic: string, recursive = true): TopicCensus {
244
+ const { text: names, other: uncounted } = collect(dir, recursive);
205
245
 
206
246
  const byStem = new Map<string, FileCensus[]>();
207
247
  const ids = new Set<string>();
@@ -209,7 +249,12 @@ export function censusTopic(dir: string, topic: string): TopicCensus {
209
249
  const abs = path.join(dir, name);
210
250
  const fc = censusFile(abs, name);
211
251
  for (const id of decisionIds(fs.readFileSync(abs, 'utf-8'))) ids.add(id);
212
- const stem = stemOf(name);
252
+ // The stem comes from the BASENAME, so `plan.md` and `v2/plan.md` are
253
+ // one revision set across directory levels. That is the grouping this
254
+ // repair is for; it also means two unrelated files that happen to
255
+ // share a stem at different depths read as one set, which is why each
256
+ // member is printed with its path relative to the topic.
257
+ const stem = stemOf(path.basename(name));
213
258
  const bucket = byStem.get(stem);
214
259
  if (bucket) bucket.push(fc);
215
260
  else byStem.set(stem, [fc]);
@@ -228,6 +273,7 @@ export function censusTopic(dir: string, topic: string): TopicCensus {
228
273
  sets,
229
274
  decisionIds: [...ids].sort(),
230
275
  fileCount: names.length,
276
+ uncounted,
231
277
  anchorTotal: sets.reduce(
232
278
  (n, s) => n + s.members.reduce((m, f) => m + f.total, 0),
233
279
  0,
@@ -238,12 +284,12 @@ export function censusTopic(dir: string, topic: string): TopicCensus {
238
284
  /** Walk a round root: each immediate subdirectory is a topic, plus the root itself. */
239
285
  export function censusRoot(root: string): TopicCensus[] {
240
286
  const out: TopicCensus[] = [];
241
- const rootLevel = censusTopic(root, '.');
242
- if (rootLevel.fileCount > 0) out.push(rootLevel);
287
+ const rootLevel = censusTopic(root, '.', false);
288
+ if (rootLevel.fileCount > 0 || rootLevel.uncounted.length > 0) out.push(rootLevel);
243
289
  for (const d of fs.readdirSync(root, { withFileTypes: true })) {
244
290
  if (!d.isDirectory()) continue;
245
291
  const t = censusTopic(path.join(root, d.name), d.name);
246
- if (t.fileCount > 0) out.push(t);
292
+ if (t.fileCount > 0 || t.uncounted.length > 0) out.push(t);
247
293
  }
248
294
  return out;
249
295
  }
@@ -252,6 +298,7 @@ function render(topics: TopicCensus[], write: (s: string) => unknown): void {
252
298
  let files = 0;
253
299
  let anchors = 0;
254
300
  let revisionSets = 0;
301
+ let uncounted = 0;
255
302
  for (const t of topics) {
256
303
  write(`\n## ${t.topic}\n`);
257
304
  for (const s of t.sets) {
@@ -268,13 +315,27 @@ function render(topics: TopicCensus[], write: (s: string) => unknown): void {
268
315
  if (s.isRevisionSet) revisionSets += 1;
269
316
  }
270
317
  if (t.decisionIds.length > 0) write(` decision ids: ${t.decisionIds.join(' ')}\n`);
318
+ if (t.uncounted.length > 0) {
319
+ write(` not counted (${String(t.uncounted.length)}): ${t.uncounted.join(', ')}\n`);
320
+ }
271
321
  files += t.fileCount;
272
322
  anchors += t.anchorTotal;
323
+ uncounted += t.uncounted.length;
273
324
  }
274
325
  write(
275
326
  `\ntopics ${String(topics.length)} · files ${String(files)} · ` +
276
- `revision sets ${String(revisionSets)} · anchors ${String(anchors)}\n` +
277
- 'Every anchor leaves the run carrying a ledger row or named in one `no-demand` line.\n' +
327
+ `revision sets ${String(revisionSets)} · anchors ${String(anchors)} · ` +
328
+ `not counted ${String(uncounted)}\n`,
329
+ );
330
+ if (uncounted > 0) {
331
+ write(
332
+ `${String(uncounted)} file(s) are named above and were NOT read — the census reads ` +
333
+ `${[...TEXT_EXT].sort().join(' ')} only. The anchor total below is over what was ` +
334
+ 'read, so it is a floor and not a measure of the folder.\n',
335
+ );
336
+ }
337
+ write(
338
+ 'Every anchor leaves the run carrying a ledger row or named in one `no-demand` line.\n' +
278
339
  'Every revision set owes a consecutive-member diff (/analyze:inbox Phase 2b).\n',
279
340
  );
280
341
  }
@@ -208,6 +208,15 @@ if $NO_UI; then
208
208
  export AGENT_CONFIG_NO_UI=1
209
209
  fi
210
210
 
211
+ # `--scope global` is documented above as "same as --global", and it was not:
212
+ # it set SCOPE and nothing else, so the PROJECT payload sync still ran. Under
213
+ # npx that sync auto-detects its target three levels above the package, which
214
+ # is the npx cache, so a global dry-run reported writing `.augment/` there.
215
+ if [[ "${SCOPE:-}" == "global" ]]; then
216
+ GLOBAL=true
217
+ SKIP_SYNC=true
218
+ fi
219
+
211
220
  # road-to-global-only-install § Phase 3.3 — consumer-floor gate.
212
221
  #
213
222
  # Consumer installs are global-only (ADR-020). Explicit --scope=project
@@ -419,12 +428,19 @@ run_bridges() {
419
428
  runner=($tsx_bin "$INSTALL_TS")
420
429
  fi
421
430
 
431
+ local args=(--project "$TARGET_DIR" --package "$SOURCE_DIR")
422
432
  if $DRY_RUN; then
423
- $QUIET || echo " ⏭️ Skipping bridges (--dry-run)"
424
- return 0
433
+ # The install stage owns the global plan, so a dry run asks IT rather
434
+ # than skipping it: install.ts returns from its plan summary before any
435
+ # write or subprocess. Skipping it here left a global dry run printing
436
+ # nothing but the one stage that does not apply to a global install.
437
+ $GLOBAL && args+=(--global)
438
+ [[ -n "$SCOPE" ]] && args+=(--scope="$SCOPE")
439
+ args+=(--tools="$TOOLS" --no-ui --dry-run)
440
+ "${runner[@]}" "${args[@]}"
441
+ return $?
425
442
  fi
426
443
 
427
- local args=(--project "$TARGET_DIR" --package "$SOURCE_DIR")
428
444
  [[ -n "$PROFILE" ]] && args+=(--profile="$PROFILE")
429
445
  [[ -n "$USER_TYPE" ]] && args+=(--user-type="$USER_TYPE")
430
446
  $FORCE && args+=(--force)
@@ -473,6 +489,12 @@ if ! $SKIP_SYNC; then
473
489
  exit 1
474
490
  fi
475
491
  run_sync || RC=$?
492
+ elif $DRY_RUN && ! $QUIET; then
493
+ if $GLOBAL; then
494
+ echo " ⏭️ Project payload sync: skipped — a global install writes user-scope host paths only."
495
+ else
496
+ echo " ⏭️ Project payload sync: skipped (--skip-sync)."
497
+ fi
476
498
  fi
477
499
 
478
500
  if [[ $RC -ne 0 ]]; then
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Agent Config — Project Bridge Installer (TypeScript twin).
4
4
  *
5
- * Ported from the retired Python `src/scripts/install.py` (ADR-200).
5
+ * Ported from the retired Python installer (ADR-200).
6
6
  * The CLI contract pins the historical contract exactly — same flags, same
7
7
  * exit codes, same stdout/stderr split, byte-identical emitted output,
8
8
  * same filesystem effects, same subprocess argv/cwd/env. No behaviour
@@ -88,8 +88,9 @@ import * as mcp_consent from './_lib/mcp_consent_residual.js';
88
88
  import * as scoped_projection from './_lib/scoped_projection.js';
89
89
  import { createConflictTracker } from '../install/conflictTracker.js';
90
90
  import { mkdirp, pathExists, resolvePath, sha256OfFile } from '../install/fsPrimitives.js';
91
- import { filesByToolFromBridges as _files_by_tool_from_bridges, filesByToolFromDeploy as _files_by_tool_from_deploy, hydrateRecordedInventories, preservedIndex, readRecordedByTool, reconcileToolFiles, type ManifestFileEntry } from '../install/manifestFiles.js';
91
+ import { dropGlobalScopeFiles, filesByToolFromBridges as _files_by_tool_from_bridges, filesByToolFromDeploy as _files_by_tool_from_deploy, hydrateRecordedInventories, preservedIndex, readRecordedByTool, reconcileToolFiles, type ManifestFileEntry } from '../install/manifestFiles.js';
92
92
  import { EXIT_COMPLETED_WITH_CONFLICTS } from '../install/preserve.js';
93
+ import { recordGlobalDeploy, retainedFileMessage } from '../install/ownershipLedger.js';
93
94
  import * as surface_tiers from './_lib/surface_tiers.js';
94
95
  import * as global_deploy_inventory from './_lib/global_deploy_inventory.js';
95
96
  import * as rule_layer_overlap from './_lib/rule_layer_overlap.js';
@@ -105,8 +106,10 @@ import * as catalogue from './_lib/skill_catalogue.js';
105
106
  import { isInteractiveSession, type SessionProbe } from '../shared/interactiveContext.js';
106
107
  import * as claude_desktop_bundler from './_lib/claude_desktop_bundler.js';
107
108
  import * as claude_settings_hooks from './_lib/claude_settings_hooks.js';
109
+ import { applyHostListingPolicies } from './_lib/skill_listing_overrides.js';
108
110
  import { hostBindings } from './hooks/host_lowering.js';
109
111
  import { find_project_root_with_anchor, load_agent_settings } from './_lib/agent_settings.js';
112
+ import { legacyProjectionPin } from './_lib/projection_key_migration.js';
110
113
  import { ruleFileArrives, type RuleScope } from '../install/rule_scope.js';
111
114
  import { isExclusivelyPackageOnly, stampHostLayerFingerprint } from '../install/partitionEligibility.js'; // ADR-236
112
115
  import * as claude_rule_rewrite from '../install/claudeRuleRewrite.js';
@@ -116,8 +119,10 @@ import {
116
119
  thinInstalledRuleLayer,
117
120
  } from '../install/installThinLayer.js';
118
121
  import { resolveGlobalRuleScope } from '../install/globalRuleScope.js';
122
+ import { deployClaudeCarrier } from '../install/stagedRuntime.js';
123
+ import { mergeToolsAliases as _merge_tools_aliases } from '../install/toolsArg.js';
119
124
  import { installerThinsHost } from './_lib/lean_projection_mode.js';
120
- import { GLOBAL_DEPLOY_SOURCES, RULE_SOURCE_REL } from '../install/wizard-plan.js';
125
+ import { GLOBAL_DEPLOY_SOURCES, RULE_SOURCE_REL, dryRunTargetLines } from '../install/wizard-plan.js';
121
126
  import { flattenSurface, computeSurfaceDelta, type SettingsSurface } from '../shared/settingsSurface.js';
122
127
  import { settingsSchema } from '../server/schemas/settings.js';
123
128
  import { zodToJsonSchema } from 'zod-to-json-schema';
@@ -348,6 +353,7 @@ const LEGACY_RENAME_MAP: Record<string, string> = {
348
353
  const state = {
349
354
  QUIET: false,
350
355
  PROGRESS_NDJSON: false,
356
+ FULL_PIN: false,
351
357
  };
352
358
 
353
359
  function _emit_progress(obj: Record<string, unknown>): void {
@@ -952,13 +958,7 @@ function ensure_claude_bridge(project_root: string, force: boolean): Record<stri
952
958
  // `_lib/mcp_bridge.ts`; only the call sites are here (see that module's header
953
959
  // for why). Names are forwarded so the export surface is unchanged.
954
960
  const ensure_mcp_bridge = mcp_bridge.makeEnsureMcpBridge(merge_json_file);
955
- const _resolve_tier_b = mcp_bridge.resolveTierB;
956
961
  const _tier_b_advisory = mcp_bridge.tierBAdvisory;
957
- const _prune_tier_b_modules = (
958
- dr: Record<string, DeployResult>,
959
- tier_b: ReadonlySet<string>,
960
- ): [number, Record<string, DeployResult>] =>
961
- _prune_modules_by(dr, mcp_bridge.tierBPrunePredicate(tier_b));
962
962
 
963
963
  function _cursor_dispatch_command(ac_event: string, native: string): string {
964
964
  // Hook-resilience shim (P1.4): missing binary → silent exit 0; a
@@ -1935,6 +1935,8 @@ interface Options {
1935
1935
  interactive: boolean;
1936
1936
  no_ui: boolean;
1937
1937
  dry_run: boolean;
1938
+ /** `--full`: write the sticky user pin into the install receipt (`src/install/userPin.ts`). */
1939
+ full: boolean;
1938
1940
  apply_payload: string | null;
1939
1941
  /**
1940
1942
  * Which rule layer owns the corpus when both `~/.claude/rules/` and
@@ -2306,7 +2308,7 @@ function _update_installed_tools_manifest(
2306
2308
  }
2307
2309
  }
2308
2310
 
2309
- installed_tools.write_manifest(target, version, entries);
2311
+ installed_tools.write_manifest(target, version, dropGlobalScopeFiles(entries, scope === 'global' ? tools : new Set()));
2310
2312
  if (!state.QUIET) {
2311
2313
  const rel = isRelativeTo(target, project_root) ? path.relative(project_root, target) : target;
2312
2314
  info(`Manifest updated: ${rel}`);
@@ -2714,7 +2716,7 @@ function _copy_dir_dereferencing_symlinks(
2714
2716
  return [0, 0, written_paths];
2715
2717
  }
2716
2718
  mkdirp(path.dirname(dest));
2717
- const decision = tracker.resolve(dest, force);
2719
+ const decision = tracker.resolve(dest, force, { from: resolved_src, packageRoot: package_root });
2718
2720
  if (decision === 'preserve') {
2719
2721
  tracker.preserve(dest, resolved_src, package_root);
2720
2722
  _log_tx_entry('skip', dest);
@@ -2789,7 +2791,7 @@ function _copy_dir_dereferencing_symlinks(
2789
2791
  if (file_filter !== null && !file_filter(entry)) {
2790
2792
  continue;
2791
2793
  }
2792
- const decision = tracker.resolve(target, force);
2794
+ const decision = tracker.resolve(target, force, { from: resolved, packageRoot: package_root });
2793
2795
  if (decision === 'preserve') {
2794
2796
  tracker.preserve(target, resolved, package_root);
2795
2797
  skipped += 1;
@@ -2823,7 +2825,7 @@ function _write_claude_desktop_marker(
2823
2825
  // Generated, but manifest-recorded with a digest — so it is in the class the
2824
2826
  // preservation ruling covers, and it used to write unconditionally, ignoring
2825
2827
  // even `--force`, because the tracker was wired only into the copy loop.
2826
- if (tracker.resolve(target, force) === 'preserve') {
2828
+ if (tracker.resolve(target, force, { content: body }) === 'preserve') {
2827
2829
  tracker.preserveContent(target, body);
2828
2830
  return [0, 1, []];
2829
2831
  }
@@ -2841,12 +2843,9 @@ function _deploy_claude_desktop(
2841
2843
  claude_desktop_bundler.build_skill_bundles(package_root, bundles_dir, force);
2842
2844
  claude_desktop_bundler.build_command_bundles(package_root, bundles_dir, force);
2843
2845
  const bundle_count = countZips(bundles_dir);
2844
- const [, , marker_paths] = _write_claude_desktop_marker(
2845
- force,
2846
- lockfile_path,
2847
- bundles_dir,
2848
- bundle_count,
2849
- );
2846
+ const [, , marker_paths] = _write_claude_desktop_marker(force, lockfile_path, bundles_dir, bundle_count);
2847
+ // The marker's digest is the ledger's to hold: a global lock entry records no files[].
2848
+ recordGlobalDeploy({ toolId: 'claude-desktop', anchorRaw: USER_SCOPE_PATHS['claude-desktop'] as string, anchor: expanduser(USER_SCOPE_PATHS['claude-desktop'] as string), currentFiles: new Set(['agent-config.md']), destSubs: [], packageTag: PACKAGE_TAG_ID, preserved: tracker.conflictState.preserved, staged: tracker.conflictState.staged, recordedFor: tracker.recordedDigest });
2850
2849
  return [bundle_count, 0, 'deployed', [bundles_dir, ...marker_paths]];
2851
2850
  }
2852
2851
 
@@ -3015,18 +3014,11 @@ function _deploy_global_content(
3015
3014
  );
3016
3015
  // Steps 1.1 and 1.4 of road-to-an-installed-layer-that-is-thinned;
3017
3016
  // both modules' headers carry the reasoning.
3018
- if (installerThinsHost(tool_id, { packageRoot: package_root })) {
3019
- try {
3020
- const thin = thinInstalledRuleLayer({
3021
- rulesDir: path.join(anchor, 'rules'),
3022
- packageRoot: package_root,
3023
- preserved: preserved_now,
3024
- });
3025
- if (!state.QUIET) for (const l of describeThinInstalledLayer(thin)) info(l);
3026
- } catch (e) {
3027
- warn(`claude-code: thinned rule layer not written — ${String(e)}`);
3028
- }
3029
- }
3017
+ deployClaudeCarrier({
3018
+ packageRoot: package_root, rulesDir: path.join(anchor, 'rules'), quiet: state.QUIET, info, warn, userPin: state.FULL_PIN,
3019
+ wantsThin: installerThinsHost(tool_id, { packageRoot: package_root }),
3020
+ thin: (bodyLinkRoot) => describeThinInstalledLayer(thinInstalledRuleLayer({ rulesDir: path.join(anchor, 'rules'), packageRoot: package_root, preserved: preserved_now, bodyLinkRoot })),
3021
+ });
3030
3022
  if (!state.QUIET) for (const l of installReceiptBudgetLines(package_root, undefined, { thisDeploy: new Map([[anchor, current_files]]) })) info(l);
3031
3023
  }
3032
3024
 
@@ -3044,25 +3036,14 @@ function _deploy_global_content(
3044
3036
  }
3045
3037
  _emit_progress({ type: 'verified', tool: tool_id });
3046
3038
 
3047
- const inventory = global_deploy_inventory.load_inventory();
3048
- let reaped: string[] = [];
3049
- const inv_tools = (inventory['tools'] as Record<string, unknown> | undefined) ?? {};
3050
- if (tool_id in inv_tools) {
3051
- reaped = reaped.concat(
3052
- global_deploy_inventory.reap_stale(tool_id, anchor, current_files, inventory),
3053
- );
3054
- }
3055
- reaped = reaped.concat(
3056
- global_deploy_inventory.reap_tagged_orphans(
3057
- anchor,
3058
- plan.map(([, dest_sub]) => dest_sub),
3059
- current_files,
3060
- PACKAGE_TAG_ID,
3061
- ),
3062
- );
3063
- reaped = [...new Set(reaped)].sort();
3064
- global_deploy_inventory.record_deploy(tool_id, anchor_raw, current_files, inventory);
3065
- global_deploy_inventory.save_inventory(inventory);
3039
+ // Reap, then record the user-scoped ownership ledger — see the module.
3040
+ const { reaped, retained } = recordGlobalDeploy({
3041
+ toolId: tool_id, anchorRaw: anchor_raw, anchor, currentFiles: current_files,
3042
+ destSubs: plan.map(([, dest_sub]) => dest_sub), packageTag: PACKAGE_TAG_ID,
3043
+ preserved: tracker.conflictState.preserved, staged: tracker.conflictState.staged,
3044
+ recordedFor: tracker.recordedDigest,
3045
+ });
3046
+ for (const p of retained) warn(retainedFileMessage(p));
3066
3047
  if (reaped.length > 0 && !state.QUIET) {
3067
3048
  info(
3068
3049
  ` ${tool_id}: reaped ${reaped.length} stale deployed file(s) ` +
@@ -3072,11 +3053,8 @@ function _deploy_global_content(
3072
3053
  _emit_progress({ type: 'reaped', tool: tool_id, count: reaped.length });
3073
3054
  results[tool_id] = [written_total, skipped_total, 'deployed', written_paths];
3074
3055
 
3075
- // Single-surface model (road-to-claude-code-single-surface): the
3076
- // deterministic hook matrix registers directly in the user-scope
3077
- // settings file — the marketplace plugin is no longer required for
3078
- // hooks. Failure here must not sink the content deploy (hooks can
3079
- // be re-wired via `agent-config refresh --global` / doctor).
3056
+ // The hook matrix registers in the user-scope settings file; failure must not sink the
3057
+ // content deploy (re-wire via `agent-config refresh --global` / doctor).
3080
3058
  if (tool_id === 'claude-code') {
3081
3059
  try {
3082
3060
  const manifest = path.join(package_root, 'src', 'scripts', 'hook_manifest.yaml');
@@ -3151,6 +3129,8 @@ function _preview_global_reap(
3151
3129
  current_files,
3152
3130
  PACKAGE_TAG_ID,
3153
3131
  true,
3132
+ // The ledger spares an edited retired file, so the preview must too.
3133
+ global_deploy_inventory.recorded_digests(tool_id, anchor, inventory),
3154
3134
  ),
3155
3135
  );
3156
3136
  const paths = [...new Set(would_reap.map((p) => String(p)))].sort();
@@ -3296,19 +3276,8 @@ function _rule_filter_for_source(
3296
3276
  ruleFileArrives(srcFile, scope) && !isExclusivelyPackageOnly(srcFile);
3297
3277
  }
3298
3278
 
3299
- /**
3300
- * Prune every skill/command artefact whose `packs:` frontmatter is
3301
- * non-empty AND has no intersection with `active_ids`. Untagged artefacts
3302
- * (empty `packs:` frontmatter) are core/shared and always kept.
3303
- */
3304
- function _prune_scoped_modules(
3305
- deploy_results: Record<string, DeployResult>,
3306
- active_ids: ReadonlySet<string>,
3307
- ): [number, Record<string, DeployResult>] {
3308
- return _prune_modules_by(deploy_results, (p) =>
3309
- scoped_projection.is_pruned_under_scoped(p, active_ids),
3310
- );
3311
- }
3279
+ /** Pack prune that keeps every skill a surviving artefact declares (ADR-289). */
3280
+ const _prune_scoped_modules = scoped_projection.prune_scoped_modules;
3312
3281
 
3313
3282
  function install_global(
3314
3283
  tools: Set<string>,
@@ -3438,13 +3407,6 @@ function install_global(
3438
3407
  // here and restores the full tree — never a partial or crashed prune.
3439
3408
  try {
3440
3409
  const { mode, active_packs } = _resolve_scoped_projection(package_root);
3441
- if (mode === 'tiered') {
3442
- const outcome = mcp_bridge.applyTieredPrune(deploy_results, package_root, _prune_modules_by);
3443
- deploy_results = outcome.deployResults;
3444
- if (!state.QUIET && outcome.message !== null) {
3445
- (outcome.level === 'warn' ? warn : info)(outcome.message);
3446
- }
3447
- }
3448
3410
  if (mode === 'scoped') {
3449
3411
  const packs_registry = _load_packs_registry(package_root);
3450
3412
  const active_ids = _compute_active_pack_ids(packs_registry, active_packs);
@@ -3463,6 +3425,8 @@ function install_global(
3463
3425
  warn(`Scoped-projection prune failed — restoring full tree (${String(e)}).`);
3464
3426
  }
3465
3427
  }
3428
+ // After every prune, so only skills still on disk are computed into the listing override.
3429
+ applyHostListingPolicies({ claudeCode: deploy_results['claude-code']?.[2] === 'deployed', codex: deploy_results['codex']?.[2] === 'deployed' }, os.homedir(), expanduser(USER_SCOPE_PATHS['claude-code']!), state.QUIET ? () => undefined : info);
3466
3430
 
3467
3431
  const failed_tools = new Set<string>(
3468
3432
  Object.keys(deploy_results).filter(
@@ -3758,18 +3722,6 @@ function arrayStrEqual(a: string[], b: string[]): boolean {
3758
3722
 
3759
3723
  // --- Argument parsing ---
3760
3724
 
3761
- function _merge_tools_aliases(tools: string | null, ai: string | null): string {
3762
- const items: string[] = [];
3763
- for (const raw of [tools, ai]) {
3764
- if (!raw) continue;
3765
- for (const piece of raw.split(',')) {
3766
- const stripped = piece.trim();
3767
- if (stripped && !items.includes(stripped)) items.push(stripped);
3768
- }
3769
- }
3770
- return items.length > 0 ? items.join(',') : 'all';
3771
- }
3772
-
3773
3725
  const PROG = 'agent-config install';
3774
3726
  // Verbatim argparse usage block at COLUMNS=80 (captured from the .py). The
3775
3727
  // `--help` BODY (per-flag descriptions) is a documented divergence — argparse
@@ -3782,7 +3734,7 @@ const USAGE =
3782
3734
  ' [--windsurf-user-hooks] [--gemini-user-hooks]\n' +
3783
3735
  ' [--project PROJECT] [--package PACKAGE] [--quiet]\n' +
3784
3736
  ' [--tools TOOLS] [--ai AI] [--packs PACKS] [--core-only]\n' +
3785
- ' [--no-smoke] [--global]\n' +
3737
+ ' [--no-smoke] [--global] [--full]\n' +
3786
3738
  ' [--scope {project,global,prompt,auto}]\n' +
3787
3739
  ' [--layer {global,project,both-acknowledged}]\n' +
3788
3740
  ' [--custom-path CUSTOM_PATH] [--offline] [--minimal]\n' +
@@ -3807,6 +3759,7 @@ const _STORE_TRUE_FLAGS: Record<string, keyof Options> = {
3807
3759
  '--interactive': 'interactive',
3808
3760
  '--no-ui': 'no_ui',
3809
3761
  '--dry-run': 'dry_run',
3762
+ '--full': 'full',
3810
3763
  };
3811
3764
 
3812
3765
  const _VALUE_FLAGS: Record<string, keyof Options> = {
@@ -3856,6 +3809,7 @@ function parse_options(argv: string[]): Options {
3856
3809
  interactive: false,
3857
3810
  no_ui: false,
3858
3811
  dry_run: false,
3812
+ full: false,
3859
3813
  apply_payload: null,
3860
3814
  layer: null,
3861
3815
  };
@@ -4478,7 +4432,7 @@ function _dry_run_summary(opts: Options): number {
4478
4432
  process.stdout.write(` user-type: ${opts.user_type || '(none)'}\n`);
4479
4433
  process.stdout.write(` scope: ${opts.scope || (opts.global_install ? 'global' : 'auto')}\n`);
4480
4434
  process.stdout.write(` tools: ${opts.tools || 'all'}\n`);
4481
- process.stdout.write(` target: ${target}\n`);
4435
+ process.stdout.write(dryRunTargetLines(Boolean(opts.global_install) || opts.scope === 'global', _parse_tools(opts.tools || 'all'), target));
4482
4436
  process.stdout.write(` minimal: ${pyBool(opts.minimal)}\n`);
4483
4437
  process.stdout.write(` force: ${pyBool(opts.force)}\n`);
4484
4438
  process.stdout.write(` offline: ${pyBool(opts.offline)}\n`);
@@ -4567,6 +4521,7 @@ function pyRepr(v: unknown): string {
4567
4521
  function main(argv: string[]): number {
4568
4522
  const opts = parse_options(argv);
4569
4523
  state.QUIET = opts.quiet;
4524
+ state.FULL_PIN = opts.full || _legacy_projection_pin();
4570
4525
 
4571
4526
  if (opts.apply_payload) {
4572
4527
  const payload_path = resolvePath(opts.apply_payload);
@@ -4750,6 +4705,22 @@ function _propose_modules_config(project_root: string, is_first_run: boolean): v
4750
4705
  );
4751
4706
  }
4752
4707
 
4708
+ /**
4709
+ * ADR-293's one-window read of the removed projection keys — rules in
4710
+ * `_lib/projection_key_migration.ts`. MACHINE-global layers only, with the
4711
+ * TEMPLATE isolated (ADR-278 / D3: a template value is not consent, and the
4712
+ * shipped template carried `delivery`), and a layer nothing can read states no
4713
+ * preference. `_ABSENT_LAYER` is [project, template]; no tree contains either.
4714
+ */
4715
+ const _ABSENT_LAYER: readonly [string, string] = ['project-settings', 'template'].map((n) => path.join(path.sep, 'dev', 'null', `agent-config-absent-${n}.yml`)) as unknown as readonly [string, string];
4716
+ function _legacy_projection_pin(): boolean {
4717
+ let data: Record<string, unknown> | null = null;
4718
+ try {
4719
+ data = load_agent_settings({ project_path: _ABSENT_LAYER[0], template_path: _ABSENT_LAYER[1] });
4720
+ } catch { /* empty */ }
4721
+ return legacyProjectionPin(data, (line) => warn(line));
4722
+ }
4723
+
4753
4724
  function _read_consumer_auto_switch(project_root: string): string {
4754
4725
  let data: Record<string, unknown>;
4755
4726
  try {
@@ -5101,8 +5072,6 @@ export {
5101
5072
  ensure_cursor_bridge,
5102
5073
  ensure_cline_bridge,
5103
5074
  ensure_mcp_bridge,
5104
- _prune_tier_b_modules,
5105
- _resolve_tier_b,
5106
5075
  _tier_b_advisory,
5107
5076
  ensure_windsurf_bridge,
5108
5077
  ensure_gemini_bridge,
@@ -94,7 +94,17 @@ export interface RunReport {
94
94
  elapsed_minutes: number | null;
95
95
  waiting_minutes: number | null;
96
96
  working_minutes: number | null;
97
- /** `engage` events for this run in `run-continuation.jsonl`. */
97
+ /**
98
+ * `engage` events for this run in `run-continuation.jsonl`.
99
+ *
100
+ * The concern that wrote that ledger was withdrawn on its own
101
+ * pre-registered kill date (road-to-what-was-built-and-never-ran Phase 4),
102
+ * so this reads a HISTORICAL record: three lines, the last from
103
+ * 2026-08-19. The read is kept because the kill criterion kept the
104
+ * observation record, and a run that engaged before the withdrawal did
105
+ * engage. A fresh checkout has no file and the count is 0, which is the
106
+ * same answer it gave for every run that never engaged.
107
+ */
98
108
  reengagements: number;
99
109
  /** `halt-stall` events — the anti-stall rung firing, not the loop working. */
100
110
  stall_halts: number;