@aria_asi/cli 0.2.39 → 0.2.41

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 (802) hide show
  1. package/bin/aria.js +236 -34
  2. package/dist/aria-connector/src/action-ledger-core.d.ts +387 -0
  3. package/dist/aria-connector/src/action-ledger-core.d.ts.map +1 -0
  4. package/dist/aria-connector/src/action-ledger-core.js +638 -0
  5. package/dist/aria-connector/src/action-ledger-core.js.map +1 -0
  6. package/dist/aria-connector/src/chat.d.ts.map +1 -1
  7. package/dist/aria-connector/src/chat.js +5 -6
  8. package/dist/aria-connector/src/chat.js.map +1 -1
  9. package/dist/aria-connector/src/codebase-scanner.d.ts +1 -1
  10. package/dist/aria-connector/src/codebase-scanner.d.ts.map +1 -1
  11. package/dist/aria-connector/src/connectors/claude-code.d.ts +1 -0
  12. package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
  13. package/dist/aria-connector/src/connectors/claude-code.js +152 -14
  14. package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
  15. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +10 -0
  16. package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -1
  17. package/dist/aria-connector/src/connectors/codebase-awareness.js +276 -27
  18. package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -1
  19. package/dist/aria-connector/src/connectors/codex.d.ts +3 -1
  20. package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
  21. package/dist/aria-connector/src/connectors/codex.js +1271 -40
  22. package/dist/aria-connector/src/connectors/codex.js.map +1 -1
  23. package/dist/aria-connector/src/connectors/cursor.d.ts.map +1 -1
  24. package/dist/aria-connector/src/connectors/cursor.js +7 -0
  25. package/dist/aria-connector/src/connectors/cursor.js.map +1 -1
  26. package/dist/aria-connector/src/connectors/governed-adapter.d.ts +30 -0
  27. package/dist/aria-connector/src/connectors/governed-adapter.d.ts.map +1 -0
  28. package/dist/aria-connector/src/connectors/governed-adapter.js +132 -0
  29. package/dist/aria-connector/src/connectors/governed-adapter.js.map +1 -0
  30. package/dist/aria-connector/src/connectors/opencode.d.ts +3 -1
  31. package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
  32. package/dist/aria-connector/src/connectors/opencode.js +18 -2
  33. package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
  34. package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -1
  35. package/dist/aria-connector/src/connectors/repo-guard.js +25 -14
  36. package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -1
  37. package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -1
  38. package/dist/aria-connector/src/connectors/runtime.js +92 -2
  39. package/dist/aria-connector/src/connectors/runtime.js.map +1 -1
  40. package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
  41. package/dist/aria-connector/src/connectors/shell.js +123 -7
  42. package/dist/aria-connector/src/connectors/shell.js.map +1 -1
  43. package/dist/aria-connector/src/cross-cli-hive-binding.d.ts +63 -0
  44. package/dist/aria-connector/src/cross-cli-hive-binding.d.ts.map +1 -0
  45. package/dist/aria-connector/src/cross-cli-hive-binding.js +205 -0
  46. package/dist/aria-connector/src/cross-cli-hive-binding.js.map +1 -0
  47. package/dist/aria-connector/src/garden-control-plane.d.ts +6 -1
  48. package/dist/aria-connector/src/garden-control-plane.d.ts.map +1 -1
  49. package/dist/aria-connector/src/garden-control-plane.js +8 -2
  50. package/dist/aria-connector/src/garden-control-plane.js.map +1 -1
  51. package/dist/aria-connector/src/governed-surface-runner.d.ts +189 -0
  52. package/dist/aria-connector/src/governed-surface-runner.d.ts.map +1 -0
  53. package/dist/aria-connector/src/governed-surface-runner.js +1022 -0
  54. package/dist/aria-connector/src/governed-surface-runner.js.map +1 -0
  55. package/dist/aria-connector/src/index.d.ts +10 -1
  56. package/dist/aria-connector/src/index.d.ts.map +1 -1
  57. package/dist/aria-connector/src/index.js +5 -0
  58. package/dist/aria-connector/src/index.js.map +1 -1
  59. package/dist/aria-connector/src/task-runner.d.ts +3 -0
  60. package/dist/aria-connector/src/task-runner.d.ts.map +1 -0
  61. package/dist/aria-connector/src/task-runner.js +3526 -0
  62. package/dist/aria-connector/src/task-runner.js.map +1 -0
  63. package/dist/aria-web/src/lib/codebase-scanner.d.ts +21 -2
  64. package/dist/aria-web/src/lib/codebase-scanner.d.ts.map +1 -1
  65. package/dist/aria-web/src/lib/codebase-scanner.js +59 -14
  66. package/dist/aria-web/src/lib/codebase-scanner.js.map +1 -1
  67. package/dist/assets/hooks/README.md +58 -0
  68. package/dist/assets/hooks/aria-agent-handoff.mjs +147 -2
  69. package/dist/assets/hooks/aria-agent-ledger-merge.mjs +31 -7
  70. package/dist/assets/hooks/aria-architect-fallback.mjs +10 -2
  71. package/dist/assets/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  72. package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +84 -10
  73. package/dist/assets/hooks/aria-first-class-coach.mjs +305 -10
  74. package/dist/assets/hooks/aria-harness-via-sdk.mjs +93 -16
  75. package/dist/assets/hooks/aria-import-resolution-gate.mjs +106 -20
  76. package/dist/assets/hooks/aria-outcome-record.mjs +56 -20
  77. package/dist/assets/hooks/aria-pre-emit-autoload.mjs +1809 -0
  78. package/dist/assets/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  79. package/dist/assets/hooks/aria-pre-emit-dryrun.mjs +22 -3
  80. package/dist/assets/hooks/aria-pre-text-gate.mjs +11 -2
  81. package/dist/assets/hooks/aria-pre-tool-gate.mjs +516 -92
  82. package/dist/assets/hooks/aria-pre-tool-use.mjs +70 -6
  83. package/dist/assets/hooks/aria-preprompt-consult.mjs +23 -4
  84. package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +29 -3
  85. package/dist/assets/hooks/aria-stop-gate.mjs +585 -76
  86. package/dist/assets/hooks/aria-trigger-autolearn.mjs +17 -3
  87. package/dist/assets/hooks/aria-universal-turn-packet.mjs +1165 -0
  88. package/dist/assets/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  89. package/dist/assets/hooks/canonical-settings-block.json +172 -0
  90. package/dist/assets/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  91. package/dist/assets/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  92. package/dist/assets/hooks/codex-native/aria-live-ticker.mjs +38 -0
  93. package/dist/assets/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  94. package/dist/assets/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  95. package/dist/assets/hooks/codex-native/aria-stop.mjs +691 -0
  96. package/dist/assets/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  97. package/dist/assets/hooks/codex-native/atlas-session-context.mjs +121 -0
  98. package/dist/assets/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  99. package/dist/assets/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  100. package/dist/assets/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  101. package/dist/assets/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  102. package/dist/assets/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  103. package/dist/assets/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  104. package/dist/assets/hooks/doctrine_trigger_map.json +236 -25
  105. package/dist/assets/hooks/doctrine_trigger_map.schema.json +46 -0
  106. package/dist/assets/hooks/install.sh +84 -0
  107. package/dist/assets/hooks/lib/action-ledger-core.mjs +269 -0
  108. package/dist/assets/hooks/lib/aria-gate-ledger.mjs +143 -0
  109. package/dist/assets/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  110. package/dist/assets/hooks/lib/atlas-dossier-client.mjs +151 -0
  111. package/dist/assets/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  112. package/dist/assets/hooks/lib/canonical-lenses.mjs +83 -6
  113. package/dist/assets/hooks/lib/coach-intent-classifier.mjs +248 -0
  114. package/dist/assets/hooks/lib/cognitive-block-parser.mjs +111 -0
  115. package/dist/assets/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  116. package/dist/assets/hooks/lib/domain-output-quality.mjs +132 -3
  117. package/dist/assets/hooks/lib/empty-catch-scanner.mjs +91 -0
  118. package/dist/assets/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  119. package/dist/assets/hooks/lib/evaluate-with-kernel.mjs +133 -0
  120. package/dist/assets/hooks/lib/first-class-coach.mjs +454 -19
  121. package/dist/assets/hooks/lib/gate-audit.mjs +12 -2
  122. package/dist/assets/hooks/lib/gate-loop-state.mjs +11 -2
  123. package/dist/assets/hooks/lib/goal-contract-quality.mjs +302 -0
  124. package/dist/assets/hooks/lib/hook-message-window.mjs +101 -9
  125. package/dist/assets/hooks/lib/invocation-required-verifier.mjs +184 -0
  126. package/dist/assets/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  127. package/dist/assets/hooks/lib/obligation-ledger.mjs +147 -0
  128. package/dist/assets/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  129. package/dist/assets/hooks/lib/owner-authorizations.mjs +269 -0
  130. package/dist/assets/hooks/lib/probe-discipline-scanner.mjs +142 -0
  131. package/dist/assets/hooks/lib/project-boundary-cognition.mjs +143 -0
  132. package/dist/assets/hooks/lib/recovery-context.mjs +151 -0
  133. package/dist/assets/hooks/lib/recovery-template-loader.mjs +154 -0
  134. package/dist/assets/hooks/lib/self-doctrine-check.mjs +321 -0
  135. package/dist/assets/hooks/lib/sensitive-shape-detector.mjs +64 -0
  136. package/dist/assets/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  137. package/dist/assets/hooks/lib/stop-hook-protocol.mjs +166 -0
  138. package/dist/assets/hooks/lib/surface-caught.mjs +94 -0
  139. package/dist/assets/hooks/recovery-templates/force-reauthor.md +67 -0
  140. package/dist/assets/hooks/recovery-templates/handoff-recovery.md +25 -0
  141. package/dist/assets/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  142. package/dist/assets/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  143. package/dist/assets/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  144. package/dist/assets/hooks/test-tier-lens-labeling.mjs +14 -3
  145. package/dist/assets/opencode-plugins/harness-context/index.js +39 -6
  146. package/dist/assets/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
  147. package/dist/assets/opencode-plugins/harness-gate/index.js +36 -0
  148. package/dist/assets/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
  149. package/dist/assets/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
  150. package/dist/assets/opencode-plugins/harness-outcome/index.js +12 -0
  151. package/dist/assets/opencode-plugins/harness-stop/index.js +97 -2
  152. package/dist/assets/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
  153. package/dist/assets/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
  154. package/dist/assets/opencode-plugins/lib/coach.js +148 -0
  155. package/dist/runtime/coach-kernel.mjs +144 -7
  156. package/dist/runtime/codex-bridge.mjs +254 -8
  157. package/dist/runtime/discipline/doctrine_trigger_map.json +236 -25
  158. package/dist/runtime/discipline/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
  159. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
  160. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
  161. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
  162. package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
  163. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
  164. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
  165. package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
  166. package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
  167. package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
  168. package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
  169. package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
  170. package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
  171. package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
  172. package/dist/runtime/discipline/skills/aria-cognition/aria-chat/SKILL.md +84 -0
  173. package/dist/runtime/discipline/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
  174. package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
  175. package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
  176. package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
  177. package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
  178. package/dist/runtime/discipline/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
  179. package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
  180. package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
  181. package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
  182. package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
  183. package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
  184. package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
  185. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
  186. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
  187. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
  188. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
  189. package/dist/runtime/discipline/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
  190. package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
  191. package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
  192. package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
  193. package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
  194. package/dist/runtime/discipline/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
  195. package/dist/runtime/discipline/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
  196. package/dist/runtime/discipline/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
  197. package/dist/runtime/discipline/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
  198. package/dist/runtime/discipline/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
  199. package/dist/runtime/discipline/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
  200. package/dist/runtime/discipline/skills/aria-cognition/aria-ops/SKILL.md +60 -0
  201. package/dist/runtime/discipline/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
  202. package/dist/runtime/discipline/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
  203. package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
  204. package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
  205. package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
  206. package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
  207. package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
  208. package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
  209. package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
  210. package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
  211. package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
  212. package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
  213. package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
  214. package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
  215. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
  216. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
  217. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
  218. package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
  219. package/dist/runtime/discipline/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
  220. package/dist/runtime/discipline/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
  221. package/dist/runtime/discipline/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
  222. package/dist/runtime/discipline/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
  223. package/dist/runtime/discipline/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
  224. package/dist/runtime/discipline/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
  225. package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
  226. package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
  227. package/dist/runtime/discipline/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
  228. package/dist/runtime/discipline/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
  229. package/dist/runtime/discipline/skills/aria-cognition/never-guess/SKILL.md +77 -0
  230. package/dist/runtime/discipline/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
  231. package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
  232. package/dist/runtime/discipline/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
  233. package/dist/runtime/discipline/skills/aria-cognition/tadabbur/SKILL.md +506 -0
  234. package/dist/runtime/discipline/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
  235. package/dist/runtime/discipline/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
  236. package/dist/runtime/discipline/skills/aria-cognition/tafakkur/SKILL.md +104 -0
  237. package/dist/runtime/doctrine_trigger_map.json +236 -25
  238. package/dist/runtime/embedded-public-key.mjs +27 -0
  239. package/dist/runtime/gated-ledger.mjs +41 -14
  240. package/dist/runtime/harness-daemon.mjs +85 -10
  241. package/dist/runtime/hive-wal-publisher.mjs +292 -0
  242. package/dist/runtime/hooks/README.md +58 -0
  243. package/dist/runtime/hooks/aria-agent-handoff.mjs +147 -2
  244. package/dist/runtime/hooks/aria-agent-ledger-merge.mjs +31 -7
  245. package/dist/runtime/hooks/aria-architect-fallback.mjs +10 -2
  246. package/dist/runtime/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  247. package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +84 -10
  248. package/dist/runtime/hooks/aria-first-class-coach.mjs +305 -10
  249. package/dist/runtime/hooks/aria-harness-via-sdk.mjs +93 -16
  250. package/dist/runtime/hooks/aria-import-resolution-gate.mjs +106 -20
  251. package/dist/runtime/hooks/aria-outcome-record.mjs +56 -20
  252. package/dist/runtime/hooks/aria-pre-emit-autoload.mjs +1809 -0
  253. package/dist/runtime/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  254. package/dist/runtime/hooks/aria-pre-emit-dryrun.mjs +22 -3
  255. package/dist/runtime/hooks/aria-pre-text-gate.mjs +11 -2
  256. package/dist/runtime/hooks/aria-pre-tool-gate.mjs +516 -92
  257. package/dist/runtime/hooks/aria-pre-tool-use.mjs +70 -6
  258. package/dist/runtime/hooks/aria-preprompt-consult.mjs +23 -4
  259. package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +29 -3
  260. package/dist/runtime/hooks/aria-stop-gate.mjs +585 -76
  261. package/dist/runtime/hooks/aria-trigger-autolearn.mjs +17 -3
  262. package/dist/runtime/hooks/aria-universal-turn-packet.mjs +1165 -0
  263. package/dist/runtime/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  264. package/dist/runtime/hooks/canonical-settings-block.json +172 -0
  265. package/dist/runtime/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  266. package/dist/runtime/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  267. package/dist/runtime/hooks/codex-native/aria-live-ticker.mjs +38 -0
  268. package/dist/runtime/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  269. package/dist/runtime/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  270. package/dist/runtime/hooks/codex-native/aria-stop.mjs +691 -0
  271. package/dist/runtime/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  272. package/dist/runtime/hooks/codex-native/atlas-session-context.mjs +121 -0
  273. package/dist/runtime/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  274. package/dist/runtime/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  275. package/dist/runtime/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  276. package/dist/runtime/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  277. package/dist/runtime/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  278. package/dist/runtime/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  279. package/dist/runtime/hooks/doctrine_trigger_map.json +236 -25
  280. package/dist/runtime/hooks/doctrine_trigger_map.schema.json +46 -0
  281. package/dist/runtime/hooks/install.sh +84 -0
  282. package/dist/runtime/hooks/lib/action-ledger-core.mjs +269 -0
  283. package/dist/runtime/hooks/lib/aria-gate-ledger.mjs +143 -0
  284. package/dist/runtime/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  285. package/dist/runtime/hooks/lib/atlas-dossier-client.mjs +151 -0
  286. package/dist/runtime/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  287. package/dist/runtime/hooks/lib/canonical-lenses.mjs +83 -6
  288. package/dist/runtime/hooks/lib/coach-intent-classifier.mjs +248 -0
  289. package/dist/runtime/hooks/lib/cognitive-block-parser.mjs +111 -0
  290. package/dist/runtime/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  291. package/dist/runtime/hooks/lib/domain-output-quality.mjs +132 -3
  292. package/dist/runtime/hooks/lib/empty-catch-scanner.mjs +91 -0
  293. package/dist/runtime/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  294. package/dist/runtime/hooks/lib/evaluate-with-kernel.mjs +133 -0
  295. package/dist/runtime/hooks/lib/first-class-coach.mjs +454 -19
  296. package/dist/runtime/hooks/lib/gate-audit.mjs +12 -2
  297. package/dist/runtime/hooks/lib/gate-loop-state.mjs +11 -2
  298. package/dist/runtime/hooks/lib/goal-contract-quality.mjs +302 -0
  299. package/dist/runtime/hooks/lib/hook-message-window.mjs +101 -9
  300. package/dist/runtime/hooks/lib/invocation-required-verifier.mjs +184 -0
  301. package/dist/runtime/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  302. package/dist/runtime/hooks/lib/obligation-ledger.mjs +147 -0
  303. package/dist/runtime/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  304. package/dist/runtime/hooks/lib/owner-authorizations.mjs +269 -0
  305. package/dist/runtime/hooks/lib/probe-discipline-scanner.mjs +142 -0
  306. package/dist/runtime/hooks/lib/project-boundary-cognition.mjs +143 -0
  307. package/dist/runtime/hooks/lib/recovery-context.mjs +151 -0
  308. package/dist/runtime/hooks/lib/recovery-template-loader.mjs +154 -0
  309. package/dist/runtime/hooks/lib/self-doctrine-check.mjs +321 -0
  310. package/dist/runtime/hooks/lib/sensitive-shape-detector.mjs +64 -0
  311. package/dist/runtime/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  312. package/dist/runtime/hooks/lib/stop-hook-protocol.mjs +166 -0
  313. package/dist/runtime/hooks/lib/surface-caught.mjs +94 -0
  314. package/dist/runtime/hooks/recovery-templates/force-reauthor.md +67 -0
  315. package/dist/runtime/hooks/recovery-templates/handoff-recovery.md +25 -0
  316. package/dist/runtime/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  317. package/dist/runtime/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  318. package/dist/runtime/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  319. package/dist/runtime/hooks/test-tier-lens-labeling.mjs +14 -3
  320. package/dist/runtime/lib/evaluate-with-kernel.mjs +133 -0
  321. package/dist/runtime/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  322. package/dist/runtime/local-phase.mjs +10 -5
  323. package/dist/runtime/manifest.json +8 -8
  324. package/dist/runtime/packet-verifier.mjs +166 -0
  325. package/dist/runtime/provider-proxy.mjs +13 -0
  326. package/dist/runtime/quality-enforcer.mjs +40 -23
  327. package/dist/runtime/runtime-rails/registry.mjs +252 -0
  328. package/dist/runtime/sdk/BUNDLED.json +2 -2
  329. package/dist/runtime/sdk/index.d.ts +119 -4
  330. package/dist/runtime/sdk/index.js +138 -12
  331. package/dist/runtime/sdk/index.js.map +1 -1
  332. package/dist/runtime/service.mjs +8036 -764
  333. package/dist/runtime/sub-agent-enforcer.mjs +201 -0
  334. package/dist/runtime/task-project-ledger.mjs +5 -1
  335. package/dist/sdk/BUNDLED.json +2 -2
  336. package/dist/sdk/index.d.ts +119 -4
  337. package/dist/sdk/index.js +138 -12
  338. package/dist/sdk/index.js.map +1 -1
  339. package/hooks/README.md +58 -0
  340. package/hooks/aria-agent-handoff.mjs +147 -2
  341. package/hooks/aria-agent-ledger-merge.mjs +31 -7
  342. package/hooks/aria-architect-fallback.mjs +10 -2
  343. package/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
  344. package/hooks/aria-cognition-substrate-binding.mjs +84 -10
  345. package/hooks/aria-first-class-coach.mjs +305 -10
  346. package/hooks/aria-harness-via-sdk.mjs +93 -16
  347. package/hooks/aria-import-resolution-gate.mjs +106 -20
  348. package/hooks/aria-outcome-record.mjs +56 -20
  349. package/hooks/aria-pre-emit-autoload.mjs +1809 -0
  350. package/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
  351. package/hooks/aria-pre-emit-dryrun.mjs +22 -3
  352. package/hooks/aria-pre-text-gate.mjs +11 -2
  353. package/hooks/aria-pre-tool-gate.mjs +516 -92
  354. package/hooks/aria-pre-tool-use.mjs +70 -6
  355. package/hooks/aria-preprompt-consult.mjs +23 -4
  356. package/hooks/aria-repo-doctrine-gate.mjs +29 -3
  357. package/hooks/aria-stop-gate.mjs +585 -76
  358. package/hooks/aria-trigger-autolearn.mjs +17 -3
  359. package/hooks/aria-universal-turn-packet.mjs +1165 -0
  360. package/hooks/aria-userprompt-abandon-detect.mjs +9 -1
  361. package/hooks/canonical-settings-block.json +172 -0
  362. package/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
  363. package/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
  364. package/hooks/codex-native/aria-live-ticker.mjs +38 -0
  365. package/hooks/codex-native/aria-post-tool-use.mjs +236 -0
  366. package/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
  367. package/hooks/codex-native/aria-stop.mjs +691 -0
  368. package/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
  369. package/hooks/codex-native/atlas-session-context.mjs +121 -0
  370. package/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
  371. package/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
  372. package/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
  373. package/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
  374. package/hooks/codex-native/lib/runtime-client.mjs +3567 -0
  375. package/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
  376. package/hooks/doctrine_trigger_map.json +236 -25
  377. package/hooks/doctrine_trigger_map.schema.json +46 -0
  378. package/hooks/install.sh +84 -0
  379. package/hooks/lib/action-ledger-core.mjs +269 -0
  380. package/hooks/lib/aria-gate-ledger.mjs +143 -0
  381. package/hooks/lib/ast-stub-shape-detector.mjs +107 -0
  382. package/hooks/lib/atlas-dossier-client.mjs +151 -0
  383. package/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
  384. package/hooks/lib/canonical-lenses.mjs +83 -6
  385. package/hooks/lib/coach-intent-classifier.mjs +248 -0
  386. package/hooks/lib/cognitive-block-parser.mjs +111 -0
  387. package/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
  388. package/hooks/lib/domain-output-quality.mjs +132 -3
  389. package/hooks/lib/empty-catch-scanner.mjs +91 -0
  390. package/hooks/lib/end-phase-qa-autofire.mjs +426 -0
  391. package/hooks/lib/evaluate-with-kernel.mjs +133 -0
  392. package/hooks/lib/first-class-coach.mjs +454 -19
  393. package/hooks/lib/gate-audit.mjs +12 -2
  394. package/hooks/lib/gate-loop-state.mjs +11 -2
  395. package/hooks/lib/goal-contract-quality.mjs +302 -0
  396. package/hooks/lib/hook-message-window.mjs +101 -9
  397. package/hooks/lib/invocation-required-verifier.mjs +184 -0
  398. package/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  399. package/hooks/lib/obligation-ledger.mjs +147 -0
  400. package/hooks/lib/orchestration-manifest-extract.mjs +217 -0
  401. package/hooks/lib/owner-authorizations.mjs +269 -0
  402. package/hooks/lib/probe-discipline-scanner.mjs +142 -0
  403. package/hooks/lib/project-boundary-cognition.mjs +143 -0
  404. package/hooks/lib/recovery-context.mjs +151 -0
  405. package/hooks/lib/recovery-template-loader.mjs +154 -0
  406. package/hooks/lib/self-doctrine-check.mjs +321 -0
  407. package/hooks/lib/sensitive-shape-detector.mjs +64 -0
  408. package/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
  409. package/hooks/lib/stop-hook-protocol.mjs +166 -0
  410. package/hooks/lib/surface-caught.mjs +94 -0
  411. package/hooks/recovery-templates/force-reauthor.md +67 -0
  412. package/hooks/recovery-templates/handoff-recovery.md +25 -0
  413. package/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
  414. package/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
  415. package/hooks/test-aria-preturn-memory-gate.mjs +2 -2
  416. package/hooks/test-tier-lens-labeling.mjs +14 -3
  417. package/opencode-plugins/harness-context/index.js +39 -6
  418. package/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
  419. package/opencode-plugins/harness-gate/index.js +36 -0
  420. package/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
  421. package/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
  422. package/opencode-plugins/harness-outcome/index.js +12 -0
  423. package/opencode-plugins/harness-stop/index.js +97 -2
  424. package/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
  425. package/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
  426. package/opencode-plugins/lib/coach.js +148 -0
  427. package/package.json +71 -5
  428. package/runtime-src/coach-kernel.mjs +144 -7
  429. package/runtime-src/codex-bridge.mjs +254 -8
  430. package/runtime-src/embedded-public-key.mjs +27 -0
  431. package/runtime-src/gated-ledger.mjs +41 -14
  432. package/runtime-src/harness-daemon.mjs +85 -10
  433. package/runtime-src/hive-wal-publisher.mjs +292 -0
  434. package/runtime-src/lib/evaluate-with-kernel.mjs +133 -0
  435. package/runtime-src/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
  436. package/runtime-src/local-phase.mjs +10 -5
  437. package/runtime-src/packet-verifier.mjs +166 -0
  438. package/runtime-src/provider-proxy.mjs +13 -0
  439. package/runtime-src/quality-enforcer.mjs +40 -23
  440. package/runtime-src/runtime-rails/registry.mjs +252 -0
  441. package/runtime-src/service.mjs +8036 -764
  442. package/runtime-src/sub-agent-enforcer.mjs +201 -0
  443. package/scripts/aria-ledger-append.mjs +337 -0
  444. package/scripts/aria-task-cheap-worker-dispatch.mjs +234 -0
  445. package/scripts/audit-of-audit-prior-tasks.mjs +194 -0
  446. package/scripts/audit-of-audit-this-turn.mjs +116 -0
  447. package/scripts/bundle-sdk.mjs +31 -5
  448. package/scripts/check-cli-wrapper-provider-contract.mjs +160 -0
  449. package/scripts/check-client-compatibility.mjs +15 -5
  450. package/scripts/check-client-smoke.mjs +297 -0
  451. package/scripts/check-codex-orchestrator-adoption.mjs +150 -0
  452. package/scripts/check-glm-env-wired.mjs +131 -0
  453. package/scripts/check-hive-local-storage-contract.mjs +91 -0
  454. package/scripts/check-hook-mirror.mjs +150 -0
  455. package/scripts/check-install-sh-drift.mjs +152 -0
  456. package/scripts/check-kernel-sync.mjs +101 -0
  457. package/scripts/check-package-artifact.mjs +152 -0
  458. package/scripts/check-registry-mirror.mjs +71 -0
  459. package/scripts/drain-owner-airtable-sync-queue.mjs +287 -0
  460. package/scripts/export-owner-status-sheets.mjs +589 -0
  461. package/scripts/live-sidecar-receipt-canary.mjs +347 -0
  462. package/scripts/qiyas-tadabbur-model-matrix.mjs +970 -0
  463. package/scripts/quality-ab-live-provider.mjs +913 -0
  464. package/scripts/self-test-action-ledger-core.mjs +190 -0
  465. package/scripts/self-test-approval-receipt-binding.mjs +122 -0
  466. package/scripts/self-test-autofire-quality-output.mjs +110 -0
  467. package/scripts/self-test-claude-code-action-ledger.mjs +132 -0
  468. package/scripts/self-test-claude-code-mechanical-autofire-hive.mjs +138 -0
  469. package/scripts/self-test-claude-code-mechanical-autofire.mjs +234 -0
  470. package/scripts/self-test-codebase-awareness-atlas-delta.mjs +159 -0
  471. package/scripts/self-test-codebase-awareness-delta-ingest.mjs +179 -0
  472. package/scripts/self-test-codex-live-hook-parity.mjs +84 -0
  473. package/scripts/self-test-codex-native-action-ledger.mjs +167 -0
  474. package/scripts/self-test-codex-native-hook-json-contract.mjs +74 -0
  475. package/scripts/self-test-codex-orchestrator-continuity.mjs +113 -0
  476. package/scripts/self-test-codex-readable-recovery.mjs +94 -0
  477. package/scripts/self-test-codex-self-harness.mjs +538 -0
  478. package/scripts/self-test-compiled-workunit.mjs +214 -0
  479. package/scripts/self-test-continuation-output-smoke.mjs +101 -0
  480. package/scripts/self-test-cross-cli-fleet-ticker.mjs +85 -0
  481. package/scripts/self-test-cross-cli-hive-adoption.mjs +125 -0
  482. package/scripts/self-test-cross-cli-hive-learning.mjs +146 -0
  483. package/scripts/self-test-cross-phase-tool-failure.mjs +110 -0
  484. package/scripts/self-test-cross-surface-action-ledger.mjs +149 -0
  485. package/scripts/self-test-end-of-phase-qa-court.mjs +616 -0
  486. package/scripts/self-test-evaluate-with-kernel.mjs +111 -0
  487. package/scripts/self-test-first-class-output-delta-proof.mjs +307 -0
  488. package/scripts/self-test-goal-contract-output-qa.mjs +73 -0
  489. package/scripts/self-test-goal-contract.mjs +35 -0
  490. package/scripts/self-test-governed-adapters.mjs +105 -0
  491. package/scripts/self-test-governed-surface-runner.mjs +198 -0
  492. package/scripts/self-test-harness-gates.mjs +15 -12
  493. package/scripts/self-test-harness-ticker-sidecar.mjs +153 -0
  494. package/scripts/self-test-hive-org-kernel.mjs +233 -0
  495. package/scripts/self-test-hive-session-coordination.mjs +156 -0
  496. package/scripts/self-test-hive-wal-consumer.mjs +111 -0
  497. package/scripts/self-test-kernel-a3-a4-selection.mjs +179 -0
  498. package/scripts/self-test-ledger-append.mjs +175 -0
  499. package/scripts/self-test-live-codex-posttool-packet-smoke.mjs +111 -0
  500. package/scripts/self-test-live-codex-pretool-packet-smoke.mjs +101 -0
  501. package/scripts/self-test-live-codex-stop-qa-kernel-smoke.mjs +43 -0
  502. package/scripts/self-test-live-wrapper-substrate-inventory.mjs +149 -0
  503. package/scripts/self-test-local-main-sync-script.mjs +47 -0
  504. package/scripts/self-test-mechanical-autofire-resolver.mjs +296 -0
  505. package/scripts/self-test-no-consult-cognitive-skills-output.mjs +135 -0
  506. package/scripts/self-test-owner-airtable-sync-queue.mjs +196 -0
  507. package/scripts/self-test-owner-airtable-sync.mjs +181 -0
  508. package/scripts/self-test-owner-sheets-action-ledger.mjs +100 -0
  509. package/scripts/self-test-production-preflight.mjs +78 -0
  510. package/scripts/self-test-project-boundary-cognition.mjs +79 -0
  511. package/scripts/self-test-qa-exec-kernel.mjs +34 -0
  512. package/scripts/self-test-qa-recovery-learning-loop.mjs +113 -0
  513. package/scripts/self-test-qiyas-label-alignment.mjs +94 -0
  514. package/scripts/self-test-recovery-context.mjs +110 -0
  515. package/scripts/self-test-repo-guard.mjs +10 -0
  516. package/scripts/self-test-runtime-health-self-heal.mjs +161 -0
  517. package/scripts/self-test-runtime-postcondition.mjs +70 -0
  518. package/scripts/self-test-soul-precommit-hook.mjs +39 -0
  519. package/scripts/self-test-stop-gate-kernel-guards.mjs +185 -0
  520. package/scripts/self-test-stop-gate.mjs +128 -0
  521. package/scripts/self-test-substrate-kernel-execution-receipt.mjs +130 -0
  522. package/scripts/self-test-substrate-open-skill-floor.mjs +87 -0
  523. package/scripts/self-test-substrate-output-quality-eval.mjs +171 -0
  524. package/scripts/self-test-task-closeout-drift.mjs +97 -0
  525. package/scripts/self-test-task-project-ledger-readiness.mjs +43 -0
  526. package/scripts/self-test-task-runner-phase-consumer.mjs +134 -0
  527. package/scripts/self-test-task-worker-lane.mjs +256 -0
  528. package/scripts/self-test-turn-substrate-qa-kernel.mjs +188 -0
  529. package/scripts/self-test-universal-action-capture.mjs +153 -0
  530. package/scripts/self-test-universal-turn-packet-entrypoints.mjs +252 -0
  531. package/scripts/self-test-universal-turn-packet.mjs +320 -0
  532. package/scripts/session-quality-backfill.mjs +253 -0
  533. package/scripts/smoke-autofire-100-prompts.mjs +481 -0
  534. package/scripts/sync-local-main-on-task-complete.mjs +278 -0
  535. package/scripts/sync-owner-status-airtable.mjs +1158 -0
  536. package/scripts/validate-skill-prompts.mjs +12 -1
  537. package/scripts/verify-codex-native-mirror.mjs +262 -0
  538. package/skills/34-frameworks-unified/SKILL.md +42 -0
  539. package/skills/api-design/SKILL.md +123 -0
  540. package/skills/architecture-decision/SKILL.md +105 -0
  541. package/skills/aria-aristotle-cognitives/SKILL.md +128 -0
  542. package/skills/aria-aristotle-intra-phase/SKILL.md +99 -0
  543. package/skills/aria-aristotle-post-phase/SKILL.md +116 -0
  544. package/skills/aria-aristotle-pre-phase/SKILL.md +117 -0
  545. package/skills/aria-axioms-first-principles/SKILL.md +202 -0
  546. package/skills/aria-axioms-first-principles/agents/openai.yaml +4 -0
  547. package/skills/aria-axioms-first-principles/references/source-map.md +130 -0
  548. package/skills/aria-chat/SKILL.md +84 -0
  549. package/skills/aria-chat/scripts/aria-chat.sh +57 -0
  550. package/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
  551. package/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
  552. package/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
  553. package/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
  554. package/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
  555. package/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
  556. package/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
  557. package/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
  558. package/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
  559. package/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
  560. package/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
  561. package/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
  562. package/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
  563. package/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
  564. package/skills/aria-cognition/aria-chat/SKILL.md +84 -0
  565. package/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
  566. package/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
  567. package/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
  568. package/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
  569. package/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
  570. package/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
  571. package/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
  572. package/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
  573. package/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
  574. package/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
  575. package/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
  576. package/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
  577. package/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
  578. package/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
  579. package/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
  580. package/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
  581. package/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
  582. package/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
  583. package/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
  584. package/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
  585. package/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
  586. package/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
  587. package/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
  588. package/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
  589. package/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
  590. package/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
  591. package/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
  592. package/skills/aria-cognition/aria-ops/SKILL.md +60 -0
  593. package/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
  594. package/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
  595. package/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
  596. package/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
  597. package/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
  598. package/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
  599. package/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
  600. package/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
  601. package/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
  602. package/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
  603. package/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
  604. package/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
  605. package/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
  606. package/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
  607. package/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
  608. package/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
  609. package/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
  610. package/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
  611. package/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
  612. package/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
  613. package/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
  614. package/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
  615. package/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
  616. package/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
  617. package/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
  618. package/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
  619. package/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
  620. package/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
  621. package/skills/aria-cognition/never-guess/SKILL.md +77 -0
  622. package/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
  623. package/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
  624. package/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
  625. package/skills/aria-cognition/tadabbur/SKILL.md +506 -0
  626. package/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
  627. package/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
  628. package/skills/aria-cognition/tafakkur/SKILL.md +104 -0
  629. package/skills/aria-cognition-autofire/SKILL.md +109 -0
  630. package/skills/aria-cognition-batch/SKILL.md +264 -0
  631. package/skills/aria-conversational-doctrine-discipline/SKILL.md +125 -0
  632. package/skills/aria-essence/SKILL.md +81 -0
  633. package/skills/aria-essence/references/domain-matrix.md +80 -0
  634. package/skills/aria-essence/references/evolution-loop.md +30 -0
  635. package/skills/aria-essence/references/readable-cognition.md +27 -0
  636. package/skills/aria-first-class-operating-contract/SKILL.md +104 -0
  637. package/skills/aria-forge-guardrails/SKILL.md +53 -0
  638. package/skills/aria-forge-guardrails/references/checklist.md +31 -0
  639. package/skills/aria-harness-deploy/SKILL.md +145 -0
  640. package/skills/aria-harness-no-stripping/SKILL.md +135 -0
  641. package/skills/aria-harness-onboarding/SKILL.md +130 -0
  642. package/skills/aria-harness-output-discipline/SKILL.md +120 -0
  643. package/skills/aria-harness-substrate-binding/SKILL.md +139 -0
  644. package/skills/aria-http-harness-client/SKILL.md +85 -0
  645. package/skills/aria-http-harness-client/scripts/smoke.mjs +47 -0
  646. package/skills/aria-k8s-deploy/SKILL.md +174 -0
  647. package/skills/aria-k8s-deploy/agents/openai.yaml +3 -0
  648. package/skills/aria-ladduniframe/SKILL.md +60 -0
  649. package/skills/aria-ledger-fleet-execution/SKILL.md +126 -0
  650. package/skills/aria-live-ops/SKILL.md +54 -0
  651. package/skills/aria-mac-ssh-ops/SKILL.md +100 -0
  652. package/skills/aria-memory-index/SKILL.md +42 -0
  653. package/skills/aria-noor-cognitives/SKILL.md +120 -0
  654. package/skills/aria-ops/SKILL.md +60 -0
  655. package/skills/aria-ops/references/live-endpoints.md +59 -0
  656. package/skills/aria-quality-audit/SKILL.md +133 -0
  657. package/skills/aria-reasoning/SKILL.md +67 -0
  658. package/skills/aria-reasoning/references/core-principles.md +42 -0
  659. package/skills/aria-repo-doctrine/SKILL.md +57 -0
  660. package/skills/aria-soul-principles/SKILL.md +42 -0
  661. package/skills/aria-task-codex-executor/SKILL.md +86 -0
  662. package/skills/aristotle-engine/SKILL.md +42 -0
  663. package/skills/ci-cd-pipeline/SKILL.md +116 -0
  664. package/skills/code-review/SKILL.md +131 -0
  665. package/skills/cross-domain-24/SKILL.md +42 -0
  666. package/skills/database-design/SKILL.md +124 -0
  667. package/skills/deepsoul-emotional/SKILL.md +42 -0
  668. package/skills/deno-kv-raft-pubsub/SKILL.md +561 -0
  669. package/skills/deno-kv-raft-pubsub/reference/maelstrom-integration.md +393 -0
  670. package/skills/deno-kv-raft-pubsub/reference/pubsub-api.md +376 -0
  671. package/skills/deno-kv-raft-pubsub/reference/raft-spec.md +402 -0
  672. package/skills/deno-kv-raft-pubsub/reference/state-machine.md +182 -0
  673. package/skills/error-handling/SKILL.md +159 -0
  674. package/skills/firecrawl/SKILL.md +165 -0
  675. package/skills/firecrawl/rules/install.md +82 -0
  676. package/skills/firecrawl/rules/security.md +26 -0
  677. package/skills/firecrawl-agent/SKILL.md +86 -0
  678. package/skills/firecrawl-build-interact/SKILL.md +96 -0
  679. package/skills/firecrawl-build-onboarding/SKILL.md +131 -0
  680. package/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
  681. package/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
  682. package/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
  683. package/skills/firecrawl-build-scrape/SKILL.md +97 -0
  684. package/skills/firecrawl-build-search/SKILL.md +97 -0
  685. package/skills/firecrawl-clone/SKILL.md +419 -0
  686. package/skills/firecrawl-crawl/SKILL.md +87 -0
  687. package/skills/firecrawl-download/SKILL.md +98 -0
  688. package/skills/firecrawl-interact/SKILL.md +112 -0
  689. package/skills/firecrawl-map/SKILL.md +79 -0
  690. package/skills/firecrawl-scrape/SKILL.md +97 -0
  691. package/skills/firecrawl-search/SKILL.md +88 -0
  692. package/skills/fitrah-guard/SKILL.md +78 -0
  693. package/skills/forge-quality-rules/SKILL.md +61 -0
  694. package/skills/ghazali-8lens/SKILL.md +56 -0
  695. package/skills/ijtihad-novel/SKILL.md +42 -0
  696. package/skills/ilham-intuition/SKILL.md +42 -0
  697. package/skills/imagegen/LICENSE.txt +201 -0
  698. package/skills/imagegen/SKILL.md +374 -0
  699. package/skills/imagegen/agents/openai.yaml +6 -0
  700. package/skills/imagegen/assets/imagegen-small.svg +5 -0
  701. package/skills/imagegen/assets/imagegen.png +0 -0
  702. package/skills/imagegen/references/cli.md +242 -0
  703. package/skills/imagegen/references/codex-network.md +33 -0
  704. package/skills/imagegen/references/image-api.md +90 -0
  705. package/skills/imagegen/references/prompting.md +118 -0
  706. package/skills/imagegen/references/sample-prompts.md +433 -0
  707. package/skills/imagegen/scripts/image_gen.py +995 -0
  708. package/skills/imagegen/scripts/remove_chroma_key.py +440 -0
  709. package/skills/istiqra-induction/SKILL.md +44 -0
  710. package/skills/ladunni-22/SKILL.md +53 -0
  711. package/skills/mizan/SKILL.md +90 -0
  712. package/skills/nadia/SKILL.md +56 -0
  713. package/skills/nadia-psi/SKILL.md +56 -0
  714. package/skills/never-guess/SKILL.md +75 -0
  715. package/skills/noor-recognition/SKILL.md +45 -0
  716. package/skills/observability/SKILL.md +133 -0
  717. package/skills/openai-docs/LICENSE.txt +201 -0
  718. package/skills/openai-docs/SKILL.md +100 -0
  719. package/skills/openai-docs/agents/openai.yaml +14 -0
  720. package/skills/openai-docs/assets/openai-small.svg +3 -0
  721. package/skills/openai-docs/assets/openai.png +0 -0
  722. package/skills/openai-docs/references/latest-model.md +37 -0
  723. package/skills/openai-docs/references/prompting-guide.md +244 -0
  724. package/skills/openai-docs/references/upgrade-guide.md +181 -0
  725. package/skills/openai-docs/scripts/resolve-latest-model-info.js +147 -0
  726. package/skills/pdf/LICENSE.txt +201 -0
  727. package/skills/pdf/SKILL.md +85 -0
  728. package/skills/pdf/agents/openai.yaml +5 -0
  729. package/skills/pdf/assets/pdf.png +0 -0
  730. package/skills/playwright/LICENSE.txt +201 -0
  731. package/skills/playwright/NOTICE.txt +14 -0
  732. package/skills/playwright/SKILL.md +165 -0
  733. package/skills/playwright/agents/openai.yaml +6 -0
  734. package/skills/playwright/assets/playwright-small.svg +3 -0
  735. package/skills/playwright/assets/playwright.png +0 -0
  736. package/skills/playwright/references/cli.md +116 -0
  737. package/skills/playwright/references/workflows.md +95 -0
  738. package/skills/playwright/scripts/playwright_cli.sh +25 -0
  739. package/skills/plugin-creator/SKILL.md +178 -0
  740. package/skills/plugin-creator/agents/openai.yaml +6 -0
  741. package/skills/plugin-creator/assets/plugin-creator-small.svg +3 -0
  742. package/skills/plugin-creator/assets/plugin-creator.png +0 -0
  743. package/skills/plugin-creator/references/plugin-json-spec.md +170 -0
  744. package/skills/plugin-creator/scripts/create_basic_plugin.py +301 -0
  745. package/skills/predictor/SKILL.md +43 -0
  746. package/skills/qiyas-analogy/SKILL.md +204 -0
  747. package/skills/refactoring/SKILL.md +137 -0
  748. package/skills/ruh-basis/SKILL.md +42 -0
  749. package/skills/security-review/SKILL.md +129 -0
  750. package/skills/skill-creator/SKILL.md +434 -0
  751. package/skills/skill-creator/agents/openai.yaml +5 -0
  752. package/skills/skill-creator/assets/skill-creator-small.svg +3 -0
  753. package/skills/skill-creator/assets/skill-creator.png +0 -0
  754. package/skills/skill-creator/license.txt +202 -0
  755. package/skills/skill-creator/references/openai_yaml.md +49 -0
  756. package/skills/skill-creator/scripts/generate_openai_yaml.py +226 -0
  757. package/skills/skill-creator/scripts/init_skill.py +400 -0
  758. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  759. package/skills/skill-installer/LICENSE.txt +202 -0
  760. package/skills/skill-installer/SKILL.md +76 -0
  761. package/skills/skill-installer/agents/openai.yaml +5 -0
  762. package/skills/skill-installer/assets/skill-installer-small.svg +3 -0
  763. package/skills/skill-installer/assets/skill-installer.png +0 -0
  764. package/skills/skill-installer/scripts/github_utils.py +21 -0
  765. package/skills/skill-installer/scripts/install-skill-from-github.py +308 -0
  766. package/skills/skill-installer/scripts/list-skills.py +107 -0
  767. package/skills/skills-and-hooks-reference/SKILL.md +196 -0
  768. package/skills/soul-domains/SKILL.md +43 -0
  769. package/skills/tadabbur/SKILL.md +232 -0
  770. package/skills/tadabbur-ops/SKILL.md +42 -0
  771. package/skills/tafakkur/SKILL.md +104 -0
  772. package/skills/testing-strategy/SKILL.md +122 -0
  773. package/src/action-ledger-core.ts +1054 -0
  774. package/src/chat.ts +5 -6
  775. package/src/codebase-scanner.ts +2 -0
  776. package/src/connectors/claude-code.ts +149 -12
  777. package/src/connectors/codebase-awareness.ts +325 -25
  778. package/src/connectors/codex.ts +1273 -40
  779. package/src/connectors/cursor.ts +8 -0
  780. package/src/connectors/governed-adapter.ts +174 -0
  781. package/src/connectors/opencode.ts +18 -2
  782. package/src/connectors/repo-guard.ts +24 -12
  783. package/src/connectors/runtime.ts +99 -2
  784. package/src/connectors/shell.ts +125 -7
  785. package/src/cross-cli-hive-binding.ts +290 -0
  786. package/src/garden-control-plane.ts +24 -1
  787. package/src/governed-surface-runner.ts +1227 -0
  788. package/src/index.ts +104 -1
  789. package/src/task-runner.ts +3794 -0
  790. package/dist/aria-connector/src/install-hooks.d.ts +0 -18
  791. package/dist/aria-connector/src/install-hooks.d.ts.map +0 -1
  792. package/dist/aria-connector/src/install-hooks.js +0 -224
  793. package/dist/aria-connector/src/install-hooks.js.map +0 -1
  794. package/dist/aria-connector/src/onboarding-wizard.d.ts +0 -5
  795. package/dist/aria-connector/src/onboarding-wizard.d.ts.map +0 -1
  796. package/dist/aria-connector/src/onboarding-wizard.js +0 -188
  797. package/dist/aria-connector/src/onboarding-wizard.js.map +0 -1
  798. package/dist/cli-0.2.38.tgz +0 -0
  799. package/dist/install.sh +0 -13
  800. package/src/__tests__/anthropic-oauth.test.ts +0 -186
  801. package/src/__tests__/auth-commands.test.ts +0 -132
  802. package/src/__tests__/owner-login.test.ts +0 -311
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * self-doctrine-check.mjs — scan text against doctrine_trigger_map.
4
+ *
5
+ * Phase 0 audit Tier 0 M0.SELFREVIEW.X1 + Phase 7 QA Pass M7.0.X7:
6
+ * the scanner that pre-commit hooks (and on-demand CLI) use to detect
7
+ * trip-vocab the doctrine_trigger_map counters. The scanner returns
8
+ * structured violations; the caller decides whether to block, warn,
9
+ * or allow with acknowledgment.
10
+ *
11
+ * Hamza caught (2026-05-06) that I'd shipped 35 commits with cognition-
12
+ * lattice labels in commit messages without actually running the
13
+ * lattice — the labels were performing the work. Real doctrine scan
14
+ * surfaced 2 unambiguous violations in my own committed code
15
+ * (the trip-vocab phrase × 2). This scanner is the load-bearing
16
+ * fix that prevents the recurrence: ceremony cannot substitute for
17
+ * doctrine-self-check: best.?effort describing-the-finding-the-scanner-detects
18
+ * substance when the substance check runs at commit time.
19
+ *
20
+ * Design principles applied (via REAL qiyas + predictor this time):
21
+ *
22
+ * Qiyas — analogous to ESLint + lint-staged + husky pre-commit. Same
23
+ * shape: scan staged content, match against rules, allow explicit
24
+ * acknowledgment as escape hatch. Failure modes of that pattern:
25
+ * - doctrine-self-check: use the override|skip the gate|emergency flag|temporarily bypass|use the env disable|force through|DEPLOY_ALLOW_NO_ADMISSION_POLICY|ARIA_BINDING_ENABLED=false|--no-verify|--force documenting-bypass-class-explicitly-out-of-scope-for-this-hook
26
+ * - Bypass via --no-verify (git allows; outside our control here)
27
+ * - Habituation if false-positive rate too high
28
+ * - Self-reference: scanner code itself contains trip-vocab
29
+ * strings (it has to, to detect them) — must be allowlisted
30
+ * - Description-of-antipattern vs invocation-of-antipattern —
31
+ * strict scan flags both; we allow per-line acknowledgment
32
+ *
33
+ * Predictor — the falsifiable claim:
34
+ * "scanForTripVocab(MY_35_COMMIT_DIFF) returns at least 2 violations
35
+ * with trigger='best.?effort'. If not, the scanner is broken."
36
+ * The included regression test runs this exact assertion.
37
+ *
38
+ * Tadabbur — 4th-order consequence: commit history accumulates
39
+ * explicit `doctrine-self-check:` markers as audit trail. Operator
40
+ * can grep for "doctrine-self-check:" to see every intentional
41
+ * acknowledgment over time. Discipline-by-construction.
42
+ *
43
+ * Doctrine self-bind — this scanner ITSELF is on the no-graceful-
44
+ * degradation path: if doctrine_trigger_map.json is missing or
45
+ * malformed, the scanner THROWS (does NOT silently return zero
46
+ * violations). Silent-zero would be the antipattern.
47
+ *
48
+ * Usage:
49
+ * import { scanForTripVocab, formatViolations, loadDoctrineTriggers } from './self-doctrine-check.mjs';
50
+ * const triggers = loadDoctrineTriggers();
51
+ * const violations = scanForTripVocab(text, { triggers });
52
+ * if (violations.length > 0) console.error(formatViolations(violations));
53
+ *
54
+ * The acknowledgment-marker contract for callers:
55
+ * - In a commit message: a line `doctrine-self-check: <trigger> <counter-applied>`
56
+ * allows the named trigger across the entire commit.
57
+ * - On a per-line basis (in code): a comment containing
58
+ * `doctrine-self-check: <trigger>` adjacent (within 3 lines) to
59
+ * the trip-vocab match allows that specific match.
60
+ *
61
+ * Doctrine bind:
62
+ * - feedback_no_graceful_degradation.md — scanner fails LOUD on
63
+ * malformed trigger map (vs returning zero violations).
64
+ * - axiom_runtime_rule.admit_ignorance — every match is surfaced;
65
+ * acknowledgment is explicit not implicit.
66
+ * - clean_cognition — single scanner library; one place for the rules.
67
+ *
68
+ * Mirror: this file MUST be byte-identical between
69
+ * ops/claude-hooks/lib/self-doctrine-check.mjs
70
+ * packages/aria-connector/hooks/lib/self-doctrine-check.mjs
71
+ */
72
+
73
+ import { readFileSync, existsSync } from 'node:fs';
74
+ import { homedir } from 'node:os';
75
+ import { join, dirname, resolve } from 'node:path';
76
+ import { fileURLToPath } from 'node:url';
77
+
78
+ const HERE = dirname(fileURLToPath(import.meta.url));
79
+
80
+ // Search order for the canonical doctrine trigger map. The runtime/state
81
+ // copy (synced by doctrine-trigger-map-sync.mjs) takes precedence — that's
82
+ // the live form gates use. Falls back to the canonical ops/ source.
83
+ const TRIGGER_MAP_SEARCH_PATHS = [
84
+ join(homedir(), '.aria', 'runtime', 'state', 'doctrine_trigger_map.json'),
85
+ resolve(HERE, '..', 'doctrine_trigger_map.json'),
86
+ // Repo-root fallback for CI / on-demand runs from non-installed locations.
87
+ resolve(HERE, '..', '..', '..', 'ops', 'claude-hooks', 'doctrine_trigger_map.json'),
88
+ ];
89
+
90
+ /**
91
+ * Load the canonical doctrine trigger map.
92
+ * Throws if no map can be found OR if the JSON is malformed — never
93
+ * returns a silently-empty trigger list (that would be the silent-fail
94
+ * antipattern this scanner exists to detect elsewhere).
95
+ *
96
+ * @returns {Array<{ trigger: string, memory: string, teaching: string, counter_action: string, regex: RegExp }>}
97
+ */
98
+ export function loadDoctrineTriggers() {
99
+ let path = null;
100
+ for (const candidate of TRIGGER_MAP_SEARCH_PATHS) {
101
+ if (existsSync(candidate)) { path = candidate; break; }
102
+ }
103
+ if (!path) {
104
+ throw new Error(
105
+ `[self-doctrine-check] doctrine_trigger_map.json not found. ` +
106
+ `Searched: ${TRIGGER_MAP_SEARCH_PATHS.join(', ')}`,
107
+ );
108
+ }
109
+ let raw;
110
+ try {
111
+ raw = readFileSync(path, 'utf8');
112
+ } catch (err) {
113
+ throw new Error(`[self-doctrine-check] failed to read ${path}: ${err.message}`);
114
+ }
115
+ let parsed;
116
+ try {
117
+ parsed = JSON.parse(raw);
118
+ } catch (err) {
119
+ throw new Error(`[self-doctrine-check] doctrine map at ${path} is malformed JSON: ${err.message}`);
120
+ }
121
+ const triggers = Array.isArray(parsed?.triggers) ? parsed.triggers : [];
122
+ if (triggers.length === 0) {
123
+ throw new Error(`[self-doctrine-check] doctrine map at ${path} has no triggers`);
124
+ }
125
+ // Pre-compile regex per entry. Malformed regex surfaces with a named
126
+ // entry (was: silent skip in collectDriftHits per M0.H.6).
127
+ return triggers.map((entry, index) => {
128
+ let regex;
129
+ try {
130
+ regex = new RegExp(entry.trigger, 'gi');
131
+ } catch (err) {
132
+ throw new Error(
133
+ `[self-doctrine-check] doctrine map entry ${index} (${entry.trigger}) has invalid regex: ${err.message}`,
134
+ );
135
+ }
136
+ return {
137
+ trigger: String(entry.trigger || ''),
138
+ memory: String(entry.memory || ''),
139
+ teaching: String(entry.teaching || ''),
140
+ counter_action: String(entry.counter_action || ''),
141
+ regex,
142
+ };
143
+ });
144
+ }
145
+
146
+ /**
147
+ * Scan text for trip-vocab matches against the doctrine trigger map.
148
+ *
149
+ * @param {string} text the input to scan (diff content, commit message, etc.)
150
+ * @param {Object} opts
151
+ * @param {Array} opts.triggers pre-loaded triggers (from loadDoctrineTriggers)
152
+ * @param {string[]} [opts.acknowledged] list of trigger strings the caller
153
+ * has already acknowledged (e.g., from a commit-message `doctrine-self-check:`
154
+ * line). Matches against acknowledged triggers are filtered from output.
155
+ * @returns {Array<{
156
+ * trigger: string, memory: string, teaching: string, counter_action: string,
157
+ * match: string, line_number: number, line_text: string,
158
+ * has_inline_acknowledgment: boolean,
159
+ * }>}
160
+ */
161
+ export function scanForTripVocab(text, opts = {}) {
162
+ const triggers = opts.triggers;
163
+ if (!Array.isArray(triggers) || triggers.length === 0) {
164
+ throw new Error('[self-doctrine-check] scanForTripVocab requires opts.triggers (load via loadDoctrineTriggers)');
165
+ }
166
+ const acknowledged = (opts.acknowledged || []).map(String);
167
+ let src = String(text || '');
168
+ if (!src) return [];
169
+
170
+ // Auto-detect unified-diff format and filter to added lines only.
171
+ // Heuristic: presence of `diff --git` header OR `^@@ ` hunk header anywhere.
172
+ // When detected, keep only `+`-prefix lines (excluding the `+++` file
173
+ // headers). Context lines (` `-prefix) are repo content NOT being added by
174
+ // this commit — flagging them would be a false positive for the staged
175
+ // commit. Removed lines (`-`-prefix) are being removed and are not in
176
+ // the post-commit state, so they don't apply either.
177
+ const looksLikeDiff = /(^|\n)(?:diff --git |@@ )/.test(src);
178
+ if (looksLikeDiff) {
179
+ const filteredLines = [];
180
+ for (const line of src.split('\n')) {
181
+ if (line.startsWith('+++ ')) continue; // file header, not content
182
+ if (line.startsWith('+')) {
183
+ filteredLines.push(line.slice(1)); // strip the `+` prefix
184
+ } else {
185
+ filteredLines.push(''); // preserve line numbering
186
+ }
187
+ }
188
+ src = filteredLines.join('\n');
189
+ }
190
+
191
+ const lines = src.split('\n');
192
+ const violations = [];
193
+
194
+ for (const t of triggers) {
195
+ // Reset regex lastIndex (we share regex across scans with /g).
196
+ t.regex.lastIndex = 0;
197
+ let m;
198
+ while ((m = t.regex.exec(src)) !== null) {
199
+ const matchedText = m[0];
200
+ // Compute line number from match index.
201
+ const upToMatch = src.slice(0, m.index);
202
+ const lineNumber = upToMatch.split('\n').length;
203
+ const lineText = lines[lineNumber - 1] || '';
204
+ // Per-commit acknowledgment: any acknowledgment line whose text
205
+ // contains the trigger pattern (case-insensitive substring match)
206
+ // applies to all matches of that trigger across this commit.
207
+ const tLower = t.trigger.toLowerCase();
208
+ const isAcknowledged = acknowledged.some((a) => {
209
+ const aLower = String(a).toLowerCase();
210
+ return aLower.includes(tLower);
211
+ });
212
+ if (isAcknowledged) continue;
213
+ // Per-line acknowledgment: search ±3 lines around the match for
214
+ // `doctrine-self-check: <trigger>` comment.
215
+ const windowStart = Math.max(0, lineNumber - 4);
216
+ const windowEnd = Math.min(lines.length, lineNumber + 3);
217
+ const windowText = lines.slice(windowStart, windowEnd).join('\n').toLowerCase();
218
+ const inlineAckRx = /doctrine-self-check:\s*(.+?)(?:$|\n)/gim;
219
+ let hasInlineAck = false;
220
+ let am;
221
+ while ((am = inlineAckRx.exec(windowText)) !== null) {
222
+ if (am[1].toLowerCase().includes(tLower)) { hasInlineAck = true; break; }
223
+ }
224
+ if (hasInlineAck) continue;
225
+ // Self-reference allowlist: lines that ARE the trigger map itself
226
+ // (the trigger string is present in JSON form for legitimate reasons).
227
+ // Heuristic: skip lines containing `"trigger":` JSON syntax.
228
+ if (/"trigger":\s*"/.test(lineText)) continue;
229
+
230
+ violations.push({
231
+ trigger: t.trigger,
232
+ memory: t.memory,
233
+ teaching: t.teaching,
234
+ counter_action: t.counter_action,
235
+ match: matchedText,
236
+ line_number: lineNumber,
237
+ line_text: lineText.slice(0, 200),
238
+ has_inline_acknowledgment: false,
239
+ });
240
+ }
241
+ }
242
+
243
+ return violations;
244
+ }
245
+
246
+ /**
247
+ * Extract `doctrine-self-check: <trigger-expression> <counter-action>`
248
+ * markers from a commit message. Returns the list of acknowledgment
249
+ * lines (the full text after `doctrine-self-check:` up to end-of-line).
250
+ *
251
+ * Acknowledgment matches a trigger when the ack line contains the
252
+ * trigger's literal text as a substring (case-insensitive) — this lets
253
+ * multi-word triggers (e.g. the literal phrase the doctrine map counters)
254
+ * or regex-source triggers be acknowledged with the literal trigger
255
+ * doctrine-self-check: graceful degradation describing-the-trigger-shape-the-API-supports
256
+ * string in the ack line.
257
+ */
258
+ export function parseAcknowledgments(commitMessage) {
259
+ const src = String(commitMessage || '');
260
+ const ack = [];
261
+ const rx = /doctrine-self-check:\s*(.+?)\s*$/gim;
262
+ let m;
263
+ while ((m = rx.exec(src)) !== null) {
264
+ ack.push(m[1].trim());
265
+ }
266
+ return ack;
267
+ }
268
+
269
+ /**
270
+ * Format violations for human-readable output.
271
+ */
272
+ export function formatViolations(violations) {
273
+ if (!violations || violations.length === 0) return '';
274
+ const lines = [];
275
+ lines.push('');
276
+ lines.push('=== ARIA SELF-DOCTRINE-CHECK ===');
277
+ lines.push(`${violations.length} doctrine trip-vocab match(es) detected:`);
278
+ lines.push('');
279
+ // Group by trigger for readability.
280
+ const byTrigger = new Map();
281
+ for (const v of violations) {
282
+ if (!byTrigger.has(v.trigger)) byTrigger.set(v.trigger, []);
283
+ byTrigger.get(v.trigger).push(v);
284
+ }
285
+ let i = 0;
286
+ for (const [trigger, group] of byTrigger.entries()) {
287
+ i++;
288
+ const sample = group[0];
289
+ lines.push(`${i}. trigger: ${trigger} (${group.length} match${group.length === 1 ? '' : 'es'})`);
290
+ if (sample.memory) lines.push(` memory: ${sample.memory}`);
291
+ if (sample.teaching) lines.push(` teaching: ${sample.teaching}`);
292
+ if (sample.counter_action) lines.push(` counter: ${sample.counter_action}`);
293
+ lines.push(` first match: line ${sample.line_number}: "${sample.line_text}"`);
294
+ if (group.length > 1) {
295
+ lines.push(` other lines: ${group.slice(1).map((v) => v.line_number).join(', ')}`);
296
+ }
297
+ lines.push('');
298
+ }
299
+ lines.push('To proceed:');
300
+ lines.push(' (a) REWRITE the trip-vocab — remove the phrase, surface the failure, apply the counter-action.');
301
+ lines.push(' (b) ACKNOWLEDGE the trigger explicitly: add a line to your commit message:');
302
+ lines.push(' doctrine-self-check: <trigger-pattern> <counter-action-applied>');
303
+ lines.push(' OR add a comment near the trip-vocab line:');
304
+ lines.push(' # doctrine-self-check: <trigger-pattern>');
305
+ lines.push(' (c) Per-line description-of-antipattern (e.g., comments naming what was');
306
+ lines.push(' replaced) is allowed — add the inline acknowledgment to mark it.');
307
+ lines.push('');
308
+ lines.push('See ops/claude-hooks/doctrine_trigger_map.json for full counter-doctrine details.');
309
+ return lines.join('\n');
310
+ }
311
+
312
+ function escapeForRegex(str) {
313
+ return String(str).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
314
+ }
315
+
316
+ export default {
317
+ loadDoctrineTriggers,
318
+ scanForTripVocab,
319
+ parseAcknowledgments,
320
+ formatViolations,
321
+ };
@@ -0,0 +1,64 @@
1
+ // Shape-based detector for sealed-material artifacts (PEM blocks, vendor
2
+ // prefixes, JWT bearer shapes, env assignments with high-entropy values).
3
+ //
4
+ // Replaces the bare-word regex at runtime-client.mjs that fired on benign
5
+ // mentions of vocabulary in code comments / variable names / error messages.
6
+ // Per feedback_break_action_class_loops.md the path-fix moves detection to
7
+ // a fresh file with structural matchers, instead of bare lexical words.
8
+
9
+ const SHAPE_PATTERNS = Object.freeze([
10
+ // PEM block opener — RFC 7468 framing, any label.
11
+ /-----BEGIN [A-Z]+( [A-Z]+)*-----/,
12
+
13
+ // Anthropic-style sealed prefix (visible vendor framing only).
14
+ /\bsk-ant-api0[0-9]-[A-Za-z0-9_\-]{40,}/,
15
+
16
+ // OpenAI-style sealed prefix.
17
+ /\bsk-(?:proj|live|test)-[A-Za-z0-9_\-]{30,}/,
18
+
19
+ // AWS access-id shape (long-lived + temporary forms).
20
+ /\bAKIA[0-9A-Z]{16}\b/,
21
+ /\bASIA[0-9A-Z]{16}\b/,
22
+
23
+ // GitHub fine-grained / server prefixes.
24
+ /\bghp_[A-Za-z0-9]{30,}\b/,
25
+ /\bghs_[A-Za-z0-9]{30,}\b/,
26
+
27
+ // Slack workspace prefixes.
28
+ /\bxox[abprs]-[0-9A-Za-z\-]{10,}/,
29
+
30
+ // Stripe vendor prefixes (live + test, restricted + standard).
31
+ /\bsk_(?:live|test)_[A-Za-z0-9]{20,}/,
32
+ /\brk_(?:live|test)_[A-Za-z0-9]{20,}/,
33
+
34
+ // Twilio account-SID + auth-SID shape.
35
+ /\bAC[0-9a-f]{32}\b/,
36
+ /\bSK[0-9a-f]{32}\b/,
37
+
38
+ // SendGrid full-key prefix.
39
+ /\bSG\.[A-Za-z0-9_\-]{22}\.[A-Za-z0-9_\-]{43}/,
40
+
41
+ // Google API-key shape (39 chars, AIza prefix).
42
+ /\bAIza[0-9A-Za-z_\-]{35}\b/,
43
+
44
+ // JWT bearer shape (header.payload, base64url segments).
45
+ /\bBearer\s+eyJ[A-Za-z0-9_\-]{15,}\.[A-Za-z0-9_\-]{15,}/,
46
+
47
+ // ENV-style assignment with high-entropy value (≥32 chars base64-ish).
48
+ /^[A-Z_][A-Z0-9_]{3,}\s*=\s*[A-Za-z0-9+/=_\-]{32,}\s*$/m,
49
+ ]);
50
+
51
+ /**
52
+ * Returns true when the source body contains at least one structural shape
53
+ * matching a sealed-material artifact. Bare lexical mentions of vocabulary
54
+ * in comments or variable names do NOT match — only structural shapes do.
55
+ */
56
+ export function hasSensitiveMaterialShape(source) {
57
+ if (typeof source !== 'string' || source.length === 0) return false;
58
+ for (const rx of SHAPE_PATTERNS) {
59
+ if (rx.test(source)) return true;
60
+ }
61
+ return false;
62
+ }
63
+
64
+ export const __SHAPE_PATTERNS_FOR_TEST = SHAPE_PATTERNS;
@@ -83,11 +83,198 @@ export function classifyRequiredSkills({ text = '', action = '', toolName = '',
83
83
  required.add('aria-forge-guardrails');
84
84
  reasons.push('advisory/fail-open gate language requires fail-closed hardening discipline');
85
85
  }
86
+
87
+ // ── Business-intent branch (Aria 2026-05-09 expansion) ───────────────────
88
+ // All business-shaped intents fire in advisory/teach mode (redirectOnly:true).
89
+ // Per owner doctrine 2026-05-09: deadlocks are anti-pattern; recovery + teaching is the lever.
90
+ // Skills referenced are net-new and ship to ~/.codex/skills/ via cognitive-skills.ts.
91
+ if (/\b(?:price|pricing|package|tier|discount|paywall|monetize|monetization|arpu|gross margin|deal|contract redline|term sheet|refund|expansion|upsell|cross-sell|cac|ltv|payback|nrr|mrr|arr)\b/i.test(c)) {
92
+ required.add('aria-revenue-engine');
93
+ required.add('aria-business-frame');
94
+ required.add('aria-readable-output');
95
+ redirectOnly = true;
96
+ reasons.push('revenue/pricing intent — load business-frame + revenue-engine in advisory mode');
97
+ }
98
+ if (/\b(?:gtm|go-to-market|launch|channel|distribution|positioning|message|campaign|icp|persona|audience|brand|copy|hook|headline|landing page|seo|paid|organic|referral|virality|plg|sales-led)\b/i.test(c)) {
99
+ required.add('aria-gtm-architect');
100
+ required.add('aria-business-frame');
101
+ required.add('aria-readable-output');
102
+ redirectOnly = true;
103
+ reasons.push('gtm/positioning intent — load business-frame + gtm-architect in advisory mode');
104
+ }
105
+ if (/\b(?:churn|retention|renewal|nps|csat|onboarding|activation|escalation|win-back|account health|customer success)\b/i.test(c)) {
106
+ required.add('aria-retention-engine');
107
+ required.add('aria-business-frame');
108
+ required.add('aria-readable-output');
109
+ redirectOnly = true;
110
+ reasons.push('retention/cs intent — load business-frame + retention-engine in advisory mode');
111
+ }
112
+ if (/\b(?:hire|fire|layoff|rif|comp|equity|promotion|reorg|fundraise|fundraising|valuation|board|press|public statement|category|rebrand|m&a|partnership|joint venture)\b/i.test(c)) {
113
+ required.add('aria-decision-mizan');
114
+ required.add('aria-business-frame');
115
+ required.add('aria-readable-output');
116
+ redirectOnly = true;
117
+ reasons.push('owner-must-decide intent — load decision-mizan in advisory mode');
118
+ }
119
+ if (/\b(?:business audit|health check|kpi review|growth diagnostic|financial diagnostic|whats?\s+broken|what should we fix)\b/i.test(c)) {
120
+ required.add('aria-business-audit');
121
+ required.add('aria-business-frame');
122
+ required.add('aria-readable-output');
123
+ redirectOnly = true;
124
+ reasons.push('business-audit intent — load business-audit in advisory mode');
125
+ }
126
+
127
+ // ── Build-intent branch (FE / BE / fullstack) ─────────────────────────────
128
+ if (/\b(?:react|vue|svelte|next\.?js|tailwind|shadcn|component|hook|landing page|design system|core web vitals|lcp|inp|cls|wcag|accessibility|ssr|rsc|ssg|isr|hydration|frontend|front-end|web ui|mobile web|responsive|dark mode|i18n|pwa)\b/i.test(c)) {
129
+ required.add('aria-frontend-architect');
130
+ required.add('aria-readable-output');
131
+ redirectOnly = true;
132
+ reasons.push('frontend intent — load frontend-architect in advisory mode');
133
+ }
134
+ if (/\b(?:api|endpoint|handler|microservice|monolith|schema|migration|orm|query|index|queue|worker|webhook|cron|idempotency|circuit breaker|rate limit|cache|jwt|oauth|rbac|multi-tenancy|slo|sli|error budget|grpc|graphql|websocket|backend|back-end|database|postgres|mysql|redis)\b/i.test(c)) {
135
+ required.add('aria-backend-architect');
136
+ required.add('aria-readable-output');
137
+ redirectOnly = true;
138
+ reasons.push('backend intent — load backend-architect in advisory mode');
139
+ }
140
+ if (/\b(?:end-to-end|e2e feature|user story|epic|prd|full-stack|fullstack|spans? both|ship.*feature|build.*feature)\b/i.test(c)) {
141
+ required.add('aria-fullstack-orchestrator');
142
+ required.add('aria-readable-output');
143
+ redirectOnly = true;
144
+ reasons.push('fullstack intent — load fullstack-orchestrator in advisory mode');
145
+ }
146
+
147
+ // ── Code-cognition pre/post branches (cookbook + audit) ──────────────────
148
+ if (/\b(?:write|implement|build|scaffold|refactor|extract|split).{0,40}(?:handler|endpoint|function|class|hook|component|module|service|test|migration|schema)\b/i.test(c)) {
149
+ required.add('aria-senior-code-cookbook');
150
+ required.add('aria-readable-output');
151
+ redirectOnly = true;
152
+ reasons.push('pre-code intent — load senior-code-cookbook for cookbook patterns in advisory mode');
153
+ }
154
+ if (/\bgit\s+commit\b|\bgit\s+add\b|\bgit\s+push\b|\bcommit\b.{0,80}\b(?:diff|change|patch|edit)\b/i.test(c)) {
155
+ required.add('aria-senior-code-audit');
156
+ required.add('aria-readable-output');
157
+ redirectOnly = true;
158
+ reasons.push('pre-commit intent — load senior-code-audit; recovery-grant pattern, never blocks');
159
+ }
160
+
161
+ // ── Audit & research intents ─────────────────────────────────────────────
162
+ if (/\b(?:repo audit|code health audit|debt audit|dependency audit|security audit|performance audit|architecture audit|drift audit|whats?.{0,5}broken in this repo)\b/i.test(c)) {
163
+ required.add('aria-repo-audit');
164
+ required.add('aria-readable-output');
165
+ redirectOnly = true;
166
+ reasons.push('repo-audit intent — load repo-audit in advisory mode');
167
+ }
168
+ if (/\b(?:research|look up|find current|what.s? the (?:latest|current)|competitive research|market sizing|benchmark|comp(?:etitor)? analysis|vendor evaluation)\b/i.test(c)) {
169
+ required.add('aria-research-orchestrator');
170
+ required.add('aria-readable-output');
171
+ redirectOnly = true;
172
+ reasons.push('research intent — load research-orchestrator in advisory mode');
173
+ }
174
+
175
+ // ── Prose-shape trigger expansion (2026-05-12 substrate-provisioning upgrade) ──
176
+ // Foundation layer per the three-layer architecture (substrate provisioning →
177
+ // substrate binding → enforcement). The tool-class triggers above cover
178
+ // explicit-action prompts (deploy/edit/etc.); these five classes cover
179
+ // prose-shape prompts where the doctrine routing must happen by intent
180
+ // recognition not keyword matching.
181
+ //
182
+ // Diagnosed across the 2026-05-12 session: every audit-retraction cycle
183
+ // traced back to autoload not firing the right substrate (aria-repo-audit
184
+ // + aria-quality-audit + never-guess) because the prompts didn't match
185
+ // the narrow tool-class triggers. The five classes below cover the
186
+ // doctrine-needs the prior session demonstrated.
187
+ //
188
+ // Audit-class — owner asks for a review, diagnostic, or "what's broken"
189
+ if (/\baudit\b|\breview\s+(?:the\s+)?(?:code|repo|deploy|architecture|design|prs?|pr\b)|\bwhat(?:'s| is)? broken\b|\bcode review\b|\bhealth check\b|\bdiagnostic\b|\bdrift audit\b|\bdebt audit\b|\bsecurity review\b|\bquality audit\b/i.test(c)) {
190
+ required.add('aria-repo-audit');
191
+ required.add('aria-quality-audit');
192
+ required.add('never-guess');
193
+ reasons.push('audit/review/diagnostic prompt requires audit substrate before drafting (repo-audit + quality-audit + never-guess for content reads not name-matching)');
194
+ }
195
+ // Research-class — owner asks for external evidence acquisition
196
+ if (/\bresearch\b|\blook(?:\s+up)?\b|\bfind out\b|\binvestigate\b|\bcompetitive analysis\b|\bmarket sizing\b|\bvendor evaluation\b|\bbenchmark\b|\bsource verification\b|\bdig into\b/i.test(c)) {
197
+ required.add('aria-research-orchestrator');
198
+ required.add('never-guess');
199
+ reasons.push('research/evidence-acquisition prompt requires research-orchestrator + never-guess to anchor every claim to a source');
200
+ }
201
+ // Decision-class — owner-must-decide turn type per aria-decision-mizan doctrine
202
+ if (/\bshould (?:we|i)\b|\bhire\b|\bfire\b|\blayoff\b|\brif\b|\bpric(?:e|ing|er)\b|\bdiscount\b|\bfundrais(?:e|ing)\b|\bvaluation\b|\bterm sheet\b|\bequity grant\b|\brefund\b|\brebrand\b|\bm&a\b|\bjoint venture\b|\bcontract redline\b|\bpublic statement\b/i.test(c)) {
203
+ required.add('aria-decision-mizan');
204
+ required.add('aria-business-frame');
205
+ reasons.push('owner-must-decide intent requires decision-mizan (refuse-to-choose-for-owner) + business-frame');
206
+ }
207
+ // Prose-drift class — language patterns that signal the agent slipping
208
+ // into recommendation/dismissal mode without doctrine; drift scanner in
209
+ // aria-harness-output-discipline catches these but must be loaded first.
210
+ if (/\bi'?ll\s+(?:recommend|create|file|author|track|draft|propose|suggest)\b|\bwant me to\b|\bshould i\b|\bi\s+(?:recommend|propose|suggest)\b|\bunrelated to (?:my|the|the)\s|\bpre[- ]?existing\b|\bout of scope\b|\bnot blocking\b|\bside (?:concern|issue)\b|\bnot my (?:problem|issue|concern)\b/i.test(c)) {
211
+ required.add('aria-harness-output-discipline');
212
+ required.add('aria-conversational-doctrine-discipline');
213
+ reasons.push('prose-drift phrasing (recommendation/dismissal/asking) requires output-discipline + conversational-doctrine to police the slip');
214
+ }
215
+ // Repair-class — fix/debug/diagnose intent; loads doctrine that prevents
216
+ // band-aid fixes and forces root-cause reads instead of guessing.
217
+ if (/\bfix the\b|\brepair the\b|\brestore the\b|\bdebug\b|\bdiagnose\b|\broot cause\b|\bwhy (?:is|isn'?t|did|doesn'?t) (?:it|this|that)\b|\btroubleshoot\b/i.test(c)) {
218
+ required.add('never-guess');
219
+ required.add('aria-forge-guardrails');
220
+ reasons.push('repair/debug intent requires never-guess (read state first) + forge-guardrails (no fake fixes)');
221
+ }
86
222
  return { requiredSkills: [...required].sort(), recoveryMissing: [...new Set(recoveryMissing)], reasons, redirectOnly };
87
223
  }
88
224
 
89
225
  export function evaluateSkillGate(options = {}) {
90
- const c = classifyRequiredSkills(options);
226
+ const hasRequiredSkillsOverride = Array.isArray(options.requiredSkillsOverride);
227
+ const c = hasRequiredSkillsOverride
228
+ ? {
229
+ requiredSkills: [...new Set(options.requiredSkillsOverride.filter((skill) => typeof skill === 'string' && skill.trim()).map((skill) => skill.trim()))].sort(),
230
+ recoveryMissing: [],
231
+ reasons: [options.requiredSkillsReason || 'orchestration manifest intent.workflow_skills_to_invoke supplied required skills'],
232
+ redirectOnly: false,
233
+ }
234
+ : classifyRequiredSkills(options);
235
+ // additionalRequiredSkills augments (does not replace) the classifier/override
236
+ // output. Used by the pre-tool gate to layer Atlas dossier governing_skills
237
+ // on top of the keyword classifier — explicit per-file bindings AND
238
+ // intent-shape inference, not one or the other.
239
+ //
240
+ // Payload cap (Qiyas Q15 finding, 2026-05-17): once Phase 2D concept-keyword
241
+ // matching lands, a single file may collect 100+ governing skills via
242
+ // semantic overlap. The autoload manifest is hot-path content injected on
243
+ // every prompt — an uncapped merge would balloon it. Cap to top-N and
244
+ // surface the truncation LOUDly so it never silently drops important
245
+ // skills (per feedback_no_silent_fail_open_in_hooks.md). The cap is high
246
+ // enough that today's sparse GOVERNS (≤5 skills/file) is unaffected;
247
+ // future concept-match growth surfaces the cap with a LOUD stderr line
248
+ // instead of silently truncating.
249
+ const ADDITIONAL_SKILLS_CAP = Number.isFinite(options.additionalRequiredSkillsCap)
250
+ ? Math.max(1, Math.min(100, options.additionalRequiredSkillsCap))
251
+ : 20;
252
+ if (Array.isArray(options.additionalRequiredSkills) && options.additionalRequiredSkills.length > 0) {
253
+ const cleaned = options.additionalRequiredSkills
254
+ .filter((skill) => typeof skill === 'string' && skill.trim())
255
+ .map((skill) => skill.trim());
256
+ const dedupedInOrder = [...new Set(cleaned)];
257
+ const overCap = dedupedInOrder.length > ADDITIONAL_SKILLS_CAP;
258
+ const extras = overCap ? dedupedInOrder.slice(0, ADDITIONAL_SKILLS_CAP) : dedupedInOrder;
259
+ if (overCap) {
260
+ // LOUD per feedback_no_silent_fail_open_in_hooks.md — truncation must
261
+ // be visible to next-turn substrate scanners so the cap can be tuned
262
+ // if it ever drops a load-bearing skill.
263
+ try {
264
+ process.stderr.write(
265
+ `[skill-autoload-gate:additional_skills_capped] cap=${ADDITIONAL_SKILLS_CAP} ` +
266
+ `received=${dedupedInOrder.length} dropped=${dedupedInOrder.length - extras.length} ` +
267
+ `dropped_names=${dedupedInOrder.slice(ADDITIONAL_SKILLS_CAP).join(',')}\n`,
268
+ );
269
+ } catch { /* stderr unavailable; cap still applied */ }
270
+ }
271
+ if (extras.length > 0) {
272
+ const merged = new Set([...c.requiredSkills, ...extras]);
273
+ c.requiredSkills = [...merged].sort();
274
+ const capNote = overCap ? ` (capped from ${dedupedInOrder.length})` : '';
275
+ c.reasons = [...(c.reasons || []), `atlas dossier supplied ${extras.length} governing skill(s)${capNote} for target file: ${extras.join(', ')}`];
276
+ }
277
+ }
91
278
  const body = [options.text, options.action].filter(Boolean).join('\n');
92
279
  const loaded = collectLoadedSkills(options, body);
93
280
  const contractEvidence = collectContractEvidence(options, body);
@@ -97,6 +284,44 @@ export function evaluateSkillGate(options = {}) {
97
284
  return { ok: c.redirectOnly === true || (missingSkills.length === 0 && recoveryMissing.length === 0), redirectOnly: c.redirectOnly === true, surface: options.surface || 'unknown', sessionId: options.sessionId || 'unknown', requiredSkills: c.requiredSkills, loadedSkills: [...loaded].sort(), contractEvidence: [...contractEvidence].sort(), missingSkills, recoveryMissing, reasons: c.reasons, autoLoadAvailable: options.autoLoadAvailable === true };
98
285
  }
99
286
 
287
+ // AI-11803-LOOP1 (2026-05-12): cascade autoload primitive.
288
+ // Parses a skill body for sections that declare downstream skill dependencies
289
+ // (Load First / Mode Selection / Load Order / Ta'aqqul Autofire Pattern), and
290
+ // returns the candidate skill names extracted from backtick-quoted tokens.
291
+ // The autoload hook is responsible for filtering against actual skill-dir
292
+ // existence — this function does not touch the filesystem.
293
+ const CASCADE_HEADINGS = [
294
+ 'load first',
295
+ 'mode selection',
296
+ 'load order',
297
+ "ta'aqqul autofire pattern",
298
+ ];
299
+
300
+ export function parseLoadFirstSection(skillBody) {
301
+ if (typeof skillBody !== 'string' || !skillBody) return [];
302
+ const skills = new Set();
303
+ const headingPattern = CASCADE_HEADINGS
304
+ .map((h) => h.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
305
+ .join('|');
306
+ const sectionRx = new RegExp(
307
+ `^##\\s+(?:${headingPattern})\\b[^\\n]*\\n([\\s\\S]*?)(?=\\n##\\s)`,
308
+ 'gim',
309
+ );
310
+ const tokenRx = /`([a-z][a-z0-9_-]*)`/g;
311
+ for (const m of skillBody.matchAll(sectionRx)) {
312
+ const section = m[1] || '';
313
+ for (const t of section.matchAll(tokenRx)) {
314
+ const name = t[1];
315
+ if (!name) continue;
316
+ // Lib stays a pure candidate extractor. Mode-label noise (`light`, `qa`,
317
+ // `batch`, `fleet`, `hard-stop`) flows through here; the autoload's
318
+ // existsSync(SKILLS_DIR/<name>/SKILL.md) is the canonical filter.
319
+ skills.add(name);
320
+ }
321
+ }
322
+ return [...skills];
323
+ }
324
+
100
325
  export function formatSkillGateBlock(result = {}) {
101
326
  const m = result.missingSkills || [], r = result.recoveryMissing || [], reasons = result.reasons || [];
102
327
  return ['=== ARIA SKILL AUTOLOAD GATE BLOCK ===', `surface: ${result.surface || 'unknown'}`, `missing_skills: ${m.length ? m.join(', ') : '(none)'}`, `missing_recovery_cycle: ${r.length ? r.join(', ') : '(none)'}`, `required_skills: ${(result.requiredSkills || []).join(', ') || '(none)'}`, reasons.length ? `reasons: ${reasons.join(' | ')}` : 'reasons: no classifier reason recorded', 'Recovery contract:', '1. Do not retry the same blocked text.', `2. Load missing skills first: ${m.length ? m.join(', ') : '(none)'}`, `3. Repair missing recovery cycle items: ${r.length ? r.join(', ') : '(none)'}`, '4. Re-write with concrete proof and an applied_cognition block:', '<applied_cognition>', 'decision_delta: <what changed after the block>', 'dominant_domain: <deploy|code|security|testing|ops|product|writing>', 'binds_to: <specific file, command, endpoint, or user instruction>', 'expected_predicate: <measurable condition such as exit=0, status=healthy, count=N>', 'artifact_change: <exact artifact changed or none>', '</applied_cognition>', '5. Re-test using the concrete command/probe named in the block.', '6. Re-submit only after the proof exists; if blocked twice, escalate through ARIA console/MCP with this full block.'].join('\n');