@event4u/agent-config 16.5.0 → 17.1.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 (1047) 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 +114 -530
  6. package/CONTRIBUTING.md +47 -0
  7. package/README.md +25 -24
  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 +10 -2
  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 +44 -2
  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-2Y5AMLMY.js +136 -0
  298. package/dist/cli-delegate/chunk-3PK3VZHB.js +235 -0
  299. package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
  300. package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
  301. package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
  302. package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
  303. package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
  304. package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
  305. package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
  306. package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
  307. package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
  308. package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
  309. package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
  310. package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-BZJ4Y3CI.js} +259 -159
  311. package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CMZEKSNN.js} +4280 -705
  312. package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
  313. package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-E3CFULNX.js} +67 -13
  314. package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
  315. package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
  316. package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
  317. package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
  318. package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
  319. package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
  320. package/dist/cli-delegate/chunk-KR5ZIFPO.js +581 -0
  321. package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
  322. package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
  323. package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
  324. package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
  325. package/dist/cli-delegate/chunk-QBHEI5N4.js +919 -0
  326. package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
  327. package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
  328. package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
  329. package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
  330. package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
  331. package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-VYZGJLCA.js} +1000 -814
  332. package/dist/cli-delegate/chunk-W5JXMF2T.js +77 -0
  333. package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
  334. package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
  335. package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-XIAPY44N.js} +37 -16
  336. package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
  337. package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-YHAPONWV.js} +54 -40
  338. package/dist/cli-delegate/cmd_adr_effective.js +41 -2
  339. package/dist/cli-delegate/cmd_analyze_session.js +7 -7
  340. package/dist/cli-delegate/cmd_brand_status.js +1287 -10
  341. package/dist/cli-delegate/cmd_ci_settle.js +330 -0
  342. package/dist/cli-delegate/cmd_conformance.js +487 -820
  343. package/dist/cli-delegate/cmd_doctor.js +26 -16
  344. package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
  345. package/dist/cli-delegate/cmd_explain.js +9 -24
  346. package/dist/cli-delegate/cmd_export.js +15 -12
  347. package/dist/cli-delegate/cmd_fleet.js +6 -4
  348. package/dist/cli-delegate/cmd_git_convention.js +8 -4
  349. package/dist/cli-delegate/cmd_handoff.js +79 -242
  350. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  351. package/dist/cli-delegate/cmd_memory_get.js +4 -2
  352. package/dist/cli-delegate/cmd_migrate.js +2 -2
  353. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  354. package/dist/cli-delegate/cmd_preflight.js +8 -6
  355. package/dist/cli-delegate/cmd_prune.js +17 -14
  356. package/dist/cli-delegate/cmd_route_audit.js +11 -8
  357. package/dist/cli-delegate/cmd_route_explain.js +649 -16
  358. package/dist/cli-delegate/cmd_session_recycle.js +15 -6
  359. package/dist/cli-delegate/cmd_settings_check.js +2 -2
  360. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  361. package/dist/cli-delegate/cmd_settings_migrate.js +15 -12
  362. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  363. package/dist/cli-delegate/cmd_sync.js +17 -14
  364. package/dist/cli-delegate/cmd_uninstall.js +186 -32
  365. package/dist/cli-delegate/cmd_update.js +76 -16
  366. package/dist/cli-delegate/cmd_upgrade.js +38 -7
  367. package/dist/cli-delegate/cmd_validate.js +17 -14
  368. package/dist/cli-delegate/cmd_versions.js +1 -1
  369. package/dist/cli-delegate/dashboard_mode.js +1 -1
  370. package/dist/cli-delegate/gate_execute.js +4 -3
  371. package/dist/cli-delegate/roadmap_age.js +22 -0
  372. package/dist/cli-delegate/roadmap_gates.js +4 -3
  373. package/dist/cli-delegate/update_roadmap_progress.js +3 -2
  374. package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
  375. package/dist/discovery/deprecation-report.md +1 -1
  376. package/dist/discovery/discovery-manifest.json +373 -190
  377. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  378. package/dist/discovery/discovery-manifest.summary.md +5 -5
  379. package/dist/discovery/dormancy-report.md +1 -1
  380. package/dist/discovery/orphan-report.md +1 -1
  381. package/dist/discovery/packs.json +21 -16
  382. package/dist/discovery/trust-report.md +3 -3
  383. package/dist/discovery/workspaces.json +16 -11
  384. package/dist/hooks/chat_history.chunk.cjs +6852 -0
  385. package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
  386. package/dist/hooks/dispatch.js +17450 -18612
  387. package/dist/hooks/dispatch.sha256 +1 -1
  388. package/dist/hooks/egress_engine.chunk.cjs +915 -0
  389. package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
  390. package/dist/hooks/svg_rules.chunk.cjs +281 -49
  391. package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
  392. package/dist/install/claudeRuleRewrite.js +10 -3
  393. package/dist/install/conflict.js +59 -7
  394. package/dist/install/conflictTracker.js +93 -8
  395. package/dist/install/detect.js +3 -3
  396. package/dist/install/hostPermissionsAdapter.js +106 -0
  397. package/dist/install/install.mjs +3234 -1961
  398. package/dist/install/installThinLayer.js +2 -1
  399. package/dist/install/loggedWrites.js +142 -0
  400. package/dist/install/manifestFiles.js +21 -0
  401. package/dist/install/noGoDenyRows.js +300 -0
  402. package/dist/install/noGoRules.js +368 -0
  403. package/dist/install/ownershipLedger.js +133 -0
  404. package/dist/install/paths.js +12 -2
  405. package/dist/install/plan.js +1 -1
  406. package/dist/install/preflight.js +39 -8
  407. package/dist/install/preserve.js +96 -13
  408. package/dist/install/recordedOwnership.js +88 -5
  409. package/dist/install/rule_scope.js +20 -3
  410. package/dist/install/stagedRuntime.js +455 -0
  411. package/dist/install/toolsArg.js +19 -0
  412. package/dist/install/txlog.js +10 -6
  413. package/dist/install/userPin.js +47 -0
  414. package/dist/install/wizard-plan.js +26 -4
  415. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  416. package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
  417. package/dist/mcp/registry-manifest.json +6 -5
  418. package/dist/mcp/server.json +3 -3
  419. package/dist/mcp/server.mjs +10716 -5880
  420. package/dist/router.json +1 -1
  421. package/dist/scripts/_lib/agent_settings.js +7 -12
  422. package/dist/scripts/_lib/asset_render_record.js +219 -0
  423. package/dist/scripts/_lib/claude_builtin_names.js +9 -4
  424. package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
  425. package/dist/scripts/_lib/egress_rules.js +769 -0
  426. package/dist/scripts/_lib/environment_detector.js +24 -33
  427. package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
  428. package/dist/scripts/_lib/guidelines_lane.js +10 -1
  429. package/dist/scripts/_lib/identifier_redaction.js +57 -0
  430. package/dist/scripts/_lib/installed_layer.js +17 -0
  431. package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
  432. package/dist/scripts/_lib/lean_projection_mode.js +34 -152
  433. package/dist/scripts/_lib/project_tree_form.js +118 -0
  434. package/dist/scripts/_lib/scoped_projection.js +133 -3
  435. package/dist/scripts/_lib/settings_removed_keys.js +29 -0
  436. package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
  437. package/dist/scripts/_lib/subagent_native_fields.js +35 -0
  438. package/dist/scripts/_lib/svg_filled_counter.js +285 -0
  439. package/dist/scripts/_lib/svg_rules.js +2 -0
  440. package/dist/scripts/_lib/ui_surface.js +19 -0
  441. package/dist/scripts/_lib/verification_command.js +364 -0
  442. package/dist/scripts/_lib/workspace_secrets.js +229 -0
  443. package/dist/scripts/ai_council/seat_policy.js +33 -0
  444. package/dist/scripts/ai_council/transport_resolver.js +9 -10
  445. package/dist/scripts/condense.js +25 -29
  446. package/dist/server/io/substituteTemplate.js +2 -2
  447. package/dist/server/io/yamlIO.js +2 -2
  448. package/dist/server/routes/install.js +5 -1
  449. package/dist/server/routes/settings.js +2 -2
  450. package/dist/server/routes/wizard.js +1 -1
  451. package/dist/server/schemas/settings.js +22 -16
  452. package/dist/server/serverInfo.js +1 -1
  453. package/dist/shared/brandTokenDocument.js +47 -0
  454. package/dist/shared/brandTokenPaths.js +43 -0
  455. package/dist/shared/settingsCarveOut.js +0 -7
  456. package/dist/shared/skillRanking.js +103 -5
  457. package/dist/shared/userMd/formAdapter.js +16 -0
  458. package/dist/shared/userMd/schema.js +17 -0
  459. package/dist/ui/assets/index-w70Ado09.js +23 -0
  460. package/dist/ui/index.html +1 -1
  461. package/docs/MIGRATION.md +89 -2
  462. package/docs/THIRD-PARTY-NOTICES.md +27 -0
  463. package/docs/contracts/settings-classes.md +27 -9
  464. package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
  465. package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
  466. package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
  467. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
  468. package/docs/guidelines/design-antipatterns.md +5 -0
  469. package/docs/guidelines/design-asset-discipline.md +17 -0
  470. package/docs/guidelines/design-fidelity-routing.md +1 -0
  471. package/docs/guidelines/php/api-design.md +10 -1
  472. package/llms.txt +12 -10
  473. package/package.json +13 -4
  474. package/src/agent-src/scripts/dashboard_mode.ts +4 -1
  475. package/src/agent-src/scripts/roadmap_age.ts +175 -0
  476. package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
  477. package/src/agent-src/templates/AGENTS.md +1 -1
  478. package/src/agent-src/templates/scripts/check_memory.ts +2 -2
  479. package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
  480. package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
  481. package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
  482. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
  483. package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
  484. package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
  485. package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
  486. package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
  487. package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
  488. package/src/config/agent-settings.template.yml +120 -57
  489. package/src/config/agents-paths.yml +13 -7
  490. package/src/config/ci-local-parity.yml +45 -1
  491. package/src/config/continuity-surface.json +51 -2
  492. package/src/config/depth-audit-samples.json +5 -0
  493. package/src/config/discovery/command-verbs.yml +1 -0
  494. package/src/config/dispatch-economy-metrics.json +1 -0
  495. package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
  496. package/src/config/egress-mutations/credential-token-restores.json +7 -0
  497. package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
  498. package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
  499. package/src/config/evaluator-budgets.json +4 -4
  500. package/src/config/gate-coverage.yml +176 -10
  501. package/src/config/gate-reachability-exemptions.json +3 -5
  502. package/src/config/gate-violation-baselines.json +32 -22
  503. package/src/config/gitignore-block.txt +6 -3
  504. package/src/config/hook-bundle-budget.json +34 -3
  505. package/src/config/hook-carrier-probes.json +30 -0
  506. package/src/config/hook-latency-budget.json +4 -2
  507. package/src/config/host-injection-effect.json +8 -1
  508. package/src/config/host-skill-frontmatter-keys.json +56 -0
  509. package/src/config/layer-form-brakes.json +4 -0
  510. package/src/config/layer-form-comparison-corpus.json +42 -0
  511. package/src/config/loop-surfaces.yaml +28 -47
  512. package/src/config/memory-twin-verdicts.yml +9 -1
  513. package/src/config/metric-registry.yml +40 -3
  514. package/src/config/pack-size-budget.json +15 -0
  515. package/src/config/procedure-core-budget.json +21 -0
  516. package/src/config/production-entries.json +18 -0
  517. package/src/config/profiles/minimal.ini +1 -1
  518. package/src/config/project-tree-form.json +24 -0
  519. package/src/config/reach-channels.yml +3 -3
  520. package/src/config/reach-prescriptions-intake.yml +1 -1
  521. package/src/config/release-gate-locality.yml +0 -7
  522. package/src/config/roadmap-step-size-baseline.json +118 -0
  523. package/src/config/routing-coverage-seed.json +93 -2
  524. package/src/config/skill-body-budget.json +686 -0
  525. package/src/config/skill-fork-pilot.json +17 -0
  526. package/src/config/skill-lifecycle-probes-codex.json +57 -0
  527. package/src/config/skill-lifecycle-probes.json +57 -0
  528. package/src/config/skill-output-shape.json +316 -0
  529. package/src/config/step-depth-table.json +58 -0
  530. package/src/config/turnaround-budget.json +90 -0
  531. package/src/install/claudeRuleRewrite.ts +10 -1
  532. package/src/install/conflict.ts +61 -6
  533. package/src/install/conflictTracker.ts +143 -9
  534. package/src/install/detect.ts +3 -3
  535. package/src/install/hostPermissionsAdapter.ts +136 -0
  536. package/src/install/installThinLayer.ts +12 -1
  537. package/src/install/loggedWrites.ts +148 -0
  538. package/src/install/manifestFiles.ts +24 -0
  539. package/src/install/noGoDenyRows.ts +368 -0
  540. package/src/install/noGoRules.ts +438 -0
  541. package/src/install/ownershipLedger.ts +180 -0
  542. package/src/install/paths.ts +11 -2
  543. package/src/install/plan.ts +1 -1
  544. package/src/install/preflight.ts +42 -10
  545. package/src/install/preserve.ts +131 -13
  546. package/src/install/recordedOwnership.ts +121 -3
  547. package/src/install/rule_scope.ts +20 -3
  548. package/src/install/stagedRuntime.ts +528 -0
  549. package/src/install/toolsArg.ts +16 -0
  550. package/src/install/txlog.ts +10 -6
  551. package/src/install/types.ts +23 -2
  552. package/src/install/userPin.ts +54 -0
  553. package/src/install/wizard-plan.ts +25 -4
  554. package/src/scripts/_cli/_doctor_emit.ts +24 -0
  555. package/src/scripts/_cli/cmd_brand_status.ts +223 -12
  556. package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
  557. package/src/scripts/_cli/cmd_conformance.ts +3 -2
  558. package/src/scripts/_cli/cmd_doctor.ts +23 -44
  559. package/src/scripts/_cli/cmd_route_explain.ts +176 -2
  560. package/src/scripts/_cli/cmd_uninstall.ts +270 -26
  561. package/src/scripts/_cli/cmd_update.ts +49 -18
  562. package/src/scripts/_cli/cmd_upgrade.ts +38 -2
  563. package/src/scripts/_cli/detection_report.ts +7 -0
  564. package/src/scripts/_cli/doctor_execution.ts +1 -2
  565. package/src/scripts/_cli/doctor_install_mode.ts +39 -0
  566. package/src/scripts/_cli/doctor_network_posture.ts +3 -3
  567. package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
  568. package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
  569. package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
  570. package/src/scripts/_cli/upgrade_unattended.ts +548 -0
  571. package/src/scripts/_dispatch.bash +42 -9
  572. package/src/scripts/_lib/activation_ladder.ts +1 -1
  573. package/src/scripts/_lib/advisory_inventory.ts +405 -0
  574. package/src/scripts/_lib/advisory_notice.ts +270 -0
  575. package/src/scripts/_lib/advisory_sources.ts +752 -0
  576. package/src/scripts/_lib/advisory_verdicts.ts +363 -0
  577. package/src/scripts/_lib/agent_artifact_location.ts +177 -0
  578. package/src/scripts/_lib/agent_settings.ts +7 -12
  579. package/src/scripts/_lib/arrival_record.ts +217 -0
  580. package/src/scripts/_lib/asset_render_record.ts +247 -0
  581. package/src/scripts/_lib/billing_grant.ts +4 -2
  582. package/src/scripts/_lib/brand_voice_slot.ts +258 -0
  583. package/src/scripts/_lib/canary_status.ts +24 -0
  584. package/src/scripts/_lib/cc_transcript.ts +276 -0
  585. package/src/scripts/_lib/changelog_eras.ts +83 -0
  586. package/src/scripts/_lib/claim_phrases.ts +71 -0
  587. package/src/scripts/_lib/classify_update.ts +171 -0
  588. package/src/scripts/_lib/claude_builtin_names.ts +9 -4
  589. package/src/scripts/_lib/claude_hook_scope.ts +195 -0
  590. package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
  591. package/src/scripts/_lib/codex_resident_set.ts +460 -0
  592. package/src/scripts/_lib/codex_skill_finder.ts +225 -0
  593. package/src/scripts/_lib/confusables.ts +19 -0
  594. package/src/scripts/_lib/consumer_impact.ts +199 -0
  595. package/src/scripts/_lib/content_class.ts +127 -0
  596. package/src/scripts/_lib/council_settings_block.ts +9 -2
  597. package/src/scripts/_lib/counted_probe.ts +68 -1
  598. package/src/scripts/_lib/credential_deny_rows.ts +151 -0
  599. package/src/scripts/_lib/credential_files.ts +367 -0
  600. package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
  601. package/src/scripts/_lib/depth_flip.ts +141 -0
  602. package/src/scripts/_lib/design_lock.ts +117 -0
  603. package/src/scripts/_lib/design_sync_ledger.ts +142 -0
  604. package/src/scripts/_lib/design_sync_plan.ts +177 -0
  605. package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
  606. package/src/scripts/_lib/design_sync_verify.ts +99 -0
  607. package/src/scripts/_lib/design_system_claude_design.ts +323 -0
  608. package/src/scripts/_lib/design_system_import.ts +84 -6
  609. package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
  610. package/src/scripts/_lib/egress_credential_env.ts +35 -0
  611. package/src/scripts/_lib/egress_engine.ts +22 -0
  612. package/src/scripts/_lib/egress_known_values.ts +223 -0
  613. package/src/scripts/_lib/egress_normalize.ts +67 -0
  614. package/src/scripts/_lib/egress_prefixes.ts +42 -0
  615. package/src/scripts/_lib/egress_rules.ts +899 -0
  616. package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
  617. package/src/scripts/_lib/egress_sender_scan.ts +290 -0
  618. package/src/scripts/_lib/egress_session_table.ts +510 -0
  619. package/src/scripts/_lib/egress_text.ts +63 -0
  620. package/src/scripts/_lib/egress_token.ts +252 -0
  621. package/src/scripts/_lib/empty_cycles.ts +1 -1
  622. package/src/scripts/_lib/environment_detector.ts +45 -30
  623. package/src/scripts/_lib/exemption_shape.ts +75 -1
  624. package/src/scripts/_lib/floor_posture.ts +185 -0
  625. package/src/scripts/_lib/forge_protection.ts +140 -2
  626. package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
  627. package/src/scripts/_lib/guidelines_lane.ts +12 -1
  628. package/src/scripts/_lib/hand_kinds.ts +65 -0
  629. package/src/scripts/_lib/headless_invocation.ts +3 -3
  630. package/src/scripts/_lib/host_capability.ts +44 -7
  631. package/src/scripts/_lib/host_env_write.ts +39 -18
  632. package/src/scripts/_lib/host_listing_model.ts +14 -7
  633. package/src/scripts/_lib/identifier_redaction.ts +62 -0
  634. package/src/scripts/_lib/impact_bump.ts +70 -0
  635. package/src/scripts/_lib/install_reach_checks.ts +53 -1
  636. package/src/scripts/_lib/installed_layer.ts +31 -0
  637. package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
  638. package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
  639. package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
  640. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  641. package/src/scripts/_lib/layer_form_corpus.ts +165 -0
  642. package/src/scripts/_lib/layer_form_decision.ts +248 -0
  643. package/src/scripts/_lib/layer_form_evidence.ts +112 -0
  644. package/src/scripts/_lib/lean_projection_mode.ts +32 -161
  645. package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
  646. package/src/scripts/_lib/loop_guards.ts +8 -120
  647. package/src/scripts/_lib/major_surface.ts +207 -0
  648. package/src/scripts/_lib/mcp_bridge.ts +30 -69
  649. package/src/scripts/_lib/merge_clearance_record.ts +384 -0
  650. package/src/scripts/_lib/neighbour_census.ts +18 -1
  651. package/src/scripts/_lib/orchestration_record.ts +61 -0
  652. package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
  653. package/src/scripts/_lib/pin_advice.ts +49 -0
  654. package/src/scripts/_lib/platform_anchor.ts +222 -0
  655. package/src/scripts/_lib/price_freshness.ts +112 -0
  656. package/src/scripts/_lib/procedure_checks.ts +5 -0
  657. package/src/scripts/_lib/production_reach.ts +194 -0
  658. package/src/scripts/_lib/project_tree_form.ts +134 -0
  659. package/src/scripts/_lib/projection_key_migration.ts +122 -0
  660. package/src/scripts/_lib/prompt_shape.ts +13 -2
  661. package/src/scripts/_lib/provenance_verify.ts +272 -0
  662. package/src/scripts/_lib/quota_parked.ts +29 -14
  663. package/src/scripts/_lib/ratification_artifact.ts +64 -1
  664. package/src/scripts/_lib/ratification_subject.ts +508 -46
  665. package/src/scripts/_lib/release_findings_ingest.ts +36 -311
  666. package/src/scripts/_lib/release_highlights.ts +72 -2
  667. package/src/scripts/_lib/release_settings_surface.ts +392 -0
  668. package/src/scripts/_lib/review_round.ts +134 -0
  669. package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
  670. package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
  671. package/src/scripts/_lib/roadmap_step_size.ts +75 -0
  672. package/src/scripts/_lib/run_checkpoint.ts +60 -3
  673. package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
  674. package/src/scripts/_lib/scope_guard.sh +64 -5
  675. package/src/scripts/_lib/scoped_projection.ts +136 -3
  676. package/src/scripts/_lib/secret_detector.ts +24 -103
  677. package/src/scripts/_lib/security_fix.ts +429 -0
  678. package/src/scripts/_lib/security_fix_context.ts +133 -0
  679. package/src/scripts/_lib/self_repair.ts +69 -39
  680. package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
  681. package/src/scripts/_lib/self_repair_payload.ts +86 -0
  682. package/src/scripts/_lib/session_eol.ts +3 -0
  683. package/src/scripts/_lib/session_pr_watch.ts +207 -0
  684. package/src/scripts/_lib/session_register.ts +51 -1
  685. package/src/scripts/_lib/session_tag.ts +51 -0
  686. package/src/scripts/_lib/settings_removed_keys.ts +30 -0
  687. package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
  688. package/src/scripts/_lib/skill_catalogue.ts +66 -25
  689. package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
  690. package/src/scripts/_lib/skill_leases.ts +203 -0
  691. package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
  692. package/src/scripts/_lib/skill_materialisation.ts +388 -0
  693. package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
  694. package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
  695. package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
  696. package/src/scripts/_lib/skill_origin.ts +21 -1
  697. package/src/scripts/_lib/skill_reach.ts +342 -0
  698. package/src/scripts/_lib/source_shape.ts +7 -2
  699. package/src/scripts/_lib/sqlite_guard.ts +1 -1
  700. package/src/scripts/_lib/step_anatomy.ts +330 -0
  701. package/src/scripts/_lib/subagent_capsule.ts +8 -2
  702. package/src/scripts/_lib/subagent_native_fields.ts +30 -0
  703. package/src/scripts/_lib/subagent_spawn.ts +36 -0
  704. package/src/scripts/_lib/subagent_steering.ts +367 -0
  705. package/src/scripts/_lib/svg_filled_counter.ts +287 -0
  706. package/src/scripts/_lib/svg_rules.ts +2 -0
  707. package/src/scripts/_lib/test_delta.ts +89 -6
  708. package/src/scripts/_lib/tier_downshift_verdict.ts +268 -0
  709. package/src/scripts/_lib/tool_result_census.ts +62 -0
  710. package/src/scripts/_lib/trigger_routers.ts +1 -0
  711. package/src/scripts/_lib/turnaround_throughput.ts +378 -0
  712. package/src/scripts/_lib/ui_surface.ts +22 -0
  713. package/src/scripts/_lib/unattended_gates.ts +100 -0
  714. package/src/scripts/_lib/undeployed_fixes.ts +34 -0
  715. package/src/scripts/_lib/update_check.ts +143 -12
  716. package/src/scripts/_lib/update_invite.ts +116 -0
  717. package/src/scripts/_lib/update_notice.ts +259 -0
  718. package/src/scripts/_lib/verify_clause.ts +4 -2
  719. package/src/scripts/_lib/version_order.ts +146 -0
  720. package/src/scripts/_lib/worker_reuse.ts +191 -0
  721. package/src/scripts/_lib/workspace_secrets.ts +273 -0
  722. package/src/scripts/_lib/worktree_git.ts +67 -0
  723. package/src/scripts/_lib/worktree_ignored.ts +116 -0
  724. package/src/scripts/adoption_status.ts +330 -3
  725. package/src/scripts/adr_cite_check.ts +93 -0
  726. package/src/scripts/advisories.ts +803 -0
  727. package/src/scripts/ai-image/adapters/flux.sh +1 -0
  728. package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
  729. package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
  730. package/src/scripts/ai-image/adapters/recraft.sh +1 -0
  731. package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
  732. package/src/scripts/ai-video/adapters/fal.sh +1 -0
  733. package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
  734. package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
  735. package/src/scripts/ai-video/adapters/kling.sh +1 -0
  736. package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
  737. package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
  738. package/src/scripts/ai-video/adapters/replicate.sh +1 -0
  739. package/src/scripts/ai-video/adapters/sora.sh +1 -0
  740. package/src/scripts/ai-video/adapters/syncso.sh +1 -0
  741. package/src/scripts/ai-video/stitch.sh +115 -2
  742. package/src/scripts/ai_council/airgap.ts +1 -0
  743. package/src/scripts/ai_council/api_transport.ts +27 -4
  744. package/src/scripts/ai_council/budget_guard.ts +300 -11
  745. package/src/scripts/ai_council/bundler.ts +20 -29
  746. package/src/scripts/ai_council/chairman.ts +20 -2
  747. package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
  748. package/src/scripts/ai_council/cli_launch_env.ts +54 -0
  749. package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
  750. package/src/scripts/ai_council/clients.ts +56 -73
  751. package/src/scripts/ai_council/config.ts +16 -22
  752. package/src/scripts/ai_council/council_egress.ts +167 -0
  753. package/src/scripts/ai_council/exposure_ledger.ts +117 -0
  754. package/src/scripts/ai_council/free_hand_shadow.ts +288 -0
  755. package/src/scripts/ai_council/free_route.ts +216 -0
  756. package/src/scripts/ai_council/free_route_catalog.ts +310 -0
  757. package/src/scripts/ai_council/free_route_client.ts +99 -0
  758. package/src/scripts/ai_council/free_rung.ts +61 -0
  759. package/src/scripts/ai_council/hand_payload.ts +338 -0
  760. package/src/scripts/ai_council/hand_schemas.ts +123 -0
  761. package/src/scripts/ai_council/jury_aggregate.ts +155 -1
  762. package/src/scripts/ai_council/kind_flip.ts +221 -0
  763. package/src/scripts/ai_council/kind_flip_state.ts +19 -0
  764. package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
  765. package/src/scripts/ai_council/modification_review.ts +98 -5
  766. package/src/scripts/ai_council/necessity.ts +7 -0
  767. package/src/scripts/ai_council/orchestrator.ts +23 -26
  768. package/src/scripts/ai_council/pricing.ts +10 -0
  769. package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
  770. package/src/scripts/ai_council/response_render.ts +27 -4
  771. package/src/scripts/ai_council/round_reservations.ts +119 -0
  772. package/src/scripts/ai_council/route_chooser.ts +161 -0
  773. package/src/scripts/ai_council/route_liveness.ts +152 -0
  774. package/src/scripts/ai_council/route_member.ts +114 -0
  775. package/src/scripts/ai_council/seat_policy.ts +47 -0
  776. package/src/scripts/ai_council/seat_resume.ts +40 -0
  777. package/src/scripts/ai_council/self_hosted_probe.ts +327 -0
  778. package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
  779. package/src/scripts/ai_council/spend_gate.ts +18 -2
  780. package/src/scripts/ai_council/status_surface.ts +39 -0
  781. package/src/scripts/ai_council/transport_resolver.ts +15 -18
  782. package/src/scripts/analysis_analysts.ts +226 -0
  783. package/src/scripts/analysis_anchors.ts +140 -0
  784. package/src/scripts/analysis_and_optimize.ts +44 -0
  785. package/src/scripts/analysis_emit.ts +150 -0
  786. package/src/scripts/analysis_exchange.ts +186 -0
  787. package/src/scripts/analysis_gate.ts +158 -0
  788. package/src/scripts/analysis_inbox_final.ts +173 -0
  789. package/src/scripts/analysis_ledger.ts +119 -0
  790. package/src/scripts/analysis_pr_optimize.ts +219 -0
  791. package/src/scripts/analysis_pr_review.ts +240 -0
  792. package/src/scripts/analysis_pr_target.ts +121 -0
  793. package/src/scripts/analysis_prompts.ts +130 -0
  794. package/src/scripts/analysis_publish.ts +358 -0
  795. package/src/scripts/analysis_questions.ts +78 -0
  796. package/src/scripts/analysis_run.ts +248 -0
  797. package/src/scripts/analysis_run_record.ts +210 -0
  798. package/src/scripts/analysis_target.ts +343 -0
  799. package/src/scripts/analysis_validate.ts +161 -0
  800. package/src/scripts/anchor_eval_falsify.ts +1 -1
  801. package/src/scripts/arrival_report.ts +115 -0
  802. package/src/scripts/ask_transport.ts +406 -35
  803. package/src/scripts/backfill_model_tier.ts +4 -5
  804. package/src/scripts/before_complete_hook.ts +48 -2
  805. package/src/scripts/bench_hook_latency.ts +3 -3
  806. package/src/scripts/bench_procedure_cursor.ts +440 -0
  807. package/src/scripts/bootstrap.sh +3 -3
  808. package/src/scripts/build_exit_code_register.ts +440 -0
  809. package/src/scripts/build_proof.ts +23 -1
  810. package/src/scripts/cache_realization_report.ts +155 -14
  811. package/src/scripts/canary_liveness.ts +117 -0
  812. package/src/scripts/chat_history.ts +12 -15
  813. package/src/scripts/check_account_surface.ts +318 -0
  814. package/src/scripts/check_agent_artifact_location.ts +17 -160
  815. package/src/scripts/check_bundle_path_leakage.ts +6 -0
  816. package/src/scripts/check_ci_local_parity.ts +21 -13
  817. package/src/scripts/check_claims.ts +77 -2
  818. package/src/scripts/check_completion_review.ts +34 -1
  819. package/src/scripts/check_concern_admissions.ts +41 -5
  820. package/src/scripts/check_consumer_scope_flip.ts +1 -1
  821. package/src/scripts/check_context_paths.ts +2 -0
  822. package/src/scripts/check_council_layout.ts +9 -0
  823. package/src/scripts/check_credential_spelling.ts +267 -0
  824. package/src/scripts/check_egress_mutations.ts +239 -0
  825. package/src/scripts/check_enforcement_coverage.ts +16 -3
  826. package/src/scripts/check_estate_count.ts +16 -1
  827. package/src/scripts/check_finding_dispositions.ts +174 -73
  828. package/src/scripts/check_gate_coverage.ts +123 -21
  829. package/src/scripts/check_gate_reachability.ts +16 -2
  830. package/src/scripts/check_generator_sync.ts +46 -0
  831. package/src/scripts/check_hook_bundle_composition.ts +139 -1
  832. package/src/scripts/check_host_docs_digest.ts +142 -5
  833. package/src/scripts/check_kernel_edit_ratified.ts +301 -76
  834. package/src/scripts/check_kernel_rule_bundle.ts +14 -10
  835. package/src/scripts/check_knowledge_cards.ts +83 -3
  836. package/src/scripts/check_memory.ts +13 -3
  837. package/src/scripts/check_pack_size.ts +1 -1
  838. package/src/scripts/check_permission_deny_syntax.ts +247 -0
  839. package/src/scripts/check_platform_anchor.ts +243 -0
  840. package/src/scripts/check_proposal.ts +183 -1
  841. package/src/scripts/check_reach_channels.ts +5 -3
  842. package/src/scripts/check_references.ts +5 -2
  843. package/src/scripts/check_release_manifest_content.ts +33 -0
  844. package/src/scripts/check_release_pr_shape.ts +8 -3
  845. package/src/scripts/check_rule_invariants.ts +9 -1
  846. package/src/scripts/check_skill_body_budget.ts +343 -0
  847. package/src/scripts/check_skill_requires.ts +137 -1
  848. package/src/scripts/check_step_production_reach.ts +257 -0
  849. package/src/scripts/check_step_receipts.ts +246 -0
  850. package/src/scripts/check_structural_breaking.ts +7 -1
  851. package/src/scripts/check_suppression_hygiene.ts +8 -0
  852. package/src/scripts/check_test_weakening.ts +14 -0
  853. package/src/scripts/check_token_quality_golden.ts +5 -1
  854. package/src/scripts/check_update_banner.ts +50 -3
  855. package/src/scripts/check_verify_expectation_delta.ts +2 -1
  856. package/src/scripts/check_voice_lexicon.ts +531 -0
  857. package/src/scripts/ci_os_attribution.ts +327 -0
  858. package/src/scripts/ci_platform_scope.ts +69 -0
  859. package/src/scripts/ci_settle.ts +4 -1
  860. package/src/scripts/ci_status.ts +0 -1
  861. package/src/scripts/ci_time_to_green.ts +748 -0
  862. package/src/scripts/classify_merge_risk.ts +407 -19
  863. package/src/scripts/code_graph/sqlite_store.ts +1 -1
  864. package/src/scripts/compile_trigger_evals.ts +353 -0
  865. package/src/scripts/condense.ts +25 -31
  866. package/src/scripts/consumer_matrix.ts +61 -3
  867. package/src/scripts/council_availability_hook.ts +12 -4
  868. package/src/scripts/council_cli.ts +56 -44
  869. package/src/scripts/cross_repo_retrieve.ts +9 -72
  870. package/src/scripts/design_lock.ts +106 -0
  871. package/src/scripts/design_slop_rules.ts +30 -0
  872. package/src/scripts/design_sync.ts +264 -0
  873. package/src/scripts/design_system_import.ts +30 -13
  874. package/src/scripts/dispatch_economy_report.ts +46 -1
  875. package/src/scripts/dispatch_r2_reviewer.ts +41 -5
  876. package/src/scripts/egress_canary.ts +166 -0
  877. package/src/scripts/egress_sender_census.ts +101 -0
  878. package/src/scripts/external_sources_denylist.json +94 -12
  879. package/src/scripts/generate_catalog.ts +6 -2
  880. package/src/scripts/generate_owned_digest.ts +163 -0
  881. package/src/scripts/generate_reference_toc.ts +143 -0
  882. package/src/scripts/generate_subagent_floor.ts +11 -1
  883. package/src/scripts/handoff_context_hook.ts +34 -0
  884. package/src/scripts/hook_carrier_census.ts +263 -0
  885. package/src/scripts/hook_chunks.d.mts +12 -0
  886. package/src/scripts/hook_chunks.mjs +114 -0
  887. package/src/scripts/hook_manifest.json +1 -1
  888. package/src/scripts/hook_manifest.yaml +68 -42
  889. package/src/scripts/hooks/block_config_weakening.ts +127 -3
  890. package/src/scripts/hooks/block_credential_reads.ts +165 -0
  891. package/src/scripts/hooks/block_no_verify.ts +47 -23
  892. package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
  893. package/src/scripts/hooks/category_a.ts +202 -25
  894. package/src/scripts/hooks/concern_failure_policy.ts +6 -6
  895. package/src/scripts/hooks/concern_registry.ts +31 -6
  896. package/src/scripts/hooks/concern_registry_types.ts +11 -0
  897. package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
  898. package/src/scripts/hooks/design_pass_hook.ts +42 -10
  899. package/src/scripts/hooks/dispatch_hook.ts +14 -13
  900. package/src/scripts/hooks/egress_engine_loader.ts +125 -0
  901. package/src/scripts/hooks/egress_stage.ts +440 -0
  902. package/src/scripts/hooks/hook_stdin.ts +29 -4
  903. package/src/scripts/hooks/host_docs_pages.ts +194 -0
  904. package/src/scripts/hooks/host_docs_pages.yaml +75 -0
  905. package/src/scripts/hooks/host_lowering.json +1 -1
  906. package/src/scripts/hooks/host_lowering.yaml +22 -21
  907. package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
  908. package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
  909. package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
  910. package/src/scripts/hooks/lazy_concern.ts +148 -0
  911. package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
  912. package/src/scripts/hooks/payload_stub.ts +43 -6
  913. package/src/scripts/hooks/permission_gate.ts +7 -7
  914. package/src/scripts/hooks/push_settle_hook.ts +32 -3
  915. package/src/scripts/hooks/replay_hook.ts +43 -0
  916. package/src/scripts/hooks/reread_guard_hook.ts +87 -10
  917. package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
  918. package/src/scripts/hooks/rule_inject_hook.ts +8 -1
  919. package/src/scripts/hooks/session_eol_hook.ts +48 -1
  920. package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
  921. package/src/scripts/hooks/spawn_guard_shadow_hook.ts +162 -10
  922. package/src/scripts/hooks/state_io.ts +2 -2
  923. package/src/scripts/hooks/subagent_ledger_hook.ts +80 -0
  924. package/src/scripts/hooks/svg_obligation.ts +75 -19
  925. package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
  926. package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
  927. package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
  928. package/src/scripts/hooks_doctor.ts +31 -0
  929. package/src/scripts/hooks_status.ts +58 -3
  930. package/src/scripts/inbox_source_census.ts +74 -13
  931. package/src/scripts/install +25 -3
  932. package/src/scripts/install.ts +61 -92
  933. package/src/scripts/interruption_report.ts +11 -1
  934. package/src/scripts/layer_baseline_report.ts +267 -0
  935. package/src/scripts/learning_sidecar.ts +1 -1
  936. package/src/scripts/lint_agents_layout.ts +3 -0
  937. package/src/scripts/lint_blocker_citations.ts +104 -0
  938. package/src/scripts/lint_breaking_changes_index.ts +40 -7
  939. package/src/scripts/lint_consolidation_lineage.ts +144 -16
  940. package/src/scripts/lint_consumer_internal_refs.ts +90 -42
  941. package/src/scripts/lint_context_spine_usage.ts +21 -0
  942. package/src/scripts/lint_decision_classes.ts +34 -0
  943. package/src/scripts/lint_design_antipattern_parity.ts +39 -7
  944. package/src/scripts/lint_evidence_artifacts.ts +31 -0
  945. package/src/scripts/lint_example_fences.ts +11 -2
  946. package/src/scripts/lint_ghostwriter_source.ts +42 -10
  947. package/src/scripts/lint_hook_manifest.ts +118 -0
  948. package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
  949. package/src/scripts/lint_mcp_config_security.ts +9 -11
  950. package/src/scripts/lint_plan_risk_register.ts +28 -1
  951. package/src/scripts/lint_positioning.ts +4 -4
  952. package/src/scripts/lint_provenance.ts +1 -0
  953. package/src/scripts/lint_roadmap_blockers.ts +114 -4
  954. package/src/scripts/lint_roadmap_complexity.ts +98 -0
  955. package/src/scripts/lint_skill_link_reach.ts +251 -9
  956. package/src/scripts/lint_skill_procedures.ts +252 -0
  957. package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
  958. package/src/scripts/lint_subagent_determinism.ts +14 -1
  959. package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
  960. package/src/scripts/mcp_registry_submit.sh +2 -2
  961. package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
  962. package/src/scripts/mcp_server/suggest_skill.ts +89 -4
  963. package/src/scripts/mcp_server/tools.ts +2 -33
  964. package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
  965. package/src/scripts/measure_turn_end_gate.ts +61 -1
  966. package/src/scripts/merge_clearance.ts +225 -0
  967. package/src/scripts/migrate_command_suggestions.ts +1 -1
  968. package/src/scripts/network_sources.ts +236 -0
  969. package/src/scripts/no_go_deny_rows.ts +225 -0
  970. package/src/scripts/orchestration_record.ts +15 -2
  971. package/src/scripts/plan_test_shards.ts +103 -0
  972. package/src/scripts/pr_url_reminder_hook.ts +10 -0
  973. package/src/scripts/print_required_checks.ts +5 -5
  974. package/src/scripts/probe_depth_shadow.ts +406 -0
  975. package/src/scripts/probe_turnaround.ts +342 -10
  976. package/src/scripts/ratification_subject.ts +176 -0
  977. package/src/scripts/rdp_gate_classify.ts +1 -0
  978. package/src/scripts/rdp_quality_eval.ts +1 -0
  979. package/src/scripts/release.ts +31 -64
  980. package/src/scripts/release_drill.ts +63 -188
  981. package/src/scripts/release_env.ts +37 -0
  982. package/src/scripts/release_publication.ts +11 -10
  983. package/src/scripts/report_consumer_gate_reach.ts +233 -0
  984. package/src/scripts/report_merge_gate_load.ts +295 -0
  985. package/src/scripts/report_production_reach.ts +35 -0
  986. package/src/scripts/report_project_contract.ts +123 -0
  987. package/src/scripts/report_reducible_classes.ts +342 -0
  988. package/src/scripts/report_required_checks_drift.ts +5 -3
  989. package/src/scripts/report_skill_host_census.ts +199 -0
  990. package/src/scripts/report_standing_payload_by_host.ts +7 -7
  991. package/src/scripts/retro.ts +758 -0
  992. package/src/scripts/retro_facts.ts +575 -0
  993. package/src/scripts/retro_queue.ts +739 -0
  994. package/src/scripts/retro_session_facts.ts +218 -0
  995. package/src/scripts/retro_sweep.ts +493 -0
  996. package/src/scripts/retro_triage.ts +126 -0
  997. package/src/scripts/roadmap_context.ts +2 -2
  998. package/src/scripts/roadmap_drain_queue.ts +601 -0
  999. package/src/scripts/run_supervise.ts +24 -2
  1000. package/src/scripts/schemas/agent-settings.schema.json +0 -16
  1001. package/src/scripts/schemas/command.schema.json +3 -3
  1002. package/src/scripts/schemas/review-findings.schema.json +8 -0
  1003. package/src/scripts/schemas/skill.schema.json +7 -6
  1004. package/src/scripts/schemas/subagent.schema.json +33 -2
  1005. package/src/scripts/score_skill_selection.ts +5 -2
  1006. package/src/scripts/second_brain_retrieval.ts +1 -0
  1007. package/src/scripts/second_brain_run.ts +1 -0
  1008. package/src/scripts/self_repair_cli.ts +563 -87
  1009. package/src/scripts/self_review_gate.ts +59 -4
  1010. package/src/scripts/session_register_hook.ts +91 -4
  1011. package/src/scripts/sessions_cli.ts +100 -5
  1012. package/src/scripts/skill_collision_clusters.ts +1 -1
  1013. package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
  1014. package/src/scripts/skill_trigger_eval.ts +4 -2
  1015. package/src/scripts/source_adapters.ts +183 -0
  1016. package/src/scripts/step_receipt.ts +100 -0
  1017. package/src/scripts/sync_pr_branch.ts +4 -0
  1018. package/src/scripts/test_council_qualification.ts +1 -1
  1019. package/src/scripts/trigger_eval_grandfather.json +3 -49
  1020. package/src/scripts/trigger_eval_rotation.ts +31 -3
  1021. package/src/scripts/ui_conformance_probe.ts +405 -1
  1022. package/src/scripts/update_counts.ts +230 -11
  1023. package/src/scripts/update_invite_hook.ts +245 -0
  1024. package/src/scripts/update_notice_hook.ts +298 -0
  1025. package/src/scripts/validate_frontmatter.ts +85 -0
  1026. package/src/scripts/worker_reuse_shadow_report.ts +519 -0
  1027. package/src/scripts/worktree_cleanup_check.ts +915 -121
  1028. package/src/server/io/yamlIO.ts +2 -2
  1029. package/src/server/schemas/settings.ts +37 -23
  1030. package/src/shared/brandTokenDocument.ts +46 -0
  1031. package/src/shared/brandTokenPaths.ts +43 -0
  1032. package/src/shared/settingsCarveOut.ts +0 -8
  1033. package/src/shared/skillRanking.ts +106 -5
  1034. package/src/shared/userMd/formAdapter.ts +15 -1
  1035. package/src/shared/userMd/schema.ts +22 -0
  1036. package/src/templates/agent-user.md +4 -0
  1037. package/src/templates/agent-user.yml +4 -0
  1038. package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
  1039. package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
  1040. package/dist/cli-delegate/chunk-A4QJ6ENT.js +0 -50
  1041. package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
  1042. package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
  1043. package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
  1044. package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
  1045. package/dist/ui/assets/index-C3djEJah.js +0 -23
  1046. package/src/scripts/_lib/continuation_ladder.ts +0 -335
  1047. package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
