@event4u/agent-config 16.3.0 → 16.4.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 (486) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +251 -0
  5. package/README.md +2 -2
  6. package/agents/templates/.ai-council.yml.example +26 -8
  7. package/dist/agent-src/commands/analyze/inbox.md +10 -7
  8. package/dist/agent-src/commands/bug/investigate.md +1 -1
  9. package/dist/agent-src/commands/commit/in-chunks.md +40 -31
  10. package/dist/agent-src/commands/commit.md +72 -33
  11. package/dist/agent-src/commands/condense.md +2 -8
  12. package/dist/agent-src/commands/council/debate.md +11 -7
  13. package/dist/agent-src/commands/council/default.md +10 -9
  14. package/dist/agent-src/commands/council.md +1 -1
  15. package/dist/agent-src/commands/estimate-ticket.md +1 -1
  16. package/dist/agent-src/commands/feature/explore.md +3 -3
  17. package/dist/agent-src/commands/feature/plan.md +1 -1
  18. package/dist/agent-src/commands/fix/ci.md +17 -3
  19. package/dist/agent-src/commands/fix/commit-messages.md +48 -23
  20. package/dist/agent-src/commands/fix/pr-comments.md +3 -6
  21. package/dist/agent-src/commands/implement-ticket.md +3 -3
  22. package/dist/agent-src/commands/memory/add.md +4 -16
  23. package/dist/agent-src/commands/memory/load.md +5 -6
  24. package/dist/agent-src/commands/memory/promote.md +3 -16
  25. package/dist/agent-src/commands/mission/upgrade.md +3 -2
  26. package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
  27. package/dist/agent-src/commands/optimize/deep.md +4 -2
  28. package/dist/agent-src/commands/optimize/rtk.md +4 -26
  29. package/dist/agent-src/commands/pr/create/description-only.md +18 -15
  30. package/dist/agent-src/commands/pr/create.md +42 -34
  31. package/dist/agent-src/commands/pr/merge.md +136 -9
  32. package/dist/agent-src/commands/prepare-for-review.md +13 -11
  33. package/dist/agent-src/commands/project/analyze.md +7 -35
  34. package/dist/agent-src/commands/refine-ticket.md +1 -1
  35. package/dist/agent-src/commands/review/changes.md +14 -19
  36. package/dist/agent-src/commands/roadmap/next.md +10 -1
  37. package/dist/agent-src/commands/roadmap/process-full.md +52 -38
  38. package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
  39. package/dist/agent-src/commands/worktree/create.md +7 -3
  40. package/dist/agent-src/commands/worktree/verify.md +2 -1
  41. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
  42. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
  43. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
  44. package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
  45. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  46. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
  47. package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
  48. package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
  49. package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
  50. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
  51. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +67 -52
  52. package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
  53. package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
  54. package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
  55. package/dist/agent-src/contexts/execution/toolchain-resolver.md +4 -10
  56. package/dist/agent-src/contexts/subagent-configuration.md +1 -1
  57. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  58. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  59. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  60. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  61. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
  62. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  63. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  64. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
  65. package/dist/agent-src/guidelines/php/git.md +15 -2
  66. package/dist/agent-src/rules/active-remediation.md +0 -1
  67. package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
  68. package/dist/agent-src/rules/architecture.md +0 -1
  69. package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
  70. package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
  71. package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
  72. package/dist/agent-src/rules/autonomous-execution.md +0 -1
  73. package/dist/agent-src/rules/brand-consistency.md +0 -1
  74. package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
  75. package/dist/agent-src/rules/broken-access-control.md +0 -1
  76. package/dist/agent-src/rules/cli-output-handling.md +0 -1
  77. package/dist/agent-src/rules/code-comment-discipline.md +0 -1
  78. package/dist/agent-src/rules/code-provenance.md +0 -1
  79. package/dist/agent-src/rules/command-suggestion-policy.md +0 -1
  80. package/dist/agent-src/rules/commit-conventions.md +1 -2
  81. package/dist/agent-src/rules/communication-through-line.md +1 -2
  82. package/dist/agent-src/rules/content-quoting-floor.md +1 -2
  83. package/dist/agent-src/rules/context-hygiene.md +5 -5
  84. package/dist/agent-src/rules/copilot-routing.md +1 -2
  85. package/dist/agent-src/rules/council-availability.md +4 -4
  86. package/dist/agent-src/rules/cross-source-consistency.md +4 -6
  87. package/dist/agent-src/rules/decision-revisit-gate.md +2 -3
  88. package/dist/agent-src/rules/delegation-policy.md +2 -3
  89. package/dist/agent-src/rules/design-fidelity.md +0 -1
  90. package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
  91. package/dist/agent-src/rules/devcontainer-routing.md +1 -2
  92. package/dist/agent-src/rules/doc-screenshot-hygiene.md +0 -1
  93. package/dist/agent-src/rules/docker-commands.md +0 -1
  94. package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
  95. package/dist/agent-src/rules/domain-safety-disclaimer.md +0 -1
  96. package/dist/agent-src/rules/domain-safety-pii.md +0 -1
  97. package/dist/agent-src/rules/domain-safety-retention.md +0 -1
  98. package/dist/agent-src/rules/downstream-changes.md +0 -1
  99. package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
  100. package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
  101. package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
  102. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -2
  103. package/dist/agent-src/rules/finance-safety-floor.md +0 -1
  104. package/dist/agent-src/rules/fix-what-you-see.md +6 -32
  105. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
  106. package/dist/agent-src/rules/git-history-discipline.md +1 -2
  107. package/dist/agent-src/rules/guidelines.md +0 -1
  108. package/dist/agent-src/rules/history-discipline.md +0 -1
  109. package/dist/agent-src/rules/icon-consistency.md +0 -1
  110. package/dist/agent-src/rules/image-likeness-and-rights.md +0 -1
  111. package/dist/agent-src/rules/improve-before-implement.md +0 -1
  112. package/dist/agent-src/rules/invite-challenge.md +0 -1
  113. package/dist/agent-src/rules/laravel-routing.md +1 -2
  114. package/dist/agent-src/rules/laravel-translations.md +0 -1
  115. package/dist/agent-src/rules/legal-safety-floor.md +0 -1
  116. package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
  117. package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
  118. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
  119. package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
  120. package/dist/agent-src/rules/media-governance-routing.md +1 -2
  121. package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
  122. package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
  123. package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
  124. package/dist/agent-src/rules/missing-tool-handling.md +0 -1
  125. package/dist/agent-src/rules/model-recommendation.md +0 -1
  126. package/dist/agent-src/rules/neighbour-precedence.md +64 -0
  127. package/dist/agent-src/rules/no-attribution-footers.md +0 -1
  128. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
  129. package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
  130. package/dist/agent-src/rules/no-roadmap-references.md +0 -1
  131. package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
  132. package/dist/agent-src/rules/onboarding-gate.md +0 -1
  133. package/dist/agent-src/rules/output-discipline.md +0 -1
  134. package/dist/agent-src/rules/package-ci-checks.md +0 -1
  135. package/dist/agent-src/rules/persona-governance.md +2 -3
  136. package/dist/agent-src/rules/php-coding.md +0 -1
  137. package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
  138. package/dist/agent-src/rules/preservation-guard.md +0 -1
  139. package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -3
  140. package/dist/agent-src/rules/question-not-instruction.md +0 -1
  141. package/dist/agent-src/rules/reviewer-awareness.md +0 -1
  142. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
  143. package/dist/agent-src/rules/roadmap-progress-sync.md +3 -6
  144. package/dist/agent-src/rules/role-mode-adherence.md +0 -1
  145. package/dist/agent-src/rules/rule-type-governance.md +0 -1
  146. package/dist/agent-src/rules/runtime-safety.md +0 -1
  147. package/dist/agent-src/rules/scale-discipline.md +0 -1
  148. package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
  149. package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
  150. package/dist/agent-src/rules/self-repair-loop.md +0 -1
  151. package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
  152. package/dist/agent-src/rules/session-canary.md +0 -1
  153. package/dist/agent-src/rules/settings-ask-protocol.md +5 -6
  154. package/dist/agent-src/rules/size-enforcement.md +0 -1
  155. package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
  156. package/dist/agent-src/rules/skill-quality.md +0 -1
  157. package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
  158. package/dist/agent-src/rules/source-confidentiality.md +0 -1
  159. package/dist/agent-src/rules/source-discovery-gate.md +0 -1
  160. package/dist/agent-src/rules/source-of-truth.md +0 -1
  161. package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
  162. package/dist/agent-src/rules/strategy-safety-floor.md +0 -1
  163. package/dist/agent-src/rules/symfony-routing.md +1 -2
  164. package/dist/agent-src/rules/think-before-action.md +0 -1
  165. package/dist/agent-src/rules/token-budget-discipline.md +12 -46
  166. package/dist/agent-src/rules/token-efficiency.md +0 -1
  167. package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
  168. package/dist/agent-src/rules/tool-safety.md +0 -1
  169. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  170. package/dist/agent-src/rules/untrusted-input-defense.md +0 -1
  171. package/dist/agent-src/rules/upstream-proposal.md +0 -1
  172. package/dist/agent-src/rules/user-interaction.md +0 -1
  173. package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
  174. package/dist/agent-src/scripts/gate_budget.ts +47 -23
  175. package/dist/agent-src/scripts/gate_execute.ts +12 -4
  176. package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
  177. package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
  178. package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
  179. package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  180. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  181. package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
  182. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
  183. package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
  184. package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
  185. package/dist/agent-src/skills/database/data/manifest.json +2 -2
  186. package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
  187. package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
  188. package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
  189. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  190. package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
  191. package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
  192. package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
  193. package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
  194. package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
  195. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  196. package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
  197. package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
  198. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
  199. package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
  200. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
  201. package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
  202. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  203. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  204. package/dist/agent-src/templates/AGENTS.md +1 -1
  205. package/dist/agent-src/templates/agent-settings.md +46 -129
  206. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
  207. package/dist/agent-src/templates/command.md +2 -2
  208. package/dist/agent-src/templates/roadmaps.md +6 -1
  209. package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  210. package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  211. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  212. package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  213. package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  214. package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  215. package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  216. package/dist/agent-src/templates/skill.md +1 -1
  217. package/dist/cli/registry.js +1 -0
  218. package/dist/cli-delegate/check_update_banner.js +195 -119
  219. package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
  220. package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
  221. package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
  222. package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
  223. package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
  224. package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-AED2VQGM.js} +65 -11
  225. package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
  226. package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
  227. package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
  228. package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
  229. package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
  230. package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
  231. package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
  232. package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
  233. package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
  234. package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-MSUL5NYP.js} +5 -5
  235. package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
  236. package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
  237. package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
  238. package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
  239. package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
  240. package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
  241. package/dist/cli-delegate/cmd_analyze_session.js +223 -43
  242. package/dist/cli-delegate/cmd_brand_status.js +3 -2
  243. package/dist/cli-delegate/cmd_conformance.js +105 -35
  244. package/dist/cli-delegate/cmd_converge.js +3 -3
  245. package/dist/cli-delegate/cmd_doctor.js +15 -12
  246. package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
  247. package/dist/cli-delegate/cmd_explain.js +43 -19
  248. package/dist/cli-delegate/cmd_export.js +10 -10
  249. package/dist/cli-delegate/cmd_git_convention.js +1851 -0
  250. package/dist/cli-delegate/cmd_handoff.js +40 -21
  251. package/dist/cli-delegate/cmd_mcp_available.js +3 -2
  252. package/dist/cli-delegate/cmd_migrate.js +3 -3
  253. package/dist/cli-delegate/cmd_packs_active.js +4 -3
  254. package/dist/cli-delegate/cmd_prune.js +10 -10
  255. package/dist/cli-delegate/cmd_route_audit.js +7 -7
  256. package/dist/cli-delegate/cmd_route_explain.js +5 -5
  257. package/dist/cli-delegate/cmd_session_recycle.js +9 -7
  258. package/dist/cli-delegate/cmd_settings_check.js +54 -7
  259. package/dist/cli-delegate/cmd_settings_get.js +18 -8
  260. package/dist/cli-delegate/cmd_settings_migrate.js +10 -10
  261. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  262. package/dist/cli-delegate/cmd_sync.js +10 -10
  263. package/dist/cli-delegate/cmd_uninstall.js +10 -10
  264. package/dist/cli-delegate/cmd_update.js +7 -7
  265. package/dist/cli-delegate/cmd_upgrade.js +7 -7
  266. package/dist/cli-delegate/cmd_validate.js +10 -10
  267. package/dist/cli-delegate/cmd_versions.js +5 -5
  268. package/dist/cli-delegate/gate_budget.js +1 -1
  269. package/dist/cli-delegate/gate_execute.js +2 -2
  270. package/dist/cli-delegate/roadmap_gates.js +2 -2
  271. package/dist/discovery/deprecation-report.md +1 -1
  272. package/dist/discovery/discovery-manifest.json +129 -90
  273. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  274. package/dist/discovery/discovery-manifest.summary.md +3 -3
  275. package/dist/discovery/dormancy-report.md +1 -1
  276. package/dist/discovery/orphan-report.md +1 -1
  277. package/dist/discovery/packs.json +24 -9
  278. package/dist/discovery/trust-report.md +3 -3
  279. package/dist/discovery/workspaces.json +5 -4
  280. package/dist/hooks/dispatch.js +2151 -1820
  281. package/dist/hooks/dispatch.sha256 +1 -1
  282. package/dist/install/install.mjs +462 -431
  283. package/dist/install/installThinLayer.js +40 -12
  284. package/dist/install/installedRuleLinks.js +105 -19
  285. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  286. package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
  287. package/dist/mcp/registry-manifest.json +5 -5
  288. package/dist/mcp/server.json +2 -2
  289. package/dist/mcp/server.mjs +2702 -1995
  290. package/dist/router.json +1 -1
  291. package/dist/scripts/_lib/agent_settings.js +15 -120
  292. package/dist/scripts/_lib/compile_time_toggles.js +12 -21
  293. package/dist/scripts/_lib/git_convention.js +232 -0
  294. package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
  295. package/dist/scripts/_lib/installed_layer.js +344 -18
  296. package/dist/scripts/_lib/package_root.js +68 -0
  297. package/dist/scripts/_lib/rule_law_section.js +1 -1
  298. package/dist/scripts/_lib/settings_removed_keys.js +168 -0
  299. package/dist/scripts/_lib/thin_rules.js +80 -3
  300. package/dist/server/app.js +2 -1
  301. package/dist/server/gitKeysGate.js +105 -0
  302. package/dist/server/routes/settings.js +67 -8
  303. package/dist/server/routes/wizard.js +4 -0
  304. package/dist/server/schemas/settings.js +23 -81
  305. package/dist/shared/skillRanking.js +30 -4
  306. package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
  307. package/dist/ui/index.html +1 -1
  308. package/docs/MIGRATION.md +72 -1
  309. package/docs/contracts/settings-classes.md +35 -65
  310. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
  311. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
  312. package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
  313. package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
  314. package/docs/guidelines/agent-infra/layered-settings.md +13 -1
  315. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  316. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
  317. package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
  318. package/docs/guidelines/php/git.md +15 -2
  319. package/package.json +1 -1
  320. package/src/agent-src/scripts/gate_budget.ts +47 -23
  321. package/src/agent-src/scripts/gate_execute.ts +12 -4
  322. package/src/agent-src/templates/AGENTS.md +1 -1
  323. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
  324. package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
  325. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
  326. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
  327. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
  328. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
  329. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
  330. package/src/config/agent-settings.template.yml +79 -312
  331. package/src/config/agents-paths.yml +16 -0
  332. package/src/config/assurance-capability-registry.json +7 -3
  333. package/src/config/ci-local-parity.yml +3 -0
  334. package/src/config/continuity-surface.json +3 -3
  335. package/src/config/discovery/packs.yml +17 -1
  336. package/src/config/evaluator-budgets.json +19 -6
  337. package/src/config/gate-coverage.yml +65 -23
  338. package/src/config/gate-violation-baselines.json +53 -13
  339. package/src/config/gitignore-block.txt +19 -0
  340. package/src/config/hook-bundle-budget.json +1 -1
  341. package/src/config/release-gate-locality.yml +2 -1
  342. package/src/config/routing-coverage-seed.json +48 -6
  343. package/src/config/rule-law-ceilings.json +12 -6
  344. package/src/config/rule-obligations.json +833 -0
  345. package/src/install/installThinLayer.ts +76 -10
  346. package/src/install/installedRuleLinks.ts +105 -17
  347. package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
  348. package/src/scripts/_cli/cmd_conformance.ts +13 -2
  349. package/src/scripts/_cli/cmd_doctor.ts +10 -10
  350. package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -0
  351. package/src/scripts/_cli/cmd_explain.ts +72 -14
  352. package/src/scripts/_cli/cmd_git_convention.ts +637 -0
  353. package/src/scripts/_cli/cmd_settings_check.ts +66 -8
  354. package/src/scripts/_cli/cmd_settings_get.ts +18 -3
  355. package/src/scripts/_cli/doctor_execution.ts +72 -1
  356. package/src/scripts/_dispatch.bash +37 -2
  357. package/src/scripts/_lib/agent_settings.ts +15 -124
  358. package/src/scripts/_lib/blocked_by_marker.ts +1 -1
  359. package/src/scripts/_lib/compile_time_toggles.ts +12 -21
  360. package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
  361. package/src/scripts/_lib/git_base_ref.ts +92 -0
  362. package/src/scripts/_lib/git_convention.ts +291 -0
  363. package/src/scripts/_lib/git_convention_carrier.ts +389 -0
  364. package/src/scripts/_lib/git_convention_grammar.ts +246 -0
  365. package/src/scripts/_lib/git_convention_measure.ts +344 -0
  366. package/src/scripts/_lib/global_deploy_inventory.ts +74 -0
  367. package/src/scripts/_lib/graph_feeder_record.ts +236 -13
  368. package/src/scripts/_lib/installed_layer.ts +448 -23
  369. package/src/scripts/_lib/knowledge_global.ts +14 -1
  370. package/src/scripts/_lib/module_reach.ts +456 -0
  371. package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
  372. package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
  373. package/src/scripts/_lib/ratification_artifact.ts +220 -1
  374. package/src/scripts/_lib/ratification_subject.ts +92 -0
  375. package/src/scripts/_lib/release_findings_ingest.ts +15 -7
  376. package/src/scripts/_lib/release_highlights.ts +5 -0
  377. package/src/scripts/_lib/rule_law_section.ts +1 -1
  378. package/src/scripts/_lib/rule_obligations.ts +205 -0
  379. package/src/scripts/_lib/self_repair.ts +1 -1
  380. package/src/scripts/_lib/settings_removed_keys.ts +173 -0
  381. package/src/scripts/_lib/test_red_state.ts +5 -0
  382. package/src/scripts/_lib/thin_rules.ts +83 -3
  383. package/src/scripts/_lib/touched_file_quality.ts +142 -6
  384. package/src/scripts/_lib/worker_budget.ts +1 -1
  385. package/src/scripts/adr/regenerate_index.ts +16 -1
  386. package/src/scripts/ai_council/config.ts +7 -7
  387. package/src/scripts/ai_council/modification_review.ts +100 -0
  388. package/src/scripts/ai_council/modification_review_questions.ts +90 -0
  389. package/src/scripts/ai_council/orchestrator.ts +5 -5
  390. package/src/scripts/ai_council/spend_gate.ts +18 -7
  391. package/src/scripts/ai_team/config.ts +11 -16
  392. package/src/scripts/audit_user_type_axis.ts +20 -8
  393. package/src/scripts/bench_ab_clone.ts +1 -2
  394. package/src/scripts/bench_concern_spawn_path.ts +129 -0
  395. package/src/scripts/bench_graph_feeder_latency.ts +584 -0
  396. package/src/scripts/check_agent_artifact_location.ts +36 -0
  397. package/src/scripts/check_branch_freshness.ts +147 -24
  398. package/src/scripts/check_enforcement_coverage.ts +130 -0
  399. package/src/scripts/check_evaluator_budgets.ts +4 -0
  400. package/src/scripts/check_finding_dispositions.ts +88 -25
  401. package/src/scripts/check_gate_coverage.ts +4 -3
  402. package/src/scripts/check_gate_reachability.ts +48 -1
  403. package/src/scripts/check_generator_sync.ts +48 -0
  404. package/src/scripts/check_hook_bundle_composition.ts +107 -0
  405. package/src/scripts/check_kernel_edit_ratified.ts +86 -6
  406. package/src/scripts/check_pack_size.ts +1 -1
  407. package/src/scripts/check_release_manifest_content.ts +189 -0
  408. package/src/scripts/check_standing_rule_delivery.ts +96 -0
  409. package/src/scripts/check_suppression_hygiene.ts +2 -5
  410. package/src/scripts/ci_settle.ts +42 -5
  411. package/src/scripts/classify_merge_risk.ts +320 -0
  412. package/src/scripts/closure_scan.ts +91 -1
  413. package/src/scripts/command_suggester/settings.ts +8 -108
  414. package/src/scripts/command_suggester/types.ts +4 -5
  415. package/src/scripts/consumer_matrix.ts +102 -0
  416. package/src/scripts/context_hygiene_hook.ts +13 -23
  417. package/src/scripts/cost/preflight.mjs +12 -1
  418. package/src/scripts/council_cli.ts +7 -7
  419. package/src/scripts/dispatch_r2_reviewer.ts +24 -11
  420. package/src/scripts/explain_run.ts +8 -13
  421. package/src/scripts/generate_git_convention_grammar.ts +127 -0
  422. package/src/scripts/generate_host_cost_table.ts +20 -3
  423. package/src/scripts/handoff_context_hook.ts +86 -37
  424. package/src/scripts/hook_manifest.json +1 -1
  425. package/src/scripts/hook_manifest.yaml +25 -6
  426. package/src/scripts/hooks/block_config_weakening.ts +48 -5
  427. package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
  428. package/src/scripts/hooks/concern_registry.ts +2 -0
  429. package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
  430. package/src/scripts/hooks/evidence_independence.ts +12 -4
  431. package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
  432. package/src/scripts/hooks/push_settle_hook.ts +4 -3
  433. package/src/scripts/hooks/rule_inject_hook.ts +44 -3
  434. package/src/scripts/hooks/state_io.ts +8 -4
  435. package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
  436. package/src/scripts/hooks/turn_end_gate_hook.ts +1 -0
  437. package/src/scripts/install-hooks.sh +42 -14
  438. package/src/scripts/install.ts +7 -31
  439. package/src/scripts/lint_blocker_citations.ts +198 -0
  440. package/src/scripts/lint_evidence_artifacts.ts +9 -0
  441. package/src/scripts/lint_hook_concern_budget.ts +10 -21
  442. package/src/scripts/lint_pack_boundaries.ts +406 -28
  443. package/src/scripts/lint_roadmap_blockers.ts +282 -29
  444. package/src/scripts/lint_roadmap_complexity.ts +4 -2
  445. package/src/scripts/lint_rule_law_section.ts +151 -21
  446. package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
  447. package/src/scripts/lint_settings_classes.ts +1 -1
  448. package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
  449. package/src/scripts/lint_workflow_security.ts +12 -1
  450. package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
  451. package/src/scripts/model_rule_injection.ts +3 -3
  452. package/src/scripts/onboarding_gate_hook.ts +7 -6
  453. package/src/scripts/print_required_checks.ts +15 -3
  454. package/src/scripts/probe_host_compliance.ts +33 -5
  455. package/src/scripts/probe_turnaround.ts +183 -3
  456. package/src/scripts/ratification_header.ts +77 -0
  457. package/src/scripts/refusal_envelope.ts +138 -0
  458. package/src/scripts/release_publication.ts +29 -3
  459. package/src/scripts/report_dispatch_import_closure.ts +76 -0
  460. package/src/scripts/report_installed_rule_links.ts +118 -1
  461. package/src/scripts/report_module_reach.ts +212 -0
  462. package/src/scripts/report_obligation_mechanism.ts +16 -18
  463. package/src/scripts/report_parked_blockers.ts +222 -0
  464. package/src/scripts/report_required_checks_drift.ts +196 -0
  465. package/src/scripts/report_skill_ranker_confusion.ts +103 -2
  466. package/src/scripts/report_standing_payload_by_host.ts +1 -1
  467. package/src/scripts/routing_doctor.ts +2 -2
  468. package/src/scripts/schemas/agent-settings.schema.json +17 -31
  469. package/src/scripts/schemas/command.schema.json +1 -1
  470. package/src/scripts/schemas/skill.schema.json +1 -1
  471. package/src/scripts/self_review_gate.ts +39 -2
  472. package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
  473. package/src/scripts/sync_pr_branch.ts +403 -132
  474. package/src/scripts/trigger_eval_grandfather.json +0 -16
  475. package/src/server/schemas/settings.ts +33 -177
  476. package/src/shared/skillRanking.ts +53 -4
  477. package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
  478. package/src/scripts/_lib/config_chain.ts +0 -477
  479. package/src/scripts/_lib/conformance_report.ts +0 -403
  480. package/src/scripts/_lib/eval_discrimination.ts +0 -95
  481. package/src/scripts/_lib/evaluator_promotion.ts +0 -225
  482. package/src/scripts/_lib/file_slicer.ts +0 -117
  483. package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
  484. package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
  485. package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
  486. package/src/scripts/_lib/role_split.ts +0 -338
