@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,561 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deno-kv-raft-pubsub
|
|
3
|
+
description: Design and build a replicated, Raft-consensus-backed PubSub system on Deno KV with Jepsen/Maelstrom correctness testing. Use when building distributed pubsub, implementing Raft from first principles, creating Maelstrom test workloads, or designing linearizable message delivery on Deno. Do NOT use for simple single-node Deno KV usage, non-consensus messaging, or when a ready-made message broker (NATS, Redis, Kafka) would suffice.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: system-architect
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
domains: distributed-systems, consensus, pubsub
|
|
9
|
+
allowed-tools:
|
|
10
|
+
- Bash(deno *)
|
|
11
|
+
- Bash(mkdir *)
|
|
12
|
+
- Bash(ls *)
|
|
13
|
+
- Bash(cat *)
|
|
14
|
+
- Read(*)
|
|
15
|
+
- Write(*)
|
|
16
|
+
- Edit(*)
|
|
17
|
+
- Glob(*)
|
|
18
|
+
- Grep(*)
|
|
19
|
+
- Task(*)
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Deno KV Raft PubSub
|
|
23
|
+
|
|
24
|
+
A complete guide for building a production-grade, Raft-consensus-backed PubSub system on top of Deno KV, verified with the Jepsen/Maelstrom distributed systems workbench. Every design decision is justified from first principles.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## What I Do
|
|
29
|
+
|
|
30
|
+
I guide the construction of a replicated PubSub system where:
|
|
31
|
+
|
|
32
|
+
1. **The Raft replicated log IS the pubsub message bus** — every publish, subscribe, and unsubscribe is a deterministic command in the Raft log. When committed, the state machine applies it and triggers local subscriber delivery via `Deno.Kv.watch()`.
|
|
33
|
+
|
|
34
|
+
2. **Deno KV IS the persistent storage layer** — Raft persistent state (currentTerm, votedFor, log entries, snapshots) is stored in Deno KV per-node. Atomic operations (`kv.atomic()`) enforce Raft invariants at the storage level.
|
|
35
|
+
|
|
36
|
+
3. **Maelstrom IS the correctness gate** — custom Maelstrom workloads test linearizability, durability, partition tolerance, and crash recovery. No production deployment without green Jepsen tests.
|
|
37
|
+
|
|
38
|
+
4. **The architecture IS layered** — clean separation between Raft core, state machine, PubSub API, transport, and test harness. Each layer has a well-defined contract and can be tested in isolation.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## When to Use Me
|
|
43
|
+
|
|
44
|
+
**Trigger phrases:**
|
|
45
|
+
- "build a distributed pubsub system"
|
|
46
|
+
- "implement Raft consensus"
|
|
47
|
+
- "replicated message broker on Deno"
|
|
48
|
+
- "linearizable pubsub"
|
|
49
|
+
- "Maelstrom testing for consensus"
|
|
50
|
+
- "Jepsen verification"
|
|
51
|
+
- "Deno KV pubsub distributed"
|
|
52
|
+
- "from first principles distributed systems"
|
|
53
|
+
|
|
54
|
+
**Task patterns:**
|
|
55
|
+
- Designing a new replicated service on Deno KV
|
|
56
|
+
- Adding consensus to an existing Deno KV pubsub
|
|
57
|
+
- Building a Maelstrom test suite for a node
|
|
58
|
+
- Learning Raft by building it
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## When NOT to Use Me
|
|
63
|
+
|
|
64
|
+
- **Single-node pubsub** — if you only need in-process pubsub on one Deno KV instance, use `kv.watch()` directly. Raft adds ~3x complexity.
|
|
65
|
+
- **Existing message brokers** — if NATS, Redis Streams, or Apache Kafka meet your needs, use them. Building Raft yourself is for when you need embedded consensus with no external dependencies.
|
|
66
|
+
- **Non-Deno runtimes** — this design is Deno KV-specific. For Node.js, Python, or Go, use a different storage backend (etcd's Raft, etc.).
|
|
67
|
+
- **Already-greenfield** — if you have a working consensus system, don't rebuild. This skill is for new construction.
|
|
68
|
+
- **Performance-critical hot paths** — Raft consensus adds latency (at least 1 RTT for commit). If you need microsecond pubsub, this isn't the right pattern. Use in-memory channels with eventual consistency instead.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Architecture: First Principles
|
|
73
|
+
|
|
74
|
+
### Core Insight: The Raft Log IS the PubSub Bus
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Client publishes "hello" to topic "orders"
|
|
78
|
+
│
|
|
79
|
+
▼
|
|
80
|
+
┌──────────────┐
|
|
81
|
+
│ Raft Leader │ ← receives publish request
|
|
82
|
+
│ appends log │
|
|
83
|
+
│ entry: │
|
|
84
|
+
│ {term: 5, │
|
|
85
|
+
│ index: 42, │
|
|
86
|
+
│ cmd: { │
|
|
87
|
+
│ type: │
|
|
88
|
+
│ "publish",│
|
|
89
|
+
│ topic: │
|
|
90
|
+
│ "orders", │
|
|
91
|
+
│ payload: │
|
|
92
|
+
│ "hello"} │
|
|
93
|
+
│ } │
|
|
94
|
+
└──────┬───────┘
|
|
95
|
+
│ AppendEntries RPC
|
|
96
|
+
▼
|
|
97
|
+
┌──────────────┐ ┌──────────────┐
|
|
98
|
+
│ Follower 1 │ │ Follower 2 │
|
|
99
|
+
│ replicates │ │ replicates │
|
|
100
|
+
│ log entry │ │ log entry │
|
|
101
|
+
└──────┬───────┘ └──────┬───────┘
|
|
102
|
+
│ │
|
|
103
|
+
▼ ▼
|
|
104
|
+
┌──────────────────────────────────┐
|
|
105
|
+
│ All nodes commit entry at idx 42 │
|
|
106
|
+
│ State machine applies command │
|
|
107
|
+
│ → writes to local KV │
|
|
108
|
+
│ → kv.watch() fires on each node │
|
|
109
|
+
│ → subscribers notified │
|
|
110
|
+
└──────────────────────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Why this works:**
|
|
114
|
+
- Raft guarantees: committed entries are identical across all nodes, in the same order.
|
|
115
|
+
- If entry 42 is committed on node A, every node that commits 42 has identical content.
|
|
116
|
+
- Subscribers on any node see the same message stream for a given topic.
|
|
117
|
+
|
|
118
|
+
**Safety property:** If a publish returns success, every subsequent subscribe on any node sees that message (in commit order).
|
|
119
|
+
|
|
120
|
+
### System Components
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
124
|
+
│ RaftPubSubNode │
|
|
125
|
+
│ │
|
|
126
|
+
│ ┌──────────────────┐ ┌──────────────────┐ │
|
|
127
|
+
│ │ Raft Core │ │ PubSub API │ │
|
|
128
|
+
│ │ │ │ │ │
|
|
129
|
+
│ │ • Leader Election│ │ • Publish(t,m) │ │
|
|
130
|
+
│ │ • AppendEntries │ │ • Subscribe(t) │ │
|
|
131
|
+
│ │ • Log Replication│ │ • Unsubscribe(t) │ │
|
|
132
|
+
│ │ • Commit/Apply │ │ • ListTopics() │ │
|
|
133
|
+
│ │ • Snapshots │ │ • Ack/Cursor │ │
|
|
134
|
+
│ └────────┬─────────┘ └────────┬─────────┘ │
|
|
135
|
+
│ │ │ │
|
|
136
|
+
│ ▼ ▼ │
|
|
137
|
+
│ ┌────────────────────────────────────────────────┐ │
|
|
138
|
+
│ │ State Machine │ │
|
|
139
|
+
│ │ ┌──────────────┐ ┌──────────────────────┐ │ │
|
|
140
|
+
│ │ │ Topic │ │ Subscription │ │ │
|
|
141
|
+
│ │ │ Registry │ │ Manager │ │ │
|
|
142
|
+
│ │ │ (topics │ │ (kv.watch based │ │ │
|
|
143
|
+
│ │ │ as KV keys) │ │ per-subscriber) │ │ │
|
|
144
|
+
│ │ └──────────────┘ └──────────────────────┘ │ │
|
|
145
|
+
│ └───────────────────────┬────────────────────────┘ │
|
|
146
|
+
│ │ │
|
|
147
|
+
│ ▼ │
|
|
148
|
+
│ ┌────────────────────────────────────────────────┐ │
|
|
149
|
+
│ │ Deno KV (per-node) │ │
|
|
150
|
+
│ │ │ │
|
|
151
|
+
│ │ /raft/current_term → number │ │
|
|
152
|
+
│ │ /raft/voted_for → string|null │ │
|
|
153
|
+
│ │ /raft/log/[index] → LogEntry │ │
|
|
154
|
+
│ │ /raft/commit_index → number │ │
|
|
155
|
+
│ │ /raft/last_applied → number │ │
|
|
156
|
+
│ │ /raft/snapshot/[idx] → Snapshot │ │
|
|
157
|
+
│ │ │ │
|
|
158
|
+
│ │ /pubsub/topics/[name] → TopicMeta │ │
|
|
159
|
+
│ │ /pubsub/messages/ → │ │
|
|
160
|
+
│ │ [topic]/[seq] → Message │ │
|
|
161
|
+
│ │ /pubsub/subscriptions/ │ │
|
|
162
|
+
│ │ [sub_id] → Subscription │ │
|
|
163
|
+
│ └────────────────────────────────────────────────┘ │
|
|
164
|
+
│ │ │
|
|
165
|
+
│ ┌───────────────────────┴────────────────────────┐ │
|
|
166
|
+
│ │ Transport Layer │ │
|
|
167
|
+
│ │ ┌──────────────────┐ ┌──────────────────┐ │ │
|
|
168
|
+
│ │ │ WebSocket RPC │ │ HTTP/WSS API │ │ │
|
|
169
|
+
│ │ │ (inter-node) │ │ (client-facing) │ │ │
|
|
170
|
+
│ │ │ • RequestVote │ │ • POST /publish │ │ │
|
|
171
|
+
│ │ │ • AppendEntries │ │ • WS /subscribe │ │ │
|
|
172
|
+
│ │ │ • InstallSnapshot│ │ • GET /topics │ │ │
|
|
173
|
+
│ │ └──────────────────┘ └──────────────────┘ │ │
|
|
174
|
+
│ └────────────────────────────────────────────────┘ │
|
|
175
|
+
│ │
|
|
176
|
+
│ ┌────────────────────────────────────────────────┐ │
|
|
177
|
+
│ │ Maelstrom Harness (stdin/stdout) │ │
|
|
178
|
+
│ │ JSON-RPC protocol for Jepsen testing │ │
|
|
179
|
+
│ └────────────────────────────────────────────────┘ │
|
|
180
|
+
└──────────────────────────────────────────────────────────────┘
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Key Design Decisions
|
|
184
|
+
|
|
185
|
+
| Decision | Rationale | Tradeoff |
|
|
186
|
+
|----------|-----------|----------|
|
|
187
|
+
| **Raft log in Deno KV** (not in-memory) | Durability across restarts; atomic ops enforce invariants | ~1ms KV read latency per log access vs ~ns for memory |
|
|
188
|
+
| **kv.watch() for subscriber delivery** | Leverages Deno's built-in change notification; subscribers get push-based delivery | Each subscriber opens a watch; bounded by Deno's watch limit |
|
|
189
|
+
| **All state machine commands via Raft log** | Guarantees identical state across all nodes; enables Maelstrom verification | Write latency = 1 RTT for consensus |
|
|
190
|
+
| **WebSocket for inter-node RPC** | Bidirectional, low-overhead, Deno-native | Requires connection management; less tooling than HTTP |
|
|
191
|
+
| **Client routes to leader** (with redirect) | Only leader can propose; simplifies consistency | Clients need leader discovery; extra redirect hop |
|
|
192
|
+
| **Snapshots at configurable thresholds** | Prevents unbounded log growth; enables fast restart | Snapshot creation is CPU/memory intensive; choose threshold carefully |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Workflow
|
|
197
|
+
|
|
198
|
+
Follow these phases in order. Each phase builds on the previous. Do NOT skip ahead — the system will not be testable until Phase 2 is complete.
|
|
199
|
+
|
|
200
|
+
### Phase 0: Environment Setup
|
|
201
|
+
|
|
202
|
+
**Goal:** Deno runtime + Maelstrom installed + project scaffolded.
|
|
203
|
+
|
|
204
|
+
1. Verify Deno installation: `deno --version` (≥1.40 required for KV)
|
|
205
|
+
2. Install Maelstrom: download from [Jepsen Maelstrom releases](https://github.com/jepsen-io/maelstrom/releases)
|
|
206
|
+
3. Verify Maelstrom: `java -jar maelstrom.jar test --help`
|
|
207
|
+
4. Scaffold project structure:
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
deno-kv-raft-pubsub/
|
|
211
|
+
├── src/
|
|
212
|
+
│ ├── raft/
|
|
213
|
+
│ │ ├── mod.ts # Public Raft API
|
|
214
|
+
│ │ ├── types.ts # Shared types (Term, Index, LogEntry, etc.)
|
|
215
|
+
│ │ ├── persistent.ts # Deno KV persistence layer
|
|
216
|
+
│ │ ├── election.ts # Leader election logic
|
|
217
|
+
│ │ ├── replication.ts # AppendEntries + commit
|
|
218
|
+
│ │ ├── snapshot.ts # Log compaction
|
|
219
|
+
│ │ └── rpc.ts # Inter-node RPC transport
|
|
220
|
+
│ ├── pubsub/
|
|
221
|
+
│ │ ├── mod.ts # Public PubSub API
|
|
222
|
+
│ │ ├── types.ts # PubSub types
|
|
223
|
+
│ │ ├── state_machine.ts # Deterministic state machine
|
|
224
|
+
│ │ ├── delivery.ts # kv.watch() based delivery
|
|
225
|
+
│ │ └── api.ts # HTTP/WS client API
|
|
226
|
+
│ ├── maelstrom/
|
|
227
|
+
│ │ ├── mod.ts # Maelstrom protocol handler
|
|
228
|
+
│ │ ├── types.ts # Maelstrom message types
|
|
229
|
+
│ │ └── node.ts # Maelstrom worker entrypoint
|
|
230
|
+
│ └── server.ts # Main server entrypoint
|
|
231
|
+
├── tests/
|
|
232
|
+
│ ├── raft_test.ts # Unit tests for Raft
|
|
233
|
+
│ ├── pubsub_test.ts # Unit tests for PubSub
|
|
234
|
+
│ └── integration_test.ts # Multi-node integration
|
|
235
|
+
├── maelstrom/
|
|
236
|
+
│ ├── workloads/
|
|
237
|
+
│ │ ├── pubsub_append.clj # Custom workload
|
|
238
|
+
│ │ └── pubsub_total.clj # Custom workload
|
|
239
|
+
│ └── run_tests.sh # Test runner script
|
|
240
|
+
├── deno.json # Deno config
|
|
241
|
+
└── README.md
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
5. Create `deno.json`:
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"tasks": {
|
|
248
|
+
"dev": "deno run --allow-net --allow-read --allow-write --unstable-kv src/server.ts",
|
|
249
|
+
"test": "deno test --allow-net --allow-read --allow-write --unstable-kv",
|
|
250
|
+
"maelstrom": "./maelstrom/run_tests.sh"
|
|
251
|
+
},
|
|
252
|
+
"imports": {
|
|
253
|
+
"std/": "https://deno.land/std@0.224.0/"
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Phase 1: Raft Core (No PubSub)
|
|
259
|
+
|
|
260
|
+
**Goal:** A working Raft implementation that passes Maelstrom's `lin-kv` workload (linearizable KV store). This validates consensus before adding pubsub complexity.
|
|
261
|
+
|
|
262
|
+
Read these references before starting:
|
|
263
|
+
- [reference/raft-spec.md](reference/raft-spec.md) — Complete Raft spec adapted for Deno KV
|
|
264
|
+
- [reference/state-machine.md](reference/state-machine.md) — Deterministic state machine design
|
|
265
|
+
|
|
266
|
+
**Sub-phase 1.1: Persistent State Layer**
|
|
267
|
+
|
|
268
|
+
Implement `persistent.ts`:
|
|
269
|
+
- Initialize Deno KV connection (open with path parameter for per-node isolation)
|
|
270
|
+
- Define KV key schemas for all Raft persistent state
|
|
271
|
+
- Implement atomic read-modify-write for `currentTerm`, `votedFor`
|
|
272
|
+
- Implement log entry append with atomic index tracking
|
|
273
|
+
- Implement commit index and last_applied tracking
|
|
274
|
+
|
|
275
|
+
**Validation:** Write a test that starts two nodes, has one become leader, commits entries, and verifies followers replicate them.
|
|
276
|
+
|
|
277
|
+
**Sub-phase 1.2: Leader Election**
|
|
278
|
+
|
|
279
|
+
Implement `election.ts`:
|
|
280
|
+
- Election timer with randomized timeout (150–300ms)
|
|
281
|
+
- RequestVote RPC: send and handle
|
|
282
|
+
- Follower grants vote if: candidate's term ≥ currentTerm AND (votedFor is null OR votedFor is candidate) AND candidate's log is at least as up-to-date
|
|
283
|
+
- Candidate becomes leader upon majority votes
|
|
284
|
+
- Leader sends heartbeats (AppendEntries with no entries) every 50ms
|
|
285
|
+
- Step-down: if a node receives an RPC with term > currentTerm, revert to follower
|
|
286
|
+
|
|
287
|
+
**Validation:** Run a 3-node cluster without any client commands. Kill the leader. Verify election completes within 1 second.
|
|
288
|
+
|
|
289
|
+
**Sub-phase 1.3: Log Replication**
|
|
290
|
+
|
|
291
|
+
Implement `replication.ts`:
|
|
292
|
+
- Leader appends client command to local log
|
|
293
|
+
- Sends AppendEntries to all followers with prevLogIndex, prevLogTerm
|
|
294
|
+
- Follower checks: log contains entry at prevLogIndex with matching term
|
|
295
|
+
- If yes: append new entries, respond success
|
|
296
|
+
- If no: respond failure, leader decrements nextIndex and retries
|
|
297
|
+
- Leader commits when entry is replicated to majority
|
|
298
|
+
- Apply committed entries to state machine in order
|
|
299
|
+
|
|
300
|
+
**Sub-phase 1.4: Maelstrom lin-kv Test**
|
|
301
|
+
|
|
302
|
+
Implement `maelstrom/mod.ts` and `maelstrom/node.ts`:
|
|
303
|
+
- Parse stdin JSON lines → MaelstromMessage
|
|
304
|
+
- Handle `init` message: store node_id, node_ids
|
|
305
|
+
- Handle `read`, `write`, `cas` messages → route to Raft leader as state machine commands
|
|
306
|
+
- Return responses to stdout
|
|
307
|
+
- Build a trivial KV state machine (just a Map) for testing
|
|
308
|
+
|
|
309
|
+
Run: `java -jar maelstrom.jar test -w lin-kv --bin deno run --allow-all src/maelstrom/node.ts --node-count 3 --time-limit 30 --rate 10`
|
|
310
|
+
|
|
311
|
+
**Gate:** Do NOT proceed to Phase 2 until `lin-kv` passes with 0 anomalies. If Maelstrom reports consistency violations, debug the Raft implementation. Common issues:
|
|
312
|
+
- Incorrect log matching check in AppendEntries handler
|
|
313
|
+
- Not persisting votedFor before responding to RequestVote
|
|
314
|
+
- Committing entries from previous terms (use leader's term for commit)
|
|
315
|
+
- Leader not waiting for majority before responding to client
|
|
316
|
+
|
|
317
|
+
### Phase 2: PubSub State Machine
|
|
318
|
+
|
|
319
|
+
**Goal:** Replace the trivial KV state machine with a PubSub state machine that handles topic management and message delivery.
|
|
320
|
+
|
|
321
|
+
Read: [reference/pubsub-api.md](reference/pubsub-api.md) — Complete API contract
|
|
322
|
+
|
|
323
|
+
**Sub-phase 2.1: State Machine Commands**
|
|
324
|
+
|
|
325
|
+
Define command types in `pubsub/types.ts`:
|
|
326
|
+
```typescript
|
|
327
|
+
type PubSubCommand =
|
|
328
|
+
| { type: "create_topic"; topic: string; metadata?: Record<string, unknown> }
|
|
329
|
+
| { type: "delete_topic"; topic: string }
|
|
330
|
+
| { type: "publish"; topic: string; payload: unknown; id: string }
|
|
331
|
+
| { type: "subscribe"; topic: string; subscriber_id: string }
|
|
332
|
+
| { type: "unsubscribe"; topic: string; subscriber_id: string };
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**Sub-phase 2.2: Deterministic State Machine**
|
|
336
|
+
|
|
337
|
+
Implement `pubsub/state_machine.ts`:
|
|
338
|
+
- Maintain topic registry (Set of active topics)
|
|
339
|
+
- For `publish`: assign monotonically increasing sequence number per topic, write message to KV at `/pubsub/messages/{topic}/{seq}`
|
|
340
|
+
- For `subscribe`/`unsubscribe`: track subscriptions in KV (for crash recovery)
|
|
341
|
+
- All mutations go through the Raft log (leader proposes, all apply)
|
|
342
|
+
|
|
343
|
+
**Critical: Determinism** — The state machine must produce identical results on every node:
|
|
344
|
+
- No random number generation in apply()
|
|
345
|
+
- No wall-clock time in apply()
|
|
346
|
+
- No node-ID-dependent logic in apply()
|
|
347
|
+
- All inputs come from the command itself
|
|
348
|
+
|
|
349
|
+
**Sub-phase 2.3: Subscriber Delivery**
|
|
350
|
+
|
|
351
|
+
Implement `pubsub/delivery.ts`:
|
|
352
|
+
- On state machine apply of a `publish` command, write to KV key `/pubsub/messages/{topic}/{seq}`
|
|
353
|
+
- Subscribers use `kv.watch([prefix("/pubsub/messages/{topic}/")])` to receive new messages
|
|
354
|
+
- On `subscribe` command applied, start a new kv.watch for that topic
|
|
355
|
+
- Handle reconnection: after crash recovery, subscribers restart from last committed sequence
|
|
356
|
+
|
|
357
|
+
**Sub-phase 2.4: Client API**
|
|
358
|
+
|
|
359
|
+
Implement `pubsub/api.ts`:
|
|
360
|
+
- `POST /publish/:topic` — forward to leader; leader proposes to Raft; respond after commit (or with future index for async)
|
|
361
|
+
- `GET /subscribe/:topic` (WebSocket upgrade) — establish persistent connection; stream messages from kv.watch
|
|
362
|
+
- `GET /topics` — read from local state machine (all nodes have identical state)
|
|
363
|
+
- Leader discovery: any node returns `{ leader: "node-2:8080" }` on requests
|
|
364
|
+
|
|
365
|
+
### Phase 3: Maelstrom PubSub Testing
|
|
366
|
+
|
|
367
|
+
**Goal:** Create custom Maelstrom workloads that verify PubSub safety properties.
|
|
368
|
+
|
|
369
|
+
Read: [reference/maelstrom-integration.md](reference/maelstrom-integration.md) — Complete Maelstrom integration guide
|
|
370
|
+
|
|
371
|
+
**Custom Workloads:**
|
|
372
|
+
|
|
373
|
+
1. **pubsub-append** — Append-only workload:
|
|
374
|
+
- Clients publish to topics, subscribers verify they receive all messages in order
|
|
375
|
+
- Network partitions injected; verify minority partition makes no progress
|
|
376
|
+
- Verify: no gaps, no duplicates, ordering preserved
|
|
377
|
+
|
|
378
|
+
2. **pubsub-total** — Linearizability workload:
|
|
379
|
+
- Multiple publishers on same topic, multiple subscribers
|
|
380
|
+
- After each publish acknowledged, subscriber on ANY node must see it
|
|
381
|
+
- Verify: real-time ordering (if publish A completes before publish B starts, A appears before B in all subscriber streams)
|
|
382
|
+
|
|
383
|
+
3. **pubsub-crash** — Crash recovery:
|
|
384
|
+
- Kill leaders during publish, verify no lost messages
|
|
385
|
+
- Kill followers, verify they catch up on restart
|
|
386
|
+
- Kill all nodes, restart, verify all committed messages are deliverable
|
|
387
|
+
|
|
388
|
+
4. **pubsub-set** — Set-based safety:
|
|
389
|
+
- Track set of all published messages across all nodes
|
|
390
|
+
- Verify: no message appears in subscriber stream that hasn't been published
|
|
391
|
+
- Verify: all published-and-acknowledged messages appear in all subscriber streams
|
|
392
|
+
|
|
393
|
+
**Testing cadence:**
|
|
394
|
+
```
|
|
395
|
+
Phase 1 Gate: lin-kv passes (30s, 3 nodes, 10 req/s) ← MUST PASS
|
|
396
|
+
Phase 2 Gate: pubsub-append passes (60s, 3 nodes, 20 req/s)
|
|
397
|
+
Phase 3 Gate: pubsub-total passes (60s, 3 nodes, 20 req/s)
|
|
398
|
+
Release Gate: all workloads pass (120s, 5 nodes, 50 req/s)
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### Phase 4: Production Hardening
|
|
402
|
+
|
|
403
|
+
Only after all Maelstrom tests pass:
|
|
404
|
+
|
|
405
|
+
1. **Snapshotting** — Implement log compaction when log exceeds 10,000 entries:
|
|
406
|
+
- Create snapshot of state machine
|
|
407
|
+
- Truncate log up to snapshot index
|
|
408
|
+
- Send snapshots to slow followers via InstallSnapshot RPC
|
|
409
|
+
|
|
410
|
+
2. **Membership changes** — Implement joint consensus for adding/removing nodes:
|
|
411
|
+
- Enter joint configuration (Cold,new)
|
|
412
|
+
- Commit joint config
|
|
413
|
+
- Transition to new config (Cnew)
|
|
414
|
+
- Commit new config
|
|
415
|
+
|
|
416
|
+
3. **Backpressure** — Limit in-flight AppendEntries per follower; pause proposals when log grows too far ahead of commit index
|
|
417
|
+
|
|
418
|
+
4. **Observability** — Expose metrics:
|
|
419
|
+
- `raft_term` (gauge), `raft_commit_index` (gauge), `raft_log_size` (gauge)
|
|
420
|
+
- `pubsub_messages_published_total` (counter), `pubsub_subscribers_active` (gauge)
|
|
421
|
+
- `raft_elections_total` (counter), `raft_leader_changes_total` (counter)
|
|
422
|
+
|
|
423
|
+
5. **Client libraries** — Generate from API spec; provide at-least-once delivery with client-side dedup
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Safety Properties (The Contract)
|
|
428
|
+
|
|
429
|
+
| Property | What it means | How Raft guarantees it |
|
|
430
|
+
|----------|---------------|----------------------|
|
|
431
|
+
| **Linearizability** | After publish returns, all reads see it | Write goes through leader → committed → applied → visible |
|
|
432
|
+
| **Ordering** | Messages in a topic are in commit order | Raft log is totally ordered; state machine applies sequentially |
|
|
433
|
+
| **Exactly-once** | No duplicate message delivery | Monotonic sequence numbers per topic; clients track last received |
|
|
434
|
+
| **Durability** | Committed messages survive crashes | Raft log persisted in Deno KV; majority replication |
|
|
435
|
+
| **Partition tolerance** | Minority partition doesn't corrupt | No commit without majority; split-brain prevented by election restriction |
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## References
|
|
440
|
+
|
|
441
|
+
These reference files provide detailed specifications. Read them in order:
|
|
442
|
+
|
|
443
|
+
1. **[reference/raft-spec.md](reference/raft-spec.md)** — Complete Raft protocol specification adapted for Deno KV storage. Includes persistent state key schemas, RPC message formats, leader election algorithm, log replication protocol, and snapshot installation.
|
|
444
|
+
|
|
445
|
+
2. **[reference/state-machine.md](reference/state-machine.md)** — Deterministic state machine design for PubSub. Includes command types, apply() semantics, KV key layout, and determinism constraints.
|
|
446
|
+
|
|
447
|
+
3. **[reference/pubsub-api.md](reference/pubsub-api.md)** — Client-facing API contract. HTTP endpoints, WebSocket protocol, error codes, leader discovery, and delivery semantics (at-least-once vs exactly-once).
|
|
448
|
+
|
|
449
|
+
4. **[reference/maelstrom-integration.md](reference/maelstrom-integration.md)** — Maelstrom test harness integration. stdin/stdout protocol, custom workload design, Jepsen checker integration, and fault injection patterns.
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## Output & Organization
|
|
454
|
+
|
|
455
|
+
### Source File Structure
|
|
456
|
+
|
|
457
|
+
All implementation goes under `src/` with strict module boundaries:
|
|
458
|
+
|
|
459
|
+
```
|
|
460
|
+
src/
|
|
461
|
+
├── raft/ # Pure Raft — no pubsub awareness
|
|
462
|
+
│ ├── mod.ts # Exports: RaftNode class
|
|
463
|
+
│ ├── types.ts # Term, Index, LogEntry, Role, RpcMessage
|
|
464
|
+
│ ├── persistent.ts # KV read/write for Raft state
|
|
465
|
+
│ ├── election.ts # Timeout management, RequestVote
|
|
466
|
+
│ ├── replication.ts # AppendEntries, commit tracking
|
|
467
|
+
│ ├── snapshot.ts # Snapshot creation and installation
|
|
468
|
+
│ └── rpc.ts # WebSocket transport, serialization
|
|
469
|
+
├── pubsub/ # PubSub on top of Raft
|
|
470
|
+
│ ├── mod.ts # Exports: PubSubNode class
|
|
471
|
+
│ ├── types.ts # PubSubCommand, TopicMeta, Message, Subscription
|
|
472
|
+
│ ├── state_machine.ts # Deterministic apply() for all commands
|
|
473
|
+
│ ├── delivery.ts # kv.watch() subscriber delivery
|
|
474
|
+
│ └── api.ts # HTTP/WS server for client connections
|
|
475
|
+
├── maelstrom/ # Maelstrom test harness
|
|
476
|
+
│ ├── mod.ts # Exports: MaelstromNode class
|
|
477
|
+
│ ├── types.ts # MaelstromMessage, InitBody, RpcBody
|
|
478
|
+
│ └── node.ts # Entrypoint: stdin→parse→route→stdout
|
|
479
|
+
└── server.ts # Production entrypoint (HTTP + WS + Raft)
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
### Naming Conventions
|
|
483
|
+
|
|
484
|
+
- **Files**: lowercase with underscores, `.ts` extension
|
|
485
|
+
- **Modules**: one public `mod.ts` per directory that re-exports the public API
|
|
486
|
+
- **Types**: PascalCase for types (`LogEntry`), UPPER_SNAKE for constants (`HEARTBEAT_INTERVAL_MS`)
|
|
487
|
+
- **Functions**: camelCase for pure functions (`becomeLeader`), PascalCase for constructors
|
|
488
|
+
- **KV Keys**: `/prefix/subprefix/identifier` format (e.g., `/raft/log/0000000042`)
|
|
489
|
+
- **Test files**: mirror source structure with `_test.ts` suffix
|
|
490
|
+
|
|
491
|
+
### Build & Run Commands
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
# Development
|
|
495
|
+
deno task dev # Start a single node
|
|
496
|
+
|
|
497
|
+
# Multi-node local cluster (for integration testing)
|
|
498
|
+
deno run --allow-all src/server.ts --node-id node-1 --port 8081 --peers node-2:8082,node-3:8083 &
|
|
499
|
+
deno run --allow-all src/server.ts --node-id node-2 --port 8082 --peers node-1:8081,node-3:8083 &
|
|
500
|
+
deno run --allow-all src/server.ts --node-id node-3 --port 8083 --peers node-1:8081,node-2:8082 &
|
|
501
|
+
|
|
502
|
+
# Maelstrom testing (lin-kv gate)
|
|
503
|
+
java -jar maelstrom.jar test \
|
|
504
|
+
-w lin-kv \
|
|
505
|
+
--bin deno run --allow-all src/maelstrom/node.ts \
|
|
506
|
+
--node-count 3 \
|
|
507
|
+
--time-limit 30 \
|
|
508
|
+
--rate 10
|
|
509
|
+
|
|
510
|
+
# Maelstrom testing (custom pubsub workloads)
|
|
511
|
+
java -jar maelstrom.jar test \
|
|
512
|
+
-w pubsub-append \
|
|
513
|
+
--bin deno run --allow-all src/maelstrom/node.ts \
|
|
514
|
+
--node-count 3 \
|
|
515
|
+
--time-limit 60 \
|
|
516
|
+
--rate 20
|
|
517
|
+
|
|
518
|
+
# Run all tests
|
|
519
|
+
deno task test
|
|
520
|
+
deno task maelstrom
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### Kv Key Schemas
|
|
524
|
+
|
|
525
|
+
All raft state in Deno KV uses the `/raft/` prefix:
|
|
526
|
+
```
|
|
527
|
+
/raft/current_term → number (u64)
|
|
528
|
+
/raft/voted_for → string | null
|
|
529
|
+
/raft/log/{index:016d} → { term: number, command: PubSubCommand }
|
|
530
|
+
/raft/commit_index → number (u64)
|
|
531
|
+
/raft/last_applied → number (u64)
|
|
532
|
+
/raft/snapshot/{index} → { data: Uint8Array, last_included_index: number, last_included_term: number }
|
|
533
|
+
/raft/configuration → string[] (node IDs)
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
All pubsub state uses the `/pubsub/` prefix:
|
|
537
|
+
```
|
|
538
|
+
/pubsub/topics/{name} → { created_at: number, metadata?: object }
|
|
539
|
+
/pubsub/messages/{topic}/{seq:016d} → { id: string, payload: unknown, timestamp: number }
|
|
540
|
+
/pubsub/subscriptions/{sub_id} → { subscriber_id: string, topic: string, last_delivered: number }
|
|
541
|
+
/pubsub/sequences/{topic} → number (last sequence number)
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
Zen: the raft log is the truth. the state machine is its shadow. pubsub is what the shadow casts.
|
|
545
|
+
## First-Class Production Contract
|
|
546
|
+
|
|
547
|
+
This skill must deepen the work, not decorate it. When loaded, apply it as a production requirement:
|
|
548
|
+
|
|
549
|
+
- no placeholders, no fake fallbacks, no vague future wiring, and no cosmetic compliance
|
|
550
|
+
- real proof from the repo, runtime, tests, logs, endpoint, or owner instruction before any completion claim
|
|
551
|
+
- 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
|
|
552
|
+
- architect/ARIA console escalation when the same failure repeats twice, crosses system boundaries, or cannot be verified locally
|
|
553
|
+
- owner-visible output that states the exact state of the work: changed, verified, blocked, or needing a decision
|
|
554
|
+
## Self-Executing Recovery Contract
|
|
555
|
+
|
|
556
|
+
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.
|
|
557
|
+
|
|
558
|
+
- Make exactly one self-executed recovery attempt using the strongest safe local, repository, runtime, test, log, endpoint, or owner-provided evidence available.
|
|
559
|
+
- 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.
|
|
560
|
+
- 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.
|
|
561
|
+
- 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.
|