@@ -21,6 +21,7 @@ import { dirname } from 'node:path';
21
21
  import type { PlanInputs } from './plan.js';
22
22
  import { buildInstallPlan } from './plan.js';
23
23
  import { computeConflicts } from './conflict.js';
24
+ import type { ConflictEntry } from './types.js';
24
25
  import { detectToolPresence } from './detect.js';
25
26
 
26
27
  /** Stable identifiers for the four pre-flight probes. */
@@ -155,25 +156,56 @@ export function checkConflicts(inputs: PlanInputs): PreflightFinding[] {
155
156
  id: 'conflicts' as const,
156
157
  severity: 'warning' as const,
157
158
  path: c.path,
158
- message:
159
- c.ownership === 'recorded-modified'
160
- ? `managed ${c.kind} file has been edited since we wrote it`
161
- : `existing file conflicts with planned ${c.kind} content`,
159
+ message: conflictMessage(c),
162
160
  // A remedy here may only describe what an install actually does. Before
163
161
  // the owner ruling of 2026-09-21 the writer overwrote every deployed
164
162
  // file unconditionally, so the `recorded-modified` arm told the
165
163
  // operator to back their edit up. It now preserves that file and stages
166
164
  // the package content beside it, so the same sentence would be false in
167
165
  // the opposite direction — it would understate a protection that ships.
168
- // The `unknown` arm is unchanged: nothing is recorded for that path, so
169
- // the writer still writes over it.
170
- remedy:
171
- c.ownership === 'recorded-modified'
172
- ? 'installing preserves your edit and stages package content as <path>.agent-config.new; --force replaces it instead'
173
- : 'back up this file — installing writes the planned content over it',
166
+ // The `unknown` arm is NO LONGER one arm. A path the ownership ledger
167
+ // lists but holds no digest for is preserved too, so the back-up
168
+ // sentence would be false for it in the same direction the
169
+ // `recorded-modified` one was — it would tell the operator to save a
170
+ // file the installer is about to leave alone.
171
+ remedy: conflictRemedy(c),
174
172
  }));
