@aria_asi/cli 0.2.39 → 0.2.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1271 -40
- 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 +516 -92
- 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 +516 -92
- 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 +516 -92
- 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 +1273 -40
- 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,111 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* cognitive-block-parser.mjs — structural parser for assistant cognitive blocks.
|
|
4
|
+
*
|
|
5
|
+
* Phase 0 audit Cluster H finding M0.H.X12: hook code parses
|
|
6
|
+
* `<cognition>`, `<applied_cognition>`, `<verify>`, `<expected>` XML-shaped
|
|
7
|
+
* blocks using inline regex (3+ files, slightly different patterns each).
|
|
8
|
+
* Whitespace + nesting + tag-malformation is brittle on regex.
|
|
9
|
+
*
|
|
10
|
+
* This helper provides ONE structural extractor. Returns a typed result
|
|
11
|
+
* so callers can branch on `.cognition` / `.applied` / `.verify` /
|
|
12
|
+
* `.expected` directly + see `.malformed` per block to surface tag-shape
|
|
13
|
+
* issues to operators.
|
|
14
|
+
*
|
|
15
|
+
* Doctrine bind:
|
|
16
|
+
* - clean_cognition (one parser, one concern)
|
|
17
|
+
* - truth_over_deception (regex over XML lies about parse semantics
|
|
18
|
+
* when tags nest or split across newlines unexpectedly)
|
|
19
|
+
* - axiom_runtime_rule.admit_ignorance (malformed cases surface in
|
|
20
|
+
* the result instead of silently returning undefined)
|
|
21
|
+
*
|
|
22
|
+
* Mirror: this file MUST be byte-identical between
|
|
23
|
+
* ops/claude-hooks/lib/cognitive-block-parser.mjs
|
|
24
|
+
* packages/aria-connector/hooks/lib/cognitive-block-parser.mjs
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
// Conservative pattern: open tag → minimal-greedy content → close tag.
|
|
28
|
+
// We DO NOT support nested same-name blocks (a <cognition> inside a
|
|
29
|
+
// <cognition> is treated as malformed). The cognition contract emits
|
|
30
|
+
// these blocks at the assistant-text top level; nesting is malformed.
|
|
31
|
+
//
|
|
32
|
+
// Whitespace tolerated around the opening / closing tags.
|
|
33
|
+
function buildBlockPattern(tag) {
|
|
34
|
+
return new RegExp(`<\\s*${tag}\\s*>([\\s\\S]*?)<\\s*/\\s*${tag}\\s*>`, 'i');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const BLOCKS = Object.freeze({
|
|
38
|
+
cognition: buildBlockPattern('cognition'),
|
|
39
|
+
applied_cognition: buildBlockPattern('applied_cognition'),
|
|
40
|
+
verify: buildBlockPattern('verify'),
|
|
41
|
+
expected: buildBlockPattern('expected'),
|
|
42
|
+
reflection: buildBlockPattern('reflection'),
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Extract typed cognitive blocks from assistant text.
|
|
47
|
+
*
|
|
48
|
+
* @param {string} text raw assistant prose (or undefined/empty)
|
|
49
|
+
* @returns {{
|
|
50
|
+
* cognition: string | null,
|
|
51
|
+
* applied_cognition: string | null,
|
|
52
|
+
* verify: string | null,
|
|
53
|
+
* expected: string | null,
|
|
54
|
+
* reflection: string | null,
|
|
55
|
+
* malformed: { tags_unclosed: string[], tags_duplicated: string[] },
|
|
56
|
+
* }}
|
|
57
|
+
*/
|
|
58
|
+
export function parseCognitiveBlocks(text) {
|
|
59
|
+
const result = {
|
|
60
|
+
cognition: null,
|
|
61
|
+
applied_cognition: null,
|
|
62
|
+
verify: null,
|
|
63
|
+
expected: null,
|
|
64
|
+
reflection: null,
|
|
65
|
+
malformed: {
|
|
66
|
+
tags_unclosed: [],
|
|
67
|
+
tags_duplicated: [],
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
const src = String(text || '');
|
|
71
|
+
if (!src) return result;
|
|
72
|
+
|
|
73
|
+
for (const [tag, rx] of Object.entries(BLOCKS)) {
|
|
74
|
+
const match = src.match(rx);
|
|
75
|
+
if (match && typeof match[1] === 'string') {
|
|
76
|
+
result[tag] = match[1].trim() || null;
|
|
77
|
+
}
|
|
78
|
+
// Malformed-tag check: count opening tags vs closing tags. Mismatch
|
|
79
|
+
// = unclosed (or unopened) tag — surface for operator visibility.
|
|
80
|
+
const openRx = new RegExp(`<\\s*${tag}\\s*>`, 'gi');
|
|
81
|
+
const closeRx = new RegExp(`<\\s*/\\s*${tag}\\s*>`, 'gi');
|
|
82
|
+
const opens = (src.match(openRx) || []).length;
|
|
83
|
+
const closes = (src.match(closeRx) || []).length;
|
|
84
|
+
if (opens !== closes) {
|
|
85
|
+
result.malformed.tags_unclosed.push(tag);
|
|
86
|
+
} else if (opens > 1) {
|
|
87
|
+
// Same tag appearing twice = duplicate; we only extract the first.
|
|
88
|
+
result.malformed.tags_duplicated.push(tag);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Convenience: extract just the cognition block content (or null).
|
|
97
|
+
*/
|
|
98
|
+
export function extractCognition(text) {
|
|
99
|
+
return parseCognitiveBlocks(text).cognition;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Convenience: returns true iff at least one structural cognitive block
|
|
104
|
+
* is present and well-formed.
|
|
105
|
+
*/
|
|
106
|
+
export function hasAnyCognitiveBlock(text) {
|
|
107
|
+
const r = parseCognitiveBlocks(text);
|
|
108
|
+
return Boolean(r.cognition || r.applied_cognition || r.verify || r.expected || r.reflection);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export default { parseCognitiveBlocks, extractCognition, hasAnyCognitiveBlock };
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// ── doctrine-self-check-file: M0.H.X6 (2026-05-06) ──
|
|
2
|
+
// File-level acks for trip-vocab in operator-facing diagnostic strings:
|
|
3
|
+
// doctrine-self-check-file: \b(?:skeleton|stub)\b loader-naming-the-pattern-it-validates-against
|
|
4
|
+
// doctrine-self-check-file: kill.?switch|env.?(?:var|variable).?(?:override|disable|bypass)|process\.env\.[A-Z_]+\s*===\s*['"]off['"] loader-naming-trigger-content-not-using-the-pattern
|
|
5
|
+
|
|
6
|
+
// silent-by-design: docstring below names the prior antipattern shape
|
|
7
|
+
// (try-empty-catch); the loader itself surfaces all errors to stderr.
|
|
8
|
+
/**
|
|
9
|
+
* doctrine_trigger_map.json loader (M0.H.X6).
|
|
10
|
+
*
|
|
11
|
+
* Closes the audit finding M0.H.6 / M0.H.X6:
|
|
12
|
+
* - Triggers compiled per-call via `new RegExp(...)` — no precompile cache
|
|
13
|
+
* - Malformed regex entries silently skipped (prior shape: try-empty-catch)
|
|
14
|
+
* - No JSON Schema validation — bad entries shipped to runtime
|
|
15
|
+
*
|
|
16
|
+
* This loader:
|
|
17
|
+
* 1. Validates the file shape against doctrine_trigger_map.schema.json
|
|
18
|
+
* (presence + types + regex compilability) at load time
|
|
19
|
+
* 2. Precompiles every regex once + caches by trigger string
|
|
20
|
+
* 3. Surfaces validation failures to stderr instead of silent skip
|
|
21
|
+
* 4. Returns an array of typed entries ready for fast scanning
|
|
22
|
+
*
|
|
23
|
+
* The validation is structural-shape (not full JSON Schema runtime)
|
|
24
|
+
* because we don't want to add an `ajv`-class dependency to the hooks.
|
|
25
|
+
* The schema lives alongside as documentation + future-proof contract.
|
|
26
|
+
*
|
|
27
|
+
* Mirror: this file MUST be byte-identical between
|
|
28
|
+
* ops/claude-hooks/lib/doctrine-trigger-map-loader.mjs
|
|
29
|
+
* packages/aria-connector/hooks/lib/doctrine-trigger-map-loader.mjs
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
33
|
+
|
|
34
|
+
let _cache = null;
|
|
35
|
+
// Cache key: { mtimeMs, path } — re-validates if either changed.
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Load + validate + precompile the doctrine trigger map.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} mapPath - absolute path to doctrine_trigger_map.json
|
|
41
|
+
* @returns {{ triggers: Array<{ trigger: string, regex: RegExp, memory: string, teaching: string, counter_action: string }>, errors: string[] }}
|
|
42
|
+
*
|
|
43
|
+
* Throws if the file is missing or unparseable. Validation errors per
|
|
44
|
+
* entry surface in the returned `errors` array (not throw) so a single
|
|
45
|
+
* bad entry doesn't break the whole map; operator sees the entry name
|
|
46
|
+
* + reason via stderr.
|
|
47
|
+
*/
|
|
48
|
+
export function loadDoctrineTriggerMap(mapPath) {
|
|
49
|
+
if (!existsSync(mapPath)) {
|
|
50
|
+
throw new Error(`doctrine-trigger-map-loader: file missing at ${mapPath}`);
|
|
51
|
+
}
|
|
52
|
+
const stat = statSync(mapPath);
|
|
53
|
+
if (_cache && _cache.mtimeMs === stat.mtimeMs && _cache.path === mapPath) {
|
|
54
|
+
return { triggers: _cache.triggers, errors: _cache.errors };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let raw;
|
|
58
|
+
try {
|
|
59
|
+
raw = readFileSync(mapPath, 'utf8');
|
|
60
|
+
} catch (err) {
|
|
61
|
+
throw new Error(`doctrine-trigger-map-loader: read failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let data;
|
|
65
|
+
try {
|
|
66
|
+
data = JSON.parse(raw);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
throw new Error(`doctrine-trigger-map-loader: JSON parse failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (!data || typeof data !== 'object' || !Array.isArray(data.triggers)) {
|
|
72
|
+
throw new Error(`doctrine-trigger-map-loader: expected { triggers: [...] }, got ${typeof data}`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const triggers = [];
|
|
76
|
+
const errors = [];
|
|
77
|
+
for (let i = 0; i < data.triggers.length; i++) {
|
|
78
|
+
const entry = data.triggers[i];
|
|
79
|
+
const where = `entry[${i}]${entry && entry.trigger ? ` trigger="${String(entry.trigger).slice(0, 60)}"` : ''}`;
|
|
80
|
+
if (!entry || typeof entry !== 'object') {
|
|
81
|
+
errors.push(`${where}: not an object`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (typeof entry.trigger !== 'string' || entry.trigger.length < 2) {
|
|
85
|
+
errors.push(`${where}: trigger field missing or too short`);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (typeof entry.memory !== 'string' || !/\.md$/.test(entry.memory)) {
|
|
89
|
+
errors.push(`${where}: memory field must be a .md filename`);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (typeof entry.teaching !== 'string' || entry.teaching.length < 8) {
|
|
93
|
+
errors.push(`${where}: teaching field missing or too short`);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (typeof entry.counter_action !== 'string' || entry.counter_action.length < 8) {
|
|
97
|
+
errors.push(`${where}: counter_action field missing or too short`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
let regex;
|
|
101
|
+
try {
|
|
102
|
+
regex = new RegExp(entry.trigger, 'gi');
|
|
103
|
+
} catch (err) {
|
|
104
|
+
errors.push(`${where}: regex compile failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
triggers.push({
|
|
108
|
+
trigger: entry.trigger,
|
|
109
|
+
regex,
|
|
110
|
+
memory: entry.memory,
|
|
111
|
+
teaching: entry.teaching,
|
|
112
|
+
counter_action: entry.counter_action,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Surface errors loud (M0.H.X6 — was silent skip before).
|
|
117
|
+
for (const e of errors) {
|
|
118
|
+
process.stderr.write(`[doctrine-trigger-map-loader] ${e}\n`);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
_cache = {
|
|
122
|
+
mtimeMs: stat.mtimeMs,
|
|
123
|
+
path: mapPath,
|
|
124
|
+
triggers,
|
|
125
|
+
errors,
|
|
126
|
+
};
|
|
127
|
+
return { triggers, errors };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Force a cache invalidation (for tests).
|
|
132
|
+
*/
|
|
133
|
+
export function _resetDoctrineTriggerMapCache() {
|
|
134
|
+
_cache = null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export default { loadDoctrineTriggerMap, _resetDoctrineTriggerMapCache };
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
// Domain-aware output QA for Aria stop gates.
|
|
2
2
|
// Deterministic local checks complement remote Mizan; they do not replace it.
|
|
3
|
+
//
|
|
4
|
+
// ARIA_ALLOW_STUB — reason: this file contains detector regexes whose source
|
|
5
|
+
// literally enumerates the doctrine-banned tokens (TODO, placeholder, stub,
|
|
6
|
+
// mock, fake, pending, …) so the gate matches its own pattern source. The
|
|
7
|
+
// detectors are real shipped enforcement, not stub semantics. Reviewable.
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
buildUniversalConnectorGoalContract,
|
|
11
|
+
evaluateGoalContractOutput,
|
|
12
|
+
} from './goal-contract-quality.mjs';
|
|
3
13
|
|
|
4
14
|
const DOMAIN_RULES = [
|
|
5
15
|
{
|
|
@@ -36,6 +46,19 @@ function hasAny(text, patterns) {
|
|
|
36
46
|
return patterns.some((pattern) => pattern.test(text));
|
|
37
47
|
}
|
|
38
48
|
|
|
49
|
+
function hasAestheticClaim(text) {
|
|
50
|
+
const source = String(text || '');
|
|
51
|
+
if (/\b(?:beautiful|polished|sleek|aesthetic|elegant)\b/i.test(source)) return true;
|
|
52
|
+
return /\b(?:clean|modern|nice)\b/i.test(source) &&
|
|
53
|
+
/\b(?:ui|ux|visual|design|layout|brand|screen|page|typography|spacing|palette|composition)\b/i.test(source);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function hasUiDesignObligation(source, userText) {
|
|
57
|
+
const combined = `${String(userText || '')}\n${String(source || '')}`;
|
|
58
|
+
return /\b(?:build|design|implement|create|style|layout|frontend|component|screen|page|modal|form|button|accessibility|responsive|mobile|desktop|css|tailwind|react)\b/i.test(combined) &&
|
|
59
|
+
!/\b(?:ui surfaces respond|endpoint or ui surfaces|screenshots? of the exact flows|marketing proof|smoke run)\b/i.test(combined);
|
|
60
|
+
}
|
|
61
|
+
|
|
39
62
|
function lineHits(text, rx, label) {
|
|
40
63
|
const hits = [];
|
|
41
64
|
const lines = String(text || '').split('\n');
|
|
@@ -45,6 +68,49 @@ function lineHits(text, rx, label) {
|
|
|
45
68
|
return hits;
|
|
46
69
|
}
|
|
47
70
|
|
|
71
|
+
function jsonLikeRatio(text) {
|
|
72
|
+
const source = String(text || '');
|
|
73
|
+
if (!source.trim()) return 0;
|
|
74
|
+
return (source.match(/[{}[\]":,]/g) || []).length / source.length;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function requestedRawEvidence(userText) {
|
|
78
|
+
return /\b(?:exact(?:ly)?|raw|verbatim|json|receipt block|lifecycle block|active lifecycle|paste the receipt|show the full receipt|print the block)\b/i.test(String(userText || ''));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function hasAriaContinuationSignal(text) {
|
|
82
|
+
return /\b(?:aria|harness|codex|claude|opencode|ledger|autofire|qa-as-gate|quality canary|receipt|active lifecycle|gate|canary|phase\s*\d+|next highest-impact|continue|next best|next step|fire\s+\d*\s*skills?|production ready|what'?s left|how far from production)\b/i.test(String(text || ''));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function hasEvidenceAnchor(text) {
|
|
86
|
+
return /\b(?:artifact|report|ledger|smoke|script|command|source|observed|verified|stdout|sha256|from\s+`|file:|path:)\b/i.test(String(text || ''));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function hasConsultAsQualitySource(text) {
|
|
90
|
+
const source = String(text || '');
|
|
91
|
+
return (
|
|
92
|
+
/\bneed to call the consult api\b/i.test(source) ||
|
|
93
|
+
/\bconsult the api\b/i.test(source) ||
|
|
94
|
+
/\buse the consult response as the quality source\b/i.test(source) ||
|
|
95
|
+
/\b(?:\/consult|deepseek|modelused)\b.{0,80}\b(?:quality source|core quality engine|required|dependency|find the answer)\b/i.test(source)
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function hasDeployPublicationObligation(source, userText) {
|
|
100
|
+
const combined = `${String(userText || '')}\n${String(source || '')}`;
|
|
101
|
+
if (/\b(?:deploy|rollout|migration|kubectl|docker push)\b/i.test(combined)) return true;
|
|
102
|
+
if (/\b(?:ship|publish|promote|release)\b.{0,80}\b(?:production|live|customer|public|prod)\b/i.test(combined)) return true;
|
|
103
|
+
if (/\b(?:production|live|customer|public|prod)\b.{0,80}\b(?:ship|publish|promote|release)\b/i.test(combined)) return true;
|
|
104
|
+
if (/\b(?:release note|release notes|before any release|pre-release|post-release|release boundary|release decision|release validator)\b/i.test(combined)) return false;
|
|
105
|
+
return /\brelease\b/i.test(combined) && /\b(?:rollback|readiness|health check|deploy|rollout|production|public|publish|promote)\b/i.test(combined);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function hasUnsupportedContinuationInventoryClaim(text) {
|
|
109
|
+
const source = String(text || '');
|
|
110
|
+
if (hasEvidenceAnchor(source)) return false;
|
|
111
|
+
return /\b(?:all six|\d+\s*\/\s*\d+|\d+\s+pending|highest daily invocation volume|target surfaces?|component bundles?|live extraction feeds?)\b/i.test(source);
|
|
112
|
+
}
|
|
113
|
+
|
|
48
114
|
export function extractCodeBlocks(text) {
|
|
49
115
|
return [...String(text || '').matchAll(/```[a-z0-9_-]*\n([\s\S]*?)```/gi)].map((m) => m[1] || '');
|
|
50
116
|
}
|
|
@@ -52,10 +118,18 @@ export function extractCodeBlocks(text) {
|
|
|
52
118
|
export function analyzeDomainOutputQuality(text, options = {}) {
|
|
53
119
|
const source = String(text || '');
|
|
54
120
|
const lower = source.toLowerCase();
|
|
121
|
+
const userText = String(options.userText || '');
|
|
55
122
|
const codeBlocks = options.codeBlocks || extractCodeBlocks(source);
|
|
56
123
|
const domains = DOMAIN_RULES.filter((rule) => rule.signal.test(source)).map((rule) => rule.domain);
|
|
57
124
|
const blockers = [];
|
|
58
125
|
const warnings = [];
|
|
126
|
+
const repairs = [];
|
|
127
|
+
const ariaContinuation = hasAriaContinuationSignal(source) || hasAriaContinuationSignal(userText);
|
|
128
|
+
if (ariaContinuation && !domains.includes('aria-continuation')) domains.push('aria-continuation');
|
|
129
|
+
const block = (message, repair = '') => {
|
|
130
|
+
blockers.push(message);
|
|
131
|
+
if (repair) repairs.push(repair);
|
|
132
|
+
};
|
|
59
133
|
|
|
60
134
|
if (domains.includes('code')) {
|
|
61
135
|
for (const hit of lineHits(source, /\b(?:TODO|FIXME|XXX|implementation pending|not implemented|coming soon|placeholder)\b/i, 'code placeholder semantics')) blockers.push(hit);
|
|
@@ -66,14 +140,14 @@ export function analyzeDomainOutputQuality(text, options = {}) {
|
|
|
66
140
|
}
|
|
67
141
|
}
|
|
68
142
|
|
|
69
|
-
if (domains.includes('ui')) {
|
|
143
|
+
if (domains.includes('ui') && hasUiDesignObligation(source, userText)) {
|
|
70
144
|
if (!hasAny(source, [/\b(?:mobile|responsive|breakpoint|small screen|desktop)\b/i])) blockers.push('ui: UI/design output must address desktop and mobile responsiveness');
|
|
71
145
|
if (!hasAny(source, [/\b(?:accessib|aria-|keyboard|focus|screen reader|semantic html|label)\b/i])) blockers.push('ui: UI/design output must address accessibility, focus, labels, or semantic structure');
|
|
72
146
|
if (/\b(?:button|input|form|modal|menu|dialog)\b/i.test(source) && !/\b(?:focus|keyboard|aria-|label|escape|tab order)\b/i.test(source)) blockers.push('ui: interactive elements need keyboard/focus/accessibility behavior');
|
|
73
147
|
}
|
|
74
148
|
|
|
75
149
|
if (domains.includes('beauty')) {
|
|
76
|
-
if (
|
|
150
|
+
if (hasAestheticClaim(source) && !hasAny(source, [/\b(?:spacing|typography|contrast|hierarchy|rhythm|composition|palette|motion|density|visual language)\b/i])) blockers.push('beauty: aesthetic claim lacks concrete visual language such as spacing, typography, contrast, hierarchy, palette, or composition');
|
|
77
151
|
}
|
|
78
152
|
|
|
79
153
|
if (domains.includes('security')) {
|
|
@@ -82,7 +156,7 @@ export function analyzeDomainOutputQuality(text, options = {}) {
|
|
|
82
156
|
}
|
|
83
157
|
|
|
84
158
|
if (domains.includes('ops')) {
|
|
85
|
-
if (
|
|
159
|
+
if (hasDeployPublicationObligation(source, userText) && !/\b(?:rollback|health|smoke|verify|readiness|observability|monitor)\b/i.test(source)) blockers.push('ops: deploy/release output must include rollback plus health/smoke/readiness verification');
|
|
86
160
|
if (/\b(?:env var|config|secret)\b/i.test(source) && !/\b(?:scope|owner|runtime|restart|reload|secret)\b/i.test(source)) warnings.push('ops: runtime config changes should name scope and reload/restart expectations');
|
|
87
161
|
}
|
|
88
162
|
|
|
@@ -95,9 +169,64 @@ export function analyzeDomainOutputQuality(text, options = {}) {
|
|
|
95
169
|
if (/\b(?:should work|probably|presumably|i assume)\b/i.test(source)) blockers.push('writing: uncertainty must be stated as an evidence boundary, not an assumption');
|
|
96
170
|
}
|
|
97
171
|
|
|
172
|
+
if (ariaContinuation) {
|
|
173
|
+
const goalContract = buildUniversalConnectorGoalContract({
|
|
174
|
+
userText,
|
|
175
|
+
phase: 'domain-output-quality',
|
|
176
|
+
});
|
|
177
|
+
const goalQa = evaluateGoalContractOutput(source, { userText, goalContract });
|
|
178
|
+
warnings.push(...goalQa.warnings);
|
|
179
|
+
repairs.push(...goalQa.repairs);
|
|
180
|
+
if (goalQa.hardBlock) {
|
|
181
|
+
goalQa.blockers.forEach((issue) => block(issue));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const rawAllowed = requestedRawEvidence(userText);
|
|
185
|
+
const receiptHeavy =
|
|
186
|
+
/\[ARIA PLAYGROUND ACTIVE LIFECYCLE RUN\]/i.test(source) &&
|
|
187
|
+
(source.split('\n').length > 30 || jsonLikeRatio(source) > 0.08);
|
|
188
|
+
if (receiptHeavy && !rawAllowed) {
|
|
189
|
+
block(
|
|
190
|
+
'aria-continuation: owner-visible answer is receipt-heavy; summarize status, evidence, QA finding/correction, and next action, then move receipts to artifact/debug evidence',
|
|
191
|
+
'Rewrite as: status line, 2-4 evidence bullets, QA finding/correction/verification, and the next highest-impact step; link or name the receipt artifact instead of pasting raw lifecycle JSON.',
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
if (/\bwhat would you like me to do next\b|\bhow would you like me to proceed\b/i.test(source)) {
|
|
195
|
+
block(
|
|
196
|
+
'aria-continuation: continuation output must name the next highest-impact step instead of making the owner choose the obvious next action',
|
|
197
|
+
'Rewrite by naming and executing the current next highest-impact step from the controlling ledger, then state the evidence needed to advance.',
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
if (/\b(?:add|create|turn on|tighten)\s+(?:stricter\s+)?(?:more\s+)?(?:stop\s+)?gates\b/i.test(source) && !/\bQA-as-gate|forced QA|repair-first|quality canary\b/i.test(source)) {
|
|
201
|
+
block(
|
|
202
|
+
'aria-continuation: gate-chasing default detected; use QA-as-gate and repair-first behavior unless this is a high-risk boundary',
|
|
203
|
+
'Rewrite by replacing the proposed gate with expected-vs-observed QA, correction, verification, learning, and a hard-stop boundary only for secret/destructive/deploy/publication/owner-contradicted/false-completion risk.',
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
if (hasConsultAsQualitySource(source)) {
|
|
207
|
+
block(
|
|
208
|
+
'aria-continuation: consult API dependency detected; /consult cannot be the core quality engine',
|
|
209
|
+
'Rewrite using local cognitive skills plus deterministic QA as the quality path. Treat Codex/Claude execution as optional evidence and Aria runtime as the sidecar/control plane, not /consult as the decision source.',
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
if (hasUnsupportedContinuationInventoryClaim(source)) {
|
|
213
|
+
block(
|
|
214
|
+
'aria-continuation: unsupported numeric or inventory claim detected; continuation evidence must cite a real artifact, command, ledger, source, or observed output',
|
|
215
|
+
'Rewrite by either removing the number/inventory claim or binding it to a concrete artifact, command output, ledger row, source file, observed runtime result, or report hash.',
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
if (/\b(?:production ready|ready for production|promotion pass|complete|verified|done)\b/i.test(source) && !/\b(?:actual goal|next highest-impact|qa(?:-as-gate)?|correction|verification|learning|evidence)\b/i.test(source)) {
|
|
219
|
+
block(
|
|
220
|
+
'aria-continuation: readiness/completion claim must bind to actual goal, QA-as-gate, correction, verification, learning, and evidence',
|
|
221
|
+
'Rewrite by bounding the claim as verified, blocked, or pending; include the actual goal, QA result, correction status, verification command/artifact, and next action.',
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
98
226
|
return {
|
|
99
227
|
domains: [...new Set(domains)],
|
|
100
228
|
blockers: [...new Set(blockers)],
|
|
101
229
|
warnings: [...new Set(warnings)],
|
|
230
|
+
repairs: [...new Set(repairs)],
|
|
102
231
|
};
|
|
103
232
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// ── doctrine-self-check-file: M0.SELFREVIEW.15 (2026-05-06) ──
|
|
2
|
+
// Scanner for empty-catch reintroduction. Closes the regression surface
|
|
3
|
+
// where M0.H.X3 surfaced 86+ empty swallows but provided no CI guard
|
|
4
|
+
// against future reintroduction.
|
|
5
|
+
//
|
|
6
|
+
// Doctrine bind:
|
|
7
|
+
// - feedback_no_graceful_degradation.md — silent swallows are graceful
|
|
8
|
+
// degradation. The hook stack's empty catches were the doctrine
|
|
9
|
+
// enforcer literally violating the doctrine 86 times. This scanner
|
|
10
|
+
// prevents that pattern reintroducing through future commits.
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Empty-catch detection.
|
|
14
|
+
*
|
|
15
|
+
* Patterns flagged:
|
|
16
|
+
* - `} catch {}` // bare empty
|
|
17
|
+
* - `} catch (e) {}` // identifier with empty body
|
|
18
|
+
* - `} catch (_) {}` // underscore variant
|
|
19
|
+
* - `} catch {\n}` // multi-line empty (whitespace-only body)
|
|
20
|
+
* - `} catch (e) {\n}` // same with identifier
|
|
21
|
+
*
|
|
22
|
+
* Acknowledgment forms (escape hatch for documented silent-by-design):
|
|
23
|
+
* 1. Inline (within ±2 lines): // silent-by-design: <reason>
|
|
24
|
+
* 2. File-level: // empty-catch-allowed-file: <reason>
|
|
25
|
+
*
|
|
26
|
+
* Without an ack, an empty catch is a regression.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
const EMPTY_CATCH_PATTERNS = [
|
|
30
|
+
// Single-line empty catch
|
|
31
|
+
/\}\s*catch\s*(?:\([^)]*\))?\s*\{\s*\}/g,
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const INLINE_ACK_RX = /\/\/\s*silent-by-design\s*:\s*(.+)/i;
|
|
35
|
+
const FILE_ACK_RX = /\/\/\s*empty-catch-allowed-file\s*:\s*(.+)/i;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Scan source text for empty catches.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} source - file content
|
|
41
|
+
* @param {object} [opts]
|
|
42
|
+
* @param {string[]} [opts.addedLineNumbers] - 1-indexed line numbers that
|
|
43
|
+
* count as "added" (so we only flag NEW empty catches in a diff context).
|
|
44
|
+
* If absent, scan whole file.
|
|
45
|
+
* @returns {Array<{line_number, line_text, has_inline_acknowledgment, file_ack_present}>}
|
|
46
|
+
*/
|
|
47
|
+
export function scanForEmptyCatches(source, opts = {}) {
|
|
48
|
+
const lines = source.split('\n');
|
|
49
|
+
const fileAckPresent = lines.slice(0, 30).some((l) => FILE_ACK_RX.test(l));
|
|
50
|
+
const addedLineSet = opts.addedLineNumbers ? new Set(opts.addedLineNumbers) : null;
|
|
51
|
+
|
|
52
|
+
const violations = [];
|
|
53
|
+
for (const pattern of EMPTY_CATCH_PATTERNS) {
|
|
54
|
+
pattern.lastIndex = 0;
|
|
55
|
+
for (const m of source.matchAll(pattern)) {
|
|
56
|
+
const offset = m.index ?? 0;
|
|
57
|
+
const lineNumber = source.slice(0, offset).split('\n').length;
|
|
58
|
+
// If we have an addedLines filter, skip non-added matches
|
|
59
|
+
if (addedLineSet && !addedLineSet.has(lineNumber)) continue;
|
|
60
|
+
const lineText = lines[lineNumber - 1] ?? '';
|
|
61
|
+
// Inline ack: ±2 lines
|
|
62
|
+
const ackWindow = lines.slice(Math.max(0, lineNumber - 3), lineNumber + 2);
|
|
63
|
+
const hasInlineAck = ackWindow.some((l) => INLINE_ACK_RX.test(l));
|
|
64
|
+
violations.push({
|
|
65
|
+
match: m[0],
|
|
66
|
+
line_number: lineNumber,
|
|
67
|
+
line_text: lineText,
|
|
68
|
+
has_inline_acknowledgment: hasInlineAck,
|
|
69
|
+
file_ack_present: fileAckPresent,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Filter out acknowledged ones
|
|
74
|
+
return violations.filter((v) => !v.has_inline_acknowledgment && !v.file_ack_present);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Format violations for human review.
|
|
79
|
+
*/
|
|
80
|
+
export function formatEmptyCatchViolations(violations, filePath) {
|
|
81
|
+
if (violations.length === 0) return '';
|
|
82
|
+
const lines = [`\n${filePath}:`];
|
|
83
|
+
for (const v of violations) {
|
|
84
|
+
lines.push(` Line ${v.line_number}: ${v.line_text.trim()}`);
|
|
85
|
+
lines.push(` Empty-catch detected. Doctrine: feedback_no_graceful_degradation.md`);
|
|
86
|
+
lines.push(` Fix: surface to stderr OR add ack:`);
|
|
87
|
+
lines.push(` // silent-by-design: <reason this swallow is truly safe>`);
|
|
88
|
+
lines.push('');
|
|
89
|
+
}
|
|
90
|
+
return lines.join('\n');
|
|
91
|
+
}
|