@aria_asi/cli 0.2.40 → 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.
- package/bin/aria.js +236 -34
- package/dist/aria-connector/src/action-ledger-core.d.ts +387 -0
- package/dist/aria-connector/src/action-ledger-core.d.ts.map +1 -0
- package/dist/aria-connector/src/action-ledger-core.js +638 -0
- package/dist/aria-connector/src/action-ledger-core.js.map +1 -0
- package/dist/aria-connector/src/chat.d.ts.map +1 -1
- package/dist/aria-connector/src/chat.js +5 -6
- package/dist/aria-connector/src/chat.js.map +1 -1
- package/dist/aria-connector/src/codebase-scanner.d.ts +1 -1
- package/dist/aria-connector/src/codebase-scanner.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.d.ts +1 -0
- package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/claude-code.js +152 -14
- package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts +10 -0
- package/dist/aria-connector/src/connectors/codebase-awareness.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/codebase-awareness.js +276 -27
- package/dist/aria-connector/src/connectors/codebase-awareness.js.map +1 -1
- package/dist/aria-connector/src/connectors/codex.d.ts +3 -1
- package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/codex.js +1223 -41
- package/dist/aria-connector/src/connectors/codex.js.map +1 -1
- package/dist/aria-connector/src/connectors/cursor.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/cursor.js +7 -0
- package/dist/aria-connector/src/connectors/cursor.js.map +1 -1
- package/dist/aria-connector/src/connectors/governed-adapter.d.ts +30 -0
- package/dist/aria-connector/src/connectors/governed-adapter.d.ts.map +1 -0
- package/dist/aria-connector/src/connectors/governed-adapter.js +132 -0
- package/dist/aria-connector/src/connectors/governed-adapter.js.map +1 -0
- package/dist/aria-connector/src/connectors/opencode.d.ts +3 -1
- package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/opencode.js +18 -2
- package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
- package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/repo-guard.js +25 -14
- package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -1
- package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/runtime.js +92 -2
- package/dist/aria-connector/src/connectors/runtime.js.map +1 -1
- package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
- package/dist/aria-connector/src/connectors/shell.js +123 -7
- package/dist/aria-connector/src/connectors/shell.js.map +1 -1
- package/dist/aria-connector/src/cross-cli-hive-binding.d.ts +63 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.d.ts.map +1 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.js +205 -0
- package/dist/aria-connector/src/cross-cli-hive-binding.js.map +1 -0
- package/dist/aria-connector/src/garden-control-plane.d.ts +6 -1
- package/dist/aria-connector/src/garden-control-plane.d.ts.map +1 -1
- package/dist/aria-connector/src/garden-control-plane.js +8 -2
- package/dist/aria-connector/src/garden-control-plane.js.map +1 -1
- package/dist/aria-connector/src/governed-surface-runner.d.ts +189 -0
- package/dist/aria-connector/src/governed-surface-runner.d.ts.map +1 -0
- package/dist/aria-connector/src/governed-surface-runner.js +1022 -0
- package/dist/aria-connector/src/governed-surface-runner.js.map +1 -0
- package/dist/aria-connector/src/index.d.ts +10 -1
- package/dist/aria-connector/src/index.d.ts.map +1 -1
- package/dist/aria-connector/src/index.js +5 -0
- package/dist/aria-connector/src/index.js.map +1 -1
- package/dist/aria-connector/src/task-runner.d.ts +3 -0
- package/dist/aria-connector/src/task-runner.d.ts.map +1 -0
- package/dist/aria-connector/src/task-runner.js +3526 -0
- package/dist/aria-connector/src/task-runner.js.map +1 -0
- package/dist/aria-web/src/lib/codebase-scanner.d.ts +21 -2
- package/dist/aria-web/src/lib/codebase-scanner.d.ts.map +1 -1
- package/dist/aria-web/src/lib/codebase-scanner.js +59 -14
- package/dist/aria-web/src/lib/codebase-scanner.js.map +1 -1
- package/dist/assets/hooks/README.md +58 -0
- package/dist/assets/hooks/aria-agent-handoff.mjs +147 -2
- package/dist/assets/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/dist/assets/hooks/aria-architect-fallback.mjs +10 -2
- package/dist/assets/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/dist/assets/hooks/aria-first-class-coach.mjs +305 -10
- package/dist/assets/hooks/aria-harness-via-sdk.mjs +93 -16
- package/dist/assets/hooks/aria-import-resolution-gate.mjs +106 -20
- package/dist/assets/hooks/aria-outcome-record.mjs +56 -20
- package/dist/assets/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/dist/assets/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/dist/assets/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/dist/assets/hooks/aria-pre-text-gate.mjs +11 -2
- package/dist/assets/hooks/aria-pre-tool-gate.mjs +477 -81
- package/dist/assets/hooks/aria-pre-tool-use.mjs +70 -6
- package/dist/assets/hooks/aria-preprompt-consult.mjs +23 -4
- package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/dist/assets/hooks/aria-stop-gate.mjs +585 -76
- package/dist/assets/hooks/aria-trigger-autolearn.mjs +17 -3
- package/dist/assets/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/dist/assets/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/dist/assets/hooks/canonical-settings-block.json +172 -0
- package/dist/assets/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/dist/assets/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/dist/assets/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/dist/assets/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/dist/assets/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/dist/assets/hooks/codex-native/aria-stop.mjs +691 -0
- package/dist/assets/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/dist/assets/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/dist/assets/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/dist/assets/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/dist/assets/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/dist/assets/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/dist/assets/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/dist/assets/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/dist/assets/hooks/doctrine_trigger_map.json +236 -25
- package/dist/assets/hooks/doctrine_trigger_map.schema.json +46 -0
- package/dist/assets/hooks/install.sh +84 -0
- package/dist/assets/hooks/lib/action-ledger-core.mjs +269 -0
- package/dist/assets/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/dist/assets/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/dist/assets/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/dist/assets/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/dist/assets/hooks/lib/canonical-lenses.mjs +83 -6
- package/dist/assets/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/dist/assets/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/dist/assets/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/dist/assets/hooks/lib/domain-output-quality.mjs +132 -3
- package/dist/assets/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/dist/assets/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/dist/assets/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/assets/hooks/lib/first-class-coach.mjs +454 -19
- package/dist/assets/hooks/lib/gate-audit.mjs +12 -2
- package/dist/assets/hooks/lib/gate-loop-state.mjs +11 -2
- package/dist/assets/hooks/lib/goal-contract-quality.mjs +302 -0
- package/dist/assets/hooks/lib/hook-message-window.mjs +101 -9
- package/dist/assets/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/dist/assets/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/assets/hooks/lib/obligation-ledger.mjs +147 -0
- package/dist/assets/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/dist/assets/hooks/lib/owner-authorizations.mjs +269 -0
- package/dist/assets/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/dist/assets/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/dist/assets/hooks/lib/recovery-context.mjs +151 -0
- package/dist/assets/hooks/lib/recovery-template-loader.mjs +154 -0
- package/dist/assets/hooks/lib/self-doctrine-check.mjs +321 -0
- package/dist/assets/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/dist/assets/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/dist/assets/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/dist/assets/hooks/lib/surface-caught.mjs +94 -0
- package/dist/assets/hooks/recovery-templates/force-reauthor.md +67 -0
- package/dist/assets/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/dist/assets/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/dist/assets/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/dist/assets/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/dist/assets/hooks/test-tier-lens-labeling.mjs +14 -3
- package/dist/assets/opencode-plugins/harness-context/index.js +39 -6
- package/dist/assets/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
- package/dist/assets/opencode-plugins/harness-gate/index.js +36 -0
- package/dist/assets/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
- package/dist/assets/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
- package/dist/assets/opencode-plugins/harness-outcome/index.js +12 -0
- package/dist/assets/opencode-plugins/harness-stop/index.js +97 -2
- package/dist/assets/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
- package/dist/assets/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
- package/dist/assets/opencode-plugins/lib/coach.js +148 -0
- package/dist/runtime/coach-kernel.mjs +144 -7
- package/dist/runtime/codex-bridge.mjs +254 -8
- package/dist/runtime/discipline/doctrine_trigger_map.json +236 -25
- package/dist/runtime/discipline/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-chat/SKILL.md +84 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ops/SKILL.md +60 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
- package/dist/runtime/discipline/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
- package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
- package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
- package/dist/runtime/discipline/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/never-guess/SKILL.md +77 -0
- package/dist/runtime/discipline/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
- package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
- package/dist/runtime/discipline/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur/SKILL.md +506 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
- package/dist/runtime/discipline/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
- package/dist/runtime/discipline/skills/aria-cognition/tafakkur/SKILL.md +104 -0
- package/dist/runtime/doctrine_trigger_map.json +236 -25
- package/dist/runtime/embedded-public-key.mjs +27 -0
- package/dist/runtime/gated-ledger.mjs +41 -14
- package/dist/runtime/harness-daemon.mjs +85 -10
- package/dist/runtime/hive-wal-publisher.mjs +292 -0
- package/dist/runtime/hooks/README.md +58 -0
- package/dist/runtime/hooks/aria-agent-handoff.mjs +147 -2
- package/dist/runtime/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/dist/runtime/hooks/aria-architect-fallback.mjs +10 -2
- package/dist/runtime/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/dist/runtime/hooks/aria-first-class-coach.mjs +305 -10
- package/dist/runtime/hooks/aria-harness-via-sdk.mjs +93 -16
- package/dist/runtime/hooks/aria-import-resolution-gate.mjs +106 -20
- package/dist/runtime/hooks/aria-outcome-record.mjs +56 -20
- package/dist/runtime/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/dist/runtime/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/dist/runtime/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/dist/runtime/hooks/aria-pre-text-gate.mjs +11 -2
- package/dist/runtime/hooks/aria-pre-tool-gate.mjs +477 -81
- package/dist/runtime/hooks/aria-pre-tool-use.mjs +70 -6
- package/dist/runtime/hooks/aria-preprompt-consult.mjs +23 -4
- package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/dist/runtime/hooks/aria-stop-gate.mjs +585 -76
- package/dist/runtime/hooks/aria-trigger-autolearn.mjs +17 -3
- package/dist/runtime/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/dist/runtime/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/dist/runtime/hooks/canonical-settings-block.json +172 -0
- package/dist/runtime/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/dist/runtime/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/dist/runtime/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/dist/runtime/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/dist/runtime/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/dist/runtime/hooks/codex-native/aria-stop.mjs +691 -0
- package/dist/runtime/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/dist/runtime/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/dist/runtime/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/dist/runtime/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/dist/runtime/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/dist/runtime/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/dist/runtime/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/dist/runtime/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/dist/runtime/hooks/doctrine_trigger_map.json +236 -25
- package/dist/runtime/hooks/doctrine_trigger_map.schema.json +46 -0
- package/dist/runtime/hooks/install.sh +84 -0
- package/dist/runtime/hooks/lib/action-ledger-core.mjs +269 -0
- package/dist/runtime/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/dist/runtime/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/dist/runtime/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/dist/runtime/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/dist/runtime/hooks/lib/canonical-lenses.mjs +83 -6
- package/dist/runtime/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/dist/runtime/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/dist/runtime/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/dist/runtime/hooks/lib/domain-output-quality.mjs +132 -3
- package/dist/runtime/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/dist/runtime/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/dist/runtime/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/runtime/hooks/lib/first-class-coach.mjs +454 -19
- package/dist/runtime/hooks/lib/gate-audit.mjs +12 -2
- package/dist/runtime/hooks/lib/gate-loop-state.mjs +11 -2
- package/dist/runtime/hooks/lib/goal-contract-quality.mjs +302 -0
- package/dist/runtime/hooks/lib/hook-message-window.mjs +101 -9
- package/dist/runtime/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/dist/runtime/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/runtime/hooks/lib/obligation-ledger.mjs +147 -0
- package/dist/runtime/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/dist/runtime/hooks/lib/owner-authorizations.mjs +269 -0
- package/dist/runtime/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/dist/runtime/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/dist/runtime/hooks/lib/recovery-context.mjs +151 -0
- package/dist/runtime/hooks/lib/recovery-template-loader.mjs +154 -0
- package/dist/runtime/hooks/lib/self-doctrine-check.mjs +321 -0
- package/dist/runtime/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/dist/runtime/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/dist/runtime/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/dist/runtime/hooks/lib/surface-caught.mjs +94 -0
- package/dist/runtime/hooks/recovery-templates/force-reauthor.md +67 -0
- package/dist/runtime/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/dist/runtime/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/dist/runtime/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/dist/runtime/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/dist/runtime/hooks/test-tier-lens-labeling.mjs +14 -3
- package/dist/runtime/lib/evaluate-with-kernel.mjs +133 -0
- package/dist/runtime/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/dist/runtime/local-phase.mjs +10 -5
- package/dist/runtime/manifest.json +8 -8
- package/dist/runtime/packet-verifier.mjs +166 -0
- package/dist/runtime/provider-proxy.mjs +13 -0
- package/dist/runtime/quality-enforcer.mjs +40 -23
- package/dist/runtime/runtime-rails/registry.mjs +252 -0
- package/dist/runtime/sdk/BUNDLED.json +2 -2
- package/dist/runtime/sdk/index.d.ts +119 -4
- package/dist/runtime/sdk/index.js +138 -12
- package/dist/runtime/sdk/index.js.map +1 -1
- package/dist/runtime/service.mjs +8036 -764
- package/dist/runtime/sub-agent-enforcer.mjs +201 -0
- package/dist/runtime/task-project-ledger.mjs +5 -1
- package/dist/sdk/BUNDLED.json +2 -2
- package/dist/sdk/index.d.ts +119 -4
- package/dist/sdk/index.js +138 -12
- package/dist/sdk/index.js.map +1 -1
- package/hooks/README.md +58 -0
- package/hooks/aria-agent-handoff.mjs +147 -2
- package/hooks/aria-agent-ledger-merge.mjs +31 -7
- package/hooks/aria-architect-fallback.mjs +10 -2
- package/hooks/aria-claim-evidence-stop-gate.mjs +240 -0
- package/hooks/aria-cognition-substrate-binding.mjs +84 -10
- package/hooks/aria-first-class-coach.mjs +305 -10
- package/hooks/aria-harness-via-sdk.mjs +93 -16
- package/hooks/aria-import-resolution-gate.mjs +106 -20
- package/hooks/aria-outcome-record.mjs +56 -20
- package/hooks/aria-pre-emit-autoload.mjs +1809 -0
- package/hooks/aria-pre-emit-autoload.mjs.before-orchestration-redesign +1400 -0
- package/hooks/aria-pre-emit-dryrun.mjs +22 -3
- package/hooks/aria-pre-text-gate.mjs +11 -2
- package/hooks/aria-pre-tool-gate.mjs +477 -81
- package/hooks/aria-pre-tool-use.mjs +70 -6
- package/hooks/aria-preprompt-consult.mjs +23 -4
- package/hooks/aria-repo-doctrine-gate.mjs +29 -3
- package/hooks/aria-stop-gate.mjs +585 -76
- package/hooks/aria-trigger-autolearn.mjs +17 -3
- package/hooks/aria-universal-turn-packet.mjs +1165 -0
- package/hooks/aria-userprompt-abandon-detect.mjs +9 -1
- package/hooks/canonical-settings-block.json +172 -0
- package/hooks/codex-native/aria-harness-ticker-sidecar.mjs +92 -0
- package/hooks/codex-native/aria-hive-wal-consumer.mjs +86 -0
- package/hooks/codex-native/aria-live-ticker.mjs +38 -0
- package/hooks/codex-native/aria-post-tool-use.mjs +236 -0
- package/hooks/codex-native/aria-pre-tool-use.mjs +362 -0
- package/hooks/codex-native/aria-stop.mjs +691 -0
- package/hooks/codex-native/aria-userprompt-submit.mjs +623 -0
- package/hooks/codex-native/atlas-session-context.mjs +121 -0
- package/hooks/codex-native/lib/evaluate-with-kernel.mjs +257 -0
- package/hooks/codex-native/lib/hive-wal-consumer.mjs +452 -0
- package/hooks/codex-native/lib/kernel/deterministic-cognitive-kernel.mjs +914 -0
- package/hooks/codex-native/lib/project-boundary-cognition.mjs +143 -0
- package/hooks/codex-native/lib/runtime-client.mjs +3567 -0
- package/hooks/codex-native/lib/task-project-ledger.mjs +294 -0
- package/hooks/doctrine_trigger_map.json +236 -25
- package/hooks/doctrine_trigger_map.schema.json +46 -0
- package/hooks/install.sh +84 -0
- package/hooks/lib/action-ledger-core.mjs +269 -0
- package/hooks/lib/aria-gate-ledger.mjs +143 -0
- package/hooks/lib/ast-stub-shape-detector.mjs +107 -0
- package/hooks/lib/atlas-dossier-client.mjs +151 -0
- package/hooks/lib/atlas-orchestrator-postwire.mjs +221 -0
- package/hooks/lib/canonical-lenses.mjs +83 -6
- package/hooks/lib/coach-intent-classifier.mjs +248 -0
- package/hooks/lib/cognitive-block-parser.mjs +111 -0
- package/hooks/lib/doctrine-trigger-map-loader.mjs +137 -0
- package/hooks/lib/domain-output-quality.mjs +132 -3
- package/hooks/lib/empty-catch-scanner.mjs +91 -0
- package/hooks/lib/end-phase-qa-autofire.mjs +426 -0
- package/hooks/lib/evaluate-with-kernel.mjs +133 -0
- package/hooks/lib/first-class-coach.mjs +454 -19
- package/hooks/lib/gate-audit.mjs +12 -2
- package/hooks/lib/gate-loop-state.mjs +11 -2
- package/hooks/lib/goal-contract-quality.mjs +302 -0
- package/hooks/lib/hook-message-window.mjs +101 -9
- package/hooks/lib/invocation-required-verifier.mjs +184 -0
- package/hooks/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/hooks/lib/obligation-ledger.mjs +147 -0
- package/hooks/lib/orchestration-manifest-extract.mjs +217 -0
- package/hooks/lib/owner-authorizations.mjs +269 -0
- package/hooks/lib/probe-discipline-scanner.mjs +142 -0
- package/hooks/lib/project-boundary-cognition.mjs +143 -0
- package/hooks/lib/recovery-context.mjs +151 -0
- package/hooks/lib/recovery-template-loader.mjs +154 -0
- package/hooks/lib/self-doctrine-check.mjs +321 -0
- package/hooks/lib/sensitive-shape-detector.mjs +64 -0
- package/hooks/lib/skill-autoload-gate-impl.mjs +226 -1
- package/hooks/lib/stop-hook-protocol.mjs +166 -0
- package/hooks/lib/surface-caught.mjs +94 -0
- package/hooks/recovery-templates/force-reauthor.md +67 -0
- package/hooks/recovery-templates/handoff-recovery.md +25 -0
- package/hooks/scripts/check-hard-risk-prefix.mjs +99 -0
- package/hooks/skills/aria-conversational-doctrine-discipline/SKILL.md +101 -0
- package/hooks/test-aria-preturn-memory-gate.mjs +2 -2
- package/hooks/test-tier-lens-labeling.mjs +14 -3
- package/opencode-plugins/harness-context/index.js +39 -6
- package/opencode-plugins/harness-context/task-project-ledger.mjs +5 -1
- package/opencode-plugins/harness-gate/index.js +36 -0
- package/opencode-plugins/harness-gate/lib/atlas-dossier-client.js +1 -0
- package/opencode-plugins/harness-gate/lib/recovery-grants.js +79 -0
- package/opencode-plugins/harness-outcome/index.js +12 -0
- package/opencode-plugins/harness-stop/index.js +97 -2
- package/opencode-plugins/harness-stop/lib/atlas-dossier-client.js +1 -0
- package/opencode-plugins/harness-stop/lib/domain-output-quality.js +15 -2
- package/opencode-plugins/lib/coach.js +148 -0
- package/package.json +71 -5
- package/runtime-src/coach-kernel.mjs +144 -7
- package/runtime-src/codex-bridge.mjs +254 -8
- package/runtime-src/embedded-public-key.mjs +27 -0
- package/runtime-src/gated-ledger.mjs +41 -14
- package/runtime-src/harness-daemon.mjs +85 -10
- package/runtime-src/hive-wal-publisher.mjs +292 -0
- package/runtime-src/lib/evaluate-with-kernel.mjs +133 -0
- package/runtime-src/lib/kernel/deterministic-cognitive-kernel.mjs +906 -0
- package/runtime-src/local-phase.mjs +10 -5
- package/runtime-src/packet-verifier.mjs +166 -0
- package/runtime-src/provider-proxy.mjs +13 -0
- package/runtime-src/quality-enforcer.mjs +40 -23
- package/runtime-src/runtime-rails/registry.mjs +252 -0
- package/runtime-src/service.mjs +8036 -764
- package/runtime-src/sub-agent-enforcer.mjs +201 -0
- package/scripts/aria-ledger-append.mjs +337 -0
- package/scripts/aria-task-cheap-worker-dispatch.mjs +234 -0
- package/scripts/audit-of-audit-prior-tasks.mjs +194 -0
- package/scripts/audit-of-audit-this-turn.mjs +116 -0
- package/scripts/bundle-sdk.mjs +31 -5
- package/scripts/check-cli-wrapper-provider-contract.mjs +160 -0
- package/scripts/check-client-compatibility.mjs +15 -5
- package/scripts/check-client-smoke.mjs +297 -0
- package/scripts/check-codex-orchestrator-adoption.mjs +150 -0
- package/scripts/check-glm-env-wired.mjs +131 -0
- package/scripts/check-hive-local-storage-contract.mjs +91 -0
- package/scripts/check-hook-mirror.mjs +150 -0
- package/scripts/check-install-sh-drift.mjs +152 -0
- package/scripts/check-kernel-sync.mjs +101 -0
- package/scripts/check-package-artifact.mjs +152 -0
- package/scripts/check-registry-mirror.mjs +71 -0
- package/scripts/drain-owner-airtable-sync-queue.mjs +287 -0
- package/scripts/export-owner-status-sheets.mjs +589 -0
- package/scripts/live-sidecar-receipt-canary.mjs +347 -0
- package/scripts/qiyas-tadabbur-model-matrix.mjs +970 -0
- package/scripts/quality-ab-live-provider.mjs +913 -0
- package/scripts/self-test-action-ledger-core.mjs +190 -0
- package/scripts/self-test-approval-receipt-binding.mjs +122 -0
- package/scripts/self-test-autofire-quality-output.mjs +110 -0
- package/scripts/self-test-claude-code-action-ledger.mjs +132 -0
- package/scripts/self-test-claude-code-mechanical-autofire-hive.mjs +138 -0
- package/scripts/self-test-claude-code-mechanical-autofire.mjs +234 -0
- package/scripts/self-test-codebase-awareness-atlas-delta.mjs +159 -0
- package/scripts/self-test-codebase-awareness-delta-ingest.mjs +179 -0
- package/scripts/self-test-codex-live-hook-parity.mjs +84 -0
- package/scripts/self-test-codex-native-action-ledger.mjs +167 -0
- package/scripts/self-test-codex-native-hook-json-contract.mjs +74 -0
- package/scripts/self-test-codex-orchestrator-continuity.mjs +113 -0
- package/scripts/self-test-codex-readable-recovery.mjs +94 -0
- package/scripts/self-test-codex-self-harness.mjs +538 -0
- package/scripts/self-test-compiled-workunit.mjs +214 -0
- package/scripts/self-test-continuation-output-smoke.mjs +101 -0
- package/scripts/self-test-cross-cli-fleet-ticker.mjs +85 -0
- package/scripts/self-test-cross-cli-hive-adoption.mjs +125 -0
- package/scripts/self-test-cross-cli-hive-learning.mjs +146 -0
- package/scripts/self-test-cross-phase-tool-failure.mjs +110 -0
- package/scripts/self-test-cross-surface-action-ledger.mjs +149 -0
- package/scripts/self-test-end-of-phase-qa-court.mjs +616 -0
- package/scripts/self-test-evaluate-with-kernel.mjs +111 -0
- package/scripts/self-test-first-class-output-delta-proof.mjs +307 -0
- package/scripts/self-test-goal-contract-output-qa.mjs +73 -0
- package/scripts/self-test-goal-contract.mjs +35 -0
- package/scripts/self-test-governed-adapters.mjs +105 -0
- package/scripts/self-test-governed-surface-runner.mjs +198 -0
- package/scripts/self-test-harness-gates.mjs +15 -12
- package/scripts/self-test-harness-ticker-sidecar.mjs +153 -0
- package/scripts/self-test-hive-org-kernel.mjs +233 -0
- package/scripts/self-test-hive-session-coordination.mjs +156 -0
- package/scripts/self-test-hive-wal-consumer.mjs +111 -0
- package/scripts/self-test-kernel-a3-a4-selection.mjs +179 -0
- package/scripts/self-test-ledger-append.mjs +175 -0
- package/scripts/self-test-live-codex-posttool-packet-smoke.mjs +111 -0
- package/scripts/self-test-live-codex-pretool-packet-smoke.mjs +101 -0
- package/scripts/self-test-live-codex-stop-qa-kernel-smoke.mjs +43 -0
- package/scripts/self-test-live-wrapper-substrate-inventory.mjs +149 -0
- package/scripts/self-test-local-main-sync-script.mjs +47 -0
- package/scripts/self-test-mechanical-autofire-resolver.mjs +296 -0
- package/scripts/self-test-no-consult-cognitive-skills-output.mjs +135 -0
- package/scripts/self-test-owner-airtable-sync-queue.mjs +196 -0
- package/scripts/self-test-owner-airtable-sync.mjs +181 -0
- package/scripts/self-test-owner-sheets-action-ledger.mjs +100 -0
- package/scripts/self-test-production-preflight.mjs +78 -0
- package/scripts/self-test-project-boundary-cognition.mjs +79 -0
- package/scripts/self-test-qa-exec-kernel.mjs +34 -0
- package/scripts/self-test-qa-recovery-learning-loop.mjs +113 -0
- package/scripts/self-test-qiyas-label-alignment.mjs +94 -0
- package/scripts/self-test-recovery-context.mjs +110 -0
- package/scripts/self-test-repo-guard.mjs +10 -0
- package/scripts/self-test-runtime-health-self-heal.mjs +161 -0
- package/scripts/self-test-runtime-postcondition.mjs +70 -0
- package/scripts/self-test-soul-precommit-hook.mjs +39 -0
- package/scripts/self-test-stop-gate-kernel-guards.mjs +185 -0
- package/scripts/self-test-stop-gate.mjs +128 -0
- package/scripts/self-test-substrate-kernel-execution-receipt.mjs +130 -0
- package/scripts/self-test-substrate-open-skill-floor.mjs +87 -0
- package/scripts/self-test-substrate-output-quality-eval.mjs +171 -0
- package/scripts/self-test-task-closeout-drift.mjs +97 -0
- package/scripts/self-test-task-project-ledger-readiness.mjs +43 -0
- package/scripts/self-test-task-runner-phase-consumer.mjs +134 -0
- package/scripts/self-test-task-worker-lane.mjs +256 -0
- package/scripts/self-test-turn-substrate-qa-kernel.mjs +188 -0
- package/scripts/self-test-universal-action-capture.mjs +153 -0
- package/scripts/self-test-universal-turn-packet-entrypoints.mjs +252 -0
- package/scripts/self-test-universal-turn-packet.mjs +320 -0
- package/scripts/session-quality-backfill.mjs +253 -0
- package/scripts/smoke-autofire-100-prompts.mjs +481 -0
- package/scripts/sync-local-main-on-task-complete.mjs +278 -0
- package/scripts/sync-owner-status-airtable.mjs +1158 -0
- package/scripts/validate-skill-prompts.mjs +12 -1
- package/scripts/verify-codex-native-mirror.mjs +262 -0
- package/skills/34-frameworks-unified/SKILL.md +42 -0
- package/skills/api-design/SKILL.md +123 -0
- package/skills/architecture-decision/SKILL.md +105 -0
- package/skills/aria-aristotle-cognitives/SKILL.md +128 -0
- package/skills/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/skills/aria-aristotle-post-phase/SKILL.md +116 -0
- package/skills/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/skills/aria-axioms-first-principles/SKILL.md +202 -0
- package/skills/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/skills/aria-axioms-first-principles/references/source-map.md +130 -0
- package/skills/aria-chat/SKILL.md +84 -0
- package/skills/aria-chat/scripts/aria-chat.sh +57 -0
- package/skills/aria-cognition/34-frameworks-unified/SKILL.md +42 -0
- package/skills/aria-cognition/aria-aristotle-cognitives/SKILL.md +128 -0
- package/skills/aria-cognition/aria-aristotle-intra-phase/SKILL.md +99 -0
- package/skills/aria-cognition/aria-aristotle-post-phase/SKILL.md +118 -0
- package/skills/aria-cognition/aria-aristotle-pre-phase/SKILL.md +117 -0
- package/skills/aria-cognition/aria-axioms-first-principles/SKILL.md +202 -0
- package/skills/aria-cognition/aria-axioms-first-principles/agents/openai.yaml +4 -0
- package/skills/aria-cognition/aria-axioms-first-principles/references/source-map.md +130 -0
- package/skills/aria-cognition/aria-backend-architect/SKILL.md +124 -0
- package/skills/aria-cognition/aria-backend-architect/references/backend-cookbook.md +417 -0
- package/skills/aria-cognition/aria-business-audit/SKILL.md +133 -0
- package/skills/aria-cognition/aria-business-audit/references/audit-cookbook.md +247 -0
- package/skills/aria-cognition/aria-business-frame/SKILL.md +138 -0
- package/skills/aria-cognition/aria-business-frame/references/business-cookbook.md +154 -0
- package/skills/aria-cognition/aria-chat/SKILL.md +84 -0
- package/skills/aria-cognition/aria-chat/scripts/aria-chat.sh +57 -0
- package/skills/aria-cognition/aria-cognition-autofire/SKILL.md +137 -0
- package/skills/aria-cognition/aria-cognition-batch/SKILL.md +264 -0
- package/skills/aria-cognition/aria-decision-mizan/SKILL.md +136 -0
- package/skills/aria-cognition/aria-decision-mizan/references/decision-frameworks.md +287 -0
- package/skills/aria-cognition/aria-first-class-operating-contract/SKILL.md +104 -0
- package/skills/aria-cognition/aria-frontend-architect/SKILL.md +123 -0
- package/skills/aria-cognition/aria-frontend-architect/references/frontend-cookbook.md +358 -0
- package/skills/aria-cognition/aria-fullstack-orchestrator/SKILL.md +127 -0
- package/skills/aria-cognition/aria-fullstack-orchestrator/references/fullstack-cookbook.md +383 -0
- package/skills/aria-cognition/aria-gtm-architect/SKILL.md +126 -0
- package/skills/aria-cognition/aria-gtm-architect/references/gtm-cookbook.md +235 -0
- package/skills/aria-cognition/aria-harness-deploy/SKILL.md +145 -0
- package/skills/aria-cognition/aria-harness-no-stripping/SKILL.md +135 -0
- package/skills/aria-cognition/aria-harness-onboarding/SKILL.md +130 -0
- package/skills/aria-cognition/aria-harness-output-discipline/SKILL.md +120 -0
- package/skills/aria-cognition/aria-harness-substrate-binding/SKILL.md +139 -0
- package/skills/aria-cognition/aria-http-harness-client/SKILL.md +85 -0
- package/skills/aria-cognition/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/skills/aria-cognition/aria-k8s-deploy/SKILL.md +174 -0
- package/skills/aria-cognition/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/skills/aria-cognition/aria-ladduniframe/SKILL.md +60 -0
- package/skills/aria-cognition/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/skills/aria-cognition/aria-live-ops/SKILL.md +54 -0
- package/skills/aria-cognition/aria-mac-ssh-ops/SKILL.md +100 -0
- package/skills/aria-cognition/aria-memory-index/SKILL.md +42 -0
- package/skills/aria-cognition/aria-noor-cognitives/SKILL.md +120 -0
- package/skills/aria-cognition/aria-ops/SKILL.md +60 -0
- package/skills/aria-cognition/aria-ops/references/live-endpoints.md +59 -0
- package/skills/aria-cognition/aria-quality-audit/SKILL.md +133 -0
- package/skills/aria-cognition/aria-readable-output/SKILL.md +239 -0
- package/skills/aria-cognition/aria-readable-output/references/layout-cookbook.md +366 -0
- package/skills/aria-cognition/aria-reasoning/SKILL.md +67 -0
- package/skills/aria-cognition/aria-reasoning/references/core-principles.md +42 -0
- package/skills/aria-cognition/aria-repo-audit/SKILL.md +135 -0
- package/skills/aria-cognition/aria-repo-audit/references/repo-audit-cookbook.md +375 -0
- package/skills/aria-cognition/aria-research-orchestrator/SKILL.md +138 -0
- package/skills/aria-cognition/aria-research-orchestrator/references/research-patterns.md +270 -0
- package/skills/aria-cognition/aria-retention-engine/SKILL.md +120 -0
- package/skills/aria-cognition/aria-retention-engine/references/retention-cookbook.md +271 -0
- package/skills/aria-cognition/aria-revenue-engine/SKILL.md +128 -0
- package/skills/aria-cognition/aria-revenue-engine/references/revenue-cookbook.md +227 -0
- package/skills/aria-cognition/aria-senior-code-audit/SKILL.md +233 -0
- package/skills/aria-cognition/aria-senior-code-audit/references/audit-checklist.md +369 -0
- package/skills/aria-cognition/aria-senior-code-cookbook/SKILL.md +288 -0
- package/skills/aria-cognition/aria-senior-code-cookbook/references/engineering-cookbook.md +489 -0
- package/skills/aria-cognition/aria-soul-principles/SKILL.md +42 -0
- package/skills/aria-cognition/aria-task-codex-executor/SKILL.md +86 -0
- package/skills/aria-cognition/aristotle-engine/SKILL.md +42 -0
- package/skills/aria-cognition/cross-domain-24/SKILL.md +42 -0
- package/skills/aria-cognition/deepsoul-emotional/SKILL.md +42 -0
- package/skills/aria-cognition/fitrah-guard/SKILL.md +78 -0
- package/skills/aria-cognition/ghazali-8lens/SKILL.md +227 -29
- package/skills/aria-cognition/ghazali-8lens/references/ghazali-8lens-cookbook.md +797 -0
- package/skills/aria-cognition/ijtihad-novel/SKILL.md +42 -0
- package/skills/aria-cognition/ilham-intuition/SKILL.md +42 -0
- package/skills/aria-cognition/never-guess/SKILL.md +77 -0
- package/skills/aria-cognition/noor-recognition/SKILL.md +45 -0
- package/skills/aria-cognition/qiyas-analogy/SKILL.md +174 -14
- package/skills/aria-cognition/ruh-basis/SKILL.md +42 -0
- package/skills/aria-cognition/tadabbur/SKILL.md +506 -0
- package/skills/aria-cognition/tadabbur/references/tadabbur-cookbook.md +921 -0
- package/skills/aria-cognition/tadabbur-ops/SKILL.md +42 -0
- package/skills/aria-cognition/tafakkur/SKILL.md +104 -0
- package/skills/aria-cognition-autofire/SKILL.md +109 -0
- package/skills/aria-cognition-batch/SKILL.md +264 -0
- package/skills/aria-conversational-doctrine-discipline/SKILL.md +125 -0
- package/skills/aria-essence/SKILL.md +81 -0
- package/skills/aria-essence/references/domain-matrix.md +80 -0
- package/skills/aria-essence/references/evolution-loop.md +30 -0
- package/skills/aria-essence/references/readable-cognition.md +27 -0
- package/skills/aria-first-class-operating-contract/SKILL.md +104 -0
- package/skills/aria-forge-guardrails/SKILL.md +53 -0
- package/skills/aria-forge-guardrails/references/checklist.md +31 -0
- package/skills/aria-harness-deploy/SKILL.md +145 -0
- package/skills/aria-harness-no-stripping/SKILL.md +135 -0
- package/skills/aria-harness-onboarding/SKILL.md +130 -0
- package/skills/aria-harness-output-discipline/SKILL.md +120 -0
- package/skills/aria-harness-substrate-binding/SKILL.md +139 -0
- package/skills/aria-http-harness-client/SKILL.md +85 -0
- package/skills/aria-http-harness-client/scripts/smoke.mjs +47 -0
- package/skills/aria-k8s-deploy/SKILL.md +174 -0
- package/skills/aria-k8s-deploy/agents/openai.yaml +3 -0
- package/skills/aria-ladduniframe/SKILL.md +60 -0
- package/skills/aria-ledger-fleet-execution/SKILL.md +126 -0
- package/skills/aria-live-ops/SKILL.md +54 -0
- package/skills/aria-mac-ssh-ops/SKILL.md +100 -0
- package/skills/aria-memory-index/SKILL.md +42 -0
- package/skills/aria-noor-cognitives/SKILL.md +120 -0
- package/skills/aria-ops/SKILL.md +60 -0
- package/skills/aria-ops/references/live-endpoints.md +59 -0
- package/skills/aria-quality-audit/SKILL.md +133 -0
- package/skills/aria-reasoning/SKILL.md +67 -0
- package/skills/aria-reasoning/references/core-principles.md +42 -0
- package/skills/aria-repo-doctrine/SKILL.md +57 -0
- package/skills/aria-soul-principles/SKILL.md +42 -0
- package/skills/aria-task-codex-executor/SKILL.md +86 -0
- package/skills/aristotle-engine/SKILL.md +42 -0
- package/skills/ci-cd-pipeline/SKILL.md +116 -0
- package/skills/code-review/SKILL.md +131 -0
- package/skills/cross-domain-24/SKILL.md +42 -0
- package/skills/database-design/SKILL.md +124 -0
- package/skills/deepsoul-emotional/SKILL.md +42 -0
- package/skills/deno-kv-raft-pubsub/SKILL.md +561 -0
- package/skills/deno-kv-raft-pubsub/reference/maelstrom-integration.md +393 -0
- package/skills/deno-kv-raft-pubsub/reference/pubsub-api.md +376 -0
- package/skills/deno-kv-raft-pubsub/reference/raft-spec.md +402 -0
- package/skills/deno-kv-raft-pubsub/reference/state-machine.md +182 -0
- package/skills/error-handling/SKILL.md +159 -0
- package/skills/firecrawl/SKILL.md +165 -0
- package/skills/firecrawl/rules/install.md +82 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/firecrawl-agent/SKILL.md +86 -0
- package/skills/firecrawl-build-interact/SKILL.md +96 -0
- package/skills/firecrawl-build-onboarding/SKILL.md +131 -0
- package/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
- package/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
- package/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
- package/skills/firecrawl-build-scrape/SKILL.md +97 -0
- package/skills/firecrawl-build-search/SKILL.md +97 -0
- package/skills/firecrawl-clone/SKILL.md +419 -0
- package/skills/firecrawl-crawl/SKILL.md +87 -0
- package/skills/firecrawl-download/SKILL.md +98 -0
- package/skills/firecrawl-interact/SKILL.md +112 -0
- package/skills/firecrawl-map/SKILL.md +79 -0
- package/skills/firecrawl-scrape/SKILL.md +97 -0
- package/skills/firecrawl-search/SKILL.md +88 -0
- package/skills/fitrah-guard/SKILL.md +78 -0
- package/skills/forge-quality-rules/SKILL.md +61 -0
- package/skills/ghazali-8lens/SKILL.md +56 -0
- package/skills/ijtihad-novel/SKILL.md +42 -0
- package/skills/ilham-intuition/SKILL.md +42 -0
- package/skills/imagegen/LICENSE.txt +201 -0
- package/skills/imagegen/SKILL.md +374 -0
- package/skills/imagegen/agents/openai.yaml +6 -0
- package/skills/imagegen/assets/imagegen-small.svg +5 -0
- package/skills/imagegen/assets/imagegen.png +0 -0
- package/skills/imagegen/references/cli.md +242 -0
- package/skills/imagegen/references/codex-network.md +33 -0
- package/skills/imagegen/references/image-api.md +90 -0
- package/skills/imagegen/references/prompting.md +118 -0
- package/skills/imagegen/references/sample-prompts.md +433 -0
- package/skills/imagegen/scripts/image_gen.py +995 -0
- package/skills/imagegen/scripts/remove_chroma_key.py +440 -0
- package/skills/istiqra-induction/SKILL.md +44 -0
- package/skills/ladunni-22/SKILL.md +53 -0
- package/skills/mizan/SKILL.md +90 -0
- package/skills/nadia/SKILL.md +56 -0
- package/skills/nadia-psi/SKILL.md +56 -0
- package/skills/never-guess/SKILL.md +75 -0
- package/skills/noor-recognition/SKILL.md +45 -0
- package/skills/observability/SKILL.md +133 -0
- package/skills/openai-docs/LICENSE.txt +201 -0
- package/skills/openai-docs/SKILL.md +100 -0
- package/skills/openai-docs/agents/openai.yaml +14 -0
- package/skills/openai-docs/assets/openai-small.svg +3 -0
- package/skills/openai-docs/assets/openai.png +0 -0
- package/skills/openai-docs/references/latest-model.md +37 -0
- package/skills/openai-docs/references/prompting-guide.md +244 -0
- package/skills/openai-docs/references/upgrade-guide.md +181 -0
- package/skills/openai-docs/scripts/resolve-latest-model-info.js +147 -0
- package/skills/pdf/LICENSE.txt +201 -0
- package/skills/pdf/SKILL.md +85 -0
- package/skills/pdf/agents/openai.yaml +5 -0
- package/skills/pdf/assets/pdf.png +0 -0
- package/skills/playwright/LICENSE.txt +201 -0
- package/skills/playwright/NOTICE.txt +14 -0
- package/skills/playwright/SKILL.md +165 -0
- package/skills/playwright/agents/openai.yaml +6 -0
- package/skills/playwright/assets/playwright-small.svg +3 -0
- package/skills/playwright/assets/playwright.png +0 -0
- package/skills/playwright/references/cli.md +116 -0
- package/skills/playwright/references/workflows.md +95 -0
- package/skills/playwright/scripts/playwright_cli.sh +25 -0
- package/skills/plugin-creator/SKILL.md +178 -0
- package/skills/plugin-creator/agents/openai.yaml +6 -0
- package/skills/plugin-creator/assets/plugin-creator-small.svg +3 -0
- package/skills/plugin-creator/assets/plugin-creator.png +0 -0
- package/skills/plugin-creator/references/plugin-json-spec.md +170 -0
- package/skills/plugin-creator/scripts/create_basic_plugin.py +301 -0
- package/skills/predictor/SKILL.md +43 -0
- package/skills/qiyas-analogy/SKILL.md +204 -0
- package/skills/refactoring/SKILL.md +137 -0
- package/skills/ruh-basis/SKILL.md +42 -0
- package/skills/security-review/SKILL.md +129 -0
- package/skills/skill-creator/SKILL.md +434 -0
- package/skills/skill-creator/agents/openai.yaml +5 -0
- package/skills/skill-creator/assets/skill-creator-small.svg +3 -0
- package/skills/skill-creator/assets/skill-creator.png +0 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/references/openai_yaml.md +49 -0
- package/skills/skill-creator/scripts/generate_openai_yaml.py +226 -0
- package/skills/skill-creator/scripts/init_skill.py +400 -0
- package/skills/skill-creator/scripts/quick_validate.py +101 -0
- package/skills/skill-installer/LICENSE.txt +202 -0
- package/skills/skill-installer/SKILL.md +76 -0
- package/skills/skill-installer/agents/openai.yaml +5 -0
- package/skills/skill-installer/assets/skill-installer-small.svg +3 -0
- package/skills/skill-installer/assets/skill-installer.png +0 -0
- package/skills/skill-installer/scripts/github_utils.py +21 -0
- package/skills/skill-installer/scripts/install-skill-from-github.py +308 -0
- package/skills/skill-installer/scripts/list-skills.py +107 -0
- package/skills/skills-and-hooks-reference/SKILL.md +196 -0
- package/skills/soul-domains/SKILL.md +43 -0
- package/skills/tadabbur/SKILL.md +232 -0
- package/skills/tadabbur-ops/SKILL.md +42 -0
- package/skills/tafakkur/SKILL.md +104 -0
- package/skills/testing-strategy/SKILL.md +122 -0
- package/src/action-ledger-core.ts +1054 -0
- package/src/chat.ts +5 -6
- package/src/codebase-scanner.ts +2 -0
- package/src/connectors/claude-code.ts +149 -12
- package/src/connectors/codebase-awareness.ts +325 -25
- package/src/connectors/codex.ts +1225 -41
- package/src/connectors/cursor.ts +8 -0
- package/src/connectors/governed-adapter.ts +174 -0
- package/src/connectors/opencode.ts +18 -2
- package/src/connectors/repo-guard.ts +24 -12
- package/src/connectors/runtime.ts +99 -2
- package/src/connectors/shell.ts +125 -7
- package/src/cross-cli-hive-binding.ts +290 -0
- package/src/garden-control-plane.ts +24 -1
- package/src/governed-surface-runner.ts +1227 -0
- package/src/index.ts +104 -1
- package/src/task-runner.ts +3794 -0
- package/dist/aria-connector/src/install-hooks.d.ts +0 -18
- package/dist/aria-connector/src/install-hooks.d.ts.map +0 -1
- package/dist/aria-connector/src/install-hooks.js +0 -224
- package/dist/aria-connector/src/install-hooks.js.map +0 -1
- package/dist/aria-connector/src/onboarding-wizard.d.ts +0 -5
- package/dist/aria-connector/src/onboarding-wizard.d.ts.map +0 -1
- package/dist/aria-connector/src/onboarding-wizard.js +0 -188
- package/dist/aria-connector/src/onboarding-wizard.js.map +0 -1
- package/dist/cli-0.2.38.tgz +0 -0
- package/dist/install.sh +0 -13
- package/src/__tests__/anthropic-oauth.test.ts +0 -186
- package/src/__tests__/auth-commands.test.ts +0 -132
- 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
|
+
```
|