@event4u/agent-config 9.8.0 → 9.10.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 (1115) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +234 -295
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +55 -9
  6. package/dist/agent-src/commands/agent-status.md +12 -11
  7. package/dist/agent-src/commands/agents/audit.md +1 -1
  8. package/dist/agent-src/commands/agents/optimize.md +2 -2
  9. package/dist/agent-src/commands/agents/user/accept.md +115 -30
  10. package/dist/agent-src/commands/agents/user/delete.md +147 -0
  11. package/dist/agent-src/commands/agents/user/review.md +65 -28
  12. package/dist/agent-src/commands/agents/user/show.md +82 -29
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +17 -4
  15. package/dist/agent-src/commands/agents.md +1 -1
  16. package/dist/agent-src/commands/check-current-md.md +3 -13
  17. package/dist/agent-src/commands/condense.md +28 -97
  18. package/dist/agent-src/commands/cost/report.md +7 -0
  19. package/dist/agent-src/commands/fix/portability.md +2 -10
  20. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  21. package/dist/agent-src/commands/fix/refs.md +2 -10
  22. package/dist/agent-src/commands/fix/route.md +4 -3
  23. package/dist/agent-src/commands/fix.md +9 -6
  24. package/dist/agent-src/commands/ghostwriter.md +1 -1
  25. package/dist/agent-src/commands/humanize.md +2 -2
  26. package/dist/agent-src/commands/image.md +1 -1
  27. package/dist/agent-src/commands/jira-ticket.md +1 -1
  28. package/dist/agent-src/commands/memory/load.md +11 -0
  29. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  30. package/dist/agent-src/commands/optimize/skills.md +3 -3
  31. package/dist/agent-src/commands/post-as.md +1 -1
  32. package/dist/agent-src/commands/pr/create.md +4 -4
  33. package/dist/agent-src/commands/profile/show.md +3 -3
  34. package/dist/agent-src/commands/research.md +1 -1
  35. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  36. package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
  37. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  38. package/dist/agent-src/commands/tdd.md +21 -0
  39. package/dist/agent-src/commands/team/delegate.md +4 -0
  40. package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
  41. package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
  42. package/dist/agent-src/commands/team.md +4 -1
  43. package/dist/agent-src/commands/upstream-contribute.md +0 -1
  44. package/dist/agent-src/commands/video.md +1 -1
  45. package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
  46. package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
  47. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  48. package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
  49. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
  50. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  51. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
  52. package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
  53. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
  54. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
  55. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
  56. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
  57. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  58. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +99 -23
  59. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  60. package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
  61. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
  62. package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
  63. package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
  64. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +34 -0
  65. package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
  66. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
  67. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  68. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  69. package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
  70. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  71. package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
  72. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  73. package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
  74. package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
  75. package/dist/agent-src/contexts/model-recommendations.md +3 -2
  76. package/dist/agent-src/contexts/subagent-configuration.md +3 -3
  77. package/dist/agent-src/ghostwriter/README.md +2 -2
  78. package/dist/agent-src/packs/README.md +1 -1
  79. package/dist/agent-src/personas/README.md +5 -5
  80. package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
  81. package/dist/agent-src/personas/backend-architect.md +24 -23
  82. package/dist/agent-src/personas/eloquent-tamer.md +30 -30
  83. package/dist/agent-src/personas/frontend-engineer.md +30 -30
  84. package/dist/agent-src/personas/product-owner.md +41 -38
  85. package/dist/agent-src/personas/qa.md +13 -13
  86. package/dist/agent-src/personas/security-engineer.md +22 -22
  87. package/dist/agent-src/presets/README.md +3 -3
  88. package/dist/agent-src/profiles/README.md +3 -3
  89. package/dist/agent-src/rules/active-remediation.md +2 -2
  90. package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
  91. package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
  92. package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
  93. package/dist/agent-src/rules/broken-access-control.md +4 -4
  94. package/dist/agent-src/rules/code-comment-discipline.md +1 -1
  95. package/dist/agent-src/rules/code-provenance.md +112 -0
  96. package/dist/agent-src/rules/commit-policy.md +4 -9
  97. package/dist/agent-src/rules/communication-through-line.md +5 -5
  98. package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
  99. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
  100. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  101. package/dist/agent-src/rules/domain-safety-pii.md +1 -1
  102. package/dist/agent-src/rules/external-code-graph-interop.md +5 -5
  103. package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
  104. package/dist/agent-src/rules/finance-safety-floor.md +1 -1
  105. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
  106. package/dist/agent-src/rules/history-discipline.md +80 -0
  107. package/dist/agent-src/rules/legal-safety-floor.md +1 -1
  108. package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
  109. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
  110. package/dist/agent-src/rules/media-governance-routing.md +13 -13
  111. package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
  112. package/dist/agent-src/rules/no-cheap-questions.md +7 -7
  113. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
  114. package/dist/agent-src/rules/no-roadmap-references.md +1 -1
  115. package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
  116. package/dist/agent-src/rules/onboarding-gate.md +14 -4
  117. package/dist/agent-src/rules/persona-governance.md +2 -2
  118. package/dist/agent-src/rules/php-coding.md +1 -0
  119. package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
  120. package/dist/agent-src/rules/preservation-guard.md +10 -2
  121. package/dist/agent-src/rules/question-not-instruction.md +1 -1
  122. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  123. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  124. package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
  125. package/dist/agent-src/rules/rule-type-governance.md +1 -1
  126. package/dist/agent-src/rules/scale-discipline.md +92 -0
  127. package/dist/agent-src/rules/scope-control.md +1 -1
  128. package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
  129. package/dist/agent-src/rules/security-sensitive-stop.md +24 -8
  130. package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
  131. package/dist/agent-src/rules/session-canary.md +77 -0
  132. package/dist/agent-src/rules/skill-quality.md +1 -1
  133. package/dist/agent-src/rules/source-confidentiality.md +21 -19
  134. package/dist/agent-src/rules/source-of-truth.md +6 -5
  135. package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
  136. package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
  137. package/dist/agent-src/rules/think-before-action.md +5 -5
  138. package/dist/agent-src/rules/token-budget-discipline.md +5 -3
  139. package/dist/agent-src/rules/token-efficiency.md +2 -2
  140. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  141. package/dist/agent-src/rules/tool-safety.md +3 -1
  142. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  143. package/dist/agent-src/rules/user-interaction.md +12 -0
  144. package/dist/agent-src/rules/verify-before-complete.md +4 -24
  145. package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
  146. package/dist/agent-src/skills/agent-security-review/SKILL.md +53 -46
  147. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  148. package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
  149. package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
  150. package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  151. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
  152. package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
  153. package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
  154. package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
  155. package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  156. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  157. package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
  158. package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -15
  159. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
  160. package/dist/agent-src/skills/code-review/SKILL.md +6 -6
  161. package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
  162. package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
  163. package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
  164. package/dist/agent-src/skills/context-document/SKILL.md +23 -21
  165. package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
  166. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  167. package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
  168. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  169. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  170. package/dist/agent-src/skills/design-review/SKILL.md +20 -20
  171. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
  172. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  173. package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
  174. package/dist/agent-src/skills/docker/SKILL.md +1 -1
  175. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
  176. package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
  177. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
  178. package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
  179. package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
  180. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
  181. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -5
  182. package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
  183. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
  184. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  185. package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
  186. package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
  187. package/dist/agent-src/skills/grafana/SKILL.md +5 -0
  188. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  189. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  190. package/dist/agent-src/skills/humanizer/SKILL.md +84 -67
  191. package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
  192. package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
  193. package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
  194. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  195. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  196. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
  197. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
  198. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
  199. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
  200. package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
  201. package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
  202. package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
  203. package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
  204. package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
  205. package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
  206. package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
  207. package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
  208. package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
  209. package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
  210. package/dist/agent-src/skills/launch-readiness/SKILL.md +2 -2
  211. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
  212. package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
  213. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
  214. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  215. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  216. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  217. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  218. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  219. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  220. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
  221. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  222. package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
  223. package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
  224. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  225. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
  226. package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
  227. package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
  228. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
  229. package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
  230. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +136 -127
  231. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
  232. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
  233. package/dist/agent-src/skills/project-analysis-core/SKILL.md +5 -5
  234. package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  235. package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
  236. package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  237. package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  238. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  239. package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
  240. package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
  241. package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
  242. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +57 -21
  243. package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
  244. package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
  245. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
  246. package/dist/agent-src/skills/recursive-verification/SKILL.md +7 -0
  247. package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
  248. package/dist/agent-src/skills/refine-ticket/SKILL.md +23 -5
  249. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  250. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  251. package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
  252. package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -73
  253. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  254. package/dist/agent-src/skills/rule-refactor/SKILL.md +4 -4
  255. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  256. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  257. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
  258. package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
  259. package/dist/agent-src/skills/security-audit/SKILL.md +27 -10
  260. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +39 -17
  261. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +17 -14
  262. package/dist/agent-src/skills/skill-writing/SKILL.md +11 -10
  263. package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
  264. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  265. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
  266. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
  267. package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
  268. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +60 -86
  269. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +33 -6
  270. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
  271. package/dist/agent-src/skills/systematic-debugging/SKILL.md +24 -23
  272. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -4
  273. package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
  274. package/dist/agent-src/skills/terraform/SKILL.md +2 -2
  275. package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
  276. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
  277. package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
  278. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  279. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  280. package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
  281. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
  282. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
  283. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
  284. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
  285. package/dist/agent-src/skills/video-director/SKILL.md +7 -7
  286. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +5 -6
  287. package/dist/agent-src/templates/AGENTS.md +1 -1
  288. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  289. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  290. package/dist/agent-src/templates/command.md +3 -3
  291. package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
  292. package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
  293. package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
  294. package/dist/agent-src/templates/contexts.md +1 -1
  295. package/dist/agent-src/templates/features.md +1 -1
  296. package/dist/agent-src/templates/persona.md +2 -2
  297. package/dist/agent-src/templates/roadmaps.md +125 -116
  298. package/dist/agent-src/templates/rule.md +4 -3
  299. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  300. package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  301. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  302. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  303. package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  304. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
  305. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
  306. package/dist/agent-src/user-types/README.md +8 -8
  307. package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
  308. package/dist/agent-src/user-types/metalworking-shop.md +35 -34
  309. package/dist/agent-src/user-types/truck-driver.md +22 -20
  310. package/dist/cli/commands/doctorShell.js +20 -0
  311. package/dist/cli/commands/doctorShell.js.map +1 -1
  312. package/dist/cli/commands/rtkDetect.js +58 -0
  313. package/dist/cli/commands/rtkDetect.js.map +1 -0
  314. package/dist/cli/firstRunNotice.js +70 -0
  315. package/dist/cli/firstRunNotice.js.map +1 -0
  316. package/dist/cli/main.js +35 -3
  317. package/dist/cli/main.js.map +1 -1
  318. package/dist/cli/python/workspace_roles.js +2 -2
  319. package/dist/cli/python/workspace_roles.js.map +1 -1
  320. package/dist/cli/registry.js +7 -1
  321. package/dist/cli/registry.js.map +1 -1
  322. package/dist/discovery/deprecation-report.md +1 -1
  323. package/dist/discovery/discovery-manifest.json +429 -119
  324. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  325. package/dist/discovery/discovery-manifest.summary.md +6 -4
  326. package/dist/discovery/orphan-report.md +1 -1
  327. package/dist/discovery/packs.json +91 -8
  328. package/dist/discovery/trust-report.md +11 -11
  329. package/dist/discovery/workspaces.json +32 -7
  330. package/dist/hooks/dispatch.js +19649 -0
  331. package/dist/install/agentSwitchDetection.js +75 -0
  332. package/dist/install/agentSwitchDetection.js.map +1 -0
  333. package/dist/install/agentSwitchProfile.js +117 -0
  334. package/dist/install/agentSwitchProfile.js.map +1 -0
  335. package/dist/install/atomic.js +1 -1
  336. package/dist/install/detect.js +1 -1
  337. package/dist/install/install.mjs +783 -486
  338. package/dist/install/rtkDetection.js +213 -0
  339. package/dist/install/rtkDetection.js.map +1 -0
  340. package/dist/install/rule_scope.js +2 -1
  341. package/dist/install/rule_scope.js.map +1 -1
  342. package/dist/install/types.js +2 -2
  343. package/dist/install/wizard-plan.js +1 -1
  344. package/dist/install/wizardDismissals.js +58 -0
  345. package/dist/install/wizardDismissals.js.map +1 -0
  346. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  347. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  348. package/dist/mcp/registry-manifest.json +15 -4
  349. package/dist/mcp/server.json +20 -0
  350. package/dist/mcp/server.mjs +44634 -0
  351. package/dist/router.json +1 -1
  352. package/dist/scripts/_lib/compile_time_toggles.js +48 -0
  353. package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
  354. package/dist/scripts/condense.js +248 -224
  355. package/dist/scripts/condense.js.map +1 -1
  356. package/dist/server/app.js +4 -2
  357. package/dist/server/app.js.map +1 -1
  358. package/dist/server/io/sharedWriteCheck.js +101 -0
  359. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  360. package/dist/server/routes/ping.js +14 -0
  361. package/dist/server/routes/ping.js.map +1 -1
  362. package/dist/server/routes/settings.js +21 -4
  363. package/dist/server/routes/settings.js.map +1 -1
  364. package/dist/server/routes/userMd.js +21 -4
  365. package/dist/server/routes/userMd.js.map +1 -1
  366. package/dist/server/routes/wizard.js +68 -25
  367. package/dist/server/routes/wizard.js.map +1 -1
  368. package/dist/server/schemas/settings.js +8 -2
  369. package/dist/server/schemas/settings.js.map +1 -1
  370. package/dist/shared/userMd/utils.js +30 -0
  371. package/dist/shared/userMd/utils.js.map +1 -1
  372. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  373. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  374. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  375. package/dist/ui/index.html +2 -2
  376. package/docs/MIGRATION.md +16 -0
  377. package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
  378. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
  379. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  380. package/package.json +21 -11
  381. package/src/agent-src/templates/AGENTS.md +1 -1
  382. package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  383. package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  384. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  385. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  386. package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  387. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
  388. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
  389. package/src/config/agent-settings.template.yml +84 -16
  390. package/src/config/ci-local-parity.yml +142 -0
  391. package/src/config/discovery/packs.yml +22 -0
  392. package/src/config/discovery/workspaces.yml +1 -1
  393. package/src/config/evaluator-budgets.json +47 -0
  394. package/src/config/gate-coverage.yml +127 -0
  395. package/src/config/hook-latency-budget.json +20 -0
  396. package/src/config/preamble-payload-budget.json +44 -0
  397. package/src/install/agentSwitchDetection.ts +90 -0
  398. package/src/install/agentSwitchProfile.ts +131 -0
  399. package/src/install/atomic.ts +1 -1
  400. package/src/install/detect.ts +1 -1
  401. package/src/install/rtkDetection.ts +274 -0
  402. package/src/install/rule_scope.ts +9 -2
  403. package/src/install/types.ts +2 -2
  404. package/src/install/wizard-plan.ts +1 -1
  405. package/src/install/wizardDismissals.ts +60 -0
  406. package/src/scripts/_cli/cmd_doctor.ts +139 -2
  407. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  408. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  409. package/src/scripts/_dispatch.bash +81 -0
  410. package/src/scripts/_lib/agent_user_profile.ts +381 -0
  411. package/src/scripts/_lib/agents_overlay.ts +9 -0
  412. package/src/scripts/_lib/anchor_eval.ts +311 -0
  413. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  414. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  415. package/src/scripts/_lib/cc_transcript.ts +316 -0
  416. package/src/scripts/_lib/compile_time_toggles.ts +79 -0
  417. package/src/scripts/_lib/confusables.ts +101 -0
  418. package/src/scripts/_lib/detect_target_license.ts +714 -0
  419. package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
  420. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
  421. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
  422. package/src/scripts/_lib/install_drift.ts +194 -0
  423. package/src/scripts/_lib/managed_agents_folder.ts +181 -0
  424. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  425. package/src/scripts/_lib/orchestration_record.ts +91 -2
  426. package/src/scripts/_lib/payload_hash_drift.ts +126 -0
  427. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  428. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  429. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  430. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  431. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  432. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  433. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  434. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  435. package/src/scripts/_lib/persistence/types.ts +109 -0
  436. package/src/scripts/_lib/preservation_migration.ts +291 -0
  437. package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
  438. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  439. package/src/scripts/_lib/scan_scope.ts +115 -0
  440. package/src/scripts/_lib/secret_detector.test.ts +5 -0
  441. package/src/scripts/_lib/secret_detector.ts +9 -0
  442. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  443. package/src/scripts/_lib/spawn_env.ts +7 -0
  444. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  445. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  446. package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
  447. package/src/scripts/_lib/user_global_observations.ts +830 -0
  448. package/src/scripts/_lib/user_global_revocations.ts +110 -0
  449. package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
  450. package/src/scripts/_lib/worker_budget.ts +107 -0
  451. package/src/scripts/ai_council/blind_review.ts +212 -0
  452. package/src/scripts/ai_council/budget_guard.ts +90 -11
  453. package/src/scripts/ai_council/bundler.ts +2 -2
  454. package/src/scripts/ai_council/clients.ts +59 -3
  455. package/src/scripts/ai_council/config.ts +50 -6
  456. package/src/scripts/ai_council/orchestrator.ts +127 -12
  457. package/src/scripts/ai_team/review_gate.ts +8 -10
  458. package/src/scripts/ai_team/team_dispatch.ts +65 -6
  459. package/src/scripts/anchor_eval_falsify.ts +198 -0
  460. package/src/scripts/anchor_scoring_run.ts +239 -0
  461. package/src/scripts/annotate_discovery.ts +1 -65
  462. package/src/scripts/audit_initial_context.ts +1 -1
  463. package/src/scripts/bench_cross_source_eval.ts +400 -0
  464. package/src/scripts/bench_honesty_score.ts +1093 -0
  465. package/src/scripts/bench_hook_latency.ts +218 -0
  466. package/src/scripts/bench_quality_run.ts +168 -4
  467. package/src/scripts/build_mcp_catalog.ts +275 -0
  468. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  469. package/src/scripts/build_proof.ts +45 -0
  470. package/src/scripts/cache_realization_report.ts +782 -0
  471. package/src/scripts/chat_history.ts +8 -5
  472. package/src/scripts/check_artefact_count_messaging.ts +5 -1
  473. package/src/scripts/check_augment_description_cap.ts +15 -4
  474. package/src/scripts/check_backstop_debt.ts +23 -13
  475. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  476. package/src/scripts/check_ci_local_parity.ts +317 -0
  477. package/src/scripts/check_condensation.ts +96 -191
  478. package/src/scripts/check_context_paths.ts +38 -9
  479. package/src/scripts/check_evaluator_budgets.ts +99 -0
  480. package/src/scripts/check_gate_coverage.ts +299 -0
  481. package/src/scripts/check_iron_law_prominence.ts +22 -1
  482. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  483. package/src/scripts/check_knowledge_sharing.ts +12 -1
  484. package/src/scripts/check_no_external_sources.ts +2 -2
  485. package/src/scripts/check_no_new_legacy_path.ts +16 -6
  486. package/src/scripts/check_no_roadmap_refs.ts +22 -9
  487. package/src/scripts/check_originality_freshness.ts +167 -0
  488. package/src/scripts/check_preamble_payload_budget.ts +130 -0
  489. package/src/scripts/check_proposal.ts +0 -0
  490. package/src/scripts/check_references.ts +0 -1
  491. package/src/scripts/check_safety_floor_untouched.ts +171 -24
  492. package/src/scripts/check_site_links.ts +62 -3
  493. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  494. package/src/scripts/ci_status.ts +0 -0
  495. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  496. package/src/scripts/code_graph/build.ts +0 -0
  497. package/src/scripts/code_graph/cli.ts +181 -9
  498. package/src/scripts/code_graph/detect.ts +52 -0
  499. package/src/scripts/code_graph/intent.ts +45 -0
  500. package/src/scripts/code_graph/query.ts +143 -29
  501. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  502. package/src/scripts/command_suggester/types.ts +0 -0
  503. package/src/scripts/compile_router.ts +10 -14
  504. package/src/scripts/condense.sh +3 -4
  505. package/src/scripts/condense.ts +261 -234
  506. package/src/scripts/context_hygiene_hook.ts +8 -5
  507. package/src/scripts/cost/track.mjs +168 -33
  508. package/src/scripts/cost_summary.ts +33 -1
  509. package/src/scripts/council_cli.ts +171 -15
  510. package/src/scripts/detect_target_license.ts +203 -0
  511. package/src/scripts/discovery_graph.ts +0 -0
  512. package/src/scripts/encoding_corpus.ts +500 -0
  513. package/src/scripts/encoding_corpus_report.ts +216 -0
  514. package/src/scripts/evaluator_umbrella.sh +145 -0
  515. package/src/scripts/external_sources_denylist.json +5 -3
  516. package/src/scripts/first_run_gate_hook.ts +9 -5
  517. package/src/scripts/generate_index.ts +19 -2
  518. package/src/scripts/hermetic-install.sh +3 -3
  519. package/src/scripts/hook_manifest.yaml +55 -16
  520. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  521. package/src/scripts/hooks/block_no_verify.ts +9 -9
  522. package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
  523. package/src/scripts/hooks/concern_registry.ts +75 -0
  524. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  525. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  526. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  527. package/src/scripts/hooks/hook_stdin.ts +42 -0
  528. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  529. package/src/scripts/hot_context_hook.ts +7 -6
  530. package/src/scripts/injection_scan_hook.ts +9 -1
  531. package/src/scripts/install +6 -6
  532. package/src/scripts/install-hooks.sh +6 -6
  533. package/src/scripts/install.sh +5 -4
  534. package/src/scripts/install.ts +264 -23
  535. package/src/scripts/learning_sidecar.ts +0 -0
  536. package/src/scripts/lint_budget_ownership.ts +89 -0
  537. package/src/scripts/lint_command_routing.ts +35 -5
  538. package/src/scripts/lint_command_verbs.ts +42 -9
  539. package/src/scripts/lint_confusables.ts +10 -72
  540. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  541. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  542. package/src/scripts/lint_documented_commands.ts +670 -0
  543. package/src/scripts/lint_featured_skills.ts +0 -0
  544. package/src/scripts/lint_framework_leakage.ts +17 -3
  545. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  546. package/src/scripts/lint_governed_writes.ts +335 -0
  547. package/src/scripts/lint_hidden_unicode.ts +214 -0
  548. package/src/scripts/lint_load_context.ts +17 -5
  549. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  550. package/src/scripts/lint_memory_tripwire.ts +186 -0
  551. package/src/scripts/lint_new_skill_gate.ts +9 -3
  552. package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
  553. package/src/scripts/lint_originality.ts +1 -1
  554. package/src/scripts/lint_override_kernel_guard.ts +74 -26
  555. package/src/scripts/lint_persistence.ts +171 -0
  556. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  557. package/src/scripts/lint_provenance.ts +547 -0
  558. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  559. package/src/scripts/lint_skill_originality.ts +1 -1
  560. package/src/scripts/lint_spawn_payload.ts +283 -0
  561. package/src/scripts/lint_store_boundary.ts +152 -0
  562. package/src/scripts/lint_ticket_buildable.ts +1 -1
  563. package/src/scripts/lint_versioned_cache.ts +7 -1
  564. package/src/scripts/mcp_server/__main__.ts +7 -2
  565. package/src/scripts/mcp_server/catalog.ts +23 -1
  566. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  567. package/src/scripts/mcp_server/prompts.ts +6 -0
  568. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  569. package/src/scripts/mcp_server/tools.ts +57 -6
  570. package/src/scripts/mcp_telemetry_query.ts +2 -33
  571. package/src/scripts/mcp_telemetry_store.ts +64 -34
  572. package/src/scripts/measure_scope_dedup.ts +224 -0
  573. package/src/scripts/memory_learn_hook.ts +126 -0
  574. package/src/scripts/memory_lookup.ts +0 -0
  575. package/src/scripts/memory_replay_24.ts +312 -0
  576. package/src/scripts/memory_report.ts +16 -3
  577. package/src/scripts/memory_signal.ts +48 -0
  578. package/src/scripts/memory_status.ts +6 -0
  579. package/src/scripts/mine_session.ts +98 -0
  580. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  581. package/src/scripts/onboarding_gate_hook.ts +8 -5
  582. package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
  583. package/src/scripts/orchestration_record.ts +16 -0
  584. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  585. package/src/scripts/preamble_byte_census.ts +574 -0
  586. package/src/scripts/prepack-check.mjs +17 -0
  587. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  588. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  589. package/src/scripts/probe_skill_registration.ts +2 -2
  590. package/src/scripts/profile_staleness_hook.ts +8 -7
  591. package/src/scripts/redact_hook_capture.ts +13 -0
  592. package/src/scripts/release.ts +65 -10
  593. package/src/scripts/report_install_drift.ts +109 -0
  594. package/src/scripts/roadmap_progress_hook.ts +8 -5
  595. package/src/scripts/router_telemetry.ts +1 -1
  596. package/src/scripts/schemas/license-policy.schema.json +89 -0
  597. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  598. package/src/scripts/schemas/rule.schema.json +10 -0
  599. package/src/scripts/second_brain_retrieval.ts +14 -4
  600. package/src/scripts/self_review_gate.test.ts +173 -1
  601. package/src/scripts/self_review_gate.ts +155 -15
  602. package/src/scripts/session_canary_hook.ts +182 -0
  603. package/src/scripts/skill_linter.ts +5 -0
  604. package/src/scripts/smoke_quickstart.ts +2 -2
  605. package/src/scripts/surface-tiers.yml +2 -0
  606. package/src/scripts/surface_probe_hook.ts +8 -7
  607. package/src/scripts/sync_gitattributes.ts +310 -0
  608. package/src/scripts/team_review_gate_hook.ts +13 -16
  609. package/src/scripts/validate_pack_yaml.ts +0 -0
  610. package/src/scripts/verify_before_complete_hook.ts +8 -5
  611. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  612. package/src/server/schemas/settings.ts +16 -2
  613. package/src/shared/userMd/utils.ts +31 -0
  614. package/dist/agent-src/rules/telegraph-speak.md +0 -87
  615. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  616. package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
  617. package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
  618. package/docs/CLAIMS.md +0 -286
  619. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  620. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  621. package/docs/SKILL_CENSUS.md +0 -352
  622. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  623. package/docs/adrs/cost/README.md +0 -9
  624. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  625. package/docs/adrs/memory/README.md +0 -10
  626. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  627. package/docs/adrs/router/README.md +0 -9
  628. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  629. package/docs/adrs/schema/README.md +0 -9
  630. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  631. package/docs/adrs/smoke/README.md +0 -9
  632. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  633. package/docs/adrs/telegraph/README.md +0 -9
  634. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  635. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  636. package/docs/anti-reskin-gate.md +0 -60
  637. package/docs/architecture/augment-projection.md +0 -70
  638. package/docs/architecture/claude-bundle.md +0 -77
  639. package/docs/architecture/current-onboard-baseline.md +0 -126
  640. package/docs/architecture/current-safety-behavior.md +0 -137
  641. package/docs/architecture/multi-tool-projection.md +0 -125
  642. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  643. package/docs/architecture/source-projection.md +0 -85
  644. package/docs/architecture.md +0 -390
  645. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  646. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  647. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  648. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  649. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  650. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  651. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  652. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  653. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  654. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  655. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  656. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  657. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  658. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  659. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  660. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  661. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  662. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  663. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  664. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  665. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  666. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  667. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  668. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  669. package/docs/artefact-census.md +0 -71
  670. package/docs/benchmark.md +0 -785
  671. package/docs/benchmark.pinned.yml +0 -31
  672. package/docs/benchmarks.md +0 -85
  673. package/docs/capability-matrix.md +0 -33
  674. package/docs/case-studies/_template.md +0 -60
  675. package/docs/case-studies/frontend-design-positioning.md +0 -86
  676. package/docs/catalog.md +0 -726
  677. package/docs/command-flows.md +0 -272
  678. package/docs/command-naming-audit.md +0 -60
  679. package/docs/comparison.yaml +0 -87
  680. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  681. package/docs/contracts/STABILITY.md +0 -188
  682. package/docs/contracts/adoption-signal-floor.md +0 -127
  683. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  684. package/docs/contracts/adr-chat-history-split.md +0 -140
  685. package/docs/contracts/adr-command-suggestion.md +0 -144
  686. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  687. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  688. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  689. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  690. package/docs/contracts/adr-layout.md +0 -107
  691. package/docs/contracts/adr-level-6-productization.md +0 -145
  692. package/docs/contracts/adr-mcp-runtime.md +0 -128
  693. package/docs/contracts/adr-product-ui-track.md +0 -381
  694. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  695. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  696. package/docs/contracts/adr-user-types-axis.md +0 -127
  697. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  698. package/docs/contracts/agent-user-schema.md +0 -170
  699. package/docs/contracts/agents-layout.md +0 -148
  700. package/docs/contracts/agents-md-tech-stack.md +0 -75
  701. package/docs/contracts/ai-council-config.md +0 -829
  702. package/docs/contracts/ai-team-config.md +0 -224
  703. package/docs/contracts/analysis-memory-loop.md +0 -149
  704. package/docs/contracts/at-rest-encryption.md +0 -191
  705. package/docs/contracts/audit-log-v1.md +0 -150
  706. package/docs/contracts/auto-orchestration-v1.md +0 -70
  707. package/docs/contracts/benchmark-ab-contract.md +0 -106
  708. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  709. package/docs/contracts/benchmark-report-schema.md +0 -113
  710. package/docs/contracts/branch-protection-policy.md +0 -139
  711. package/docs/contracts/brand-token-consumption.md +0 -74
  712. package/docs/contracts/capability-boundary.md +0 -69
  713. package/docs/contracts/capability-packs.md +0 -217
  714. package/docs/contracts/ci-cost-budget.md +0 -111
  715. package/docs/contracts/ci-green-floor.md +0 -141
  716. package/docs/contracts/command-category-governance.md +0 -84
  717. package/docs/contracts/command-clusters.md +0 -399
  718. package/docs/contracts/command-surface-tiers.md +0 -176
  719. package/docs/contracts/command-taxonomy.md +0 -137
  720. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  721. package/docs/contracts/config-presets.md +0 -144
  722. package/docs/contracts/conformance.md +0 -84
  723. package/docs/contracts/consumer-bridge.md +0 -73
  724. package/docs/contracts/context-paths.md +0 -101
  725. package/docs/contracts/context-spine.md +0 -179
  726. package/docs/contracts/cost-dashboard.md +0 -143
  727. package/docs/contracts/cost-enforcement.md +0 -134
  728. package/docs/contracts/cost-profile-defaults.md +0 -110
  729. package/docs/contracts/cost-summary-schema.md +0 -107
  730. package/docs/contracts/creative-pack-boundary.md +0 -63
  731. package/docs/contracts/cross-repo-retrieval.md +0 -64
  732. package/docs/contracts/cross-wing-handoff.md +0 -134
  733. package/docs/contracts/daily-workspace.md +0 -147
  734. package/docs/contracts/decision-engine-gates.md +0 -120
  735. package/docs/contracts/decision-trace-v1.md +0 -177
  736. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  737. package/docs/contracts/design-artifact-verification.md +0 -153
  738. package/docs/contracts/discovery-manifest.md +0 -209
  739. package/docs/contracts/discovery-manifest.schema.json +0 -254
  740. package/docs/contracts/evidence-based-pruning.md +0 -102
  741. package/docs/contracts/explain-modes.md +0 -187
  742. package/docs/contracts/explain-trace.schema.json +0 -144
  743. package/docs/contracts/file-ownership-matrix.json +0 -13941
  744. package/docs/contracts/file-ownership-matrix.md +0 -135
  745. package/docs/contracts/frontmatter-contract.md +0 -140
  746. package/docs/contracts/ghostwriter-schema.md +0 -337
  747. package/docs/contracts/governance-enforcement-projection.md +0 -159
  748. package/docs/contracts/gui-wizard.md +0 -350
  749. package/docs/contracts/harness-expectations.md +0 -128
  750. package/docs/contracts/hook-architecture-v1.md +0 -325
  751. package/docs/contracts/host-agent-protocol.md +0 -110
  752. package/docs/contracts/implement-ticket-flow.md +0 -625
  753. package/docs/contracts/init-telemetry.md +0 -132
  754. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  755. package/docs/contracts/install-layout.md +0 -249
  756. package/docs/contracts/install-scopes.md +0 -82
  757. package/docs/contracts/installed-tools-lockfile.md +0 -144
  758. package/docs/contracts/installer-agent-mode.md +0 -137
  759. package/docs/contracts/iron-law-overrides.txt +0 -26
  760. package/docs/contracts/kernel-membership.md +0 -339
  761. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  762. package/docs/contracts/linear-ai-three-layers.md +0 -130
  763. package/docs/contracts/linter-structural-model.md +0 -181
  764. package/docs/contracts/load-context-budget-model.md +0 -259
  765. package/docs/contracts/load-context-schema.md +0 -220
  766. package/docs/contracts/local-analytics.md +0 -160
  767. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  768. package/docs/contracts/local-server-api.md +0 -134
  769. package/docs/contracts/local-server-ports.md +0 -53
  770. package/docs/contracts/low-impact-corpus-format.md +0 -95
  771. package/docs/contracts/mcp-beta-criteria.md +0 -130
  772. package/docs/contracts/mcp-cloud-scope.md +0 -355
  773. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  774. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  775. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  776. package/docs/contracts/mcp-tool-inventory.md +0 -64
  777. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  778. package/docs/contracts/measurement-baseline.md +0 -103
  779. package/docs/contracts/memory-visibility-v1.md +0 -160
  780. package/docs/contracts/mental-models.md +0 -336
  781. package/docs/contracts/migrate-command.md +0 -233
  782. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  783. package/docs/contracts/namespace.md +0 -125
  784. package/docs/contracts/no-runtime-boundary.md +0 -61
  785. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  786. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  787. package/docs/contracts/package-self-orientation.md +0 -163
  788. package/docs/contracts/pilot/agent-authority.md +0 -24
  789. package/docs/contracts/pilot/direct-answers.md +0 -70
  790. package/docs/contracts/pilot/language-and-tone.md +0 -63
  791. package/docs/contracts/plain-language-surface.md +0 -117
  792. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  793. package/docs/contracts/profile-system.md +0 -167
  794. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  795. package/docs/contracts/release-pr-gating.md +0 -151
  796. package/docs/contracts/release-sizing.md +0 -107
  797. package/docs/contracts/release-trunk-sync.md +0 -105
  798. package/docs/contracts/review-lens-schema.md +0 -64
  799. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  800. package/docs/contracts/role-experience.md +0 -125
  801. package/docs/contracts/router-blending.md +0 -71
  802. package/docs/contracts/rule-classification.md +0 -171
  803. package/docs/contracts/rule-interactions.md +0 -132
  804. package/docs/contracts/rule-interactions.yml +0 -260
  805. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  806. package/docs/contracts/rule-router.md +0 -287
  807. package/docs/contracts/safety-model.md +0 -129
  808. package/docs/contracts/session-profile-overlay.md +0 -157
  809. package/docs/contracts/settings-api.md +0 -264
  810. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  811. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  812. package/docs/contracts/skill-bundled-assets.md +0 -62
  813. package/docs/contracts/skill-discovery.md +0 -80
  814. package/docs/contracts/skill-distribution-channels.md +0 -66
  815. package/docs/contracts/skill-domains.md +0 -144
  816. package/docs/contracts/skill-dry-run.md +0 -47
  817. package/docs/contracts/skill-family-map.yml +0 -915
  818. package/docs/contracts/smoke-contracts.md +0 -144
  819. package/docs/contracts/subagent-boundary.md +0 -74
  820. package/docs/contracts/surface-agent-contracts.md +0 -153
  821. package/docs/contracts/surface-matrix.md +0 -108
  822. package/docs/contracts/surface-tiers.md +0 -81
  823. package/docs/contracts/telegraph-telemetry.md +0 -83
  824. package/docs/contracts/ticket-bundle-format.md +0 -233
  825. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  826. package/docs/contracts/trust-and-safety.md +0 -144
  827. package/docs/contracts/ui-stack-extension.md +0 -237
  828. package/docs/contracts/ui-track-flow.md +0 -329
  829. package/docs/contracts/universal-skills.md +0 -91
  830. package/docs/contracts/user-type-schema.md +0 -146
  831. package/docs/contracts/value-dashboard-spec.md +0 -378
  832. package/docs/contracts/value-report-schema.md +0 -168
  833. package/docs/contracts/workflow-packs.md +0 -121
  834. package/docs/contracts/workspace-boundary.md +0 -84
  835. package/docs/contracts/workspace-documents.md +0 -144
  836. package/docs/contracts/write-engine.md +0 -182
  837. package/docs/cookbook.md +0 -152
  838. package/docs/customization.md +0 -696
  839. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  840. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  841. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  842. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  843. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  844. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  845. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  846. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  847. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  848. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  849. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  850. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  851. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  852. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  853. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  854. package/docs/decisions/ADR-016-installer-architecture.md +0 -191
  855. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  856. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  857. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  858. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  859. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  860. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  861. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  862. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  863. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  864. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  865. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  866. package/docs/decisions/ADR-028-root-layout.md +0 -147
  867. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  868. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  869. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  870. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  871. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  872. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  873. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  874. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  875. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  876. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  877. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  878. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  879. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  880. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  881. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  882. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  883. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  884. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  885. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  886. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  887. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  888. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  889. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  890. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  891. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  892. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  893. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  894. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  895. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  896. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  897. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  898. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  899. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  900. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  901. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  902. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  903. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  904. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  905. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  906. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  907. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  908. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  909. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  910. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  911. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  912. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  913. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  914. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  915. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  916. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  917. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  918. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  919. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  920. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  921. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  922. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  923. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  924. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  925. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  926. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  927. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  928. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  929. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  930. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  931. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  932. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  933. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  934. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  935. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  936. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  937. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  938. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  939. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  940. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  941. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  942. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  943. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  944. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  945. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  946. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  947. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
  948. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
  949. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  950. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  951. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
  952. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  953. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  954. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  955. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  956. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  957. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  958. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  959. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  960. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  961. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  962. package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
  963. package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
  964. package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
  965. package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
  966. package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
  967. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  968. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  969. package/docs/decisions/INDEX.md +0 -157
  970. package/docs/decisions/engine-reclassification-2026-07.md +0 -104
  971. package/docs/deploy/connector-setup.md +0 -129
  972. package/docs/deploy/env-vars.md +0 -70
  973. package/docs/deploy/policy-cookbook.md +0 -130
  974. package/docs/deploy/quickstart.md +0 -112
  975. package/docs/deploy/small-team-recipe.md +0 -148
  976. package/docs/deploy/team-deployment-posture.md +0 -111
  977. package/docs/design/adversarial-council-eval.md +0 -106
  978. package/docs/design/council-vs-solo-baseline.md +0 -92
  979. package/docs/design/cross-model-parity-eval.md +0 -82
  980. package/docs/design/length-neutral-judge-rerun.md +0 -92
  981. package/docs/design/utilization-window-criteria.md +0 -51
  982. package/docs/development.md +0 -230
  983. package/docs/distribution/awesome-list-submission.md +0 -46
  984. package/docs/distribution/consumer-matrix.md +0 -96
  985. package/docs/distribution/launch-story-draft.md +0 -58
  986. package/docs/distribution/mcp-submission-checklist.md +0 -95
  987. package/docs/distribution/public-install-smoke.md +0 -68
  988. package/docs/distribution/registries.md +0 -126
  989. package/docs/distribution/registry-submissions.md +0 -85
  990. package/docs/distribution/telemetry-privacy.md +0 -128
  991. package/docs/distribution/telemetry-schema.md +0 -174
  992. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  993. package/docs/end-to-end-walkthroughs.md +0 -165
  994. package/docs/enforcement-by-host.md +0 -51
  995. package/docs/examples/agent-user.example.md +0 -22
  996. package/docs/experiences/agency.md +0 -49
  997. package/docs/experiences/content_creator.md +0 -49
  998. package/docs/experiences/developer.md +0 -49
  999. package/docs/experiences/finance.md +0 -50
  1000. package/docs/experiences/founder.md +0 -49
  1001. package/docs/experiences/ops.md +0 -49
  1002. package/docs/featured-commands.md +0 -27
  1003. package/docs/featured-skills.md +0 -95
  1004. package/docs/flows.md +0 -67
  1005. package/docs/getting-started-by-role.md +0 -190
  1006. package/docs/getting-started-laravel.md +0 -72
  1007. package/docs/getting-started-local-stdio.md +0 -77
  1008. package/docs/getting-started.md +0 -254
  1009. package/docs/github-topics.md +0 -93
  1010. package/docs/governance-advantage.md +0 -72
  1011. package/docs/governance.md +0 -96
  1012. package/docs/guides/cross-repo-linked-projects.md +0 -93
  1013. package/docs/guides/cross-repo-retrieval.md +0 -61
  1014. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  1015. package/docs/guides/gated-platform-reads.md +0 -221
  1016. package/docs/guides/local-analytics.md +0 -125
  1017. package/docs/guides/local-knowledge.md +0 -127
  1018. package/docs/guides/skill-discovery.md +0 -71
  1019. package/docs/guides/skill-preview.md +0 -71
  1020. package/docs/hook-payload-capture.md +0 -221
  1021. package/docs/install-friction-report.md +0 -66
  1022. package/docs/installation.md +0 -959
  1023. package/docs/maintainers/branch-protection.md +0 -105
  1024. package/docs/maintainers/dev-mode.md +0 -106
  1025. package/docs/maintainers/optional-media-deps.md +0 -50
  1026. package/docs/maintainers/system-map.md +0 -85
  1027. package/docs/mcp-registries.md +0 -94
  1028. package/docs/mcp-server.md +0 -175
  1029. package/docs/mcp.md +0 -147
  1030. package/docs/media/proof-demo.cast +0 -14
  1031. package/docs/media/proof-demo.gif +0 -0
  1032. package/docs/migration/consumer-template-consumption-model.md +0 -145
  1033. package/docs/migration/divergences/README.md +0 -55
  1034. package/docs/migration/divergences/_template.md +0 -50
  1035. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  1036. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  1037. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  1038. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  1039. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  1040. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  1041. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  1042. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  1043. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  1044. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  1045. package/docs/migration/node-floor.md +0 -86
  1046. package/docs/migration/v1-to-v2.md +0 -156
  1047. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  1048. package/docs/migrations/commands-1.15.0.md +0 -117
  1049. package/docs/parity/bench-external.json +0 -58
  1050. package/docs/parity/bench.json +0 -41
  1051. package/docs/parity/command-frontmatter.md +0 -60
  1052. package/docs/parity/external-runtime.md +0 -46
  1053. package/docs/personas.md +0 -178
  1054. package/docs/positioning-evidence.md +0 -86
  1055. package/docs/profiles.md +0 -108
  1056. package/docs/proof.md +0 -252
  1057. package/docs/quality.md +0 -98
  1058. package/docs/readme-split-plan.md +0 -102
  1059. package/docs/recruits/_template.md +0 -81
  1060. package/docs/release-runbook.md +0 -141
  1061. package/docs/role-experiences.md +0 -19
  1062. package/docs/safety.md +0 -30
  1063. package/docs/second-brain-scope.md +0 -116
  1064. package/docs/self-review-gate.md +0 -65
  1065. package/docs/setup/enterprise-and-offline.md +0 -201
  1066. package/docs/setup/mcp-client-config.md +0 -358
  1067. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  1068. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  1069. package/docs/setup/mcp-cloud-setup.md +0 -183
  1070. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  1071. package/docs/setup/mcp-server-docker.md +0 -101
  1072. package/docs/setup/per-ide/aider.md +0 -48
  1073. package/docs/setup/per-ide/antigravity.md +0 -68
  1074. package/docs/setup/per-ide/augment.md +0 -89
  1075. package/docs/setup/per-ide/claude-code.md +0 -97
  1076. package/docs/setup/per-ide/claude-desktop.md +0 -207
  1077. package/docs/setup/per-ide/cline.md +0 -43
  1078. package/docs/setup/per-ide/codebuddy.md +0 -63
  1079. package/docs/setup/per-ide/codex.md +0 -46
  1080. package/docs/setup/per-ide/continue.md +0 -68
  1081. package/docs/setup/per-ide/copilot.md +0 -80
  1082. package/docs/setup/per-ide/cursor.md +0 -125
  1083. package/docs/setup/per-ide/droid.md +0 -65
  1084. package/docs/setup/per-ide/gemini-cli.md +0 -45
  1085. package/docs/setup/per-ide/jetbrains.md +0 -76
  1086. package/docs/setup/per-ide/kilocode.md +0 -66
  1087. package/docs/setup/per-ide/kiro.md +0 -72
  1088. package/docs/setup/per-ide/opencode.md +0 -62
  1089. package/docs/setup/per-ide/qoder.md +0 -63
  1090. package/docs/setup/per-ide/roocode.md +0 -68
  1091. package/docs/setup/per-ide/trae.md +0 -63
  1092. package/docs/setup/per-ide/warp.md +0 -63
  1093. package/docs/setup/per-ide/windsurf.md +0 -109
  1094. package/docs/setup/per-ide/zed.md +0 -73
  1095. package/docs/showcase.md +0 -209
  1096. package/docs/skill-duplication-findings.md +0 -91
  1097. package/docs/skills-catalog.md +0 -265
  1098. package/docs/skills-taxonomy.md +0 -90
  1099. package/docs/spawn-site-policy.md +0 -72
  1100. package/docs/succession.md +0 -80
  1101. package/docs/threat-model.md +0 -30
  1102. package/docs/troubleshooting.md +0 -155
  1103. package/docs/ui-track-mental-model.md +0 -121
  1104. package/docs/us-vs-the-category.md +0 -38
  1105. package/docs/value.md +0 -86
  1106. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  1107. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  1108. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  1109. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  1110. package/docs/walkthroughs/daily-workspace.md +0 -127
  1111. package/docs/wedge/production-validator/README.md +0 -81
  1112. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  1113. package/docs/wedge/production-validator/production-validator.md +0 -83
  1114. package/docs/wizard.md +0 -173
  1115. package/src/scripts/postinstall_gui.ts +0 -129