175
173
  }
176
174
 
175
+ /** What the operator is being told has happened to one conflicting file. */
176
+ function conflictMessage(c: ConflictEntry): string {
177
+ if (c.ownership === 'recorded-modified') {
178
+ return `managed ${c.kind} file has been edited since we wrote it`;
179
+ }
180
+ if (c.migration) {
181
+ return `managed ${c.kind} file predates digest tracking — an edit and an older version look alike here`;
182
+ }
183
+ return `existing file conflicts with planned ${c.kind} content`;
184
+ }
185
+
186
+ /**
187
+ * What an install will actually do to it.
188
+ *
189
+ * A remedy here may only describe what an install actually does, which is why
190
+ * the migration arm exists rather than reusing either neighbour: the file is
191
+ * preserved like an edited one, but the reason is not an edit anyone proved.
192
+ */
193
+ function conflictRemedy(c: ConflictEntry): string {
194
+ if (c.ownership === 'recorded-modified') {
195
+ return 'installing preserves your edit and stages package content as <path>.agent-config.new; --force replaces it instead';
196
+ }
197
+ if (c.migration) {
198
+ // MAY, not WILL, and the hedge is the accurate word rather than a
199
+ // soft one. The branch preserves only when the bytes differ from
200
+ // what the install would write, and that comparison needs the
201
+ // install-time tag, which this surface cannot apply — so a preflight
202
+ // that promised either outcome would be guessing at the one the
203
+ // writer settles.
204
+ return 'installing may preserve this file and stage package content as <path>.agent-config.new rather than overwriting it; the install run says which';
205
+ }
206
+ return 'back up this file — installing writes the planned content over it';
207
+ }
208
+
177
209
  /** Probe 4 — host-detection sanity: report what the target tree looks like. */