@@ -1,5 +1,11 @@
1
1
  #!/usr/bin/env tsx
2
2
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
3
+ import {
4
+ atomic_write_json
5
+ } from "./chunk-7HKRE54K.js";
6
+ import {
7
+ readHookStdin
8
+ } from "./chunk-F7DQWYR5.js";
3
9
  import {
4
10
  StateLoadError,
5
11
  load_state
@@ -7,22 +13,200 @@ import {
7
13
  import {
8
14
  ProjectRootError,
9
15
  resolve_project_root
10
- } from "./chunk-JY2I2DXV.js";
11
- import "./chunk-NDJLNC6Q.js";
16
+ } from "./chunk-H76PHZBI.js";
17
+ import "./chunk-T6BP34WI.js";
18
+ import "./chunk-MCJYCQPF.js";
12
19
  import "./chunk-J55WI3RR.js";
13
20
 
14
21
  // src/scripts/_cli/cmd_analyze_session.ts
15
- import * as fs from "node:fs";
16
- import * as path from "node:path";
17
- import process from "node:process";
22
+ import * as fs2 from "node:fs";
23
+ import * as path2 from "node:path";
24
+ import process2 from "node:process";
25
+ import { fileURLToPath as fileURLToPath2, pathToFileURL as pathToFileURL2 } from "node:url";
26
+
27
+ // src/scripts/context_hygiene_hook.ts
28
+ import fs from "node:fs";
29
+ import path from "node:path";
18
30
  import { fileURLToPath, pathToFileURL } from "node:url";
19
- var _HERE = fileURLToPath(import.meta.url);
20
- var CONTEXT_HYGIENE_RELATIVE = path.join(
21
- "agents",
22
- "runtime",
23
- "state",
24
- "context-hygiene.json"
25
- );
31
+ var STATE_DIR = path.join("agents", "state");
32
+ var STATE_FILE = path.join(STATE_DIR, "context-hygiene.json");
33
+ var HISTORY_DEPTH = 5;
34
+ var FRESHNESS_MILESTONES = [20, 40, 60];
35
+ function _empty_state() {
36
+ return {
37
+ tool_calls: 0,
38
+ tool_history: [],
39
+ freshness_threshold: null
40
+ };
41
+ }
42
+ function _load_state(target) {
43
+ let isFile = false;
44
+ try {
45
+ isFile = fs.statSync(target).isFile();
46
+ } catch {
47
+ isFile = false;
48
+ }
49
+ if (!isFile) {
50
+ return _empty_state();
51
+ }
52
+ try {
53
+ const decoded = JSON.parse(fs.readFileSync(target, "utf-8"));
54
+ if (typeof decoded === "object" && decoded !== null && !Array.isArray(decoded)) {
55
+ return decoded;
56
+ }
57
+ } catch {
58
+ }
59
+ return _empty_state();
60
+ }
61
+ function _extract_tool(payload) {
62
+ for (const key of ["tool_name", "toolName", "tool"]) {
63
+ const v = payload[key];
64
+ if (typeof v === "string" && v) {
65
+ return v;
66
+ }
67
+ }
68
+ return null;
69
+ }
70
+ function _milestone_hit(prev, curr) {
71
+ for (const ms of FRESHNESS_MILESTONES) {
72
+ if (prev < ms && ms <= curr) {
73
+ return ms;
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ function _now_iso() {
79
+ return (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "+00:00");
80
+ }
81
+ function _asInt(v) {
82
+ if (!v) {
83
+ return 0;
84
+ }
85
+ if (typeof v === "number") {
86
+ return Math.trunc(v);
87
+ }
88
+ const n = Number(v);
89
+ return Number.isFinite(n) ? Math.trunc(n) : 0;
90
+ }
91
+ function _update(state, tool) {
92
+ if (tool === null) {
93
+ state["checked_at"] = _now_iso();
94
+ return state;
95
+ }
96
+ const prev_count = _asInt(state["tool_calls"]);
97
+ const curr_count = prev_count + 1;
98
+ state["tool_calls"] = curr_count;
99
+ let hist = state["tool_history"];
100
+ if (!Array.isArray(hist)) {
101
+ hist = [];
102
+ }
103
+ hist.push(tool);
104
+ state["tool_history"] = hist.slice(-HISTORY_DEPTH);
105
+ const ms = _milestone_hit(prev_count, curr_count);
106
+ if (ms !== null) {
107
+ state["freshness_threshold"] = ms;
108
+ }
109
+ state["checked_at"] = _now_iso();
110
+ return state;
111
+ }
112
+ function _write_state(consumer_root, state) {
113
+ atomic_write_json(path.join(consumer_root, STATE_FILE), state);
114
+ }
115
+ function run(stdin_text, options) {
116
+ const { consumer_root } = options;
117
+ const verbose = options.verbose ?? false;
118
+ let payload = {};
119
+ if (stdin_text.trim()) {
120
+ try {
121
+ const decoded = JSON.parse(stdin_text);
122
+ if (typeof decoded === "object" && decoded !== null && !Array.isArray(decoded)) {
123
+ payload = decoded;
124
+ }
125
+ } catch {
126
+ }
127
+ }
128
+ if (["schema_version", "platform", "event", "payload"].every((k) => k in payload)) {
129
+ const inner = payload["payload"];
130
+ payload = typeof inner === "object" && inner !== null && !Array.isArray(inner) ? inner : {};
131
+ }
132
+ const target = path.join(consumer_root, STATE_FILE);
133
+ let state = _load_state(target);
134
+ state = _update(state, _extract_tool(payload));
135
+ try {
136
+ _write_state(consumer_root, state);
137
+ } catch {
138
+ if (verbose) {
139
+ process.stderr.write("context-hygiene-hook: state write failed\n");
140
+ }
141
+ return 0;
142
+ }
143
+ if (verbose) {
144
+ process.stderr.write(
145
+ `context-hygiene-hook: tool_calls=${pyRepr(state["tool_calls"])} threshold=${pyRepr(state["freshness_threshold"])}
146
+ `
147
+ );
148
+ }
149
+ return 0;
150
+ }
151
+ function pyRepr(value) {
152
+ if (value === null || value === void 0) {
153
+ return "None";
154
+ }
155
+ if (typeof value === "boolean") {
156
+ return value ? "True" : "False";
157
+ }
158
+ return String(value);
159
+ }
160
+ function parse_args(argv) {
161
+ let platform = "generic";
162
+ let verbose = false;
163
+ for (let i = 0; i < argv.length; i += 1) {
164
+ const arg = argv[i];
165
+ if (arg === "--platform") {
166
+ platform = argv[i + 1] ?? "generic";
167
+ i += 1;
168
+ } else if (arg !== void 0 && arg.startsWith("--platform=")) {
169
+ platform = arg.slice("--platform=".length);
170
+ } else if (arg === "--verbose") {
171
+ verbose = true;
172
+ }
173
+ }
174
+ return { platform, verbose };
175
+ }
176
+ function _readStdin() {
177
+ return readHookStdin();
178
+ }
179
+ function main(argv) {
180
+ const args = parse_args(argv ?? process.argv.slice(2));
181
+ return run(_readStdin(), { consumer_root: process.cwd(), verbose: args.verbose });
182
+ }
183
+ function _isCliEntry() {
184
+ if (true) {
185
+ return false;
186
+ }
187
+ if (process.argv[1] === void 0) {
188
+ return false;
189
+ }
190
+ const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
191
+ if (import.meta.url === argvUrl) {
192
+ return true;
193
+ }
194
+ try {
195
+ const here = fs.realpathSync(fileURLToPath(import.meta.url));
196
+ const argv = fs.realpathSync(path.resolve(process.argv[1]));
197
+ return here === argv;
198
+ } catch {
199
+ return false;
200
+ }
201
+ }
202
+ var isCliEntry = _isCliEntry();
203
+ if (isCliEntry) {
204
+ process.exit(main(process.argv.slice(2)));
205
+ }
206
+
207
+ // src/scripts/_cli/cmd_analyze_session.ts
208
+ var _HERE = fileURLToPath2(import.meta.url);
209
+ var CONTEXT_HYGIENE_RELATIVE = STATE_FILE;
26
210
  var SystemExitError = class extends Error {
27
211
  constructor(code) {
28
212
  super(`system-exit-${code}`);
@@ -38,14 +222,14 @@ var ArgparseExit = class extends Error {
38
222
  code;
39
223
  };
40
224
  function eprint(line = "") {
41
- process.stderr.write(line + "\n");
225
+ process2.stderr.write(line + "\n");
42
226
  }
43
227
  function isPlainObject(value) {
44
228
  return typeof value === "object" && value !== null && !Array.isArray(value);
45
229
  }
46
230
  function _resolve_root(arg) {
47
231
  try {
48
- const [root] = resolve_project_root(arg, { cwd: process.cwd() });
232
+ const [root] = resolve_project_root(arg, { cwd: process2.cwd() });
49
233
  return root;
50
234
  } catch (exc) {
51
235
  if (exc instanceof ProjectRootError) {
@@ -56,21 +240,21 @@ function _resolve_root(arg) {
56
240
  }
57
241
  }
58
242
  function relativeToOrNull(p, base) {
59
- const rel = path.relative(base, p);
243
+ const rel = path2.relative(base, p);
60
244
  if (rel === "") return rel;
61
- if (rel.startsWith("..") || path.isAbsolute(rel)) {
245
+ if (rel.startsWith("..") || path2.isAbsolute(rel)) {
62
246
  return null;
63
247
  }
64
248
  return rel;
65
249
  }
66
250
  function _load_context_hygiene(project_root) {
67
- const p = path.join(project_root, CONTEXT_HYGIENE_RELATIVE);
68
- if (!fs.existsSync(p)) {
251
+ const p = path2.join(project_root, CONTEXT_HYGIENE_RELATIVE);
252
+ if (!fs2.existsSync(p)) {
69
253
  return null;
70
254
  }
71
255
  let text;
72
256
  try {
73
- text = fs.readFileSync(p, "utf-8");
257
+ text = fs2.readFileSync(p, "utf-8");
74
258
  } catch {
75
259
  return null;
76
260
  }
@@ -140,11 +324,7 @@ function render_report(state, hygiene) {
140
324
  lines.push("_Context-hygiene snapshot not available._");
141
325
  } else {
142
326
  const toolCalls = intOrUnknown(hygiene["tool_calls"]);
143
- const consecutive = intOrUnknown(hygiene["consecutive_same_tool"]);
144
- const loop = hygiene["loop_detected"] === true;
145
327
  lines.push(`- Tool calls: ${toolCalls}`);
146
- lines.push(`- Consecutive same-tool calls: ${consecutive}`);
147
- lines.push(`- Loop detected: ${loop ? "yes" : "no"}`);
148
328
  }
149
329
  lines.push("");
150
330
  lines.push("## Token / cost");
@@ -154,14 +334,14 @@ function render_report(state, hygiene) {
154
334
  return lines.join("\n");
155
335
  }
156
336
  function _analyze_session(project_root, state_file) {
157
- const target_state = state_file || path.join(project_root, ".work-state.json");
337
+ const target_state = state_file || path2.join(project_root, ".work-state.json");
158
338
  let state;
159
339
  try {
160
340
  state = load_state(target_state);
161
341
  } catch (exc) {
162
342
  if (exc instanceof StateLoadError) {
163
343
  const rel = relativeToOrNull(target_state, project_root);
164
- const shown = rel !== null ? rel : path.basename(target_state);
344
+ const shown = rel !== null ? rel : path2.basename(target_state);
165
345
  const msg = exc.message.split(target_state).join(shown);
166
346
  eprint(`\u274C analyze-session: ${msg}`);
167
347
  return exc.exitCode;
@@ -169,7 +349,7 @@ function _analyze_session(project_root, state_file) {
169
349
  throw exc;
170
350
  }
171
351
  const hygiene = _load_context_hygiene(project_root);
172
- process.stdout.write(render_report(state, hygiene));
352
+ process2.stdout.write(render_report(state, hygiene));
173
353
  return 0;
174
354
  }
175
355
  var PROG = "agent-config analyze-session";
@@ -185,8 +365,8 @@ Sources read:
185
365
  \xB7 changes \u2014 files touched
186
366
  \xB7 outcomes \u2014 per-directive success / blocked
187
367
  \xB7 halts \u2014 recorded halts
188
- agents/runtime/state/context-hygiene.json
189
- \xB7 tool_calls \xB7 consecutive_same_tool \xB7 loop_detected
368
+ agents/state/context-hygiene.json
369
+ \xB7 tool_calls
190
370
 
191
371
  Token/cost is NOT reported \u2014 this package has no per-session token
192
372
  source (only video-specific telemetry).
@@ -202,8 +382,8 @@ exit codes:
202
382
  2 invocation error (bad project root, bad --state-file path)
203
383
  `;
204
384
  function _argError(msg) {
205
- process.stderr.write(USAGE);
206
- process.stderr.write(`${PROG}: error: ${msg}
385
+ process2.stderr.write(USAGE);
386
+ process2.stderr.write(`${PROG}: error: ${msg}
207
387
  `);
208
388
  throw new ArgparseExit(2);
209
389
  }
@@ -213,7 +393,7 @@ function _parse(argv) {
213
393
  while (i < argv.length) {
214
394
  const a = argv[i];
215
395
  if (a === "-h" || a === "--help") {
216
- process.stdout.write(_HELP);
396
+ process2.stdout.write(_HELP);
217
397
  throw new ArgparseExit(0);
218
398
  }
219
399
  const eq = a.startsWith("--") ? a.indexOf("=") : -1;
@@ -239,8 +419,8 @@ function _parse(argv) {
239
419
  }
240
420
  return opts;
241
421
  }
242
- function main(argv = null) {
243
- const argv_list = argv !== null ? Array.from(argv) : process.argv.slice(2);
422
+ function main2(argv = null) {
423
+ const argv_list = argv !== null ? Array.from(argv) : process2.argv.slice(2);
244
424
  const opts = _parse(argv_list);
245
425
  let project_root;
246
426
  try {
@@ -253,30 +433,30 @@ function main(argv = null) {
253
433
  }
254
434
  return _analyze_session(project_root, opts.state_file);
255
435
  }
256
- function _isCliEntry() {
257
- if (process.argv[1] === void 0) {
436
+ function _isCliEntry2() {
437
+ if (process2.argv[1] === void 0) {
258
438
  return false;
259
439
  }
260
- const argvUrl = pathToFileURL(path.resolve(process.argv[1])).href;
440
+ const argvUrl = pathToFileURL2(path2.resolve(process2.argv[1])).href;
261
441
  if (import.meta.url === argvUrl) {
262
442
  return true;
263
443
  }
264
444
  try {
265
- const here = fs.realpathSync(fileURLToPath(import.meta.url));
266
- const argv = fs.realpathSync(path.resolve(process.argv[1]));
445
+ const here = fs2.realpathSync(fileURLToPath2(import.meta.url));
446
+ const argv = fs2.realpathSync(path2.resolve(process2.argv[1]));
267
447
  return here === argv;
268
448
  } catch {
269
449
  return false;
270
450
  }
271
451
  }
272
- if (_isCliEntry() || process.argv[1] === _HERE) {
452
+ if (_isCliEntry2() || process2.argv[1] === _HERE) {
273
453
  try {
274
- process.exitCode = main(process.argv.slice(2));
454
+ process2.exitCode = main2(process2.argv.slice(2));
275
455
  } catch (e) {
276
456
  if (e instanceof ArgparseExit) {
277
- process.exitCode = e.code;
457
+ process2.exitCode = e.code;
278
458
  } else if (e instanceof SystemExitError) {
279
- process.exitCode = e.code;
459
+ process2.exitCode = e.code;
280
460
  } else {
281
461
  throw e;
282
462
  }
@@ -289,6 +469,6 @@ export {
289
469
  _load_context_hygiene,
290
470
  _parse,
291
471
  _resolve_root,
292
- main,
472
+ main2 as main,
293
473
  render_report
294
474
  };
@@ -1,8 +1,9 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolve_project_root
4
- } from "./chunk-JY2I2DXV.js";
5
- import "./chunk-NDJLNC6Q.js";
4
+ } from "./chunk-H76PHZBI.js";
5
+ import "./chunk-T6BP34WI.js";
6
+ import "./chunk-MCJYCQPF.js";
6
7
  import "./chunk-J55WI3RR.js";
7
8
 
8
9
  // src/scripts/_cli/cmd_brand_status.ts
@@ -1,7 +1,11 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
+ THIN_ENTRY_MARKER,
3
4
  readRecentEntries
4
- } from "./chunk-NYX3L2PZ.js";
5
+ } from "./chunk-6YQC2HLF.js";
6
+ import {
7
+ detectToolPresence
8
+ } from "./chunk-A4QJ6ENT.js";
5
9
  import {
6
10
  NO_RED_EVIDENCE_REASON,
7
11
  deriveSessionKey,
@@ -23,10 +27,7 @@ import {
23
27
  shadowSetBy,
24
28
  statePathFor,
25
29
  validateAssumption
26
- } from "./chunk-NQ7WT43P.js";
27
- import {
28
- readHookStdin
29
- } from "./chunk-F7DQWYR5.js";
30
+ } from "./chunk-AED2VQGM.js";
30
31
  import {
31
32
  LexicalIndex,
32
33
  isSqliteAvailableSync,
@@ -35,9 +36,6 @@ import {
35
36
  stampUserVersion,
36
37
  tokenize
37
38
  } from "./chunk-ZBZV2G5R.js";
38
- import {
39
- detectToolPresence
40
- } from "./chunk-A4QJ6ENT.js";
41
39
  import {
42
40
  ArgparseExit,
43
41
  STATUS_SYMBOLS,
@@ -56,7 +54,7 @@ import {
56
54
  proseEqual,
57
55
  resolveSessionRole,
58
56
  splitFrontmatter
59
- } from "./chunk-TRI6DQZ6.js";
57
+ } from "./chunk-5GPULQBE.js";
60
58
  import "./chunk-FTAISGDQ.js";
61
59
  import "./chunk-6V6TA25H.js";
62
60
  import "./chunk-ROYYTEZU.js";
@@ -64,12 +62,15 @@ import "./chunk-BTWUYDGN.js";
64
62
  import {
65
63
  atomicAppendLine,
66
64
  probeHostCapabilities
67
- } from "./chunk-S4YWNRKO.js";
65
+ } from "./chunk-MDPPKQCQ.js";
66
+ import "./chunk-DMSZHXZS.js";
68
67
  import "./chunk-ULQRUR23.js";
69
68
  import {
70
69
  hardenedSpawnEnv,
71
70
  projectStoreSlug
72
- } from "./chunk-EEHDXSYD.js";
71
+ } from "./chunk-OAFSJBHH.js";
72
+ import "./chunk-IAYTIIQW.js";
73
+ import "./chunk-LQOCRFWT.js";
73
74
  import {
74
75
  atomic_write_json,
75
76
  atomic_write_text,
@@ -79,36 +80,39 @@ import {
79
80
  prune_legacy_state_file,
80
81
  prune_stale_session_states,
81
82
  session_state_file
82
- } from "./chunk-E4XIZDIB.js";
83
- import "./chunk-T7L2QK3K.js";
84
- import "./chunk-DMSZHXZS.js";
85
- import "./chunk-NXEILF2K.js";
83
+ } from "./chunk-7HKRE54K.js";
84
+ import "./chunk-F3QDG2GT.js";
86
85
  import "./chunk-DEIV7XP7.js";
87
- import "./chunk-KB5FZ655.js";
88
- import "./chunk-JQOM7TTM.js";
89
86
  import {
90
87
  manifest_path,
91
88
  read_manifest
92
89
  } from "./chunk-OKJUIAPS.js";
90
+ import "./chunk-WQWXGIWB.js";
91
+ import "./chunk-KB5FZ655.js";
93
92
  import "./chunk-MWRD5YOH.js";
93
+ import "./chunk-JQOM7TTM.js";
94
94
  import {
95
95
  DeadScopeError,
96
96
  assertScanned,
97
97
  reportScanned
98
98
  } from "./chunk-I3EIN2YG.js";
99
+ import {
100
+ readHookStdin
101
+ } from "./chunk-F7DQWYR5.js";
99
102
  import {
100
103
  require_dist
101
104
  } from "./chunk-OY53J6II.js";
102
- import {
103
- resolvePackageRoot
104
- } from "./chunk-MCJYCQPF.js";
105
+ import "./chunk-LF2KKJ4Q.js";
105
106
  import {
106
107
  load_agent_settings
107
- } from "./chunk-JY2I2DXV.js";
108
- import "./chunk-NDJLNC6Q.js";
108
+ } from "./chunk-H76PHZBI.js";
109
109
  import {
110
110
  artefact_roots
111
111
  } from "./chunk-YCU3TIXH.js";
112
+ import "./chunk-T6BP34WI.js";
113
+ import {
114
+ resolvePackageRoot
115
+ } from "./chunk-MCJYCQPF.js";
112
116
  import {
113
117
  __toESM
114
118
  } from "./chunk-J55WI3RR.js";
@@ -133,10 +137,10 @@ var ROUTE_TARGET_TEMPLATES = Object.freeze({
133
137
  ])
134
138
  });
135
139
  function parseRouteTarget(target) {
136
- const sep3 = target.indexOf(":");
137
- if (sep3 <= 0) return null;
138
- const kind = target.slice(0, sep3);
139
- const id = target.slice(sep3 + 1);
140
+ const sep4 = target.indexOf(":");
141
+ if (sep4 <= 0) return null;
142
+ const kind = target.slice(0, sep4);
143
+ const id = target.slice(sep4 + 1);
140
144
  if (!id) return null;
141
145
  if (!Object.prototype.hasOwnProperty.call(ROUTE_TARGET_TEMPLATES, kind)) return null;
142
146
  return { kind, id };
@@ -3139,10 +3143,51 @@ function untested(g, files, state) {
3139
3143
 
3140
3144
  // src/scripts/_lib/graph_feeder_record.ts
3141
3145
  var MAX_PATHS = 5;
3146
+ var OUTSIDE_WORKSPACE = "<outside-workspace>";
3142
3147
  var MAX_ROWS_PER_SESSION = 200;
3143
3148
  function feederFile(workspaceRoot, sessionKey) {
3144
3149
  return path6.join(workspaceRoot, "agents", "state", "graph-feeder", `${sessionKey}.jsonl`);
3145
3150
  }
3151
+ function toRepoRelative(root, paths) {
3152
+ let realRoot = null;
3153
+ return paths.map((p) => {
3154
+ if (!path6.isAbsolute(p)) return p;
3155
+ const raw = _relativeInside(root, p);
3156
+ if (raw !== null) return raw;
3157
+ realRoot ??= _resolveReal(root);
3158
+ return _relativeInside(realRoot, _resolveReal(p)) ?? p;
3159
+ });
3160
+ }
3161
+ function _relativeInside(from, to) {
3162
+ let rel;
3163
+ try {
3164
+ rel = path6.relative(from, to);
3165
+ } catch {
3166
+ return null;
3167
+ }
3168
+ if (rel === "") return ".";
3169
+ if (rel === ".." || rel.startsWith(`..${path6.sep}`) || path6.isAbsolute(rel)) return null;
3170
+ return rel.split(path6.sep).join("/");
3171
+ }
3172
+ function _resolveReal(p) {
3173
+ const abs = path6.resolve(p);
3174
+ const tail = [];
3175
+ let cur = abs;
3176
+ for (; ; ) {
3177
+ try {
3178
+ const real = fs7.realpathSync(cur);
3179
+ return tail.length === 0 ? real : path6.join(real, ...[...tail].reverse());
3180
+ } catch {
3181
+ const parent = path6.dirname(cur);
3182
+ if (parent === cur) return abs;
3183
+ tail.push(path6.basename(cur));
3184
+ cur = parent;
3185
+ }
3186
+ }
3187
+ }
3188
+ function _escapesWorkspace(p) {
3189
+ return path6.isAbsolute(p) || path6.win32.isAbsolute(p) || p === ".." || p.startsWith("../") || p.startsWith(`..${path6.sep}`);
3190
+ }
3146
3191
  function graphUntestedVerdict(root, state, paths) {
3147
3192
  const none = { verdict: null, untested: 0, tested: 0 };
3148
3193
  if (state !== "fresh" && state !== "edited") return none;
@@ -3161,7 +3206,7 @@ function graphUntestedVerdict(root, state, paths) {
3161
3206
  return none;
3162
3207
  }
3163
3208
  try {
3164
- const r = untested(g, paths, state);
3209
+ const r = untested(g, toRepoRelative(root, paths), state);
3165
3210
  if (r.seeds.length === 0) return { verdict: "no-seeds", untested: 0, tested: 0 };
3166
3211
  return {
3167
3212
  verdict: r.untested.length > 0 ? "untested" : "tested",
@@ -3203,7 +3248,32 @@ function buildFeederRow(input) {
3203
3248
  graph: input.graph.verdict,
3204
3249
  graph_untested: input.graph.untested,
3205
3250
  graph_tested: input.graph.tested,
3206
- paths: input.paths.slice(0, MAX_PATHS).map((p) => p),
3251
+ // An out-of-workspace edit is REDACTED, not dropped and not stored
3252
+ // verbatim. After relativising, a still-absolute path is exactly one
3253
+ // that lay outside the root.
3254
+ //
3255
+ // Verbatim is an egress surface: `paths` is handed to external council
3256
+ // seats at step 3.3's labelling, and a home-rooted path names a real
3257
+ // user and an unrelated project.
3258
+ //
3259
+ // Dropping it looked right and was worse, which a completion review
3260
+ // caught before it shipped. It would have shortened `paths` below
3261
+ // `path_count` and so reused the protocol's truncation signal for a
3262
+ // second, different cause — two meanings on one wire, with no field
3263
+ // separating them. Worse, a turn editing one in-repo file and one file
3264
+ // outside the root would then be excluded from labelling altogether,
3265
+ // losing a perfectly labellable in-repo path from a corpus that is
3266
+ // blocked precisely for want of rows.
3267
+ //
3268
+ // The marker keeps the lengths equal, so truncation stays the only
3269
+ // cause of `path_count > paths.length`; keeps the row honest that an
3270
+ // edit happened outside the tree, so a labeller can answer
3271
+ // `cannot tell` rather than be silently misled; and carries nothing
3272
+ // identifying. The graph's answer is unchanged either way — the probe
3273
+ // sees the real path and resolves no seeds for it.
3274
+ paths: toRepoRelative(input.root, input.paths.slice(0, MAX_PATHS)).map(
3275
+ (p) => _escapesWorkspace(p) ? OUTSIDE_WORKSPACE : p
3276
+ ),
3207
3277
  path_count: input.paths.length
3208
3278
  };
3209
3279
  }
@@ -4723,6 +4793,7 @@ function recordGraphFeeder(inputs, findings, layer) {
4723
4793
  inputs.workspaceRoot,
4724
4794
  inputs.sessionKey,
4725
4795
  buildFeederRow({
4796
+ root: inputs.workspaceRoot,
4726
4797
  turn: inputs.turnOrdinal,
4727
4798
  layer,
4728
4799
  state,
@@ -4917,10 +4988,10 @@ function extractDispatch(envelope) {
4917
4988
  }
4918
4989
  return [tool, ""];
4919
4990
  }
4920
- function _ledgerStamp(consumer_root) {
4991
+ function _ledgerStamp(consumer_root, session_id) {
4921
4992
  try {
4922
4993
  const raw = fs13.readFileSync(
4923
- path11.join(consumer_root, "agents", "state", "git-authorization.json"),
4994
+ path11.join(consumer_root, ledgerFileFor(session_id)),
4924
4995
  "utf8"
4925
4996
  );
4926
4997
  const d = JSON.parse(raw);
@@ -5018,7 +5089,7 @@ function run3(stdin_text, options) {
5018
5089
  const target = path11.join(options.consumer_root, STATE_FILE3);
5019
5090
  const state = _load(target);
5020
5091
  const session_id = typeof envelope["session_id"] === "string" ? envelope["session_id"] : "";
5021
- const turnMarker = `${session_id}:${_ledgerStamp(options.consumer_root)}`;
5092
+ const turnMarker = `${session_id}:${_ledgerStamp(options.consumer_root, session_id)}`;
5022
5093
  if (state.session_id !== turnMarker) {
5023
5094
  state.session_id = turnMarker;
5024
5095
  state.turn_started_at = (/* @__PURE__ */ new Date()).toISOString();
@@ -5465,11 +5536,10 @@ function resolveActivation(workspace_root, hostId) {
5465
5536
  const emergency = settings["emergency"] ?? {};
5466
5537
  const halted = emergency["orchestration_halt"] === true;
5467
5538
  const host_manifest = probeHostCapabilities(hostId);
5468
- const sub = settings["subagents"] ?? {};
5469
- const downshift = sub["downshift"] !== false;
5470
5539
  return {
5471
5540
  activation: { halted, subagent_spawn: host_manifest.subagent_spawn },
5472
- downshift,
5541
+ // Fixed on: the `subagents.downshift` key was retired with this default.
5542
+ downshift: true,
5473
5543
  separate_quota_pool: host_manifest.separate_quota_pool,
5474
5544
  agentTeams: host_manifest.agent_teams
5475
5545
  };
@@ -7393,7 +7463,7 @@ var CONFORMANCE_CHECK_IDS = [
7393
7463
  "lean-projection",
7394
7464
  "host-manifest"
7395
7465
  ];
7396
- var THIN_STUB_MARKER = "Routed rule \u2014 load the body on trigger-match";
7466
+ var THIN_STUB_MARKER = THIN_ENTRY_MARKER;
7397
7467
  var CONFORMANCE_STATUS_SYMBOLS = {
7398
7468
  ...STATUS_SYMBOLS,
7399
7469
  unknown: "\u2754"
@@ -3,12 +3,12 @@ import { createRequire as __acCreateRequire } from 'node:module'; const require
3
3
  import {
4
4
  require_dist
5
5
  } from "./chunk-OY53J6II.js";
6
+ import {
7
+ write_target
8
+ } from "./chunk-T6BP34WI.js";
6
9
  import {
7
10
  resolvePackageRoot
8
11
  } from "./chunk-MCJYCQPF.js";
9
- import {
10
- write_target
11
- } from "./chunk-NDJLNC6Q.js";
12
12
  import {
13
13
  __toESM
14
14
  } from "./chunk-J55WI3RR.js";