@@ -0,0 +1,830 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * The global observation buffer — the write path of ADR-138's sibling phase
4
+ * (road-to-global-user-memory Phase 2, "the learning channel"). Mirrors the
5
+ * project-local `.agent-user.observations.jsonl` contract
6
+ * (`docs/contracts/agent-user-schema.md § Observation buffer`) exactly, one
7
+ * level up: `~/.event4u/agent-config/user/observations.jsonl`.
8
+ *
9
+ * This module is the ONLY writer of that file. It is never read by the
10
+ * profile loader (`agent_user_profile.ts`) directly — only
11
+ * `/agents:user review` / `/agents:user accept` (and, through them,
12
+ * `applyObservationToGlobalProfile` in `agent_user_profile.ts`) may turn a
13
+ * buffered line into a change to `profile.md`. Append-only; nothing here
14
+ * ever rewrites `profile.md`.
15
+ *
16
+ * Capture-time guards (council cut, 2026-07-29 — see
17
+ * `agents/settings/contexts/global-user-memory-cut.md`): every candidate is
18
+ * checked BEFORE it is written, not filtered later at review. Four
19
+ * independently-testable classes, in the order they run:
20
+ *
21
+ * 1. `standing_command` — a verbatim standing directive ("always fetch
22
+ * <url> on every message") stored as memory becomes a durable
23
+ * injection that re-fires forever — and now in every project, not
24
+ * just one.
25
+ * 2. `self_harmful_preference` — a preference that would disable honest
26
+ * feedback ("never criticize me", "always agree with me") is
27
+ * surfaced, never stored, per `direct-answers`.
28
+ * 3. `exclusion_list` — the `.agent-user.md` explicit-exclusions list
29
+ * (credentials, third-party names/birthdays, financial figures,
30
+ * health/legal/therapy status, demographics, external-source
31
+ * identifiers) refused at CAPTURE, not at review. Rejecting the same
32
+ * class fifty times at review is the noise problem this avoids.
33
+ * 4. `hidden_unicode` — invisible-character identifier smuggling
34
+ * (the ADR-103 zero-width-smuggling class). Same gate as (3) — both
35
+ * come from one call to `knowledge_global_redaction.redaction_scan`
36
+ * — but reported as its own category so a test can pin it
37
+ * independently.
38
+ *
39
+ * The third persist-time guard the miner already documents — the
40
+ * derivability check ("if git/config answers it, store the surprising
41
+ * part") — is a judgment call the agent makes before a candidate ever
42
+ * reaches this module; it is not a deterministic function here (see
43
+ * `memory-consolidation` SKILL.md § Global user-scoped channel).
44
+ *
45
+ * The ≤5-normalised-facts-per-cycle gate applies GLOBALLY across the
46
+ * project-scoped intake channel (`mine_session.ts`) and this one — see
47
+ * `applySharedFactCap`. Enforcing it per-channel would let the second
48
+ * channel double the write volume the cap was meant to bound.
49
+ *
50
+ * Pure except for `appendGlobalObservation` and `readGlobalObservations`,
51
+ * which are the only functions that touch disk. Every disk path is
52
+ * resolved via `user_global_paths.ts`, honouring `$EVENT4U_CONFIG_HOME`
53
+ * exactly like every other artefact under the global root — tests MUST
54
+ * inject that variable rather than touch the real `~/.event4u/`.
55
+ *
56
+ * Phase 3 (project attribution, below the read path) adds `routeProjectObservation`
57
+ * — the Phase 0 managed/unmanaged/not-a-project predicate wired as a router
58
+ * for a project-scoped fact that has no managed `agents/` folder to live in.
59
+ * It writes through the SAME `appendGlobalObservation` guard pipeline above,
60
+ * plus a `context` object (`project_path`/`project_name`/`first_seen`) and a
61
+ * `seen_count`/`seen_in[]` recurrence tally — the only generalisation path
62
+ * into the durable profile (`findPromotionCandidates`,
63
+ * `promotionValueFor`). No project-indexed directory is ever created; see
64
+ * `tests/lib/user_global_observations_project_attribution.test.ts`.
65
+ *
66
+ * Phase 4 (delete, revoke, audit) adds `deleteGlobalObservation` and
67
+ * `purgeProjectContext` — the delete counterpart of `appendGlobalObservation`
68
+ * / `routeProjectObservation` above. Both write an append-only tombstone to
69
+ * `user_global_revocations.ts`'s ledger BEFORE the buffer is rewritten
70
+ * without the removed line(s), reusing ADR-121's tombstone-before-deletion
71
+ * discipline (see that module's docstring for the one necessary adaptation).
72
+ * `observationId` supplies the stable identifier neither the JSONL schema
73
+ * nor a knowledge card's `card_id_from` slug has an analogue for.
74
+ */
75
+ import * as crypto from 'node:crypto';
76
+ import * as fs from 'node:fs';
77
+ import * as path from 'node:path';
78
+
79
+ import { redaction_scan } from './knowledge_global_redaction.js';
80
+ import { detect_managed_agents_folder } from './managed_agents_folder.js';
81
+ import type { ManagedAgentsFolderStatus } from './managed_agents_folder.js';
82
+ import { classifySimilarity, jaccardSimilarity } from './text_similarity.js';
83
+ import * as revocations from './user_global_revocations.js';
84
+ import type { RevocationEntry } from './user_global_revocations.js';
85
+ import * as user_global_paths from './user_global_paths.js';
86
+ import { recordObservationProposed } from './user_memory_gate_counters.js';
87
+
88
+ /** Relative-to-root path of the global observation buffer. */
89
+ export const GLOBAL_OBSERVATIONS_RELATIVE = path.join('user', 'observations.jsonl');
90
+
91
+ /**
92
+ * Shared cap across BOTH channels (the project-scoped miner and this one).
93
+ * Duplicated from `mine_session.MAX_FACTS` deliberately rather than
94
+ * imported — `_lib/` modules do not import from `src/scripts/*.ts` CLI
95
+ * entrypoints, keeping the dependency direction one-way. Keep the two
96
+ * constants in sync; a test in `tests/lib/user_global_observations.test.ts`
97
+ * would need updating (not silently pass) if they diverge.
98
+ */
99
+ export const SHARED_FACT_CAP = 5;
100
+
101
+ /** Allowed `field` values — mirrors `docs/contracts/agent-user-schema.md § Observation buffer`. */
102
+ export const ALLOWED_OBSERVATION_FIELDS = [
103
+ 'identity.name',
104
+ 'language',
105
+ 'role',
106
+ 'style.pace',
107
+ 'voice_sample',
108
+ 'notes',
109
+ ] as const;
110
+
111
+ export type ObservationField = (typeof ALLOWED_OBSERVATION_FIELDS)[number];
112
+
113
+ const _ALLOWED_FIELD_SET: ReadonlySet<string> = new Set(ALLOWED_OBSERVATION_FIELDS);
114
+
115
+ /**
116
+ * Project-attribution footer (road-to-global-user-memory Phase 3). Present
117
+ * only on an observation routed here because its project has no managed
118
+ * `agents/` folder (see `routeProjectObservation`, below) — a pure
119
+ * user-attribute observation (Phase 2's `mineUserObservationCandidates`
120
+ * channel) never carries one. Mirrors the semantics of the global knowledge
121
+ * card's `seen_in` provenance footer (`knowledge_global.ts`) rather than
122
+ * inventing a parallel primitive — this is a field on a user observation,
123
+ * never a project-shaped artefact of its own (the council's round-2
124
+ * namespace refusal; see `agents/settings/contexts/global-user-memory-cut.md`).
125
+ */
126
+ export interface ObservationContext {
127
+ readonly project_path: string;
128
+ readonly project_name: string;
129
+ /** ISO timestamp of the FIRST sighting — never updated on recurrence. */
130
+ readonly first_seen: string;
131
+ }
132
+
133
+ /**
134
+ * One candidate/buffered observation. Shape mirrors the project-local
135
+ * buffer's JSONL line, plus the optional Phase 3 project-attribution
136
+ * fields. `context`/`seen_count`/`seen_in` are present together or not at
137
+ * all — set only via `routeProjectObservation`, never by
138
+ * `appendGlobalObservation` callers directly (Phase 2's pure user-attribute
139
+ * path has no project to attribute to).
140
+ */
141
+ export interface ObservationCandidate {
142
+ readonly ts: string;
143
+ readonly field: string;
144
+ readonly suggest: string;
145
+ readonly source: string;
146
+ readonly evidence: string;
147
+ readonly context?: ObservationContext | undefined;
148
+ /** Human-confirmed-recurrence tally — see `findPromotionCandidates`. Counting evidence, never a detector: it only ever grows via `routeProjectObservation` observing another project's write, never a cross-project batch scan. */
149
+ readonly seen_count?: number | undefined;
150
+ /** Project names the observation has recurred in, oldest first. Pruned to nothing at promotion — see `promotionValueFor`. */
151
+ readonly seen_in?: readonly string[] | undefined;
152
+ }
153
+
154
+ export type CaptureGuardCategory =
155
+ | 'standing_command'
156
+ | 'self_harmful_preference'
157
+ | 'exclusion_list'
158
+ | 'hidden_unicode';
159
+
160
+ export interface CaptureGuardResult {
161
+ readonly allowed: boolean;
162
+ readonly category?: CaptureGuardCategory | undefined;
163
+ readonly reason?: string | undefined;
164
+ }
165
+
166
+ export interface AppendResult {
167
+ readonly written: boolean;
168
+ readonly reason?: string | undefined;
169
+ readonly category?: CaptureGuardCategory | 'invalid_field' | undefined;
170
+ }
171
+
172
+ export interface ReadObservationsResult {
173
+ readonly entries: readonly ObservationCandidate[];
174
+ /** Lines that were not valid JSON objects at all. */
175
+ readonly droppedMalformed: number;
176
+ /** Lines whose `field` fell outside {@link ALLOWED_OBSERVATION_FIELDS}. */
177
+ readonly droppedUnknownField: number;
178
+ }
179
+
180
+ // ---------------------------------------------------------------------------
181
+ // Path resolution — mirrors agent_user_profile.ts's global-layer functions.
182
+ // ---------------------------------------------------------------------------
183
+
184
+ /** Canonical write target for the global observation buffer. */
185
+ export function globalObservationsWriteTarget(
186
+ env?: user_global_paths.EnvMap | null,
187
+ ): string {
188
+ return user_global_paths.write_target(GLOBAL_OBSERVATIONS_RELATIVE, { env: env ?? null });
189
+ }
190
+
191
+ /** Resolve the buffer's on-disk path — new namespace first, legacy fallback, `null` if neither exists. */
192
+ export function resolveGlobalObservationsPath(
193
+ env?: user_global_paths.EnvMap | null,
194
+ ): string | null {
195
+ return user_global_paths.resolve_with_fallback(GLOBAL_OBSERVATIONS_RELATIVE, { env: env ?? null });
196
+ }
197
+
198
+ // ---------------------------------------------------------------------------
199
+ // Capture-time guards
200
+ // ---------------------------------------------------------------------------
201
+
202
+ // Matches an imperative paired with a recurrence marker, in either order —
203
+ // "always fetch <url> on every message" / "run <cmd> at the start of each
204
+ // session". Deliberately broad: a false positive here costs one refused
205
+ // candidate the human never sees; a false negative persists a durable
206
+ // injection forever, in every project.
207
+ const _STANDING_COMMAND_RE =
208
+ /\b(?:always|every\s+(?:session|message|time|turn))\b[\s\S]{0,80}?\b(?:fetch|run|curl|execute|call|check)\b|\b(?:fetch|run|curl|execute|call|check)\b[\s\S]{0,80}?\b(?:at\s+the\s+start\s+of\s+(?:each|every)\s+(?:session|message)|on\s+every\s+(?:message|turn|session)|always)\b/i;
209
+
210
+ // "never criticize me", "always agree with me", "never say I'm wrong",
211
+ // "don't ever disagree with me" — a user weaponizing their own memory to
212
+ // enforce sycophancy (direct-answers Iron Law 1).
213
+ const _SELF_HARMFUL_PREFERENCE_RE =
214
+ /\bnever\s+(?:criticize|disagree\s+with|push\s+back\s+on|question|correct)\s+me\b|\balways\s+agree\s+with\s+me\b|\bnever\s+say\s+i(?:'|’)?m\s+wrong\b|\bdon'?t\s+ever\s+(?:disagree|criticize)\b/i;
215
+
216
+ /** `true` when `text` reads as a verbatim standing command. */
217
+ export function detectStandingCommand(text: string): boolean {
218
+ return _STANDING_COMMAND_RE.test(text);
219
+ }
220
+
221
+ /** `true` when `text` reads as a self-harmful standing preference. */
222
+ export function detectSelfHarmfulPreference(text: string): boolean {
223
+ return _SELF_HARMFUL_PREFERENCE_RE.test(text);
224
+ }
225
+
226
+ /**
227
+ * Run all four capture-time guards against a candidate, in order. Returns
228
+ * the FIRST violation found (a candidate tripping two guards at once is
229
+ * refused for the earlier one; the categories are independently testable,
230
+ * not mutually exclusive in the input space).
231
+ */
232
+ export function evaluateCaptureGuards(
233
+ candidate: ObservationCandidate,
234
+ options: { repo_root?: string | null } = {},
235
+ ): CaptureGuardResult {
236
+ const text = `${candidate.suggest}\n${candidate.evidence}`;
237
+
238
+ if (detectStandingCommand(text)) {
239
+ return {
240
+ allowed: false,
241
+ category: 'standing_command',
242
+ reason:
243
+ 'reads as a verbatim standing command — a stored directive becomes a durable ' +
244
+ 'injection that re-fires forever, and at global scope that means every project, ' +
245
+ 'not just this one. Refused at capture.',
246
+ };
247
+ }
248
+ if (detectSelfHarmfulPreference(text)) {
249
+ return {
250
+ allowed: false,
251
+ category: 'self_harmful_preference',
252
+ reason:
253
+ 'would disable honest feedback across every project — surfaced to the user, ' +
254
+ 'never stored.',
255
+ };
256
+ }
257
+
258
+ const violations = redaction_scan(text, { repo_root: options.repo_root ?? null });
259
+ const hiddenUnicode = violations.find((v) => v.category === 'hidden_unicode');
260
+ if (hiddenUnicode) {
261
+ return {
262
+ allowed: false,
263
+ category: 'hidden_unicode',
264
+ reason: `invisible characters detected — possible identifier smuggling: ${hiddenUnicode.snippet}`,
265
+ };
266
+ }
267
+ if (violations.length > 0) {
268
+ return {
269
+ allowed: false,
270
+ category: 'exclusion_list',
271
+ reason:
272
+ 'capture-time exclusion-list match (credentials / third-party PII / financial ' +
273
+ `figures / health-legal-therapy / demographics / external-source identifiers): ${violations
274
+ .map((v) => v.category)
275
+ .join(', ')}`,
276
+ };
277
+ }
278
+ return { allowed: true };
279
+ }
280
+
281
+ // ---------------------------------------------------------------------------
282
+ // Write path
283
+ // ---------------------------------------------------------------------------
284
+
285
+ /**
286
+ * Append one candidate to the global observation buffer, after running
287
+ * every capture-time guard. Never rewrites — a refused candidate is
288
+ * refused outright, not silently redacted-then-stored (the low-impact
289
+ * corpus's own "halt-and-surface, never silent-rewrite" discipline).
290
+ */
291
+ export function appendGlobalObservation(
292
+ candidate: ObservationCandidate,
293
+ options: { env?: user_global_paths.EnvMap | null; repo_root?: string | null } = {},
294
+ ): AppendResult {
295
+ if (!_ALLOWED_FIELD_SET.has(candidate.field)) {
296
+ return {
297
+ written: false,
298
+ category: 'invalid_field',
299
+ reason: `field '${candidate.field}' is outside the allowed schema enum`,
300
+ };
301
+ }
302
+
303
+ const guard = evaluateCaptureGuards(candidate, { repo_root: options.repo_root ?? null });
304
+ if (!guard.allowed) {
305
+ return { written: false, category: guard.category, reason: guard.reason };
306
+ }
307
+
308
+ const target = globalObservationsWriteTarget(options.env ?? null);
309
+ fs.mkdirSync(path.dirname(target), { recursive: true });
310
+ fs.appendFileSync(target, JSON.stringify(candidate) + '\n', 'utf-8');
311
+ // Phase 5 gate: count the proposal where it actually lands, so the
312
+ // review→accept rate cannot be skewed by a caller that bypasses the
313
+ // command layer. A refused candidate is deliberately NOT counted — it was
314
+ // never proposed to the human. Counter failure never fails the append.
315
+ try {
316
+ recordObservationProposed({ env: options.env ?? null });
317
+ } catch {
318
+ /* a counter is telemetry, never a gate on the buffer write */
319
+ }
320
+ return { written: true };
321
+ }
322
+
323
+ /**
324
+ * Apply the shared ≤5-facts-per-cycle cap across both channels. `existingCount`
325
+ * is however many facts the project-scoped channel already produced THIS
326
+ * cycle; only the remaining headroom is available to the candidates here.
327
+ * Never negative — a project-scoped channel that already hit the cap leaves
328
+ * zero room for the second channel this cycle.
329
+ */
330
+ export function applySharedFactCap<T>(
331
+ existingCount: number,
332
+ candidates: readonly T[],
333
+ cap: number = SHARED_FACT_CAP,
334
+ ): T[] {
335
+ const remaining = Math.max(0, cap - existingCount);
336
+ return candidates.slice(0, remaining);
337
+ }
338
+
339
+ // ---------------------------------------------------------------------------
340
+ // Read path — feeds `/agents:user review` / `/agents:user accept`.
341
+ // ---------------------------------------------------------------------------
342
+
343
+ /**
344
+ * Read + parse the global observation buffer. Tolerant: a malformed JSON
345
+ * line or a line whose `field` falls outside the schema enum is dropped
346
+ * silently, with a count so the caller can surface "N observations
347
+ * skipped" — mirroring "Anything outside that set is dropped on read" in
348
+ * the project-local contract.
349
+ */
350
+ /** Tolerant parse of a JSONL line's `context` field — malformed shapes read back as absent, never thrown. */
351
+ function _parseContext(raw: unknown): ObservationContext | undefined {
352
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
353
+ return undefined;
354
+ }
355
+ const rec = raw as Record<string, unknown>;
356
+ const project_path = typeof rec.project_path === 'string' ? rec.project_path : undefined;
357
+ const project_name = typeof rec.project_name === 'string' ? rec.project_name : undefined;
358
+ const first_seen = typeof rec.first_seen === 'string' ? rec.first_seen : undefined;
359
+ if (project_path === undefined || project_name === undefined || first_seen === undefined) {
360
+ return undefined;
361
+ }
362
+ return { project_path, project_name, first_seen };
363
+ }
364
+
365
+ /** Tolerant parse of a JSONL line's `seen_in` field — drops non-string entries rather than failing the whole line. */
366
+ function _parseSeenIn(raw: unknown): readonly string[] | undefined {
367
+ if (!Array.isArray(raw)) {
368
+ return undefined;
369
+ }
370
+ const out = raw.filter((v): v is string => typeof v === 'string');
371
+ return out.length > 0 ? out : undefined;
372
+ }
373
+
374
+ export function readGlobalObservations(
375
+ options: { env?: user_global_paths.EnvMap | null } = {},
376
+ ): ReadObservationsResult {
377
+ const target = resolveGlobalObservationsPath(options.env ?? null);
378
+ if (target === null) {
379
+ return { entries: [], droppedMalformed: 0, droppedUnknownField: 0 };
380
+ }
381
+ let raw: string;
382
+ try {
383
+ raw = fs.readFileSync(target, 'utf-8');
384
+ } catch {
385
+ return { entries: [], droppedMalformed: 0, droppedUnknownField: 0 };
386
+ }
387
+
388
+ let droppedMalformed = 0;
389
+ let droppedUnknownField = 0;
390
+ const entries: ObservationCandidate[] = [];
391
+
392
+ for (const line of raw.split(/\r?\n/)) {
393
+ const trimmed = line.trim();
394
+ if (trimmed === '') {
395
+ continue;
396
+ }
397
+ let obj: unknown;
398
+ try {
399
+ obj = JSON.parse(trimmed);
400
+ } catch {
401
+ droppedMalformed += 1;
402
+ continue;
403
+ }
404
+ if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
405
+ droppedMalformed += 1;
406
+ continue;
407
+ }
408
+ const rec = obj as Record<string, unknown>;
409
+ const field = typeof rec.field === 'string' ? rec.field : '';
410
+ if (!_ALLOWED_FIELD_SET.has(field)) {
411
+ droppedUnknownField += 1;
412
+ continue;
413
+ }
414
+ entries.push({
415
+ ts: typeof rec.ts === 'string' ? rec.ts : '',
416
+ field,
417
+ suggest: typeof rec.suggest === 'string' ? rec.suggest : '',
418
+ source: typeof rec.source === 'string' ? rec.source : '',
419
+ evidence: typeof rec.evidence === 'string' ? rec.evidence : '',
420
+ context: _parseContext(rec.context),
421
+ seen_count: typeof rec.seen_count === 'number' ? rec.seen_count : undefined,
422
+ seen_in: _parseSeenIn(rec.seen_in),
423
+ });
424
+ }
425
+
426
+ return { entries, droppedMalformed, droppedUnknownField };
427
+ }
428
+
429
+ // ---------------------------------------------------------------------------
430
+ // Phase 3 — project attribution and the generalisation promotion.
431
+ //
432
+ // The operator's third ask ("P — project facts with no managed folder"),
433
+ // implemented as the council's round-2 reading: attribution, not isolation.
434
+ // No global project registry, no project-indexed directory tree, no fourth
435
+ // sensitivity class — see `agents/settings/contexts/global-user-memory-cut.md`.
436
+ //
437
+ // `routeProjectObservation` is the Phase 0 predicate wired as a router: a
438
+ // project WITH a managed `agents/` folder keeps its facts local exactly as
439
+ // today (this module never touches them); a project withOUT one persists the
440
+ // fact here, tagged with `context` so it survives that project's deletion.
441
+ // ---------------------------------------------------------------------------
442
+
443
+ /** Where a project-scoped observation is routed, per the Phase 0 predicate. */
444
+ export type ProjectObservationRoute = 'local' | 'global';
445
+
446
+ /** `managed` keeps facts in the project's own `agents/memory/`; anything else has nowhere local to land. */
447
+ export function routeForManagedStatus(status: ManagedAgentsFolderStatus): ProjectObservationRoute {
448
+ return status === 'managed' ? 'local' : 'global';
449
+ }
450
+
451
+ /** Build the attribution footer for a project-scoped observation. `project_name` is the directory basename — the same human-readable unit the global knowledge card's `seen_in` footer already uses. */
452
+ export function buildObservationContext(projectRoot: string, firstSeen: string): ObservationContext {
453
+ return {
454
+ project_path: projectRoot,
455
+ project_name: path.basename(projectRoot) || projectRoot,
456
+ first_seen: firstSeen,
457
+ };
458
+ }
459
+
460
+ /**
461
+ * Capture-time guards for the two context strings ADDED by Phase 3, run
462
+ * before the context is ever attached to a candidate. `project_path` is
463
+ * *expected* to look like an absolute path — `redaction_scan`'s generic
464
+ * `project_path` category exists to catch a path LEAKED into free-form
465
+ * text, and would refuse every real value here by design, so only the
466
+ * `hidden_unicode` class (identifier smuggling, ADR-103) applies to it.
467
+ * `project_name` is free-form and gets the full scan, since a hostile or
468
+ * careless directory name could otherwise smuggle a secret or a hidden
469
+ * character past capture. Reuses the same hardened gate Phase 2 already
470
+ * calls for `suggest`/`evidence` — never a second detector.
471
+ */
472
+ export function evaluateContextCaptureGuards(context: ObservationContext): CaptureGuardResult {
473
+ const pathHiddenUnicode = redaction_scan(context.project_path).find(
474
+ (v) => v.category === 'hidden_unicode',
475
+ );
476
+ if (pathHiddenUnicode) {
477
+ return {
478
+ allowed: false,
479
+ category: 'hidden_unicode',
480
+ reason:
481
+ 'invisible characters detected in project_path — possible identifier smuggling: ' +
482
+ pathHiddenUnicode.snippet,
483
+ };
484
+ }
485
+
486
+ const nameViolations = redaction_scan(context.project_name);
487
+ const nameHiddenUnicode = nameViolations.find((v) => v.category === 'hidden_unicode');
488
+ if (nameHiddenUnicode) {
489
+ return {
490
+ allowed: false,
491
+ category: 'hidden_unicode',
492
+ reason:
493
+ 'invisible characters detected in project_name — possible identifier smuggling: ' +
494
+ nameHiddenUnicode.snippet,
495
+ };
496
+ }
497
+ if (nameViolations.length > 0) {
498
+ return {
499
+ allowed: false,
500
+ category: 'exclusion_list',
501
+ reason:
502
+ 'project_name matched a capture-time exclusion pattern: ' +
503
+ nameViolations.map((v) => v.category).join(', '),
504
+ };
505
+ }
506
+ return { allowed: true };
507
+ }
508
+
509
+ /** Current `seen_count` for an already-buffered context-bearing entry — 1 when the field is absent (its first sighting was never re-written with an explicit count). */
510
+ function _existingSeenCount(entry: ObservationCandidate): number {
511
+ return entry.seen_count ?? 1;
512
+ }
513
+
514
+ /** Current `seen_in` for an already-buffered context-bearing entry, falling back to its own context's project when the field is absent. */
515
+ function _existingSeenIn(entry: ObservationCandidate): readonly string[] {
516
+ if (entry.seen_in !== undefined) {
517
+ return entry.seen_in;
518
+ }
519
+ return entry.context !== undefined ? [entry.context.project_name] : [];
520
+ }
521
+
522
+ /** Result of matching a new project-scoped candidate against the existing context-bearing buffer. */
523
+ export interface ObservationRecurrence {
524
+ readonly seen_count: number;
525
+ readonly seen_in: readonly string[];
526
+ }
527
+
528
+ /**
529
+ * Decide whether `candidateText` is the SAME observation as one already
530
+ * buffered from a different project, using the identical dedup primitive
531
+ * (`_lib/text_similarity.ts`'s `MERGE_THRESHOLD`, via `classifySimilarity`)
532
+ * the curated-memory dedup path uses — "same observation" means the same
533
+ * thing in both places, per the roadmap. Only entries carrying a `context`
534
+ * are eligible matches; a pure user-attribute observation (no project to
535
+ * attribute to) never participates in cross-project recurrence counting.
536
+ *
537
+ * The buffer is append-only, so a recurring observation accumulates
538
+ * multiple lines over time, each carrying that append's cumulative
539
+ * `seen_count`/`seen_in`. Deliberately scans linearly (not
540
+ * `findMostSimilar`, which ties to the FIRST equal-score match) and keeps
541
+ * the LAST line at/above `MERGE_THRESHOLD` — otherwise a run of
542
+ * byte-identical `suggest` values would always tie back to the stale first
543
+ * sighting instead of the most recently accumulated state.
544
+ *
545
+ * Recurrence in the SAME project again does not bump the counter — the
546
+ * roadmap ties `seen_count` to "recurs in a DIFFERENT project" specifically,
547
+ * so the growth stays a cross-project confirmation tally, never a
548
+ * same-project noise counter.
549
+ */
550
+ export function computeRecurrence(
551
+ candidateContext: ObservationContext,
552
+ candidateText: string,
553
+ existingEntries: readonly ObservationCandidate[],
554
+ ): ObservationRecurrence {
555
+ const contextBearing = existingEntries.filter((e) => e.context !== undefined);
556
+
557
+ let matched: ObservationCandidate | undefined;
558
+ for (const entry of contextBearing) {
559
+ const score = jaccardSimilarity(candidateText, entry.suggest);
560
+ if (classifySimilarity(score) === 'merge') {
561
+ matched = entry;
562
+ }
563
+ }
564
+ if (matched === undefined) {
565
+ return { seen_count: 1, seen_in: [candidateContext.project_name] };
566
+ }
567
+ const priorSeenIn = _existingSeenIn(matched);
568
+ if (priorSeenIn.includes(candidateContext.project_name)) {
569
+ // Same project recurring — evidence already counted; hold steady.
570
+ return { seen_count: _existingSeenCount(matched), seen_in: priorSeenIn };
571
+ }
572
+ return {
573
+ seen_count: _existingSeenCount(matched) + 1,
574
+ seen_in: [...priorSeenIn, candidateContext.project_name],
575
+ };
576
+ }
577
+
578
+ /** A project-scoped candidate awaiting routing — no `context`/`seen_count`/`seen_in` yet; `routeProjectObservation` attaches them. */
579
+ export type ProjectObservationInput = Pick<ObservationCandidate, 'ts' | 'suggest' | 'source' | 'evidence'> & {
580
+ readonly field?: string;
581
+ };
582
+
583
+ export interface RouteProjectObservationOptions {
584
+ readonly env?: user_global_paths.EnvMap | null;
585
+ readonly repo_root?: string | null;
586
+ }
587
+
588
+ export interface ProjectObservationRouteResult {
589
+ readonly route: ProjectObservationRoute;
590
+ readonly written: boolean;
591
+ readonly reason?: string | undefined;
592
+ readonly category?: CaptureGuardCategory | 'invalid_field' | undefined;
593
+ readonly context?: ObservationContext | undefined;
594
+ readonly seen_count?: number | undefined;
595
+ readonly seen_in?: readonly string[] | undefined;
596
+ }
597
+
598
+ /**
599
+ * The Phase 0 predicate wired as the router. `managed` → returns `route:
600
+ * 'local'` and writes NOTHING here — the fact stays in that project's
601
+ * `agents/memory/` exactly as today, unchanged by this module. `unmanaged` /
602
+ * `not-a-project` → the observation is tagged with `context`, checked for
603
+ * cross-project recurrence, and appended to the global buffer via the SAME
604
+ * `appendGlobalObservation` guard pipeline Phase 2 established (never a
605
+ * second write path).
606
+ *
607
+ * `field` defaults to `'notes'` — the schema's free-form catch-all — since a
608
+ * project-scoped fact (a convention, an invariant, a recurring gotcha) has
609
+ * no natural mapping onto the closed identity/style enum; `context` is what
610
+ * distinguishes it from a plain user preference note, not a new field value.
611
+ */
612
+ export function routeProjectObservation(
613
+ input: ProjectObservationInput,
614
+ projectRoot: string,
615
+ options: RouteProjectObservationOptions = {},
616
+ ): ProjectObservationRouteResult {
617
+ const status = detect_managed_agents_folder(projectRoot);
618
+ const route = routeForManagedStatus(status);
619
+ if (route === 'local') {
620
+ return {
621
+ route: 'local',
622
+ written: false,
623
+ reason:
624
+ "managed agents/ folder detected — the fact stays in this project's agents/memory/ " +
625
+ 'exactly as today; never routed to the global buffer.',
626
+ };
627
+ }
628
+
629
+ const context = buildObservationContext(projectRoot, input.ts);
630
+ const contextGuard = evaluateContextCaptureGuards(context);
631
+ if (!contextGuard.allowed) {
632
+ return {
633
+ route: 'global',
634
+ written: false,
635
+ category: contextGuard.category,
636
+ reason: contextGuard.reason,
637
+ };
638
+ }
639
+
640
+ const existing = readGlobalObservations({ env: options.env ?? null }).entries;
641
+ const recurrence = computeRecurrence(context, input.suggest, existing);
642
+
643
+ const candidate: ObservationCandidate = {
644
+ ts: input.ts,
645
+ field: input.field ?? 'notes',
646
+ suggest: input.suggest,
647
+ source: input.source,
648
+ evidence: input.evidence,
649
+ context,
650
+ seen_count: recurrence.seen_count,
651
+ seen_in: recurrence.seen_in,
652
+ };
653
+
654
+ const result = appendGlobalObservation(candidate, {
655
+ env: options.env ?? null,
656
+ repo_root: options.repo_root ?? null,
657
+ });
658
+ return {
659
+ route: 'global',
660
+ written: result.written,
661
+ reason: result.reason,
662
+ category: result.category,
663
+ context,
664
+ seen_count: recurrence.seen_count,
665
+ seen_in: recurrence.seen_in,
666
+ };
667
+ }
668
+
669
+ // ---------------------------------------------------------------------------
670
+ // Promotion — the ONLY generalisation path (see agent-user-schema.md).
671
+ // ---------------------------------------------------------------------------
672
+
673
+ /** Human-confirmed-recurrence threshold for promotion candidacy. Never auto-promotes past this — it only makes the observation eligible for `/agents:user review` to surface, with a mandatory `promotion_reason` as human input before `/agents:user accept` writes anything. */
674
+ export const PROMOTION_SEEN_COUNT_THRESHOLD = 3;
675
+
676
+ export interface PromotionCandidate {
677
+ readonly observation: ObservationCandidate;
678
+ readonly seenCount: number;
679
+ readonly projects: readonly string[];
680
+ }
681
+
682
+ /**
683
+ * Observations that have crossed the promotion-candidacy threshold. This is
684
+ * the ONLY generalisation path in the whole layer — the agent never infers a
685
+ * cross-project pattern itself (a non-goal in the roadmap's Goal section);
686
+ * `seen_count` only ever grows one write at a time via `routeProjectObservation`
687
+ * observing a genuinely new project, never a batch scan across the store.
688
+ * Crossing the threshold surfaces candidacy; it never writes `profile.md` —
689
+ * that still requires the human-confirmed `/agents:user accept` step, with a
690
+ * `promotion_reason` the review flow must collect (mirroring ADR-121's rule
691
+ * that there is no auto-`shareable` path for a knowledge card).
692
+ */
693
+ export function findPromotionCandidates(
694
+ entries: readonly ObservationCandidate[],
695
+ ): PromotionCandidate[] {
696
+ const out: PromotionCandidate[] = [];
697
+ for (const entry of entries) {
698
+ if (entry.context === undefined) {
699
+ continue;
700
+ }
701
+ const seenCount = _existingSeenCount(entry);
702
+ if (seenCount >= PROMOTION_SEEN_COUNT_THRESHOLD) {
703
+ out.push({ observation: entry, seenCount, projects: _existingSeenIn(entry) });
704
+ }
705
+ }
706
+ return out;
707
+ }
708
+
709
+ /**
710
+ * The value that may ever reach `profile.md` for a promoted observation —
711
+ * the fact text ONLY, never `context`, never `seen_in`. This is what keeps
712
+ * the long-lived artefact converging to zero project references: the
713
+ * counter is evidence that lived on the buffer entry, and only the
714
+ * short-lived buffer entry needed it (see agent-user-schema.md § Project
715
+ * attribution — "`seen_in[]` is a narrower metadata surface, not a null
716
+ * one").
717
+ */
718
+ export function promotionValueFor(candidate: ObservationCandidate): string {
719
+ return candidate.suggest;
720
+ }
721
+
722
+ // ---------------------------------------------------------------------------
723
+ // Phase 4 — delete, revoke, audit (road-to-global-user-memory).
724
+ //
725
+ // `deleteGlobalObservation` and `purgeProjectContext` are the delete
726
+ // counterpart of `appendGlobalObservation` / `routeProjectObservation`
727
+ // above — this module remains the ONLY writer (now also the only deleter)
728
+ // of the observation buffer, mirroring the single-writer discipline the
729
+ // module docstring already states for the append path.
730
+ // ---------------------------------------------------------------------------
731
+
732
+ /**
733
+ * Deterministic content-derived identifier for one buffered observation —
734
+ * this layer's analogue of a knowledge card's `card_id_from` slug. The
735
+ * JSONL schema (Phase 2/3) never added a stored `id` field, so identity is
736
+ * derived from the fields that make one capture event unique: `ts`
737
+ * (capture timestamp) plus `field` + `suggest` (what was proposed).
738
+ * `source` / `evidence` / `context` are deliberately excluded — two
739
+ * identical suggestions logged at the same instant from a different source
740
+ * string, or with different evidence phrasing, are still "the same
741
+ * observation" to a human choosing to delete it.
742
+ */
743
+ export function observationId(entry: Pick<ObservationCandidate, 'ts' | 'field' | 'suggest'>): string {
744
+ const canonical = `${entry.ts}\u0000${entry.field}\u0000${entry.suggest}`;
745
+ return crypto.createHash('sha256').update(canonical, 'utf-8').digest('hex').slice(0, 16);
746
+ }
747
+
748
+ /** Rewrite the buffer file with exactly `entries` — the shared primitive both delete paths use. */
749
+ function _writeBufferEntries(
750
+ entries: readonly ObservationCandidate[],
751
+ env: user_global_paths.EnvMap | null,
752
+ ): void {
753
+ const target = globalObservationsWriteTarget(env);
754
+ fs.mkdirSync(path.dirname(target), { recursive: true });
755
+ const body = entries.map((e) => JSON.stringify(e)).join('\n');
756
+ fs.writeFileSync(target, entries.length > 0 ? body + '\n' : '', 'utf-8');
757
+ }
758
+
759
+ export interface DeleteObservationResult {
760
+ readonly deleted: boolean;
761
+ readonly tombstone?: RevocationEntry | undefined;
762
+ }
763
+
764
+ /**
765
+ * Delete ONE buffered observation by its content-derived id. Writes an
766
+ * append-only tombstone to `user_global_revocations.ts`'s ledger BEFORE the
767
+ * buffer is rewritten without it — never the reverse — mirroring
768
+ * `knowledge_global_cli.ts`'s `_forget_one` (tombstone THEN delete).
769
+ * `deleted: false` (no tombstone written) when no entry matches `observation_id`.
770
+ */
771
+ export function deleteGlobalObservation(
772
+ observation_id: string,
773
+ reason: string,
774
+ options: { env?: user_global_paths.EnvMap | null; today?: string } = {},
775
+ ): DeleteObservationResult {
776
+ const env = options.env ?? null;
777
+ const { entries } = readGlobalObservations({ env });
778
+ const hasMatch = entries.some((e) => observationId(e) === observation_id);
779
+ if (!hasMatch) {
780
+ return { deleted: false };
781
+ }
782
+ const tombstone = revocations.appendTombstone(observation_id, reason, {
783
+ today: options.today,
784
+ env,
785
+ });
786
+ _writeBufferEntries(
787
+ entries.filter((e) => observationId(e) !== observation_id),
788
+ env,
789
+ );
790
+ return { deleted: true, tombstone };
791
+ }
792
+
793
+ export interface PurgeProjectContextResult {
794
+ readonly purgedCount: number;
795
+ readonly tombstones: readonly RevocationEntry[];
796
+ }
797
+
798
+ /**
799
+ * Whole-project-context purge — removes EVERY buffered observation
800
+ * attributed (via `context.project_path`) to `projectPath`, so a deleted
801
+ * project's facts do not linger in the global buffer forever. Tombstones
802
+ * each removed observation individually BEFORE the buffer is rewritten,
803
+ * mirroring `knowledge_global_cli.ts`'s `cmd_purge` (one tombstone per card,
804
+ * written before that card is wiped). Observations from OTHER projects and
805
+ * observations carrying no `context` at all (pure user-attribute facts, not
806
+ * project-attributed) are left untouched. `purgedCount: 0` when no
807
+ * observation matches `projectPath` — the buffer is not rewritten in that
808
+ * case, so an unrelated purge call never touches the file's mtime.
809
+ */
810
+ export function purgeProjectContext(
811
+ projectPath: string,
812
+ reason: string,
813
+ options: { env?: user_global_paths.EnvMap | null; today?: string } = {},
814
+ ): PurgeProjectContextResult {
815
+ const env = options.env ?? null;
816
+ const { entries } = readGlobalObservations({ env });
817
+ const toRemove = entries.filter((e) => e.context?.project_path === projectPath);
818
+ if (toRemove.length === 0) {
819
+ return { purgedCount: 0, tombstones: [] };
820
+ }
821
+ const tombstones = toRemove.map((e) =>
822
+ revocations.appendTombstone(observationId(e), reason, { today: options.today, env }),
823
+ );
824
+ const removedIds = new Set(toRemove.map((e) => observationId(e)));
825
+ _writeBufferEntries(
826
+ entries.filter((e) => !removedIds.has(observationId(e))),
827
+ env,
828
+ );
829
+ return { purgedCount: toRemove.length, tombstones };
830
+ }