178
210
  export function checkHostDetection(inputs: PlanInputs): PreflightFinding[] {
179
211
  const presence = detectToolPresence(inputs.root);
@@ -77,6 +77,26 @@ export interface DeployWriteInputs {
77
77
  * whether the bytes on disk are ours.
78
78
  */
79
79
  readonly recordedSha256: string | null | undefined;
80
+ /**
81
+ * True when the user-scoped ownership ledger LISTS this path, whatever
82
+ * digest it carries — including none.
83
+ *
84
+ * Absent means false, so every caller that does not pass it keeps exactly
85
+ * the behaviour it had. Only the writer, which can read the ledger, sets
86
+ * it.
87
+ */
88
+ readonly ledgerListed?: boolean;
89
+ /**
90
+ * The SHA-256 of the bytes this run WOULD write to the target — the
91
+ * package file plus its install-time tag, not the raw source.
92
+ *
93
+ * Consulted only on the migration branch below, so a caller computes it
94
+ * only when {@link isLedgerMigration} says it is needed. `undefined` means
95
+ * the caller did not compute it and `null` means it could not be; on that
96
+ * branch both preserve, because the branch exists for the case where
97
+ * nothing can be proven.
98
+ */
99
+ readonly packagedSha256?: string | null;
80
100
  /**
81
101
  * The SHA-256 of the bytes on disk, computed immediately before the caller
82
102
  * mutates the file — not at plan time.
@@ -89,31 +109,110 @@ export interface DeployWriteInputs {
89
109
  * `null` when the file could not be read.
90
110
  */
91
111
  readonly onDiskSha256: string | null;
112
+ /**
113
+ * True when the install transaction log records this installer writing
114
+ * exactly the bytes now on disk to this path (`./loggedWrites.ts`).
115
+ * Absent means false. Decides only where {@link logProofApplies} says so.
116
+ */
117
+ readonly loggedWrite?: boolean;
118
+ /**
119
+ * True when the recorded digest is the one this installer STAGED beside the
120
+ * target as a sidecar, rather than bytes it wrote to the target itself.
121
+ *
122
+ * The ledger records a preserved target under the staged digest, so such a
123
+ * target reads `recorded-modified` without anyone having edited it. Only
124
+ * then may the log override the record: a recorded digest of bytes we DID
125
+ * write diverging from disk is a real edit — including a user restoring an
126
+ * older shipped version on purpose, which the log would also match.
127
+ */
128
+ readonly recordedIsStaged?: boolean;
92
129
  /** True when the run carries `--force`. */
93
130
  readonly force: boolean;
94
131
  }
95
132
 
133
+ /**
134
+ * Does this target reach the migration branch at all?
135
+ *
136
+ * Cheap on purpose — it hashes nothing. The migration branch needs the digest
137
+ * of what the run WOULD write, and computing that means staging the package
138
+ * content into a temp file and tagging it. Asking this first means a normal
139
+ * install pays nothing: on a tree where every ledger-listed path carries a
140
+ * digest, this is false everywhere and no extra byte is written.
141
+ *
142
+ * The set it selects is narrow and worth stating exactly. A path is
143
+ * ledger-listed but digest-less only when it was deployed globally by an
144
+ * install that predates the ledger (inventory schema 1, which recorded paths
145
+ * and no digests) AND no project manifest records a digest for it either —
146
+ * which means that install ran from a directory carrying no project settings.
147
+ * That is precisely the population whose global edits this roadmap found being
148
+ * overwritten silently.
149
+ *
150
+ * `onDiskSha256 === null` is excluded deliberately: with bytes that cannot be
151
+ * read, equality is undecidable in both directions, so the pre-ledger
152
+ * behaviour stands rather than being changed on a case nobody reasoned about.
153
+ */
154
+ export function isLedgerMigration(inputs: Omit<DeployWriteInputs, 'packagedSha256'>): boolean {
155
+ if (!inputs.exists || inputs.force || inputs.loggedWrite === true) return false;
156
+ if (inputs.ledgerListed !== true) return false;
157
+ if (inputs.onDiskSha256 === null) return false;
158
+ return classifyOwnership(inputs.recordedSha256, inputs.onDiskSha256) === 'unknown';
159
+ }
160
+
161
+ /**
162
+ * May the transaction-log proof decide this target? Only where the verdict
163
+ * would otherwise be a preservation the record cannot justify: a ledger-listed
164
+ * file with no digest (the migration branch), or a `recorded-modified` file
165
+ * whose recorded digest is a staged one. Everywhere else the log is not read —
166
+ * the ledger alone already decides, and a genuine edit must stay preserved.
167
+ */
168
+ export function logProofApplies(inputs: Omit<DeployWriteInputs, 'packagedSha256' | 'loggedWrite'>): boolean {
169
+ if (!inputs.exists || inputs.force || inputs.onDiskSha256 === null) return false;
170
+ const ownership = classifyOwnership(inputs.recordedSha256, inputs.onDiskSha256);
171
+ if (ownership === 'recorded-modified') return inputs.recordedIsStaged === true;
172
+ // `loggedWrite` is cleared because `isLedgerMigration` excludes a proven
173
+ // target, and this asks whether the target is a candidate BEFORE the proof.
174
+ return ownership === 'unknown' && isLedgerMigration({ ...inputs, loggedWrite: false });
175
+ }
176
+
96
177
  /**
97
178
  * Decide whether the writer may replace one managed file.
98
179
  *
99
- * A target that does not exist is written. A forced run writes. Otherwise the
100
- * recorded-ownership verdict decides: `recorded-modified` preserves, and both
101
- * `recorded-unchanged` and `unknown` write.
102
- *
103
- * The `unknown` arm is the one worth stating out loud, because it is what
104
- * keeps this change from being a regression. No recorded digest means no
105
- * divergence to measure — a tree with no manifest, a global anchor that holds
106
- * none, or a bridge entry recorded without a hash. Preserving there would
107
- * stage a sidecar beside every pre-existing file on a first install, which is
108
- * not protection, it is noise. The ruling covers a file this tree can show it
109
- * wrote and can show has changed since; everything else keeps the behavior it
110
- * had, and `recordedOwnership` already documents that floor.
180
+ * A target that does not exist is written. A forced run writes. A target whose
181
+ * bytes the transaction log records this installer writing there is written
182
+ * where {@link logProofApplies} — there is no edit to lose. Otherwise the
183
+ * recorded-ownership verdict decides:
184
+ * `recorded-modified` preserves, and `recorded-unchanged` writes.
185
+ *
186
+ * The `unknown` arm is the one worth stating out loud. No recorded digest
187
+ * means no divergence to measure — a tree with no manifest, a global anchor
188
+ * that holds none, or a bridge entry recorded without a hash. Preserving every
189
+ * such file would stage a sidecar beside every pre-existing file on a first
190
+ * install, which is not protection, it is noise, and that is still the answer
191
+ * for a file this tree has no record of.
192
+ *
193
+ * THE MIGRATION BRANCH, and why `unknown` is not one thing. A path the
194
+ * ledger LISTS is not a file this tree has no record of: the listing is this
195
+ * package's own record that it deployed that path. The noise argument above
196
+ * was made about genuinely unrecorded files and does not reach it. For that
197
+ * narrow set — see {@link isLedgerMigration} — the only available proof is
198
+ * equality with what the run would write: equal means writing cannot destroy
199
+ * an edit, whatever the history; unequal proves nothing, because an edited
200
+ * file and an untouched older version are indistinguishable without a
201
+ * recorded digest. Overwriting on "proves nothing" accepts irreversible loss
202
+ * knowingly, so the unequal case preserves.
111
203
  */
112
204
  export function decideDeployWrite(inputs: DeployWriteInputs): DeployWriteDecision {
113
205
  if (!inputs.exists) return 'write';
114
206
  if (inputs.force) return 'write';
207
+ if (inputs.loggedWrite === true && logProofApplies(inputs)) return 'write';
115
208
  const ownership = classifyOwnership(inputs.recordedSha256, inputs.onDiskSha256);
116
- return ownership === 'recorded-modified' ? 'preserve' : 'write';
209
+ if (ownership === 'recorded-modified') return 'preserve';
210
+ if (ownership === 'unknown' && isLedgerMigration(inputs)) {
211
+ return inputs.packagedSha256 != null && inputs.packagedSha256 === inputs.onDiskSha256
212
+ ? 'write'
213
+ : 'preserve';
214
+ }
215
+ return 'write';
117
216
  }
118
217
 
119
218
  /** Path of the sidecar staged beside `target`. */
@@ -137,6 +236,25 @@ export function preservedFileMessage(target: string, sidecar: string): string {
137
236
  );
138
237
  }
