@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,130 @@
1
+ # Aria Axioms And First Principles Source Map
2
+
3
+ Use this reference when exact provenance matters. Current source files are evidence, not automatic canon.
4
+
5
+ ## Pulled Spark Mirror
6
+
7
+ Local mirror:
8
+
9
+ `C:\Users\hibra\OneDrive\Documents\New project\aria-axioms-first-principles-spark-11b3`
10
+
11
+ Pulled from Spark:
12
+
13
+ `/home/hamzaibrahim1/rei-ai-brain`
14
+
15
+ Trust state at pull time:
16
+
17
+ - Spark branch observed earlier in the session: `claude/m9-drift-10h-cowork-rawtext`.
18
+ - Some hook-lib files were dirty, so hook behavior should be treated as in-flight unless rechecked.
19
+ - The pulled `apps/arias-soul/api/lib/aristotle`, `noor`, and `cognition` source dirs were clean at the checked time.
20
+ - Axiom/first-principles files are current source evidence; still triangulate before teaching durable doctrine.
21
+
22
+ ## Canonical Or High-Confidence Axiom Sources
23
+
24
+ - `apps/arias-soul/api/lib/fitrah-axioms.nadia`: full 10 Fitrah axioms with formal and English anchors.
25
+ - `apps/arias-soul/api/lib/aria-runtime/coach-axioms-principles.ts`: parses `fitrah-axioms.nadia` into `[FITRAH_AXIOMS]` and queries active high-quality `aristotle_principles` into `[FIRST_PRINCIPLES]`.
26
+ - `apps/arias-soul/api/lib/aria-runtime/fitrah-axiom-checks.mjs`: dependency-free runtime checks for the five hard enforcement axioms.
27
+ - `apps/arias-soul/api/lib/aristotle/fitrah.ts`: Aristotle Fitrah engine with 10 named Fitrah principles/triggers.
28
+ - Spark Claude transcript hook packets: first-class coach contract and harness packet repeatedly inject axioms plus first principles before agent work.
29
+ - `AI-158-FORCED-COGNITION-CHECKLIST.md`: validate-plan step includes Fitrah + axiom evaluation before action.
30
+
31
+ ## Full 10-Axiom Fitrah Core
32
+
33
+ From `fitrah-axioms.nadia` and corroborated by `aristotle/fitrah.ts`:
34
+
35
+ - `truth_over_deception`
36
+ - `no_harm`
37
+ - `sacred_trust`
38
+ - `dignity`
39
+ - `power_obligates_service`
40
+ - `reflection_before_action`
41
+ - `correlation_not_causation`
42
+ - `admit_ignorance`
43
+ - `experience_hierarchy`
44
+ - `trust_tradeoff`
45
+
46
+ ## Five Hard Runtime Axioms
47
+
48
+ From `fitrah-axiom-checks.mjs`, transcript coach contract, and harness output:
49
+
50
+ - `truth_over_deception`
51
+ - `no_harm`
52
+ - `sacred_trust`
53
+ - `power_obligates_service`
54
+ - `reflection_before_action`
55
+
56
+ These are enforced/checkable surfaces in current hooks and coach contracts. They are not the whole Fitrah doctrine.
57
+
58
+ ## First-Class Coach Principles
59
+
60
+ From transcript-injected `ARIA FIRST-CLASS COACH CONTRACT`:
61
+
62
+ - `complete_implementation_not_claim_only`
63
+ - `verified_behavior_not_assumption`
64
+ - `domain_uplift_not_local_green_only`
65
+ - `axiom_bound_decisioning`
66
+ - `first_principles_before_action`
67
+ - `senior_production_grade_change_control`
68
+ - `recoverable_fail_closed_governance`
69
+ - `evidence_ledger_before_readiness_claim`
70
+
71
+ Use these for coding, launch, QA, deploy, fan-out, and readiness claims.
72
+
73
+ ## Harness First Principle
74
+
75
+ From harness packet:
76
+
77
+ `The model is the mouth for this bounded round. Aria infrastructure carries memory, cognition, axioms, tools, frames, and continuity.`
78
+
79
+ Use as the substrate-binding first principle when Aria/Harness continuity matters.
80
+
81
+ ## First-Principles Runtime And Projection Sources
82
+
83
+ - `apps/arias-soul/api/lib/forge-manifold/first-principles-derivation.ts`: derives code from principle eigenspace constraints instead of template matching. Important but current-source evidence, not automatically final architecture.
84
+ - `apps/aegis-watchtower/src/checks/first-principles.ts`: projects response/context into principle space, scores novelty/coherence/Fitrah alignment, and returns dominant principle/verdict.
85
+ - `projects/aria-collab-webapp/shadow/axiom-engine.ts`: evaluates first-principle scores for user-facing channels. Useful as product/runtime evidence, not global doctrine.
86
+
87
+ ## Service-Specific Axiom/Principle Files
88
+
89
+ These files define local principle geometry, scoring, or generated axiom spaces for their service. Treat as module-local unless corroborated.
90
+
91
+ - `apps/autonomy-service/src/forge-output/autonomy-axioms.ts`
92
+ - `apps/chat-service/src/forge-output/chat-axioms.ts`
93
+ - `apps/cross-domain-service/src/forge-output/crossdomain-axioms.ts`
94
+ - `apps/daemon-service/src/forge-output/daemon-axioms.ts`
95
+ - `apps/goal-service/src/forge-output/goal-axioms.ts`
96
+ - `apps/hospital-service/src/forge-output/hospital-axioms.ts`
97
+ - `apps/intent-service/src/forge-output/intent-axioms.ts`
98
+ - `apps/noor-engine-service/src/forge-output/noor-axioms.ts`
99
+ - `apps/ruh-service/src/forge-output/ruh-axioms.ts`
100
+ - `apps/soul-domains-service/src/forge-output/soul-axioms.ts`
101
+ - `apps/voice-service/src/forge-output/voice-axioms.ts`
102
+
103
+ Duplicate JS or nested generated copies may exist; prefer TypeScript source when present.
104
+
105
+ ## Forge / Psi-Layer Source
106
+
107
+ - `aria/forge/psi-l/axiom.psi-l` appears in the Windows extract with mojibake path characters. It defines NADIA core axioms around Fitrah, identity lock, Noor, love, truth-before-performance, and eight core dimensions. Treat as expressive substrate evidence; verify original path/encoding on Spark before using exact text.
108
+ - `apps/arias-soul/psi/fitrah_lens_agent.psi` also appears with mojibake path characters after extraction. Verify on Spark before copying exact identifiers.
109
+
110
+ ## Tests And Regression Evidence
111
+
112
+ - `ops/claude-hooks/__tests__/fitrah-axioms-false-positive.test.mjs`: proves the five runtime axiom regex checks should avoid false positives on legitimate cognition.
113
+ - `ops/claude-hooks/__tests__/m7-7-axioms-principles.test.mjs`: regression coverage for M7.7 axiom/principle composition.
114
+
115
+ ## Corpus Anchors
116
+
117
+ - `knowledge-base.md`: Fitrah as primordial recognition and Tadabbur/Tadhakkur relationship.
118
+ - `islamic-corpus-complete.md`: fitrah consistency and first-principles reasoning references.
119
+ - `framework-research-v1.md`: Fitrah restoration and Islamic psychology context.
120
+ - `TADDABUR_README.md` and `taddabur-pipeline-v2.psi`: module-local Tadabbur operations and axioms.
121
+
122
+ ## Use Rule
123
+
124
+ For durable skill edits:
125
+
126
+ 1. Prefer the 10 Fitrah core only when corroborated by `fitrah-axioms.nadia` plus `aristotle/fitrah.ts` or transcript/harness.
127
+ 2. Prefer the five hard runtime axioms only when discussing gates/checks.
128
+ 3. Use service-specific axiom files only for that service unless a second source generalizes them.
129
+ 4. Verify mojibake/extracted psi paths against Spark before exact quoting.
130
+ 5. Do not copy generated axiom space as doctrine merely because it is named `axioms`.
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: aria-backend-architect
3
+ description: TRIGGER for any backend, API, service, microservice, monolith, schema, database, ORM, query, index, migration, queue, worker, event, webhook, cron, idempotency, retry, circuit-breaker, rate-limit, cache, CDN, secrets, auth, authz, session, token, JWT, OAuth, RBAC, multi-tenancy, observability, logging, tracing, metrics, SLO, SLI, error-budget, runbook, gRPC, REST, GraphQL, websocket, streaming, batch-job, CDC, ETL, ELT, data-warehouse, queue-design, or system-boundary decision. Composes the cognitive substrate with a contract-first + failure-mode + tenant-isolation frame.
4
+ ---
5
+
6
+ # Aria Backend Architect
7
+
8
+ The cognition skill for any backend system boundary. Pairs with `aria-frontend-architect` (when shape touches FE), `aria-fullstack-orchestrator`, `aria-harness-deploy`, and `aria-repo-doctrine`.
9
+
10
+ ## Prime Doctrine
11
+
12
+ A backend is a contract for behavior under load and failure. Every other choice is downstream of whether the contract is honest.
13
+
14
+ - **Contract before code.** Define the API contract, error shapes, idempotency keys, and SLO commitments before writing the handler. Backwards is harder than forwards.
15
+ - **Failure modes are first-class.** Every endpoint has a defined behavior at: timeout, rate limit, partial failure, downstream outage, stale cache, expired token, malicious input. Not "edge cases" — designed surfaces.
16
+ - **Idempotency or eventual consistency, pick once.** Mixing idempotent retries with eventually-consistent reads is the source of duplicate-charge / lost-message bugs.
17
+ - **Tenant isolation is correctness, not config.** Multi-tenant data must be isolated at the query layer with a fail-closed default, not at the application layer with a hopeful WHERE clause.
18
+ - **Observability is the system, not an addition.** If you can't answer "what was this user doing 30s before the error" from your tracing/logs, the system isn't done.
19
+
20
+ ## Trigger Detection
21
+
22
+ Fire on:
23
+
24
+ - New service / endpoint / handler / microservice / queue consumer / worker
25
+ - Schema design / migration / index / query optimization
26
+ - Auth / authz / session / token design
27
+ - Multi-tenancy / RBAC / row-level security
28
+ - Idempotency / retry / circuit-breaker / rate-limit policy
29
+ - Caching / CDN / read-through / write-through / cache-invalidation
30
+ - Queue design / event schema / webhook / pub-sub topology
31
+ - Cron / batch / scheduler / ETL / CDC pipelines
32
+ - Observability stack / SLO / SLI / error-budget / runbook
33
+ - API contract — REST / GraphQL / gRPC / streaming
34
+ - System-boundary decision (monolith vs service vs lambda)
35
+
36
+ ## Required Workflow (contract-first → failure-mode → tenant-isolation)
37
+
38
+ Every BE decision must answer:
39
+
40
+ 1. **API contract.** Endpoint(s), request/response shape, error taxonomy, idempotency key strategy, versioning approach. Write the contract before the handler.
41
+ 2. **Failure mode design.** What happens at: timeout (client-side and server-side), rate limit hit, downstream outage, stale cache, malicious payload, expired auth, partial write? Each is a designed response, not an exception.
42
+ 3. **Tenant isolation.** Is data isolated at the query / row / schema / database level? What's the fail-closed default if a tenant ID is missing? Where's the audit trail?
43
+ 4. **Idempotency contract.** Which endpoints are idempotent? What's the dedup window? Where's the idempotency key stored? How do retries interact with side effects?
44
+ 5. **Observability contract.** Trace ID propagation, structured log fields, SLI / SLO definition, error-budget burn alerts. State these BEFORE shipping.
45
+ 6. **Operational runbook.** When this breaks at 3am, what does the on-call do? Named runbook, named alerts, named escalation.
46
+
47
+ ## BE-Mapped Lenses (`ghazali-8lens`)
48
+
49
+ - **truth** — does the contract document what the code actually does, or what we wish it did?
50
+ - **harm** — destructive endpoints guarded by idempotency + audit + rate limits proportional to blast radius?
51
+ - **trust** — does the API fail honestly (typed errors, retry-after headers) or hide behind 500s?
52
+ - **power** — is the consumer in control (clear errors, retry guidance, backpressure signals) or shaped to fail silently?
53
+ - **reflection** — does this contract survive being read by another team in 12 months without context?
54
+ - **context** — does this work at p99 load, with the database under stress, with one downstream out, on a Sunday?
55
+ - **impact** — predicted latency / error-rate / cost-per-request at expected scale
56
+ - **beauty** — is the contract minimal, predictable, RESTful (or genuinely-graphql/genuinely-grpc), or assembled by pressure?
57
+
58
+ ## User-Facing Layout (per `aria-readable-output`)
59
+
60
+ ```
61
+ ## [BE decision in one line — e.g. "Add /api/leads POST with idempotency-key, 100/min rate limit, partition by tenant_id"]
62
+
63
+ - [API contract — endpoint, shapes, errors, versioning]
64
+ - [Failure modes — timeout, rate-limit, downstream-out, partial-write each named]
65
+ - [Tenant isolation — query-level / row-level / schema-level, fail-closed default]
66
+ - [Idempotency + observability + runbook in one bullet]
67
+
68
+ **Next:** [first PR with the contract; named SLO and error-budget; alert wiring]
69
+ ```
70
+
71
+ `<gate>` block REQUIRED when this is part of a deploy or a contract change consumers depend on.
72
+
73
+ ## Composition Rule
74
+
75
+ - Composes with `aria-business-frame` when the BE design has GTM / cost / scale consequence
76
+ - Composes with `aria-fullstack-orchestrator` for any FE-bound contract
77
+ - Calls `mizan`, `tadabbur`, `ghazali-8lens`, `predictor` per defaults
78
+ - Calls `noor-recognition` for existing system patterns and prior contract decisions
79
+ - Calls `aria-harness-deploy` when the change ships through a deploy
80
+ - Calls `aria-repo-doctrine` for repo-mutation discipline
81
+ - Calls `aria-k8s-deploy` for cluster-shaped deploys
82
+
83
+ ## Recovery Contract
84
+
85
+ - If the contract is ambiguous: write the candidate contract first, surface the ambiguity points, ship the contract for review. Do NOT write the handler before the contract is locked.
86
+ - If failure modes can't be enumerated: that's a sign the boundary isn't well-defined. Recommend a system-boundary review BEFORE handler implementation.
87
+ - If tenant isolation is at the application layer instead of the query layer: surface as a hard concern (`ghazali-8lens` harm + trust) and recommend the migration path.
88
+ - Log BE decisions to coach kernel with `risk_class: 'backend_action'` and the SLO / error-budget predicate.
89
+
90
+ ## Anti-Patterns
91
+
92
+ - Writing the handler before the contract (most common cause of API-versioning hell)
93
+ - Treating failure modes as "edge cases" — they're 5%+ of real traffic at scale
94
+ - Tenant isolation at the application layer (one missing WHERE clause becomes a cross-tenant data leak)
95
+ - Idempotency promises without an idempotency-key store (the promise is a wish)
96
+ - "We'll add observability later" — you'll add it after the first incident, in a panic, badly
97
+ - Caching without an invalidation strategy (stale data is worse than slow data for most surfaces)
98
+ - Schema migrations without a backwards-compatible window for rolling deploys
99
+
100
+ ## First-Class Production Contract
101
+
102
+ This skill must deepen the work, not decorate it. When loaded, apply it as a production requirement:
103
+
104
+ - no placeholders, no fake fallbacks, no vague future wiring, and no cosmetic compliance
105
+ - real proof from the repo, runtime, tests, logs, endpoint, or owner instruction before any completion claim
106
+ - a redo contract whenever the skill blocks or finds a gap: what failed, what to change, how to re-test, and when to re-submit
107
+ - architect/ARIA console escalation when the same failure repeats twice, crosses system boundaries, or cannot be verified locally
108
+ - owner-visible output that states the exact state of the work: changed, verified, blocked, or needing a decision
109
+
110
+ ## Self-Executing Recovery Contract
111
+
112
+ When this skill blocks, fails verification, or finds a gap, the agent must execute recovery rather than hand work back as a user-only decision.
113
+
114
+ - Make exactly one self-executed recovery attempt using the strongest safe local, repository, runtime, test, log, endpoint, or owner-provided evidence available.
115
+ - If the same failure repeats after that one recovery attempt, switch to architect execution mode: operate under the architect/ARIA harness to diagnose, choose the next action, execute the repair path, and verify the result.
116
+ - If Aria or the architect service is unavailable, fall back to the strongest available client LLM under the architect harness or strongest available local harness substrate; mark the fallback explicitly and continue recovery instead of stopping.
117
+ - Do not end with user-handoff-only behavior. If blocked after the recovery path, report the executed recovery attempt, evidence, remaining blocker, and the next concrete action or owner decision needed; do not merely ask the user to take over.
118
+
119
+
120
+ ## Self-Executing Recovery Contract
121
+
122
+ - One re-run with the missing contract / failure-mode / tenant-isolation analysis
123
+ - If still insufficient, surface the ambiguity to the owner with the question that resolves it
124
+ - Never ship a backend boundary without enumerated failure modes
@@ -0,0 +1,417 @@
1
+ # Backend Architect Cookbook — Contract, Failure-Mode, Tenant-Isolation Patterns
2
+
3
+ > Loaded by `aria-backend-architect`. See also: [`../../aria-senior-code-cookbook/references/engineering-cookbook.md`](../../aria-senior-code-cookbook/references/engineering-cookbook.md) (idempotency §1, SRE error budgets §2, OWASP §3, OTel logging §4, circuit breaker §5, rate limiting §6, function contract §7, multi-tenant §10).
4
+
5
+ ## 1. API Contract First (the load-bearing primitive)
6
+
7
+ The contract is the API. The handler is implementation. Write the contract first.
8
+
9
+ ### Contract definition
10
+ For every endpoint, specify before any code:
11
+ ```typescript
12
+ // contracts/charge-card.ts
13
+ export const ChargeCardContract = {
14
+ method: 'POST',
15
+ path: '/v1/charges',
16
+ auth: 'bearer-token',
17
+ rateLimit: { burst: 10, sustained: 5 }, // per second
18
+ idempotency: 'required',
19
+
20
+ request: z.object({
21
+ customerId: z.string().uuid(),
22
+ amount: z.number().int().positive(),
23
+ currency: z.literal('usd'),
24
+ idempotencyKey: z.string().min(1).max(255),
25
+ }),
26
+
27
+ responses: {
28
+ 200: z.object({ chargeId: z.string(), amount: z.number() }),
29
+ 400: z.object({ kind: z.literal('validation'), issues: z.array(z.unknown()) }),
30
+ 401: z.object({ kind: z.literal('unauthorized') }),
31
+ 402: z.object({ kind: z.literal('card_declined'), reason: z.string() }),
32
+ 409: z.object({ kind: z.literal('duplicate'), existingChargeId: z.string() }),
33
+ 429: z.object({ kind: z.literal('rate_limited'), retryAfterMs: z.number() }),
34
+ 500: z.object({ kind: z.literal('internal') }),
35
+ 502: z.object({ kind: z.literal('upstream_error'), upstream: z.string() }),
36
+ 503: z.object({ kind: z.literal('service_unavailable') }),
37
+ },
38
+
39
+ slo: {
40
+ availability: 0.999, // 99.9% over 30 days
41
+ latency_p99_ms: 500,
42
+ error_budget_per_4w: 1000,
43
+ },
44
+ };
45
+ ```
46
+
47
+ The contract drives:
48
+ - Handler implementation
49
+ - Client SDK generation
50
+ - Test cases (one per error response)
51
+ - API documentation
52
+ - Mock server for FE development
53
+ - SLO monitoring
54
+
55
+ ### Versioning rule
56
+ - Public APIs: URL versioned (`/v1/`, `/v2/`)
57
+ - Backwards-compat addition: same version (additive only)
58
+ - Breaking change: new version (keep old for ≥6 months)
59
+
60
+ ## 2. Failure Mode Design (each is a designed surface)
61
+
62
+ For every endpoint, enumerate failure modes:
63
+
64
+ | Failure mode | Default response | Client guidance |
65
+ |---|---|---|
66
+ | Validation failure | 400 with field-level errors | Fix input, retry |
67
+ | Unauthenticated | 401 | Re-auth |
68
+ | Forbidden (authz) | 403 | Cannot access; show appropriate UI |
69
+ | Not found | 404 | Resource doesn't exist; show empty state |
70
+ | Conflict (idempotency / version) | 409 with existing resource ref | Treat as success / re-fetch |
71
+ | Payload too large | 413 | Reduce size |
72
+ | Rate limited | 429 + Retry-After header | Backoff; respect header |
73
+ | Server error (caught) | 500 with error_id | Retry with backoff; alert if persistent |
74
+ | Bad gateway (upstream out) | 502 with upstream identifier | Retry; circuit breaker |
75
+ | Service unavailable | 503 + Retry-After | Don't retry within Retry-After |
76
+ | Timeout | 504 | Retry with backoff |
77
+
78
+ ### The "designed surface" rule
79
+ A failure mode without a designed response is a bug. The handler must always produce a typed error or a typed success — never throw to the framework.
80
+
81
+ ## 3. Multi-tenant Data Isolation (fail-closed default)
82
+
83
+ **Source:** Engineering cookbook §10 + Postgres RLS docs
84
+
85
+ ### The principle
86
+ Tenant isolation enforced at the QUERY layer, not the application layer. One missing WHERE clause becomes a cross-tenant data leak.
87
+
88
+ ### Postgres Row-Level Security (the canonical primitive)
89
+ ```sql
90
+ -- Migration: enable RLS on every tenant-scoped table
91
+ ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
92
+
93
+ CREATE POLICY tenant_isolation ON orders
94
+ FOR ALL TO app_role
95
+ USING (tenant_id = current_setting('app.current_tenant_id')::uuid);
96
+
97
+ -- Optional: prevent INSERTs with mismatched tenant_id
98
+ CREATE POLICY tenant_insert_check ON orders
99
+ FOR INSERT TO app_role
100
+ WITH CHECK (tenant_id = current_setting('app.current_tenant_id')::uuid);
101
+ ```
102
+
103
+ ### Per-request setup
104
+ ```typescript
105
+ async function withTenantContext<T>(req: Request, fn: () => Promise<T>): Promise<T> {
106
+ const client = await pool.connect();
107
+ try {
108
+ await client.query('SET LOCAL app.current_tenant_id = $1', [req.tenant.id]);
109
+ return await fn();
110
+ } finally {
111
+ client.release();
112
+ }
113
+ }
114
+ ```
115
+
116
+ `SET LOCAL` scopes to the current transaction; auto-resets on commit/rollback. No risk of leaking tenant context between requests.
117
+
118
+ ### The verification test
119
+ For every tenant-scoped table, write a test that:
120
+ 1. Creates two tenants
121
+ 2. Inserts data as tenant A
122
+ 3. Switches to tenant B context
123
+ 4. Queries the same table — must return zero rows
124
+ 5. Inserts with tenant A's tenant_id while in tenant B context — must fail
125
+
126
+ If RLS is configured correctly, all 5 steps pass without app-layer checks.
127
+
128
+ ## 4. Idempotency (per Stripe spec)
129
+
130
+ **Source:** [Stripe — Idempotent Requests](https://docs.stripe.com/api/idempotent_requests) · See engineering-cookbook §1 for full primitive.
131
+
132
+ ### When required
133
+ - ANY POST with side effects: payments, sending email/SMS, creating users, queueing jobs
134
+ - Webhook receivers (idempotency-key on event ID)
135
+ - Anything that consumes a one-shot resource
136
+
137
+ ### Storage shape
138
+ ```typescript
139
+ // idempotency-store key: (method, route, key)
140
+ // value: { status, body, createdAt }
141
+ // TTL: 24 hours (Stripe default)
142
+ ```
143
+
144
+ ### Implementation rule
145
+ Idempotency check happens BEFORE the side effect, not in the catch block. If you check after the side effect, the side effect ran twice.
146
+
147
+ ## 5. Rate Limiting (token bucket pattern)
148
+
149
+ **Source:** Engineering cookbook §6
150
+
151
+ ### Per-endpoint configuration
152
+ ```typescript
153
+ // In the contract:
154
+ rateLimit: { burst: 100, sustained: 10 } // burst capacity 100, sustained 10/sec
155
+ ```
156
+
157
+ ### Per-tenant scoping
158
+ Default key: `(tenantId or userId or IP)`. Default to most-specific available.
159
+
160
+ ### Headers (always set on rate-limited endpoints)
161
+ - `X-RateLimit-Limit`
162
+ - `X-RateLimit-Remaining`
163
+ - `X-RateLimit-Reset` (Unix timestamp)
164
+ - `Retry-After` on 429 (seconds)
165
+
166
+ ### Adaptive rate limiting
167
+ For high-traffic endpoints, consider:
168
+ - Lower limits during incidents (graceful degradation under load)
169
+ - Higher limits for trusted tenants (paid tiers, API partners)
170
+ - Per-endpoint customization (creating user is rarer than reading user)
171
+
172
+ ## 6. Auth / Authz (always BEFORE business logic)
173
+
174
+ ### The order
175
+ 1. **Authentication** — who is this? (token verification, session lookup)
176
+ 2. **Authorization** — can they do this? (role, permission, resource ownership)
177
+ 3. **Tenant scoping** — set tenant context for query layer
178
+ 4. **Input validation** — schema validation at boundary
179
+ 5. **Idempotency check** — if applicable
180
+ 6. **Business logic** — the actual work
181
+ 7. **Side effects** — DB write, queue publish, external API call
182
+ 8. **Audit log** — record the operation
183
+ 9. **Response** — typed error or typed success
184
+
185
+ Skipping or reordering any of 1-3 is the source of A01 Broken Access Control (#1 OWASP risk).
186
+
187
+ ### JWT pattern
188
+ ```typescript
189
+ async function authMiddleware(req: Request, res: Response, next: NextFunction) {
190
+ const token = req.headers.authorization?.replace(/^Bearer /, '');
191
+ if (!token) return res.status(401).json({ kind: 'unauthorized', reason: 'missing' });
192
+
193
+ try {
194
+ const payload = await verifyJWT(token, process.env.JWT_PUBLIC_KEY!);
195
+ // Verify expiry strictly
196
+ if (payload.exp < Date.now() / 1000) {
197
+ return res.status(401).json({ kind: 'unauthorized', reason: 'expired' });
198
+ }
199
+ req.user = { id: payload.sub, role: payload.role };
200
+ req.tenant = { id: payload.tenant_id };
201
+ next();
202
+ } catch (e) {
203
+ return res.status(401).json({ kind: 'unauthorized', reason: 'invalid' });
204
+ }
205
+ }
206
+ ```
207
+
208
+ ### Authz rule
209
+ Resource-level checks at the QUERY layer (RLS) + role checks in the handler. Never trust IDs from the request body without verifying ownership.
210
+
211
+ ## 7. Observability Contract (structured by default)
212
+
213
+ **Source:** Engineering cookbook §4 (OpenTelemetry semantic conventions)
214
+
215
+ ### Per-handler observability minimum
216
+ ```typescript
217
+ async function chargeHandler(req, res) {
218
+ const tracer = trace.getTracer('charges');
219
+ const span = tracer.startSpan('charge_card.handler', {
220
+ attributes: {
221
+ 'http.method': req.method,
222
+ 'http.route': req.route.path,
223
+ 'user.id': req.user.id,
224
+ 'tenant.id': req.tenant.id,
225
+ },
226
+ });
227
+
228
+ try {
229
+ const result = await chargeCard(req.body);
230
+ span.setStatus({ code: SpanStatusCode.OK });
231
+ return res.status(200).json(result);
232
+ } catch (e) {
233
+ span.recordException(e);
234
+ span.setStatus({ code: SpanStatusCode.ERROR });
235
+ throw e;
236
+ } finally {
237
+ span.end();
238
+ }
239
+ }
240
+ ```
241
+
242
+ Every handler: span on entry, structured log on entry + exit, error recorded on span on failure.
243
+
244
+ ### The audit log (compliance-grade)
245
+ For sensitive operations (auth, money, data export, PII access):
246
+ ```typescript
247
+ await auditLog.write({
248
+ schema: 'audit.v1',
249
+ at: new Date().toISOString(),
250
+ actor: { id: req.user.id, role: req.user.role },
251
+ tenant: { id: req.tenant.id },
252
+ action: 'charge.create',
253
+ resource: { type: 'charge', id: chargeId },
254
+ outcome: 'success',
255
+ metadata: { amount, currency, idempotency_key },
256
+ trace_id: span.spanContext().traceId,
257
+ });
258
+ ```
259
+
260
+ Audit logs are append-only, immutable, retention-policied per compliance requirement.
261
+
262
+ ## 8. SLO + Error Budget (per Google SRE)
263
+
264
+ **Source:** Engineering cookbook §2
265
+
266
+ ### Per-service SLO definition
267
+ ```yaml
268
+ # slo.yaml
269
+ service: charges
270
+ slo:
271
+ availability: 0.999 # 99.9% successful HTTP 2xx + 4xx (4xx is client error, not service)
272
+ latency_p99_ms: 500
273
+ window_days: 30
274
+ error_budget_policy:
275
+ - if budget_remaining < 50%: alert eng manager; review release frequency
276
+ - if budget_remaining < 25%: pause feature releases; reliability work only
277
+ - if budget_remaining < 0%: P0 fixes + security only until SLO recovered
278
+ ```
279
+
280
+ ### Burn rate alerts (multi-window)
281
+ | Severity | Burn rate | Long window | Short window | Time to budget exhaust |
282
+ |---|---|---|---|---|
283
+ | Critical | 14.4 | 1 hour | 5 min | 2% in 1h |
284
+ | Warning | 6 | 6 hours | 30 min | 5% in 6h |
285
+ | Info | 3 | 24 hours | 2 hours | 10% in 24h |
286
+ | Notice | 1 | 72 hours | 6 hours | 30% in 72h |
287
+
288
+ ## 9. Schema Migration Discipline
289
+
290
+ ### The 3-step contract (backwards-compat)
291
+ For any column-add migration:
292
+
293
+ ```sql
294
+ -- Migration 1: ADD column NULLable with default
295
+ ALTER TABLE customers ADD COLUMN tier text NOT NULL DEFAULT 'free';
296
+
297
+ -- Deploy app code that writes BOTH old (no tier) and new (with tier) shapes during rollout
298
+
299
+ -- Migration 2: backfill (run async if large table)
300
+ UPDATE customers SET tier = COALESCE(tier, 'free') WHERE tier IS NULL;
301
+
302
+ -- Deploy app code that reads tier and writes only new shape
303
+
304
+ -- Migration 3 (only if NOT NULL final): re-assert NOT NULL
305
+ ALTER TABLE customers ALTER COLUMN tier SET NOT NULL;
306
+ ```
307
+
308
+ ### Index migrations on hot tables
309
+ ```sql
310
+ -- ALWAYS use CONCURRENTLY for indexes on production tables (no table lock)
311
+ CREATE INDEX CONCURRENTLY idx_orders_customer_id ON orders (customer_id);
312
+ ```
313
+
314
+ ### Forbidden patterns
315
+ - Combining schema migration with feature code in same PR (you cannot rollback feature without rolling back schema)
316
+ - DROP COLUMN without verifying app no longer references it (rolling deploy will fail)
317
+ - ALTER COLUMN type change on hot tables without dual-write window
318
+
319
+ ## 10. Queue / Worker / Cron Patterns
320
+
321
+ ### Job idempotency
322
+ Every job carries an idempotency key. Workers check before side effect:
323
+ ```typescript
324
+ async function processJob(job: Job): Promise<void> {
325
+ const idemKey = `job:${job.type}:${job.payload.idempotencyKey || job.id}`;
326
+ if (await redis.get(idemKey)) {
327
+ log.info('job.skip.duplicate', { jobId: job.id });
328
+ return;
329
+ }
330
+ await redis.setex(idemKey, 24 * 3600, '1');
331
+
332
+ // ... actual work ...
333
+
334
+ log.info('job.done', { jobId: job.id });
335
+ }
336
+ ```
337
+
338
+ ### Retry strategy
339
+ - **Bounded retry-by-error-count** — NOT deadline-based timeout
340
+ - 3 attempts default, exponential backoff (250ms / 500ms / 1s base × jitter)
341
+ - Different error classes get different retry behavior:
342
+ - **Transient** (network, 5xx, rate-limit) — retry with backoff
343
+ - **Permanent** (4xx validation, not-found, forbidden) — fail fast, no retry
344
+ - **Unknown** — retry once, then fail
345
+
346
+ ### Dead letter queue
347
+ After max retries:
348
+ - Move to DLQ with full context (original payload, error history, last attempt timestamp)
349
+ - Alert on DLQ growth rate
350
+ - DLQ has its own retention + replay tooling
351
+
352
+ ### Cron design
353
+ - Cron jobs are jobs — same idempotency, same retry, same observability
354
+ - Time-window aware: a cron that ran at 02:00 UTC processes data through 02:00 UTC, not "now"
355
+ - Overlapping protection: lock table or distributed lock (Redis SETNX) prevents two crons running simultaneously
356
+
357
+ ## 11. WebSocket / Streaming / SSE
358
+
359
+ ### When WebSocket
360
+ - Real-time bidirectional (chat, collab, live cursors)
361
+ - High update frequency (>1/sec sustained)
362
+
363
+ ### When SSE (Server-Sent Events)
364
+ - Server-push only (notifications, dashboard updates)
365
+ - Lower complexity than WebSocket; works over HTTP/2 multiplexing
366
+
367
+ ### When polling (and it's OK)
368
+ - Updates < 1/min
369
+ - Simpler infra
370
+ - Don't dismiss polling — it's often the right answer
371
+
372
+ ### WebSocket rules
373
+ - Heartbeat / ping every 30s
374
+ - Reconnect with exponential backoff (don't hammer on outage)
375
+ - Connection auth on every reconnect (token may have expired)
376
+ - Per-connection rate limit + total connection cap
377
+
378
+ ## 12. Backend audit checklist (paste-ready)
379
+
380
+ ```markdown
381
+ ## Contract
382
+ - [ ] API contract defined before handler
383
+ - [ ] All error responses typed
384
+ - [ ] Versioning strategy decided
385
+ - [ ] Idempotency required for side-effecting POSTs
386
+
387
+ ## Failure modes
388
+ - [ ] Each error mode → designed response (not throw)
389
+ - [ ] Retry strategy named (bounded by error count, not time)
390
+ - [ ] Circuit breaker on downstream dependencies
391
+ - [ ] Rate limit with Retry-After
392
+
393
+ ## Multi-tenancy
394
+ - [ ] Tenant isolation at QUERY layer (RLS or equiv)
395
+ - [ ] Fail-closed default
396
+ - [ ] Verification test (5-step from §3)
397
+
398
+ ## Auth/Authz
399
+ - [ ] Auth → Authz → Tenant scope → Validation → Idempotency → Business logic order
400
+ - [ ] No trust of IDs from request body without ownership verification
401
+ - [ ] JWT expiry strictly checked
402
+
403
+ ## Observability
404
+ - [ ] Span on every handler entry
405
+ - [ ] Structured log entry + exit with trace_id, user_id, tenant_id
406
+ - [ ] Audit log on sensitive operations
407
+ - [ ] SLO defined; error budget policy documented
408
+
409
+ ## Migrations
410
+ - [ ] Backwards-compat additive (3-step)
411
+ - [ ] CREATE INDEX CONCURRENTLY on hot tables
412
+ - [ ] No schema + feature code in same PR
413
+
414
+ ## OWASP A01-A10 (2025) checklist applied (engineering-cookbook §3)
415
+ - [ ] All 10 checked
416
+ - [ ] CI fails on dependency vuln scan
417
+ ```