@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,185 @@
1
+ #!/usr/bin/env node
2
+ // self-test-stop-gate-kernel-guards — exercises the G1/G6 kernel-driven
3
+ // guards by stdin-driving aria-stop-gate.mjs with synthetic Stop events.
4
+ //
5
+ // Bypasses every non-kernel block trigger (mizan, drift, code-quality,
6
+ // domain, discovery, impl-coupling, substrate) by setting environment
7
+ // vars and providing inputs that none of them flag, leaving the kernel
8
+ // guard as the only possible source of a block decision.
9
+ //
10
+ // Doctrine: this is the load-bearing proof that G1/G6 fire as designed.
11
+ // Without it the guards are parse-checked only — and parse is not
12
+ // behavior. Per plan §12 G1/G6 receipts + the close-the-gap commitment
13
+ // 2026-05-17, this completes the first-class triplet (thinking +
14
+ // implementation + accountability).
15
+
16
+ import { spawnSync } from 'node:child_process';
17
+ import { resolve, dirname } from 'node:path';
18
+ import { fileURLToPath } from 'node:url';
19
+
20
+ const HERE = dirname(fileURLToPath(import.meta.url));
21
+ const HOOK_PATH = resolve(HERE, '..', '..', '..', 'ops', 'claude-hooks', 'aria-stop-gate.mjs');
22
+
23
+ let pass = 0;
24
+ let fail = 0;
25
+
26
+ function ok(name) { console.log(` ok - ${name}`); pass += 1; }
27
+ function bad(name, detail) { console.log(` FAIL- ${name}\n ${detail}`); fail += 1; }
28
+
29
+ function runStopGate({ userText, assistantText, env = {} }) {
30
+ // The hook reads its event from stdin (Claude Code's hook protocol).
31
+ // It looks up the assistant text from the transcript by sessionId. To
32
+ // avoid wiring a fake transcript, we set the assistant text via the
33
+ // synthetic test env var that the hook respects when present (the
34
+ // kernel guards read assistantText after universal-turn-packet has run
35
+ // — we short-circuit by providing both fields directly in the event).
36
+ const event = {
37
+ session_id: 'self-test-' + Date.now(),
38
+ transcript_path: '/dev/null',
39
+ hook_event_name: 'Stop',
40
+ stop_hook_active: false,
41
+ // Synthetic transcript injection: the test harness convention is
42
+ // that test_assistant_text + test_user_text override the message
43
+ // window load when ARIA_STOP_GATE_TEST_MODE=1 is set.
44
+ test_assistant_text: assistantText,
45
+ test_user_text: userText,
46
+ };
47
+ const child = spawnSync('node', [HOOK_PATH], {
48
+ input: JSON.stringify(event),
49
+ env: {
50
+ ...process.env,
51
+ ARIA_STOP_GATE_TEST_MODE: '1',
52
+ ARIA_STOP_GATE_SKIP_NETWORK: '1',
53
+ // Force-disable every non-kernel block so the only block source is G1/G6:
54
+ ARIA_DRIFT_TRIGGER_MAP_PATH: '/dev/null',
55
+ ARIA_STOP_GATE_SKIP_VALIDATE_OUTPUT: '1',
56
+ ARIA_STOP_GATE_SKIP_HIVE_LOOKUP: '1',
57
+ ...env,
58
+ },
59
+ encoding: 'utf8',
60
+ timeout: 10000,
61
+ });
62
+ return {
63
+ exitCode: child.status,
64
+ stdout: child.stdout || '',
65
+ stderr: child.stderr || '',
66
+ };
67
+ }
68
+
69
+ // ─── Test 1 (control): well-formed substantive emit should NOT block on kernel
70
+ //
71
+ // The hook may still block on cognition-presence (non-trivial emit lacking
72
+ // <cognition> block). To isolate the kernel guard outcome we keep the
73
+ // assistantText below NON_TRIVIAL_MIN_CHARS=300 and accept exit=0 as proof
74
+ // the kernel did not force_reauthor.
75
+ const t1 = runStopGate({
76
+ userText: 'continue with G1',
77
+ assistantText: 'wired G1 helper, ran self-test, exit 0',
78
+ });
79
+ if (t1.exitCode === 0) {
80
+ ok('benign short emit passes (kernel does not block well-formed output)');
81
+ } else {
82
+ bad('benign short emit passes', `exit=${t1.exitCode}, stderr=${t1.stderr.slice(0, 300)}`);
83
+ }
84
+
85
+ // ─── Test 2: explicit ARIA_KERNEL_GATE_DISABLE bypasses the guard
86
+ const t2 = runStopGate({
87
+ userText: 'continue',
88
+ assistantText: 'you are right, done, shipped',
89
+ env: { ARIA_KERNEL_GATE_DISABLE: '1' },
90
+ });
91
+ // With kernel guard disabled and the rest of the hook short-circuited by the
92
+ // test-mode flag, exit should be non-2 (kernel guard didn't fire).
93
+ if (t2.exitCode !== 2 || !/Kernel behavioral guard/.test(t2.stderr)) {
94
+ ok('ARIA_KERNEL_GATE_DISABLE=1 suppresses the G1 violation entry');
95
+ } else {
96
+ bad('ARIA_KERNEL_GATE_DISABLE=1 suppresses guard', `still saw kernel guard violation in stderr`);
97
+ }
98
+
99
+ // ─── Test 3: helper-level integration — load the live helper that the hook
100
+ //
101
+ // uses and assert it returns force_reauthor for each failure class plus
102
+ // allow for the benign case. This is the contract the hook depends on.
103
+ const { evaluateWithKernel } = await import(resolve(HERE, '..', 'runtime-src', 'lib', 'evaluate-with-kernel.mjs'));
104
+
105
+ const t3a = evaluateWithKernel({
106
+ surface: 'self-test', phase: 'stop',
107
+ observation: { kind: 'output_emit', source: 'claude-code-stop', severity: 'high',
108
+ summary: 'shipped, all green',
109
+ attrs: { hasCompletionLang: true, hasVerifyBlock: false, evidenceAnchorCount: 0 } },
110
+ evidence: [],
111
+ });
112
+ if (t3a.decision === 'force_reauthor' && t3a.classification.action_class === 'claim_without_evidence') {
113
+ ok('claim_without_evidence input → force_reauthor');
114
+ } else {
115
+ bad('claim_without_evidence input → force_reauthor',
116
+ `got decision=${t3a.decision} class=${t3a.classification.action_class}`);
117
+ }
118
+
119
+ const t3b = evaluateWithKernel({
120
+ surface: 'self-test', phase: 'stop',
121
+ observation: { kind: 'output_emit', source: 'claude-code-stop', severity: 'low',
122
+ summary: 'you are right',
123
+ attrs: { hasAgreementLang: true, evidenceAnchorCount: 0 } },
124
+ evidence: [],
125
+ });
126
+ if (t3b.decision === 'force_reauthor' && t3b.classification.action_class === 'sycophancy_shape') {
127
+ ok('sycophancy_shape input → force_reauthor');
128
+ } else {
129
+ bad('sycophancy_shape input → force_reauthor',
130
+ `got decision=${t3b.decision} class=${t3b.classification.action_class}`);
131
+ }
132
+
133
+ const t3c = evaluateWithKernel({
134
+ surface: 'self-test', phase: 'stop_goal_contract',
135
+ observation: { kind: 'goal_contract_eval', source: 'claude-output-vs-prompt', severity: 'low',
136
+ summary: 'let me explain the architecture and how all the components fit together. The system has a kernel, a coach, and a set of hooks. The kernel evaluates observations. The coach forwards decisions. The hooks fire on lifecycle events. Each layer talks to the next. The decision logic flows from the runtime to the gate to the recovery prose. There is no advance verb in this entire description — it is purely mechanism. The user asked for continuation but this response explains the mechanism instead of advancing concrete state. Long-enough to exceed the textLength guard.',
137
+ // textLength > 500 required (kernel guard against short planning text false-positives)
138
+ attrs: { continuationRequested: true, hasAdvanceLang: false, textLength: 800 } },
139
+ evidence: [],
140
+ });
141
+ if (t3c.decision === 'force_reauthor' && t3c.classification.action_class === 'mechanism_description_only') {
142
+ ok('mechanism_description_only input → force_reauthor');
143
+ } else {
144
+ bad('mechanism_description_only input → force_reauthor',
145
+ `got decision=${t3c.decision} class=${t3c.classification.action_class}`);
146
+ }
147
+
148
+ const t3d = evaluateWithKernel({
149
+ surface: 'self-test', phase: 'stop',
150
+ observation: { kind: 'output_emit', source: 'claude-code-stop', severity: 'low',
151
+ summary: 'wired G1, ran tests, exit 0',
152
+ attrs: { hasAdvanceLang: true, hasVerifyBlock: true, lensCount: 8, codeBlockCount: 1, evidenceAnchorCount: 3 } },
153
+ evidence: [
154
+ { anchor_type: 'command', source: 'bash', observed: 'exit 0' },
155
+ { anchor_type: 'command', source: 'sync_gate', observed: 'vendor=atlas' },
156
+ ],
157
+ });
158
+ if (t3d.decision === 'allow' && t3d.classification.action_class === 'output_emit_ok') {
159
+ ok('substantive well-formed input → allow + output_emit_ok');
160
+ } else {
161
+ bad('substantive well-formed input → allow', `got decision=${t3d.decision} class=${t3d.classification.action_class}`);
162
+ }
163
+
164
+ // ─── Test 4: deterministic_hash — identical input produces identical receipt
165
+ const t4a = evaluateWithKernel({
166
+ surface: 'self-test', phase: 'stop',
167
+ observation: { kind: 'output_emit', source: 'claude-code-stop', summary: 'x',
168
+ attrs: { hasCompletionLang: true, hasVerifyBlock: false, evidenceAnchorCount: 0 } },
169
+ evidence: [],
170
+ });
171
+ const t4b = evaluateWithKernel({
172
+ surface: 'self-test', phase: 'stop',
173
+ observation: { kind: 'output_emit', source: 'claude-code-stop', summary: 'x',
174
+ attrs: { hasCompletionLang: true, hasVerifyBlock: false, evidenceAnchorCount: 0 } },
175
+ evidence: [],
176
+ });
177
+ if (t4a.receiptHash === t4b.receiptHash) {
178
+ ok('deterministic_hash invariant: identical input → identical receiptHash');
179
+ } else {
180
+ bad('deterministic_hash', `${t4a.receiptHash} != ${t4b.receiptHash}`);
181
+ }
182
+
183
+ console.log();
184
+ console.log(`stop-gate G1/G6 integration: ${pass} pass, ${fail} fail`);
185
+ process.exit(fail === 0 ? 0 : 1);
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Stop-gate regression test (M1.1 — Bug A fix).
4
+ *
5
+ * Doctrine bind:
6
+ * - feedback_no_graceful_degradation.md — gate must block, not warn-and-pass
7
+ * - EIGHT_LENS_DOCTRINE.md — fallback catcher when coach didn't drive
8
+ * - aria-repo-doctrine — verify path of truth, real proof not stub
9
+ *
10
+ * Validates structural contract of emitRecoverableStopGate:
11
+ * 1. Recovery file payload's internal `decision` is 'block' (consistency w/ gate)
12
+ * 2. Console emit uses `decision: 'block'` (NOT 'allow' — that was Bug A)
13
+ * 3. Reason text wraps via buildForceReauthorReason (FORCE_REAUTHOR header)
14
+ * 4. Loop-directive is applied (repeat-protection)
15
+ * 5. Recovery file IS still written (M1.2 + M3.1 deliver it next turn)
16
+ *
17
+ * Live behavioral verification happens in M4.5 (Phase 4) via real Claude Code session.
18
+ */
19
+
20
+ import assert from 'node:assert/strict';
21
+ import { readFileSync } from 'node:fs';
22
+ import { join } from 'node:path';
23
+
24
+ const repoRoot = join(import.meta.dirname, '..', '..', '..');
25
+ const stopGatePath = join(repoRoot, 'ops', 'claude-hooks', 'aria-stop-gate.mjs');
26
+ const source = readFileSync(stopGatePath, 'utf8');
27
+ const forceReauthorTemplatePath = join(repoRoot, 'ops', 'claude-hooks', 'recovery-templates', 'force-reauthor.md');
28
+ const forceReauthorTemplate = readFileSync(forceReauthorTemplatePath, 'utf8');
29
+
30
+ // ── 1. Recovery contract internal `decision` field is 'block' ──────────────
31
+ // The recovery JSON written to disk now reflects the gate's blocking semantics.
32
+ const recoveryDecisionMatches = source.match(/decision:\s*'block'/g) || [];
33
+ assert.ok(
34
+ recoveryDecisionMatches.length >= 2,
35
+ `Expected at least 2 decision:'block' occurrences (recovery payload + emit), found ${recoveryDecisionMatches.length}`,
36
+ );
37
+
38
+ // -- 2. Stop hook emit uses protocol-valid decision:'block' (Bug A + M9.DRIFT.10t)
39
+ // The OLD Bug A code emitted allow. The later M9.DRIFT.10t fix also moved
40
+ // emission behind emitStopHookDecision so Stop-hook stdout cannot contain
41
+ // Claude-Code-invalid root keys such as hookSpecificOutput.
42
+ const emitBlockRx = /emitStopHookDecision\(\{\s*\n?\s*decision:\s*'block',[\s\S]*?reason:\s*\w+/;
43
+ assert.match(
44
+ source,
45
+ emitBlockRx,
46
+ 'emitRecoverableStopGate must emit protocol-valid decision:"block" with a reason field',
47
+ );
48
+
49
+ // Negative check: no decision:'allow' inside emitRecoverableStopGate's body
50
+ // (allow lives ONLY in audit-log POST bodies for plan-complete success — different code path)
51
+ // Slice from `function emitRecoverableStopGate` to the next top-level `// Lens substance check` comment
52
+ const fnStart = source.indexOf('function emitRecoverableStopGate');
53
+ const fnEnd = source.indexOf('// Lens substance check', fnStart);
54
+ assert.ok(fnStart > 0 && fnEnd > fnStart, 'Could not locate emitRecoverableStopGate function bounds');
55
+ const recoverableFnSlice = source.slice(fnStart, fnEnd);
56
+ assert.doesNotMatch(
57
+ recoverableFnSlice,
58
+ /decision:\s*'allow'/,
59
+ 'emitRecoverableStopGate must NOT contain decision:"allow" anymore (Bug A)',
60
+ );
61
+
62
+ // ── 3. Reason text wraps via buildForceReauthorReason ──────────────────────
63
+ assert.match(
64
+ recoverableFnSlice,
65
+ /buildForceReauthorReason\s*\(\s*\{[\s\S]*?source[\s\S]*?reason[\s\S]*?\}\s*\)/,
66
+ 'Emit must call buildForceReauthorReason to produce the FORCE_REAUTHOR reason text',
67
+ );
68
+
69
+ // Check idempotency guard (don't double-wrap if reason already wrapped)
70
+ assert.match(
71
+ recoverableFnSlice,
72
+ /ARIA FORCE_REAUTHOR/,
73
+ 'Idempotency check for already-wrapped FORCE_REAUTHOR reason must be present',
74
+ );
75
+
76
+ // ── 4. withLoopDirective is wired ──────────────────────────────────────────
77
+ assert.match(
78
+ recoverableFnSlice,
79
+ /withLoopDirective\s*\(/,
80
+ 'Emit must call withLoopDirective for repeat-protection',
81
+ );
82
+
83
+ // ── 5. Recovery file write is preserved ─────────────────────────────────────
84
+ assert.match(
85
+ recoverableFnSlice,
86
+ /writeFileSync\s*\(\s*CURRENT_RECOVERY_PATH/,
87
+ 'Recovery file write must be preserved — M1.2 + M3.1 read it next turn',
88
+ );
89
+
90
+ // -- 6. buildForceReauthorReason uses the hot-reloadable FORCE_REAUTHOR template
91
+ assert.match(
92
+ source,
93
+ /function buildForceReauthorReason\s*\(/,
94
+ 'buildForceReauthorReason function must exist',
95
+ );
96
+ assert.match(
97
+ source,
98
+ /renderTemplateRequired\('force-reauthor'/,
99
+ 'buildForceReauthorReason must render the force-reauthor recovery template',
100
+ );
101
+ assert.match(
102
+ source,
103
+ /ARIA FORCE_REAUTHOR \(FAIL-CLOSED\)/,
104
+ 'buildForceReauthorReason must preserve a fail-closed FORCE_REAUTHOR fallback',
105
+ );
106
+ assert.match(
107
+ forceReauthorTemplate,
108
+ /=== ARIA FORCE_REAUTHOR ===/,
109
+ 'force-reauthor template must produce the FORCE_REAUTHOR header',
110
+ );
111
+ assert.match(
112
+ forceReauthorTemplate,
113
+ /=== END FORCE_REAUTHOR ===/,
114
+ 'force-reauthor template must produce the FORCE_REAUTHOR footer',
115
+ );
116
+ // -- 7. governance recovery fingerprint is delivered without invalid Stop-hook root keys
117
+ assert.doesNotMatch(
118
+ recoverableFnSlice,
119
+ /hookSpecificOutput\s*:/,
120
+ 'Stop-hook output must not include hookSpecificOutput; Claude Code accepts it only for SessionStart',
121
+ );
122
+ assert.match(
123
+ recoverableFnSlice,
124
+ /governance_recovery[\s\S]*?fingerprint/,
125
+ 'Emit must include governance_recovery fingerprint in the reason for downstream consumers',
126
+ );
127
+
128
+ console.log('OK self-test-stop-gate (M1.1 regression checks pass)');
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env node
2
+ import assert from 'node:assert/strict';
3
+
4
+ const runtimeUrl = process.env.ARIA_RUNTIME_URL || 'http://127.0.0.1:4319';
5
+
6
+ const body = {
7
+ surface: 'codex',
8
+ surfaceId: 'substrate-kernel-execution-self-test',
9
+ sessionId: `substrate-kernel-execution-self-test-${Date.now()}`,
10
+ task: 'self-test substrate kernel execution receipt compact prompt',
11
+ docs: [{ title: 'self-test', content: 'force universal substrate packet' }],
12
+ files: {},
13
+ metadata: {
14
+ source: 'self-test-substrate-kernel-execution-receipt',
15
+ universalTurnPacket: true,
16
+ skillExecutionMode: 'mechanical-receipt',
17
+ requiredSkills: [
18
+ 'aria-cognition-autofire',
19
+ 'tadabbur',
20
+ 'qiyas-analogy',
21
+ 'mizan',
22
+ 'aria-quality-audit',
23
+ 'aria-harness-substrate-binding',
24
+ ],
25
+ },
26
+ skillExecutionMode: 'mechanical-receipt',
27
+ };
28
+
29
+ async function buildSystemPromptWithRetry() {
30
+ const endpoint = `${runtimeUrl.replace(/\/+$/, '')}/build-system-prompt`;
31
+ let lastError = null;
32
+ for (let attempt = 1; attempt <= 4; attempt += 1) {
33
+ try {
34
+ const response = await fetch(endpoint, {
35
+ method: 'POST',
36
+ headers: { 'content-type': 'application/json' },
37
+ body: JSON.stringify(body),
38
+ });
39
+ if (response.ok || attempt === 4) return response;
40
+ lastError = new Error(`runtime /build-system-prompt status=${response.status}`);
41
+ } catch (error) {
42
+ lastError = error;
43
+ }
44
+ await new Promise((resolve) => setTimeout(resolve, 300 * attempt));
45
+ }
46
+ throw lastError || new Error('runtime /build-system-prompt did not return a response');
47
+ }
48
+
49
+ const response = await buildSystemPromptWithRetry();
50
+
51
+ assert.equal(response.ok, true, `runtime /build-system-prompt status=${response.status}`);
52
+ const data = await response.json();
53
+ const receipt = data.skillExecutionReceipt || {};
54
+ const substrate = receipt.substrateKernelExecution || {};
55
+ const sentinel = substrate.sentinelKernel || {};
56
+ const siblingBroadcast = data.hiveSiblingSessionBroadcast || receipt.hiveSiblingSessionBroadcast || {};
57
+ const atlasTurn = data.atlasTurnInjectionReceipt || {};
58
+ const prompt = String(data.prompt || '');
59
+ const phaseExecutionReceipts = Array.isArray(substrate.phaseExecutionReceipts)
60
+ ? substrate.phaseExecutionReceipts
61
+ : [];
62
+ const cognitiveOperatorManifests = Array.isArray(receipt.cognitiveOperatorManifests)
63
+ ? receipt.cognitiveOperatorManifests
64
+ : [];
65
+ const turnCapabilityGrant = receipt.turnCapabilityGrant || {};
66
+ const daemonPassport = substrate.sentinelDaemonPassport || {};
67
+
68
+ assert.equal(data.ok, true, 'prompt build ok');
69
+ assert.equal(receipt.ok, true, 'skill execution receipt ok');
70
+ assert.equal(substrate.ok, true, 'substrate kernel execution receipt ok');
71
+ assert.equal(substrate.mode, 'deterministic_sidecar_kernel', 'deterministic sidecar mode');
72
+ assert.ok(Array.isArray(receipt.executedSkillIds), 'executedSkillIds present');
73
+ assert.ok(receipt.executedSkillIds.length >= body.metadata.requiredSkills.length, 'required skills executed');
74
+ assert.ok(Array.isArray(substrate.executedOperatorIds), 'executedOperatorIds present');
75
+ assert.ok(substrate.executedOperatorIds.length >= receipt.executedSkillIds.length, 'operator execution covers skills');
76
+ assert.equal(sentinel.acceptance?.tadabbur_12, true, 'Sentinel Tadabbur-12 acceptance');
77
+ assert.equal(sentinel.acceptance?.qiyas_15, true, 'Sentinel Qiyas-15 acceptance');
78
+ assert.equal(sentinel.acceptance?.deterministic_hash, true, 'Sentinel deterministic hash acceptance');
79
+ assert.equal(daemonPassport?.schema, 'aria.daemon.capability_passport.v1', 'daemon capability passport schema is present');
80
+ assert.equal(typeof daemonPassport.passportHash, 'string', 'daemon capability passport hash is present');
81
+ assert.equal(Array.isArray(cognitiveOperatorManifests), true, 'cognitive operator manifests are present');
82
+ assert.ok(cognitiveOperatorManifests.length >= receipt.executedSkillIds.length, 'operator manifests cover executed skills');
83
+ assert.equal(typeof turnCapabilityGrant, 'object', 'turn capability grant is present as object');
84
+ assert.equal(turnCapabilityGrant === null || Array.isArray(turnCapabilityGrant), false, 'turn capability grant is not null array');
85
+ assert.equal(turnCapabilityGrant?.schema, 'aria.turn_capability_grant.v1', 'turn capability grant schema is present');
86
+ assert.equal(turnCapabilityGrant?.ok, true, 'turn capability grant is ok');
87
+ assert.equal(typeof turnCapabilityGrant?.grantHash, 'string', 'turn capability grant hash is present');
88
+ assert.equal(typeof turnCapabilityGrant?.passportHash, 'string', 'turn capability grant passport hash is present');
89
+ assert.equal(phaseExecutionReceipts.length, 6, 'phase execution receipts contain six phase entries');
90
+ assert.ok(phaseExecutionReceipts.every((receipt) => receipt?.schema === 'aria.phase_execution_receipt.v1'), 'all phase receipts use phase execution receipt schema');
91
+ assert.ok(phaseExecutionReceipts.every((r) => r?.ok === true), 'all phase receipts are ok');
92
+ assert.ok(phaseExecutionReceipts.every((r) => typeof r?.inputHash === 'string'), 'all phase receipts include inputHash');
93
+ assert.ok(phaseExecutionReceipts.every((r) => typeof r?.outputHash === 'string'), 'all phase receipts include outputHash');
94
+ assert.ok(phaseExecutionReceipts.every((r) => typeof r?.decisionDelta === 'string' && r.decisionDelta.length > 20), 'all phase receipts include substantive decisionDelta');
95
+ assert.ok(phaseExecutionReceipts.every((r) => typeof r?.outputDelta === 'string' && r.outputDelta.length > 20), 'all phase receipts include substantive outputDelta');
96
+ assert.ok(phaseExecutionReceipts.every((r) => typeof r?.verificationPredicate === 'string'), 'all phase receipts include verificationPredicate');
97
+ assert.ok(phaseExecutionReceipts.every((r) => Array.isArray(r?.evidenceRefs) && r.evidenceRefs.length > 0), 'all phase receipts include evidenceRefs array');
98
+
99
+ assert.equal(siblingBroadcast.ok, true, 'Hive sibling-session broadcast receipt ok');
100
+ assert.ok(Number(siblingBroadcast.messageCount || 0) >= 1, 'Hive sibling-session broadcast has at least one compact message');
101
+ assert.ok(prompt.includes('hiveSiblingSessionBroadcast'), 'provider prompt includes compact Hive sibling-session broadcast projection');
102
+ assert.equal(atlasTurn.schema, 'aria.atlas_sentinel_turn_injection.v1', 'Atlas/Sentinel turn injection schema is present');
103
+ assert.equal(typeof atlasTurn.receiptHash, 'string', 'Atlas/Sentinel turn injection hash is present');
104
+ assert.equal(atlasTurn.providerProjection?.atlas?.liveAwarenessSource, 'atlas-hot-watcher', 'Atlas hot watcher is the per-turn live awareness source');
105
+ assert.equal(atlasTurn.providerProjection?.atlas?.liveOverlaySource, 'atlas-hot-watcher', 'Atlas hot watcher is the per-turn live overlay source');
106
+ assert.ok(prompt.includes('ARIA ATLAS/SENTINEL/HIVE TURN INJECTION'), 'provider prompt includes Atlas/Sentinel/Hive turn injection block');
107
+ assert.ok(prompt.includes('atlas-hot-watcher'), 'provider prompt names the Atlas-owned hot watcher source');
108
+ assert.ok(prompt.includes('sentinelNotifications'), 'provider prompt includes Sentinel notification projection');
109
+ assert.ok(prompt.includes('thinDossierCount'), 'provider prompt includes Atlas dossier thinness projection');
110
+ assert.equal(prompt.includes('<skill_content '), false, 'prompt does not include full skill bodies');
111
+ assert.equal(prompt.includes('ARIA RUNTIME FORCED SKILL LOAD'), false, 'prompt does not include forced skill body block');
112
+ assert.ok(prompt.length < 75000, `compact prompt budget: ${prompt.length}`);
113
+
114
+ console.log(JSON.stringify({
115
+ ok: true,
116
+ promptChars: prompt.length,
117
+ executedSkillCount: receipt.executedSkillIds.length,
118
+ executedOperatorCount: substrate.executedOperatorIds.length,
119
+ cognitiveOperatorManifestCount: cognitiveOperatorManifests.length,
120
+ phaseExecutionReceiptCount: phaseExecutionReceipts.length,
121
+ turnCapabilityGrantHash: turnCapabilityGrant.grantHash,
122
+ daemonPassportHash: daemonPassport.passportHash,
123
+ hiveSiblingBroadcastCount: siblingBroadcast.messageCount,
124
+ atlasTurnInjectionHash: atlasTurn.receiptHash,
125
+ atlasLiveAwarenessSource: atlasTurn.providerProjection?.atlas?.liveAwarenessSource,
126
+ atlasLiveOverlaySource: atlasTurn.providerProjection?.atlas?.liveOverlaySource,
127
+ atlasThinDossierCount: atlasTurn.providerProjection?.thinDossierCount,
128
+ sentinelCompilationHash: sentinel.compilationHash,
129
+ executionHash: substrate.executionHash,
130
+ }, null, 2));
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'node:fs';
3
+ import { resolve } from 'node:path';
4
+
5
+ const repoRoot = resolve(import.meta.dirname, '../../..');
6
+ const runtimePath = resolve(repoRoot, 'packages/aria-connector/runtime-src/service.mjs');
7
+ const governedSurfacePath = resolve(repoRoot, 'packages/aria-connector/src/governed-surface-runner.ts');
8
+ const runtimeSource = readFileSync(runtimePath, 'utf8');
9
+ const governedSurfaceSource = readFileSync(governedSurfacePath, 'utf8');
10
+
11
+ function fail(message) {
12
+ console.error(`[substrate-open-skill-floor] FAIL ${message}`);
13
+ process.exitCode = 1;
14
+ }
15
+
16
+ function extractNumberConstant(source, name) {
17
+ const match = source.match(new RegExp(`const\\s+${name}\\s*=\\s*(\\d+)\\s*;`));
18
+ return match ? Number(match[1]) : null;
19
+ }
20
+
21
+ function extractStringArray(source, name) {
22
+ const match = source.match(new RegExp(`${name}[^=]*=\\s*Object\\.freeze\\(\\[([\\s\\S]*?)\\]\\)`, 'm'));
23
+ if (!match) return null;
24
+ return Array.from(match[1].matchAll(/'([^']+)'/g), (item) => item[1]);
25
+ }
26
+
27
+ function assertUnique(values, label) {
28
+ const duplicates = values.filter((value, index) => values.indexOf(value) !== index);
29
+ if (duplicates.length) fail(`${label} contains duplicates: ${[...new Set(duplicates)].join(', ')}`);
30
+ }
31
+
32
+ const runtimeFloor = extractNumberConstant(runtimeSource, 'UNIVERSAL_MECHANICAL_PACKET_SKILL_FLOOR');
33
+ const runtimeSkills = extractStringArray(runtimeSource, 'UNIVERSAL_MECHANICAL_PACKET_SKILL_IDS');
34
+ const governedFloor = extractNumberConstant(governedSurfaceSource, 'UNIVERSAL_TURN_PACKET_SKILL_FLOOR');
35
+ const governedSkills = extractStringArray(governedSurfaceSource, 'UNIVERSAL_TURN_PACKET_SKILLS');
36
+
37
+ if (runtimeFloor !== 50) fail(`runtime floor must be 50, got ${runtimeFloor}`);
38
+ if (governedFloor !== 50) fail(`governed-surface floor must be 50, got ${governedFloor}`);
39
+ if (!Array.isArray(runtimeSkills)) fail('runtime universal mechanical skill list missing');
40
+ if (!Array.isArray(governedSkills)) fail('governed universal turn skill list missing');
41
+
42
+ if (Array.isArray(runtimeSkills) && Array.isArray(governedSkills)) {
43
+ assertUnique(runtimeSkills, 'runtime universal mechanical skill list');
44
+ assertUnique(governedSkills, 'governed universal turn skill list');
45
+ if (runtimeSkills.length < 50) fail(`runtime universal skill list below floor: ${runtimeSkills.length}`);
46
+ const missingFromRuntime = governedSkills.filter((skillId) => !runtimeSkills.includes(skillId));
47
+ const extraRuntimeSkills = runtimeSkills.filter((skillId) => !governedSkills.includes(skillId));
48
+ if (missingFromRuntime.length) fail(`runtime floor missing governed skills: ${missingFromRuntime.join(', ')}`);
49
+ if (extraRuntimeSkills.length) fail(`runtime floor has skills outside governed source: ${extraRuntimeSkills.join(', ')}`);
50
+ }
51
+
52
+ if (!runtimeSource.includes('function buildUniversalMechanicalRequiredSkillIds(')) {
53
+ fail('universal mechanical required-skill builder missing');
54
+ }
55
+ if (!runtimeSource.includes('function buildUniversalMechanicalSkillFloorReceipt(')) {
56
+ fail('universal mechanical floor receipt missing');
57
+ }
58
+
59
+ const substrateOpenMatch = runtimeSource.match(/async function buildSubstrateOpenPacket\(body = \{\}\) \{([\s\S]*?)\n\}\n\nasync function handleSubstrateRoute/);
60
+ if (!substrateOpenMatch) {
61
+ fail('buildSubstrateOpenPacket body not found');
62
+ } else {
63
+ const body = substrateOpenMatch[1];
64
+ if (!body.includes('buildUniversalMechanicalRequiredSkillIds(')) {
65
+ fail('/substrate/open does not use universal mechanical required-skill builder');
66
+ }
67
+ if (!body.includes('buildUniversalMechanicalSkillFloorReceipt(requiredSkillIds, \'substrate-open\')')) {
68
+ fail('/substrate/open does not emit a universal mechanical floor receipt');
69
+ }
70
+ if (!body.includes('skillFloorMet')) {
71
+ fail('/substrate/open provider projection does not expose skillFloorMet');
72
+ }
73
+ if (!body.includes('required_skill_count=${requiredSkillIds.length}')) {
74
+ fail('/substrate/open additionalContext does not expose required_skill_count');
75
+ }
76
+ }
77
+
78
+ if (!process.exitCode) {
79
+ console.log(JSON.stringify({
80
+ ok: true,
81
+ runtimeFloor,
82
+ runtimeSkillCount: runtimeSkills.length,
83
+ governedFloor,
84
+ governedSkillCount: governedSkills.length,
85
+ route: '/substrate/open',
86
+ }, null, 2));
87
+ }