139
238
 
239
+ /**
240
+ * Per-file report line for a target preserved on the migration branch.
241
+ *
242
+ * Distinct wording because the cause is distinct and the ordinary message
243
+ * would mislead. "Preserved user-modified" asserts an edit; here the run
244
+ * cannot tell an edit from an older version, and saying otherwise would be
245
+ * the kind of unproven claim the preservation path exists to avoid. What the
246
+ * reader needs is why it happened and that it is a one-off.
247
+ */
248
+ export function migrationPreservedMessage(target: string, sidecar: string): string {
249
+ return (
250
+ `Preserved ${target} without being able to classify it: this package deployed it before ` +
251
+ 'it began recording digests, so an edit and an older version look the same here. ' +
252
+ `Package content was written to ${sidecar}; the active installation is not current. ` +
253
+ 'Review and merge it, or rerun with --force to replace the managed file. ' +
254
+ 'Once resolved, this file is classified normally on every later install.'
255
+ );
256
+ }
257
+
140
258
  /** End-of-run summary naming the conflict count and what it means. */
141
259
  export function conflictSummaryMessage(count: number): string {
142
260
  const noun = count === 1 ? 'file' : 'files';
@@ -40,6 +40,7 @@ import { isAbsolute, join, resolve } from 'node:path';
40
40
 
41
41
  import * as YAML from 'yaml';
42
42
 
43
+ import * as global_deploy_inventory from '../scripts/_lib/global_deploy_inventory.js';
43
44
  import { manifest_path, type EnvMap } from '../scripts/_lib/installed_tools.js';
44
45
 
45
46
  /**
@@ -62,20 +63,90 @@ export type RecordedHashes = ReadonlyMap<string, string | null>;
62
63
  /** The empty answer — "nothing is recorded", used whenever no manifest resolves. */
63
64
  export const NO_RECORDED_HASHES: RecordedHashes = new Map<string, string | null>();
64
65
 
66
+ /**
67
+ * The state of one managed file, read from TWO recorded digests and the bytes
68
+ * on disk.
69
+ *
70
+ * One digest answers "did the bytes change since we wrote them". It cannot
71
+ * answer "did WE change what we would write", and every later decision needs
72
+ * both: an untouched file the package has since updated is `outdated`, not
73
+ * `clean`, and an edited file the package has since updated is the case where
74
+ * the user's work and a new version collide.
75
+ *
76
+ * - `clean` — on disk is what we wrote, and still what we ship.
77
+ * - `outdated` — on disk is what we wrote; we now ship something else.
78
+ * - `customized` — edited since we wrote it; we still ship what we wrote.
79
+ * - `customized-and-outdated` — edited, AND we now ship something else.
80
+ * - `retired-unmodified` — we no longer ship it, and it is untouched.
81
+ * - `retired-modified` — we no longer ship it, and it was edited.
82
+ * - `unknown` — no installed digest, or the bytes are unreadable.
83
+ */
84
+ export type FileState =
85
+ | 'clean'
86
+ | 'outdated'
87
+ | 'customized'
88
+ | 'customized-and-outdated'
89
+ | 'retired-unmodified'
90
+ | 'retired-modified'
91
+ | 'unknown';
92
+
93
+ /**
94
+ * Classify one file from the digest we INSTALLED, the digest we would install
95
+ * NOW, and the digest on disk.
96
+ *
97
+ * `packagedSha256`: a string is the current package content; `null` means the
98
+ * package no longer ships the file (retired); `undefined` means the caller does
99
+ * not know — the comparison then degrades to the installed digest alone, which
100
+ * is exactly the old three-state answer and never yields an `-outdated` or
101
+ * `retired-` state. Bytes on disk equal to what we would ship are `clean`
102
+ * whatever was recorded: there is nothing to preserve and nothing to update.
103
+ */
104
+ export function classifyFileState(
105
+ installedSha256: string | null | undefined,
106
+ packagedSha256: string | null | undefined,
107
+ onDiskSha256: string | null,
108
+ ): FileState {
109
+ if (installedSha256 === undefined || installedSha256 === null) return 'unknown';
110
+ if (onDiskSha256 === null) return 'unknown';
111
+ const untouched = onDiskSha256 === installedSha256;
112
+ if (packagedSha256 === null) return untouched ? 'retired-unmodified' : 'retired-modified';
113
+ if (packagedSha256 !== undefined && onDiskSha256 === packagedSha256) return 'clean';
114
+ const shipsWhatWeWrote = packagedSha256 === undefined || packagedSha256 === installedSha256;
115
+ if (untouched) return shipsWhatWeWrote ? 'clean' : 'outdated';
116
+ return shipsWhatWeWrote ? 'customized' : 'customized-and-outdated';
117
+ }
118
+
119
+ /** Collapse a {@link FileState} to the three-state ownership the write decision reads. */
120
+ export function ownershipOfState(state: FileState): RecordedOwnership {
121
+ switch (state) {
122
+ case 'clean':
123
+ case 'outdated':
124
+ case 'retired-unmodified':
125
+ return 'recorded-unchanged';
126
+ case 'customized':
127
+ case 'customized-and-outdated':
128
+ case 'retired-modified':
129
+ return 'recorded-modified';
130
+ case 'unknown':
131
+ return 'unknown';
132
+ }
133
+ }
134
+
65
135
  /**
66
136
  * Classify one target from the recorded digest and the on-disk digest.
67
137
  *
68
138
  * Pure — the caller supplies both digests. `undefined` for `recordedSha256`
69
139
  * means the path is not recorded at all; `null` means recorded without a
70
140
  * digest. Both answer `unknown`, because neither supports a comparison.
141
+ *
142
+ * The three-state view of {@link classifyFileState} with the packaged digest
143
+ * unknown — one classifier, so the two answers cannot drift apart.
71
144
  */
72
145
  export function classifyOwnership(
73
146
  recordedSha256: string | null | undefined,
74
147
  onDiskSha256: string | null,
75
148
  ): RecordedOwnership {
76
- if (recordedSha256 === undefined || recordedSha256 === null) return 'unknown';
77
- if (onDiskSha256 === null) return 'unknown';
78
- return recordedSha256 === onDiskSha256 ? 'recorded-unchanged' : 'recorded-modified';
149
+ return ownershipOfState(classifyFileState(recordedSha256, undefined, onDiskSha256));
79
150
  }
80
151
 
81
152
  /**
@@ -147,3 +218,50 @@ function expanduser(p: string): string {
147
218
  export function recordedHashesForRoot(root: string, env?: EnvMap | null): RecordedHashes {
148
219
  return readRecordedHashes(manifest_path(root, env), root);
149
220
  }
221
+
222
+ /**
223
+ * {@link recordedHashesForRoot} with the USER-scoped ownership ledger laid over
224
+ * it.
225
+ *
226
+ * The project manifest is written only from a project that carries settings,
227
+ * so on its own it decided a globally installed file's fate by the working
228
+ * directory of the install. The ledger (the `digests` of the global deploy
229
+ * inventory) is written on every global deploy, wherever it ran from, and it
230
+ * WINS where both record a path: it is rewritten by every global install, while
231
+ * a project's manifest is rewritten only by installs run from that project and
232
+ * so goes stale the moment a second project installs. A path the ledger does
233
+ * not record keeps the manifest's answer, so a project-scope target reads
234
+ * exactly as before.
235
+ *
236
+ * The one table the preview (`computeConflicts`) and the writer
237
+ * (`conflictTracker`) both read, so the two cannot answer differently.
238
+ */
239
+ /**
240
+ * Every absolute path the user-scoped ledger LISTS, with or without a digest.
241
+ *
242
+ * {@link recordedHashesWithLedger} answers "what digest did we record"; this
243
+ * answers the strictly weaker "did we deploy here at all", which is the
244
+ * question an inventory written before digests existed can still answer. The
245
+ * write decision needs both: a listed path with no digest is not a file this
246
+ * tree has no record of, and treating the two alike is what let a pre-ledger
247
+ * global edit be overwritten silently.
248
+ *
249
+ * Here rather than in the tracker so the inventory stays read by the one
250
+ * module that already reads it, under the same `AGENT_CONFIG_DEPLOY_INVENTORY`
251
+ * override.
252
+ */
253
+ export function ledgerListedPaths(env?: EnvMap | null): ReadonlySet<string> {
254
+ return global_deploy_inventory.recorded_absolute_files(
255
+ global_deploy_inventory.load_inventory(global_deploy_inventory.inventory_path(env)),
256
+ env?.['HOME'],
257
+ );
258
+ }
259
+
260
+ export function recordedHashesWithLedger(root: string, env?: EnvMap | null): RecordedHashes {
261
+ const out = new Map<string, string | null>(recordedHashesForRoot(root, env));
262
+ const ledger = global_deploy_inventory.load_inventory(global_deploy_inventory.inventory_path(env));
263
+ for (const [target, sha] of global_deploy_inventory.recorded_absolute_digests(ledger, env?.['HOME'])) {
264
+ out.set(target, sha);
265
+ }
266
+ return out;
267
+ }
@@ -32,7 +32,7 @@
32
32
  import * as fs from 'node:fs';
33
33
  import * as path from 'node:path';
34
34
 
35
- import { resolve_rule_pack_scope } from '../scripts/_lib/scoped_projection.js';
35
+ import { consumerRuleWorkspaces, resolve_rule_pack_scope } from '../scripts/_lib/scoped_projection.js';
36
36
  import { rule_in_scope } from './ruleInScope.js';
37
37
 
38
38
  /**
@@ -72,9 +72,15 @@ export function ruleScopeFromSettings(
72
72
  settings: Record<string, unknown>,
73
73
  packageRoot?: string,
74
74
  ): RuleScope {
75
+ // The WORKSPACE axis is derived from the pack vocabulary since ADR-293 step
76
+ // 4.6, so it no longer depends on a `projection` block existing at all — a
77
+ // rule is not a setting, and a settings file that happens to omit a section
78
+ // cannot switch one off. The pack and role axes are still read, so a
79
+ // missing block leaves them inactive exactly as before.
80
+ const derivedWorkspaces = packageRoot === undefined ? null : consumerRuleWorkspaces(packageRoot);
75
81
  const proj = settings['projection'];
76
82
  if (typeof proj !== 'object' || proj === null || Array.isArray(proj)) {
77
- return LEGACY_ALL;
83
+ return { ...LEGACY_ALL, workspaces: derivedWorkspaces };
78
84
  }
79
85
  const p = proj as Record<string, unknown>;
80
86
  // `rule_packs: auto` derives the active-pack set — the SAME set the
@@ -91,7 +97,18 @@ export function ruleScopeFromSettings(
91
97
  _list(_runtimeActivePacks(settings)) ?? [],
92
98
  );
93
99
  return {
94
- workspaces: _list(p['rule_workspaces']),
100
+ // DERIVED since ADR-293 step 4.6, not read. `projection.rule_workspaces`
101
+ // carried this list as a settings default — the nine consumer workspace
102
+ // ids, re-typed into the template and needing a re-type whenever a pack
103
+ // arrived with a new one. What it encoded is a RULE: maintainer-only
104
+ // rules never project to a consumer. `consumerRuleWorkspaces` derives
105
+ // exactly that from the pack vocabulary, and the derived set equals the
106
+ // old default (asserted in `consumer_rule_workspaces.test.ts`).
107
+ // Without a package root there is no vocabulary to read, so the axis is
108
+ // INACTIVE rather than empty — the same degradation `rule_packs` makes
109
+ // above, and the same reason: a package that cannot read its own pack
110
+ // list must ship more than it should, never less.
111
+ workspaces: derivedWorkspaces,
95
112
  packs,
96
113
  roles: _list(p['rule_roles']),
97
114
  };