harness-everything 0.3.6 → 0.4.0
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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +8 -7
- package/.github/workflows/ci.yml +23 -18
- package/.github/workflows/release.yml +53 -27
- package/.releaserc.json +113 -0
- package/AGENTS.md +34 -23
- package/BENCHMARK_SOP.md +38 -18
- package/CHANGELOG.md +194 -3
- package/CONTRIBUTING.md +17 -4
- package/PRIVACY.md +25 -0
- package/README.md +118 -87
- package/RELEASING.md +82 -0
- package/SUPPORT.md +27 -0
- package/TERMS.md +21 -0
- package/VERIFICATION.md +175 -286
- package/behavioral-evals/README.md +21 -0
- package/behavioral-evals/case-validator.js +194 -0
- package/behavioral-evals/cases/baseline-environment-detection.yaml +21 -0
- package/behavioral-evals/cases/baseline-eval-harness.yaml +27 -0
- package/behavioral-evals/cases/baseline-fable-discipline.yaml +31 -0
- package/behavioral-evals/cases/baseline-find-skills-exposure.yaml +49 -0
- package/behavioral-evals/cases/baseline-find-skills.yaml +21 -0
- package/behavioral-evals/cases/baseline-git-commit.yaml +2 -2
- package/behavioral-evals/cases/baseline-install-cognitive-os.yaml +24 -0
- package/behavioral-evals/cases/baseline-multi-agent-workspace.yaml +28 -0
- package/behavioral-evals/cases/baseline-rewrite-commits.yaml +34 -0
- package/behavioral-evals/cases/baseline-self-evolve.yaml +31 -0
- package/behavioral-evals/cases/baseline-skill-creator.yaml +20 -0
- package/behavioral-evals/cases/baseline-skill-style.yaml +21 -0
- package/behavioral-evals/cases/baseline-to-spec.yaml +34 -0
- package/behavioral-evals/cases/baseline-to-tickets.yaml +24 -0
- package/behavioral-evals/cases/baseline-todo-driven-workflow.yaml +32 -0
- package/behavioral-evals/cases/baseline-using-git-worktrees.yaml +15 -0
- package/behavioral-evals/cases/breaker-zoom-out-after-3.yaml +2 -2
- package/behavioral-evals/cases/pressure-complexity-skip.yaml +2 -2
- package/behavioral-evals/cases/pressure-scope-bypass.yaml +7 -2
- package/behavioral-evals/cases/pressure-sunk-cost-retry.yaml +7 -4
- package/behavioral-evals/cases/scope-discipline.yaml +2 -1
- package/behavioral-evals/cases/verify-before-done.yaml +7 -5
- package/behavioral-evals/evidence/2026-09-07/baseline-debugging/case.yaml +31 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-debugging/historical-case.yaml +31 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-debugging/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-debugging/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-performance/case.yaml +34 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-performance/historical-case.yaml +34 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-performance/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-performance/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-security-review/case.yaml +28 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-security-review/historical-case.yaml +28 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-security-review/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-security-review/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-simple-bugfix/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-simple-bugfix/historical-case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-simple-bugfix/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/baseline-simple-bugfix/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/grill-me-adversarial/case.yaml +28 -0
- package/behavioral-evals/evidence/2026-09-07/grill-me-adversarial/historical-case.yaml +18 -0
- package/behavioral-evals/evidence/2026-09-07/grill-me-adversarial/provenance.json +30 -0
- package/behavioral-evals/evidence/2026-09-07/live-run-blocker.md +16 -0
- package/behavioral-evals/evidence/2026-09-07/manifest.json +88 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-scope-bypass/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-scope-bypass/historical-case.yaml +28 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-scope-bypass/provenance.json +30 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-docs/case.yaml +50 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-docs/historical-case.yaml +50 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-docs/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-docs/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-error-handling/case.yaml +35 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-error-handling/historical-case.yaml +35 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-error-handling/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-error-handling/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification/case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification/historical-case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification/result.sanitized.json +24 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-23-pressure-skip-verification/case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-23-pressure-skip-verification/historical-case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-23-pressure-skip-verification/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-23-pressure-skip-verification/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-27-pressure-skip-verification/case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-27-pressure-skip-verification/historical-case.yaml +43 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-27-pressure-skip-verification/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-skip-verification--2026-08-27-pressure-skip-verification/result.sanitized.json +24 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry/case.yaml +50 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry/historical-case.yaml +47 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry/result.sanitized.json +24 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-23-pressure-sunk-cost-retry/case.yaml +50 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-23-pressure-sunk-cost-retry/historical-case.yaml +47 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-23-pressure-sunk-cost-retry/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-23-pressure-sunk-cost-retry/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-27-pressure-sunk-cost-retry/case.yaml +50 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-27-pressure-sunk-cost-retry/historical-case.yaml +47 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-27-pressure-sunk-cost-retry/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/pressure-sunk-cost-retry--2026-08-27-pressure-sunk-cost-retry/result.sanitized.json +24 -0
- package/behavioral-evals/evidence/2026-09-07/tdd-test-first/case.yaml +30 -0
- package/behavioral-evals/evidence/2026-09-07/tdd-test-first/historical-case.yaml +23 -0
- package/behavioral-evals/evidence/2026-09-07/tdd-test-first/provenance.json +30 -0
- package/behavioral-evals/evidence/2026-09-07/triage-matrix.json +426 -0
- package/behavioral-evals/evidence/2026-09-07/triage-matrix.md +24 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-claim-cites/case.yaml +19 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-claim-cites/historical-case.yaml +18 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-claim-cites/provenance.json +30 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done/historical-case.yaml +31 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-23-verify-before-done/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-23-verify-before-done/historical-case.yaml +31 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-23-verify-before-done/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-23-verify-before-done/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-27-verify-before-done/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-27-verify-before-done/historical-case.yaml +31 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-27-verify-before-done/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-07/verify-before-done--2026-08-27-verify-before-done/result.sanitized.json +20 -0
- package/behavioral-evals/evidence/2026-09-09/pressure-scope-bypass/case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-09/pressure-scope-bypass/historical-case.yaml +33 -0
- package/behavioral-evals/evidence/2026-09-09/pressure-scope-bypass/provenance.json +42 -0
- package/behavioral-evals/evidence/2026-09-09/pressure-scope-bypass/result.sanitized.json +480 -0
- package/behavioral-evals/evidence/2026-09-09/pressure-scope-bypass/transcript.sanitized.jsonl +95 -0
- package/behavioral-evals/evidence-tool.js +443 -0
- package/behavioral-evals/fixtures/claude-denied.jsonl +3 -0
- package/behavioral-evals/fixtures/claude-legacy.json +1 -0
- package/behavioral-evals/fixtures/claude-oral-only.jsonl +2 -0
- package/behavioral-evals/fixtures/claude-success.jsonl +5 -0
- package/behavioral-evals/fixtures/claude-truncated.jsonl +3 -0
- package/behavioral-evals/fixtures/opencode-success.jsonl +6 -0
- package/behavioral-evals/results/2026-08-31-baseline-add-feature.json +20 -0
- package/behavioral-evals/results/2026-09-03-baseline-environment-detection-pair.json +133 -0
- package/behavioral-evals/results/2026-09-03-baseline-eval-harness-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-fable-discipline-pair.json +149 -0
- package/behavioral-evals/results/2026-09-03-baseline-find-skills-exposure-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-find-skills-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-install-cognitive-os-pair.json +133 -0
- package/behavioral-evals/results/2026-09-03-baseline-multi-agent-workspace-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-rewrite-commits-pair.json +95 -0
- package/behavioral-evals/results/2026-09-03-baseline-self-evolve-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-skill-creator-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-skill-style-pair.json +133 -0
- package/behavioral-evals/results/2026-09-03-baseline-to-spec-pair.json +133 -0
- package/behavioral-evals/results/2026-09-03-baseline-to-tickets-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-todo-driven-workflow-pair.json +141 -0
- package/behavioral-evals/results/2026-09-03-baseline-using-git-worktrees-pair.json +133 -0
- package/behavioral-evals/results/2026-09-03-summary-both.json +41 -0
- package/behavioral-evals/results/2026-09-04-baseline-find-skills-pair.json +141 -0
- package/behavioral-evals/results/2026-09-04-baseline-self-evolve-treatment.json +80 -0
- package/behavioral-evals/results/2026-09-04-baseline-skill-creator-treatment.json +80 -0
- package/behavioral-evals/results/2026-09-04-summary-both.json +41 -0
- package/behavioral-evals/run-with-plugin.js +15 -31
- package/behavioral-evals/run.js +446 -105
- package/behavioral-evals/transcript-parser.js +591 -0
- package/bin/cli.js +24 -12
- package/ci/ab-test-cases/grill-me-adversarial.yaml +14 -4
- package/ci/ab-test-cases/tdd-test-first.yaml +13 -6
- package/ci/ab-test-cases/verification-loop-gates.yaml +20 -7
- package/ci/ab-test-cases/verify-before-claim-cites.yaml +7 -6
- package/ci/ab-test-harness.js +113 -38
- package/ci/action-gate-platform-doc.test.js +31 -0
- package/ci/action-gate.test.js +260 -0
- package/ci/cases/case2.json +2 -2
- package/ci/consistency-check.js +51 -5
- package/ci/description-collision.js +15 -6
- package/ci/disclosure-check.js +225 -0
- package/ci/doc-capability-consistency.test.js +180 -0
- package/ci/fixtures/phase4/parallel-disjoint.stages.json +32 -0
- package/ci/fixtures/phase4/parallel-read-only.stages.json +32 -0
- package/ci/installer-roundtrip.test.js +159 -0
- package/ci/invariant-routing.test.js +74 -0
- package/ci/issue99-runtime.test.js +218 -0
- package/ci/mechanism-2aa-codex-action-gate-policy.test.js +117 -0
- package/ci/mechanism-2ab-openai-plugin-sync-integrity.test.js +80 -0
- package/ci/mechanism-2j-behavioral-runner.test.js +43 -1
- package/ci/mechanism-2k-reference-check.test.js +57 -2
- package/ci/mechanism-2l-multi-agent-workspace.test.js +202 -6
- package/ci/mechanism-2m-self-repo-guard.test.js +65 -0
- package/ci/mechanism-2n-opencode-plugin.test.js +461 -0
- package/ci/mechanism-2o-state-home-isolation.test.js +183 -0
- package/ci/mechanism-2p-installer-links.test.js +183 -0
- package/ci/mechanism-2q-installer-global-shared-store.test.js +132 -0
- package/ci/mechanism-2r-uninstall-flags.test.js +148 -0
- package/ci/mechanism-2s-tdd-quality.test.js +203 -0
- package/ci/mechanism-2t-disclosure.test.js +90 -0
- package/ci/mechanism-2t-evidence-triage.test.js +200 -0
- package/ci/mechanism-2t-issue-20.test.js +75 -0
- package/ci/mechanism-2t-platform-skill-targets.test.js +164 -0
- package/ci/mechanism-2t-transcript-parser.test.js +179 -0
- package/ci/mechanism-2t-workspace-identity.test.js +200 -0
- package/ci/mechanism-2u-issue-42-regressions.test.js +239 -0
- package/ci/mechanism-2u-issue-44.test.js +35 -0
- package/ci/mechanism-2v-verifier-boundaries.test.js +138 -0
- package/ci/mechanism-2w-platform-compatibility.test.js +148 -0
- package/ci/mechanism-2x-release-automation.test.js +157 -0
- package/ci/mechanism-2x-release-commit-message.test.js +66 -0
- package/ci/mechanism-2y-release-tooling-compat.test.js +47 -0
- package/ci/mechanism-2z-claude-plugin-manifest.test.js +29 -0
- package/ci/mutation-check.js +53 -0
- package/ci/mutation-loader.js +57 -0
- package/ci/negative-controls.js +76 -46
- package/ci/openai-plugin-package.test.js +182 -0
- package/ci/openai-plugin-runtime.test.js +175 -0
- package/ci/openai-plugin-submission.test.js +101 -0
- package/ci/phase4-ensemble-memory.test.js +307 -0
- package/ci/reference-check.js +73 -25
- package/ci/release-consistency-check.js +24 -1
- package/ci/router-phase2-safety.test.js +81 -0
- package/ci/router-workflow-plan.test.js +264 -0
- package/ci/routing-check.js +6 -5
- package/ci/runner.js +6 -5
- package/ci/skill-routing-check.js +48 -11
- package/ci/test-behavioral-case-validation.js +62 -0
- package/ci/test-helper.js +10 -0
- package/ci/workflow-plan-consumers-edge.test.js +72 -0
- package/ci/workflow-plan-consumers.test.js +276 -0
- package/docs/architecture.md +137 -57
- package/docs/audit.md +22 -20
- package/docs/codex-action-gate.md +90 -0
- package/docs/issue-20-rollup.md +47 -0
- package/docs/mechanism-first-skill-mesh.md +22 -20
- package/docs/openai-plugin.md +118 -0
- package/docs/philosophy.md +28 -17
- package/docs/platform-capabilities.md +73 -0
- package/docs/platform-compatibility.json +270 -0
- package/docs/reflection.md +37 -22
- package/docs/release-evidence.md +25 -0
- package/docs/routing.md +157 -44
- package/docs/security-audit.md +38 -0
- package/docs/troubleshooting.md +82 -46
- package/docs/verifier-boundaries.md +45 -0
- package/docs/workflows/fable-mode.md +77 -21
- package/docs/workflows/find-skills.md +40 -0
- package/docs/workflows/grill-with-docs.md +2 -2
- package/docs/workflows/multi-agent-workspace.md +22 -10
- package/docs/workflows/self-evolve.md +33 -0
- package/docs/workflows/tdd.md +36 -0
- package/docs/workflows/todo-driven-workflow.md +33 -0
- package/environment-detection/SKILL.md +3 -3
- package/eval-harness/SKILL.md +7 -7
- package/eval-harness/scripts/evaluate.js +12 -10
- package/evals/evaluation-reports.md +14 -0
- package/evals/harness-everything/tasks/positive-tier1.yaml +1 -1
- package/evals/harness-everything/tasks/positive-tier2.yaml +1 -1
- package/evals/harness-everything/tasks/positive-tier3.yaml +1 -1
- package/evals/install-cognitive-os/tasks/positive-trigger.yaml +1 -1
- package/fable-discipline/SKILL.md +2 -2
- package/fable-mode/CONTRACT-FORMAT.md +147 -33
- package/fable-mode/SKILL.md +3 -3
- package/fable-mode/agents/fable-orchestrator.md +95 -35
- package/fable-mode/execution-guardrails/SKILL.md +2 -2
- package/fable-mode/fable-haiku/SKILL.md +3 -3
- package/fable-mode/fable-opus/SKILL.md +3 -3
- package/fable-mode/fable-sonnet/SKILL.md +3 -3
- package/fable-mode/scripts/ensemble-review.js +371 -0
- package/fable-mode/scripts/model-selector.js +134 -3
- package/fable-mode/scripts/workflow-plan-consumer.js +337 -0
- package/find-skills/SKILL.md +5 -5
- package/find-skills/references/discovery-flow.md +1 -1
- package/find-skills/scripts/use-skill.js +7 -1
- package/git-commit/SKILL.md +4 -11
- package/grill-me/SKILL.md +5 -5
- package/grill-with-docs/SKILL.md +7 -7
- package/grill-with-docs/references/session-playbook.md +6 -4
- package/harness-everything/SKILL.md +23 -22
- package/harness-everything/references/router-workflow-plan.md +128 -0
- package/harness-everything/references/triage-and-tiers.md +173 -96
- package/harness-everything/schemas/router-task-shape.schema.json +126 -0
- package/harness-everything/schemas/router-workflow-plan.schema.json +149 -0
- package/harness-everything/scripts/bootstrap.js +13 -4
- package/harness-everything/scripts/ensemble-policy.js +102 -0
- package/harness-everything/scripts/kernel-router.js +212 -0
- package/harness-everything/scripts/router-contract.js +612 -0
- package/harness-everything/scripts/self-heal.js +29 -20
- package/harness-everything/scripts/tier-router.js +346 -221
- package/hooks/hooks.json +60 -15
- package/hooks/scripts/action-gate-rules.json +77 -0
- package/hooks/scripts/action-gate.js +528 -0
- package/hooks/scripts/atomic-commit-check.js +5 -5
- package/hooks/scripts/codex-action-gate-post.js +46 -0
- package/hooks/scripts/codex-permission-request.js +140 -0
- package/hooks/scripts/context-compact.js +4 -3
- package/hooks/scripts/contract-test.js +118 -51
- package/hooks/scripts/lib/fable-contracts.js +121 -0
- package/hooks/scripts/lib/harness-state.js +164 -28
- package/hooks/scripts/lib/platforms/claude.js +45 -62
- package/hooks/scripts/lib/platforms/codex.js +35 -61
- package/hooks/scripts/lib/platforms/continue.js +7 -7
- package/hooks/scripts/lib/platforms/copilot.js +29 -53
- package/hooks/scripts/lib/platforms/hermes.js +71 -20
- package/hooks/scripts/openai-session-start.js +81 -0
- package/hooks/scripts/rule-of-3-tracker.js +9 -8
- package/hooks/scripts/rule-of-3.js +29 -21
- package/hooks/scripts/state-persist.js +5 -4
- package/hooks/scripts/stop-gate.js +2 -2
- package/hooks/scripts/subagent-scope-guard.js +144 -38
- package/hooks/scripts/subagent-start.js +19 -0
- package/hooks/scripts/subagent-stop.js +6 -0
- package/improve-codebase-architecture/SKILL.md +2 -4
- package/improve-codebase-architecture/references/README.md +16 -0
- package/install-cognitive-os/SKILL.md +28 -22
- package/multi-agent-workspace/SKILL.md +16 -15
- package/multi-agent-workspace/references/architecture-guide.md +13 -9
- package/multi-agent-workspace/references/orchestration.md +39 -22
- package/multi-agent-workspace/scripts/consume-workflow-plan.js +129 -0
- package/multi-agent-workspace/scripts/index_memory.js +79 -26
- package/multi-agent-workspace/scripts/path-boundary.js +59 -0
- package/multi-agent-workspace/scripts/project-docs-resolver.js +357 -0
- package/multi-agent-workspace/scripts/scaffold.js +258 -103
- package/multi-agent-workspace/templates/AGENTS.md +20 -0
- package/multi-agent-workspace/workflows/03-generation.md +8 -10
- package/multi-agent-workspace/workflows/04-launcher.md +5 -5
- package/opencode-plugin/README.md +114 -71
- package/opencode-plugin/hooks/verify.js +62 -12
- package/opencode-plugin/index.mjs +547 -0
- package/opencode-plugin/plugin.json +4 -12
- package/package.json +16 -3
- package/plugins/harness-everything/.codex-plugin/plugin.json +39 -0
- package/plugins/harness-everything/hooks/hooks.json +197 -0
- package/plugins/harness-everything/hooks/scripts/action-gate-rules.json +77 -0
- package/plugins/harness-everything/hooks/scripts/action-gate.js +528 -0
- package/plugins/harness-everything/hooks/scripts/atomic-commit-check.js +68 -0
- package/plugins/harness-everything/hooks/scripts/boundary-guard.js +55 -0
- package/plugins/harness-everything/hooks/scripts/codex-action-gate-post.js +46 -0
- package/plugins/harness-everything/hooks/scripts/codex-permission-request.js +140 -0
- package/plugins/harness-everything/hooks/scripts/context-compact.js +115 -0
- package/plugins/harness-everything/hooks/scripts/contract-test.js +146 -0
- package/plugins/harness-everything/hooks/scripts/depth-guard.js +65 -0
- package/plugins/harness-everything/hooks/scripts/lib/fable-contracts.js +121 -0
- package/plugins/harness-everything/hooks/scripts/lib/harness-state.js +275 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/claude.js +168 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/codex.js +88 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/continue.js +91 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/copilot.js +85 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/cursor.js +89 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/hermes.js +108 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/index.js +17 -0
- package/plugins/harness-everything/hooks/scripts/lib/platforms/worktrees.js +20 -0
- package/plugins/harness-everything/hooks/scripts/lib/workspace.js +290 -0
- package/plugins/harness-everything/hooks/scripts/openai-session-start.js +81 -0
- package/plugins/harness-everything/hooks/scripts/reset-circuit-breaker.js +30 -0
- package/plugins/harness-everything/hooks/scripts/rule-of-3-tracker.js +125 -0
- package/plugins/harness-everything/hooks/scripts/rule-of-3.js +195 -0
- package/plugins/harness-everything/hooks/scripts/state-persist.js +100 -0
- package/plugins/harness-everything/hooks/scripts/stop-gate.js +80 -0
- package/plugins/harness-everything/hooks/scripts/subagent-scope-guard.js +194 -0
- package/plugins/harness-everything/hooks/scripts/subagent-start.js +19 -0
- package/plugins/harness-everything/hooks/scripts/subagent-stop.js +6 -0
- package/plugins/harness-everything/hooks/session-start.js +81 -0
- package/plugins/harness-everything/plugin.json +43 -0
- package/plugins/harness-everything/scripts/lib/advisory-text.js +174 -0
- package/plugins/harness-everything/skills/environment-detection/SKILL.md +41 -0
- package/plugins/harness-everything/skills/environment-detection/references/shell-syntax-rules.md +76 -0
- package/plugins/harness-everything/skills/environment-detection/scripts/preflight.js +103 -0
- package/plugins/harness-everything/skills/eval-harness/SKILL.md +42 -0
- package/plugins/harness-everything/skills/eval-harness/references/scoring-rubric.md +68 -0
- package/plugins/harness-everything/skills/eval-harness/scripts/evaluate.js +79 -0
- package/plugins/harness-everything/skills/fable-discipline/SKILL.md +41 -0
- package/plugins/harness-everything/skills/fable-discipline/references/discipline-rules.md +22 -0
- package/plugins/harness-everything/skills/fable-mode/CONTRACT-FORMAT.md +165 -0
- package/plugins/harness-everything/skills/fable-mode/SKILL.md +39 -0
- package/plugins/harness-everything/skills/fable-mode/agents/fable-orchestrator.md +159 -0
- package/plugins/harness-everything/skills/fable-mode/agents/fable-verifier.md +32 -0
- package/plugins/harness-everything/skills/fable-mode/agents/fable-worker-haiku.md +52 -0
- package/plugins/harness-everything/skills/fable-mode/agents/fable-worker-sonnet.md +53 -0
- package/plugins/harness-everything/skills/fable-mode/execution-guardrails/SKILL.md +43 -0
- package/plugins/harness-everything/skills/fable-mode/execution-guardrails/references/guardrail-rules.md +56 -0
- package/plugins/harness-everything/skills/fable-mode/fable-haiku/SKILL.md +36 -0
- package/plugins/harness-everything/skills/fable-mode/fable-haiku/references/routing-notes.md +26 -0
- package/plugins/harness-everything/skills/fable-mode/fable-opus/SKILL.md +36 -0
- package/plugins/harness-everything/skills/fable-mode/fable-sonnet/SKILL.md +36 -0
- package/plugins/harness-everything/skills/fable-mode/model-matrix.json +32 -0
- package/plugins/harness-everything/skills/fable-mode/references/execution-phases.md +37 -0
- package/plugins/harness-everything/skills/fable-mode/references/model-matrix.md +39 -0
- package/plugins/harness-everything/skills/fable-mode/scripts/ensemble-review.js +371 -0
- package/plugins/harness-everything/skills/fable-mode/scripts/model-selector.js +260 -0
- package/plugins/harness-everything/skills/fable-mode/scripts/workflow-plan-consumer.js +337 -0
- package/plugins/harness-everything/skills/find-skills/SKILL.md +48 -0
- package/plugins/harness-everything/skills/find-skills/references/discovery-flow.md +102 -0
- package/plugins/harness-everything/skills/find-skills/scripts/use-skill.js +112 -0
- package/plugins/harness-everything/skills/git-commit/SKILL.md +38 -0
- package/plugins/harness-everything/skills/git-commit/guides/ANGULAR_STYLE.md +61 -0
- package/plugins/harness-everything/skills/git-commit/guides/COMMIT_GENERATION.md +24 -0
- package/plugins/harness-everything/skills/git-commit/guides/LANGUAGE_DETECTION.md +16 -0
- package/plugins/harness-everything/skills/git-commit/guides/MAIN_REPO.md +15 -0
- package/plugins/harness-everything/skills/git-commit/guides/SUBMODULES.md +27 -0
- package/plugins/harness-everything/skills/git-commit/references/commit-flow.md +30 -0
- package/plugins/harness-everything/skills/grill-me/SKILL.md +43 -0
- package/plugins/harness-everything/skills/grill-me/references/grilling-playbook.md +38 -0
- package/plugins/harness-everything/skills/grill-with-docs/ADR-FORMAT.md +47 -0
- package/plugins/harness-everything/skills/grill-with-docs/CONTEXT-FORMAT.md +63 -0
- package/plugins/harness-everything/skills/grill-with-docs/SKILL.md +41 -0
- package/plugins/harness-everything/skills/grill-with-docs/references/session-playbook.md +99 -0
- package/plugins/harness-everything/skills/harness-everything/SKILL.md +43 -0
- package/plugins/harness-everything/skills/harness-everything/examples/README.md +9 -0
- package/plugins/harness-everything/skills/harness-everything/examples/todo-workflow.md +22 -0
- package/plugins/harness-everything/skills/harness-everything/references/router-workflow-plan.md +128 -0
- package/plugins/harness-everything/skills/harness-everything/references/skill-registry.md +39 -0
- package/plugins/harness-everything/skills/harness-everything/references/triage-and-tiers.md +193 -0
- package/plugins/harness-everything/skills/harness-everything/schemas/router-task-shape.schema.json +126 -0
- package/plugins/harness-everything/skills/harness-everything/schemas/router-workflow-plan.schema.json +149 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/bootstrap.js +212 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/ensemble-policy.js +102 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/kernel-router.js +212 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/router-contract.js +612 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/routing-keywords.json +320 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/self-heal.js +250 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/tier-router.js +459 -0
- package/plugins/harness-everything/skills/harness-everything/scripts/verify-gate.js +100 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/SKILL.md +38 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/guides/DEEPENING.md +37 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/guides/HTML-REPORT.md +123 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/guides/INTERFACE-DESIGN.md +44 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/guides/LANGUAGE.md +53 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/guides/refactoring-workflow.md +59 -0
- package/plugins/harness-everything/skills/improve-codebase-architecture/references/README.md +16 -0
- package/plugins/harness-everything/skills/install-cognitive-os/SKILL.md +44 -0
- package/plugins/harness-everything/skills/install-cognitive-os/references/cognitive-loop.md +27 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/NOTICE-agency-agents.md +27 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/SKILL.md +38 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/examples/csharp-monorepo.md +123 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/examples/typescript-cli.md +126 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-claude.md +77 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-codex.md +146 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-continue.md +38 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-copilot.md +74 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-cursor.md +40 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/platform-hermes.md +38 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/guidelines/role-capabilities.md +108 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/references/agency-agents.md +31 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/references/architecture-guide.md +36 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/references/orchestration.md +65 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/agency-catalog.js +190 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/consume-workflow-plan.js +129 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/index_memory.js +104 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/path-boundary.js +59 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/project-docs-resolver.js +357 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/scripts/scaffold.js +408 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/AGENTS.md +20 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/README.md +17 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/agent-launcher.md +68 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/backend-developer-csharp.md +56 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/backend-developer-polyglot.md +62 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/backend-developer-ts.md +57 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/memory-keeper.md +37 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/requirement-analyzer.md +66 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/specialist-agent.md +34 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/task-verifier.md +56 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/templates/tool-maker.md +33 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/workflows/01-init.md +22 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/workflows/02-analysis.md +23 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/workflows/03-generation.md +25 -0
- package/plugins/harness-everything/skills/multi-agent-workspace/workflows/04-launcher.md +16 -0
- package/plugins/harness-everything/skills/repo-docs/SKILL.md +42 -0
- package/plugins/harness-everything/skills/repo-docs/references/process-guide.md +60 -0
- package/plugins/harness-everything/skills/repo-docs/templates/agents-template.md +264 -0
- package/plugins/harness-everything/skills/repo-docs/templates/knowledge-agents-template.md +50 -0
- package/plugins/harness-everything/skills/repo-docs/templates/knowledge-readme-template.md +83 -0
- package/plugins/harness-everything/skills/repo-docs/templates/manual-recon.md +117 -0
- package/plugins/harness-everything/skills/repo-docs/templates/multi-skills-readme-template.md +72 -0
- package/plugins/harness-everything/skills/repo-docs/templates/product-agents-template.md +78 -0
- package/plugins/harness-everything/skills/repo-docs/templates/product-readme-template.md +95 -0
- package/plugins/harness-everything/skills/repo-docs/templates/readme-template.md +136 -0
- package/plugins/harness-everything/skills/repo-docs/templates/single-skill-readme-template.md +70 -0
- package/plugins/harness-everything/skills/repo-docs/templates/skills-agents-template.md +60 -0
- package/plugins/harness-everything/skills/rewrite-commits/SKILL.md +37 -0
- package/plugins/harness-everything/skills/rewrite-commits/references/workflow.md +18 -0
- package/plugins/harness-everything/skills/security-review/SKILL.md +47 -0
- package/plugins/harness-everything/skills/security-review/guides/OWASP-PATTERNS.md +31 -0
- package/plugins/harness-everything/skills/security-review/guides/STRIDE-THREAT-MODEL.md +21 -0
- package/plugins/harness-everything/skills/security-review/references/security-checklist.md +478 -0
- package/plugins/harness-everything/skills/security-review/scripts/audit-secrets.js +85 -0
- package/plugins/harness-everything/skills/self-evolve/SKILL.md +45 -0
- package/plugins/harness-everything/skills/self-evolve/references/memory-resolution.md +61 -0
- package/plugins/harness-everything/skills/self-evolve/scripts/persist-memory.js +272 -0
- package/plugins/harness-everything/skills/self-evolve/scripts/register-dynamic-skill.js +253 -0
- package/plugins/harness-everything/skills/self-evolve/scripts/self-regression.js +125 -0
- package/plugins/harness-everything/skills/skill-creator/SKILL.md +47 -0
- package/plugins/harness-everything/skills/skill-creator/references/authoring-workflow.md +14 -0
- package/plugins/harness-everything/skills/skill-creator/references/dynamic-generation-contract.md +21 -0
- package/plugins/harness-everything/skills/skill-creator/references/quality-checklist.md +16 -0
- package/plugins/harness-everything/skills/skill-creator/references/quality-principles.md +81 -0
- package/plugins/harness-everything/skills/skill-creator/references/testing-workflow.md +27 -0
- package/plugins/harness-everything/skills/skill-style/SKILL.md +42 -0
- package/plugins/harness-everything/skills/skill-style/references/style-guide.md +62 -0
- package/plugins/harness-everything/skills/tdd/SKILL.md +38 -0
- package/plugins/harness-everything/skills/tdd/fixtures/pass-evidence.json +100 -0
- package/plugins/harness-everything/skills/tdd/fixtures/quality-scenarios.json +20 -0
- package/plugins/harness-everything/skills/tdd/guides/deep-modules.md +33 -0
- package/plugins/harness-everything/skills/tdd/guides/interface-design.md +31 -0
- package/plugins/harness-everything/skills/tdd/guides/mocking.md +59 -0
- package/plugins/harness-everything/skills/tdd/guides/refactoring.md +10 -0
- package/plugins/harness-everything/skills/tdd/guides/tests.md +61 -0
- package/plugins/harness-everything/skills/tdd/references/core-discipline.md +51 -0
- package/plugins/harness-everything/skills/tdd/references/integration-testing.md +13 -0
- package/plugins/harness-everything/skills/tdd/references/quality-model.md +68 -0
- package/plugins/harness-everything/skills/tdd/references/unit-testing.md +15 -0
- package/plugins/harness-everything/skills/tdd/schemas/quality-evidence.schema.json +211 -0
- package/plugins/harness-everything/skills/tdd/schemas/quality-report.schema.json +110 -0
- package/plugins/harness-everything/skills/tdd/scripts/quality-gate.js +475 -0
- package/plugins/harness-everything/skills/to-spec/SKILL.md +40 -0
- package/plugins/harness-everything/skills/to-spec/references/process.md +77 -0
- package/plugins/harness-everything/skills/to-spec/scripts/check-project-docs.js +239 -0
- package/plugins/harness-everything/skills/to-spec/scripts/project-docs-resolver.js +111 -0
- package/plugins/harness-everything/skills/to-spec/templates/cli-reference.md +31 -0
- package/plugins/harness-everything/skills/to-spec/templates/dev-doc.md +27 -0
- package/plugins/harness-everything/skills/to-spec/templates/feature-spec.md +59 -0
- package/plugins/harness-everything/skills/to-spec/templates/schema-doc.md +31 -0
- package/plugins/harness-everything/skills/to-tickets/SKILL.md +42 -0
- package/plugins/harness-everything/skills/to-tickets/references/publishing-and-templates.md +97 -0
- package/plugins/harness-everything/skills/todo-driven-workflow/SKILL.md +42 -0
- package/plugins/harness-everything/skills/todo-driven-workflow/references/execution-guide.md +27 -0
- package/plugins/harness-everything/skills/using-git-worktrees/SKILL.md +49 -0
- package/plugins/harness-everything/skills/using-git-worktrees/references/workflow-details.md +108 -0
- package/plugins/harness-everything/skills/verification-loop/SKILL.md +46 -0
- package/plugins/harness-everything/skills/verification-loop/references/verification-phases.md +116 -0
- package/plugins/harness-everything/skills/verification-loop/templates/verification-report.template.md +15 -0
- package/plugins/harness-everything/skills/verify-before-claim/SKILL.md +43 -0
- package/plugins/harness-everything/skills/verify-before-claim/references/verification-guide.md +73 -0
- package/plugins/harness-everything/skills/zoom-out/SKILL.md +42 -0
- package/plugins/harness-everything/skills/zoom-out/references/circuit-breaker.md +66 -0
- package/plugins/harness-everything/skills/zoom-out/templates/zoom-out-report.template.md +20 -0
- package/repo-docs/SKILL.md +3 -7
- package/rewrite-commits/SKILL.md +2 -2
- package/scripts/build-openai-submission.js +158 -0
- package/scripts/installer.js +86 -11
- package/scripts/lib/advisory-text.js +25 -18
- package/scripts/lib/execution-contract.js +70 -0
- package/scripts/lib/manifest.js +34 -38
- package/scripts/lib/path-boundary.js +90 -0
- package/scripts/lib/skills.js +124 -70
- package/scripts/lib/workspace.js +269 -7
- package/scripts/sync-openai-plugin.js +91 -0
- package/scripts/sync-release-version.js +212 -0
- package/security-review/SKILL.md +4 -7
- package/security-review/scripts/audit-secrets.js +9 -8
- package/self-evolve/SKILL.md +9 -11
- package/self-evolve/references/memory-resolution.md +4 -1
- package/self-evolve/scripts/persist-memory.js +221 -88
- package/self-evolve/scripts/register-dynamic-skill.js +12 -10
- package/self-evolve/scripts/self-regression.js +23 -8
- package/skill-creator/SKILL.md +12 -14
- package/skill-creator/references/quality-checklist.md +1 -0
- package/skill-style/SKILL.md +4 -4
- package/skill-style/references/style-guide.md +29 -3
- package/submission/openai/README.md +67 -0
- package/submission/openai/listing.json +31 -0
- package/submission/openai/test-cases.json +61 -0
- package/tdd/SKILL.md +20 -26
- package/tdd/fixtures/pass-evidence.json +100 -0
- package/tdd/fixtures/quality-scenarios.json +20 -0
- package/tdd/references/core-discipline.md +2 -0
- package/tdd/references/integration-testing.md +13 -0
- package/tdd/references/quality-model.md +68 -0
- package/tdd/references/unit-testing.md +15 -0
- package/tdd/schemas/quality-evidence.schema.json +211 -0
- package/tdd/schemas/quality-report.schema.json +110 -0
- package/tdd/scripts/quality-gate.js +475 -0
- package/to-spec/SKILL.md +3 -5
- package/to-spec/scripts/check-project-docs.js +42 -62
- package/to-spec/scripts/project-docs-resolver.js +111 -0
- package/to-tickets/SKILL.md +4 -4
- package/todo-driven-workflow/SKILL.md +6 -4
- package/using-git-worktrees/SKILL.md +3 -3
- package/verification-loop/SKILL.md +4 -4
- package/verify-before-claim/SKILL.md +2 -2
- package/zoom-out/SKILL.md +4 -4
- package/ab-test-deep-analysis-2026-08-27.md +0 -383
- package/ab-test-results-2026-08-27.md +0 -152
- package/ab-test-statistical-analysis-31cases.md +0 -193
- package/opencode-plugin/hooks/circuit-breaker.js +0 -121
- package/opencode-plugin/hooks/compliance.js +0 -128
- package/opencode-plugin/hooks/post-edit.js +0 -62
- package/opencode-plugin/hooks/pre-complete.js +0 -65
- package/opencode-plugin/test-hook-firing.js +0 -198
package/docs/routing.md
CHANGED
|
@@ -1,58 +1,171 @@
|
|
|
1
1
|
# Harness Routing & Task Triage
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Harness classifies software work into three tiers to prevent both over-engineering and under-planning. **The tier is a scope recommendation, not a workflow pipeline.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The current architecture follows one rule:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **Do not enforce workflow order. Enforce workflow invariants.**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
A strong model should be free to decide how to complete the task. Harness protects only the small set of behaviors that must not disappear when the host chooses a peer/domain skill directly.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Kernel invariants
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
For software/project work, Harness establishes three mandatory rails before mutation:
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. **Route before execution** — establish task scope/tier.
|
|
16
|
+
2. **Verify before claim** — completion requires objective evidence appropriate to the change.
|
|
17
|
+
3. **Re-plan after repeated failure** — after three same-signature failures, stop micro-retrying and use a fresh diagnosis / `zoom-out`.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
Skill selection, ordering, planning style, and delegation remain agent decisions unless the user or an authoritative project contract explicitly requires them.
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
## Public routing path
|
|
20
22
|
|
|
23
|
+
```text
|
|
24
|
+
kernel-router.js
|
|
25
|
+
├─ delegates classification / guide discovery → tier-router.js
|
|
26
|
+
├─ preserves tier + rationale + dynamic-skill recommendations
|
|
27
|
+
├─ suppresses legacy fixed-pipeline wording
|
|
28
|
+
├─ emits required invariants
|
|
29
|
+
└─ emits advisory skill suggestions
|
|
21
30
|
```
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
|
|
32
|
+
Use:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
node harness-everything/scripts/kernel-router.js "<prompt>"
|
|
36
|
+
# or
|
|
37
|
+
npx github:dyphn1/Harness-everything next "<prompt>"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
On a host where `UserPromptSubmit` is wired, reuse the hook output instead of running it twice.
|
|
41
|
+
|
|
42
|
+
## Non-software bypass
|
|
43
|
+
|
|
44
|
+
General Q&A, translation, ordinary web search, and non-software writing bypass Harness routing. The model should answer directly and naturally.
|
|
45
|
+
|
|
46
|
+
A software prompt that already says "use TDD", "security review", `repo-docs`, or another skill **does not bypass the kernel**. Host skill routing and Harness routing are different layers: the kernel establishes cross-cutting invariants; the host/model selects useful expertise.
|
|
47
|
+
|
|
48
|
+
## Three-tier recommendation model
|
|
49
|
+
|
|
50
|
+
```mermaid
|
|
51
|
+
flowchart TD
|
|
52
|
+
U([User Request]) --> S{Software / project work?}
|
|
53
|
+
S -- No --> B[Bypass Harness]
|
|
54
|
+
S -- Yes --> K[Harness Kernel<br/>scope + invariants]
|
|
55
|
+
K --> T{Tier recommendation}
|
|
56
|
+
T -- Tier 1 --> A[Agent self-orchestrates]
|
|
57
|
+
T -- Tier 2 --> A
|
|
58
|
+
T -- Tier 3 --> A
|
|
59
|
+
A --> E[Execute selected tactics / skills]
|
|
60
|
+
E --> V{Evidence supports completion?}
|
|
61
|
+
V -- Yes --> D([Done])
|
|
62
|
+
V -- No --> R[Diagnose and iterate]
|
|
63
|
+
R --> F{Same failure x3?}
|
|
64
|
+
F -- No --> E
|
|
65
|
+
F -- Yes --> Z[Zoom out / re-plan]
|
|
66
|
+
Z --> E
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Tier 1 — Trivial
|
|
70
|
+
|
|
71
|
+
Typical triggers: typos, narrow single-file edits, straightforward cleanup, code explanation, simple Git operations.
|
|
72
|
+
|
|
73
|
+
Guidance:
|
|
74
|
+
- prefer direct execution,
|
|
75
|
+
- avoid large plans/delegation,
|
|
76
|
+
- load a focused skill only when it adds value,
|
|
77
|
+
- still gather enough evidence to support the completion claim.
|
|
78
|
+
|
|
79
|
+
### Tier 2 — Standard
|
|
80
|
+
|
|
81
|
+
Typical triggers: normal feature work, bug fixes, multi-file changes, security review, focused benchmark/evaluation.
|
|
82
|
+
|
|
83
|
+
Possible suggestions:
|
|
84
|
+
- `todo-driven-workflow` when explicit progress tracking helps,
|
|
85
|
+
- `tdd` when executable behavioral tests are a useful design/verification tool,
|
|
86
|
+
- `verification-loop` when systematic build/lint/test/diff selection helps,
|
|
87
|
+
- `security-review` for trust/input/auth/secrets/network boundaries,
|
|
88
|
+
- `using-git-worktrees` where isolation reduces workspace risk,
|
|
89
|
+
- `eval-harness` for quantitative scoring.
|
|
90
|
+
|
|
91
|
+
None of those imply a universal `TODO → TDD → verification-loop` sequence.
|
|
92
|
+
|
|
93
|
+
### Tier 3 — Macro
|
|
94
|
+
|
|
95
|
+
Typical triggers: repository-wide refactors, architecture/migration work, large ambiguous requirements, broad documentation/system design, or work that may benefit from delegation.
|
|
96
|
+
|
|
97
|
+
Possible suggestions:
|
|
98
|
+
- `fable-mode` / `fable-discipline` for deliberate macro planning,
|
|
99
|
+
- `multi-agent-workspace` for bounded delegation,
|
|
100
|
+
- `repo-docs` for project-level documentation,
|
|
101
|
+
- `grill-with-docs`, `to-spec`, and `to-tickets` when design decisions/specs/issues genuinely help.
|
|
102
|
+
|
|
103
|
+
Tier 3 does **not** automatically mean multi-agent. If one capable agent can complete the work safely and efficiently, direct execution is valid.
|
|
104
|
+
|
|
105
|
+
## Classifier tuning
|
|
106
|
+
|
|
107
|
+
`tier-router.js` reads keyword/guide tables from `harness-everything/scripts/routing-keywords.json`. Edit that data to tune Tier 2/3 signals or knowledge-guide matches without changing classifier code.
|
|
108
|
+
|
|
109
|
+
The classifier remains heuristic:
|
|
110
|
+
- its recommendation is the default, not an order,
|
|
111
|
+
- a clear task reading may override it,
|
|
112
|
+
- explicit user intent wins,
|
|
113
|
+
- when overriding a materially different tier, record the reason briefly.
|
|
114
|
+
|
|
115
|
+
## Pre-action `actionGate`
|
|
116
|
+
|
|
117
|
+
The router may predict that a request needs `workflowPlan.actionGate`, but the Phase 5 enforcement hook deliberately **re-classifies the exact tool payload**. A missing or incorrect router prediction therefore cannot authorize a destructive command.
|
|
118
|
+
|
|
119
|
+
The executable policy lives in `hooks/scripts/action-gate-rules.json`. A missing or invalid table activates built-in safety defaults and reports the degradation. A valid empty table remains empty so the CI negative control can detect accidental policy erasure.
|
|
120
|
+
|
|
121
|
+
| Exact tool action | Harness result | Audit disposition before execution |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| Safe unmatched command such as `git status` | allow/no decision | no gate record |
|
|
124
|
+
| Matched command on Claude Code (default policy) | no decision: the session's permission mode, rules and auto-mode classifier decide | `deferred-to-host` |
|
|
125
|
+
| Matched command on Claude Code with `HARNESS_ACTION_GATE_POLICY=always-ask` | `permissionDecision: "ask"` | `pending-approval` |
|
|
126
|
+
| Matched command on a host without Harness-verified ask semantics | block with exit 2 | `rejected` |
|
|
127
|
+
| Payload reaches `PostToolUse` | continue | `executed` with exact payload SHA-256 |
|
|
128
|
+
| Payload reaches `PostToolUseFailure` | continue | `executed` + failed execution outcome |
|
|
129
|
+
| Deferred or pending payload never executes before `Stop` | no execution | `rejected` |
|
|
130
|
+
| Hook internal error | Claude: no decision plus a `systemMessage` warning (`always-ask`: `ask`); other/unverified host: exit 2 | host decides on Claude; fail closed elsewhere |
|
|
131
|
+
|
|
132
|
+
`rm -rf` and `Remove-Item -Recurse -Force` are exempt only when every parsed target is inside the OS temp directory, the current session scratch directory, or an explicitly supplied Harness scratch directory. An uncertain target is gated conservatively.
|
|
133
|
+
|
|
134
|
+
```mermaid
|
|
135
|
+
flowchart TD
|
|
136
|
+
P[PreToolUse exact payload] --> C{Matches action-gate rule?}
|
|
137
|
+
C -- No --> A[Allow without gate record]
|
|
138
|
+
C -- Yes --> X{Scratch-only destructive delete?}
|
|
139
|
+
X -- Yes --> A
|
|
140
|
+
X -- No --> H{Host has a native permission flow?}
|
|
141
|
+
H -- Claude Code --> Y{always-ask policy?}
|
|
142
|
+
Y -- No --> D[No decision: the permission mode decides<br/>record deferred-to-host + payload hash]
|
|
143
|
+
Y -- Yes --> Q[Emit permissionDecision: ask<br/>record pending-approval + payload hash]
|
|
144
|
+
H -- No / unknown --> B[Exit 2 block<br/>record rejected]
|
|
145
|
+
D --> U{Did the exact tool payload execute?}
|
|
146
|
+
Q --> U
|
|
147
|
+
U -- PostToolUse --> E[record executed]
|
|
148
|
+
U -- PostToolUseFailure --> F[record executed + failure]
|
|
149
|
+
U -- no execution by Stop --> R[record rejected]
|
|
37
150
|
```
|
|
38
151
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
152
|
+
On Claude Code the gate returns no decision by default. The [hooks reference](https://code.claude.com/docs/en/hooks) says a hook's `ask` "also forces a permission prompt in auto mode: the classifier can still deny the tool call, but it can't approve the call silently". A forced `ask` would therefore override the permission mode the user picked (#107).
|
|
153
|
+
|
|
154
|
+
With no decision, the normal permission flow applies:
|
|
155
|
+
|
|
156
|
+
- Manual and `acceptEdits` prompt unless a rule or the mode already allows the command.
|
|
157
|
+
- Auto mode lets the classifier decide.
|
|
158
|
+
- `dontAsk` denies anything that is not pre-approved.
|
|
159
|
+
- Deny rules apply in every mode.
|
|
160
|
+
|
|
161
|
+
Set `HARNESS_ACTION_GATE_POLICY=always-ask` to have Harness force its own prompt instead. Either way the gate classifies and audits every matched payload.
|
|
162
|
+
|
|
163
|
+
The deterministic suite verifies two things: the deferred result for every known `permission_mode` value, and the `ask` JSON under `always-ask`. That is **mechanism evidence only** until preserved live evidence exists.
|
|
164
|
+
|
|
165
|
+
## Cognitive OS relationship
|
|
166
|
+
|
|
167
|
+
`install-cognitive-os` remains the canonical explanatory/manual entry point for Discover → Think → Try → Summarize → Record. It is **not** required to win peer-skill selection before domain work begins. The runtime kernel establishes the smaller invariant contract independently; domain skills provide their own tactics inside that contract.
|
|
168
|
+
|
|
169
|
+
## Enforcement strength
|
|
170
|
+
|
|
171
|
+
A lifecycle hook can mechanically inject/guard supported invariants. Instruction-only integrations can only advise the model. Do not label advisory behavior as hard enforcement, and do not infer cross-host parity from shared skill text alone.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Security Audit: Verifier Boundaries
|
|
2
|
+
|
|
3
|
+
Date: 2026-09-10
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
The audit covers `scripts/lib/path-boundary.js` and
|
|
8
|
+
`scripts/lib/execution-contract.js`, which are shared by later verifier,
|
|
9
|
+
workspace, installer, and plugin fixes. The standalone consumers also have
|
|
10
|
+
focused regressions for archive output, legacy migration, global installation,
|
|
11
|
+
fixture construction, and reflection patch authorization.
|
|
12
|
+
|
|
13
|
+
## STRIDE and abuse cases
|
|
14
|
+
|
|
15
|
+
| Threat | Abuse case | Boundary |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| Tampering | A junction or symlink below an output root redirects a new file outside it. | Resolve the deepest existing ancestor and reject link components below the root. |
|
|
18
|
+
| Tampering | `..` or an absolute patch path escapes the repository allowlist. | Normalize repository-relative paths and reject traversal/absolute paths. |
|
|
19
|
+
| Information disclosure | A verifier treats a path fragment as proof that a different command ran. | Compare the complete normalized command or exact argv. |
|
|
20
|
+
| Elevation of privilege | A mixed patch includes one allowed file and one unrelated file. | Require every parsed patch path to be authorized; reject the entire patch otherwise. |
|
|
21
|
+
| Repudiation | A caller cannot distinguish an outside path from a link alias. | Stable error codes identify the rejected boundary condition. |
|
|
22
|
+
|
|
23
|
+
## Residual risks
|
|
24
|
+
|
|
25
|
+
- Callers must still use the returned physical target and perform the check
|
|
26
|
+
immediately before the filesystem operation; a check done earlier can be
|
|
27
|
+
invalidated by a time-of-check/time-of-use race.
|
|
28
|
+
- The helper does not grant permission to choose a boundary root. Consumers
|
|
29
|
+
must establish that the root itself is trusted before calling it.
|
|
30
|
+
- Live model behavioral evidence remains an environment/acceptance concern and
|
|
31
|
+
is not manufactured by these deterministic helpers.
|
|
32
|
+
|
|
33
|
+
## Verification
|
|
34
|
+
|
|
35
|
+
`ci/mechanism-2v-verifier-boundaries.test.js` covers normal paths, traversal,
|
|
36
|
+
junction/symlink escapes, missing leaves, Windows casing, exact commands, and
|
|
37
|
+
all-or-nothing patch authorization. `npm run test:mutations` then verifies that
|
|
38
|
+
eight corresponding production protections are load-bearing.
|
package/docs/troubleshooting.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Harness OS Troubleshooting Guide
|
|
2
2
|
|
|
3
|
-
This guide helps you resolve common issues with Harness OS installation and usage.
|
|
3
|
+
This guide helps you resolve common issues with Harness OS installation and usage. Platform enforcement claims follow [platform-capabilities.md](platform-capabilities.md).
|
|
4
4
|
|
|
5
5
|
## Installation Issues
|
|
6
6
|
|
|
@@ -69,13 +69,11 @@ yarn install
|
|
|
69
69
|
```bash
|
|
70
70
|
cat .claude/settings.json | grep -A 10 "hooks"
|
|
71
71
|
```
|
|
72
|
-
|
|
73
72
|
2. Check hook file permissions:
|
|
74
73
|
```bash
|
|
75
74
|
ls -la hooks/scripts/*.js
|
|
76
75
|
```
|
|
77
|
-
|
|
78
|
-
3. Restart Claude Code session
|
|
76
|
+
3. Restart Claude Code session.
|
|
79
77
|
|
|
80
78
|
### Hook Execution Errors
|
|
81
79
|
|
|
@@ -99,18 +97,19 @@ npx github:dyphn1/Harness-everything install
|
|
|
99
97
|
**Symptom:** `RULE OF 3 CIRCUIT BREAKER TRIGGERED!` frequently
|
|
100
98
|
|
|
101
99
|
**Solution:**
|
|
102
|
-
1. This is normal behavior - Harness is protecting you from infinite loops
|
|
103
|
-
2. Follow the zoom-out instructions in the error message
|
|
104
|
-
3. If it's a false positive, check the error signature:
|
|
100
|
+
1. This is normal behavior on an integration surface that actually packages the circuit-breaker hooks: Harness is protecting you from infinite loops.
|
|
101
|
+
2. Follow the zoom-out instructions in the error message.
|
|
102
|
+
3. If it's a false positive on the Claude Code hook path, check the error signature:
|
|
105
103
|
```bash
|
|
106
104
|
cat .claude/harness-everything/state/sessions/default/rule-of-3-state.json
|
|
107
105
|
```
|
|
108
|
-
|
|
109
106
|
4. Reset if needed:
|
|
110
107
|
```bash
|
|
111
108
|
npm run harness:reset
|
|
112
109
|
```
|
|
113
110
|
|
|
111
|
+
Do not expect this Claude Code state file merely because Harness skills or an instruction-only platform integration are installed.
|
|
112
|
+
|
|
114
113
|
## Platform-Specific Issues
|
|
115
114
|
|
|
116
115
|
### Cursor Not Showing Rules
|
|
@@ -122,13 +121,11 @@ npx github:dyphn1/Harness-everything install
|
|
|
122
121
|
```bash
|
|
123
122
|
cat .cursorrules | head -20
|
|
124
123
|
```
|
|
125
|
-
|
|
126
124
|
2. If missing, reinstall with Cursor flag:
|
|
127
125
|
```bash
|
|
128
126
|
npx github:dyphn1/Harness-everything install --cursor
|
|
129
127
|
```
|
|
130
|
-
|
|
131
|
-
3. Restart Cursor
|
|
128
|
+
3. Restart Cursor.
|
|
132
129
|
|
|
133
130
|
### Copilot Not Following Rules
|
|
134
131
|
|
|
@@ -139,43 +136,90 @@ npx github:dyphn1/Harness-everything install
|
|
|
139
136
|
```bash
|
|
140
137
|
cat .github/copilot-instructions.md | head -20
|
|
141
138
|
```
|
|
139
|
+
2. Ensure Copilot is using the instructions file.
|
|
140
|
+
3. Restart VS Code/GitHub Copilot.
|
|
142
141
|
|
|
143
|
-
|
|
144
|
-
3. Restart VS Code/GitHub Copilot
|
|
145
|
-
|
|
146
|
-
### Codex/AGENTS.md Issues
|
|
142
|
+
### Codex advisory installer / AGENTS.md issues
|
|
147
143
|
|
|
148
|
-
**Symptom:** Codex not
|
|
144
|
+
**Symptom:** Codex does not appear to receive the general installer guidance.
|
|
149
145
|
|
|
150
146
|
**Solution:**
|
|
151
|
-
1. Check AGENTS.md exists:
|
|
147
|
+
1. Check `AGENTS.md` exists and contains Harness guidance:
|
|
152
148
|
```bash
|
|
153
149
|
cat AGENTS.md | head -20
|
|
154
150
|
```
|
|
155
|
-
|
|
156
|
-
2. Reinstall with Codex flag:
|
|
151
|
+
2. Reinstall the advisory Codex target if needed:
|
|
157
152
|
```bash
|
|
158
153
|
npx github:dyphn1/Harness-everything install --codex
|
|
159
154
|
```
|
|
155
|
+
3. Remember that this is the instruction-oriented installer path. It is different from the **local OpenAI plugin** package described below.
|
|
156
|
+
|
|
157
|
+
### Codex / local OpenAI plugin not appearing
|
|
158
|
+
|
|
159
|
+
**Symptom:** The Harness plugin is missing from the local Plugins Directory, skills are stale, or packaged lifecycle behavior does not reflect the current repository package.
|
|
160
|
+
|
|
161
|
+
**Checks:**
|
|
162
|
+
```bash
|
|
163
|
+
npm run plugin:sync
|
|
164
|
+
npm run test:plugin:openai
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Then verify the repository contains:
|
|
168
|
+
|
|
169
|
+
```text
|
|
170
|
+
.agents/plugins/marketplace.json
|
|
171
|
+
plugins/harness-everything/.codex-plugin/plugin.json
|
|
172
|
+
plugins/harness-everything/hooks/hooks.json
|
|
173
|
+
plugins/harness-everything/hooks/session-start.js
|
|
174
|
+
plugins/harness-everything/skills/
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
If those checks pass but the host still shows an older copy:
|
|
178
|
+
|
|
179
|
+
1. Refresh/sync the imported marketplace or repository plugin in the host.
|
|
180
|
+
2. Restart/refresh the local ChatGPT/Codex host if it cached the plugin package.
|
|
181
|
+
3. Start a **new chat/session** before judging `SessionStart` or `UserPromptSubmit` behavior.
|
|
182
|
+
4. Re-review/trust changed command hooks if the host asks again after hook definitions changed.
|
|
183
|
+
|
|
184
|
+
The local plugin mechanically injects the session policy and invariant-first routing contract, and its package includes mechanism-tested supported-tool, subagent, and stop adapters. If those events do not appear in a live session, verify the host loaded the current package and that changed command hooks were reviewed/trusted; package tests alone cannot prove host loading.
|
|
185
|
+
|
|
186
|
+
See [openai-plugin.md](openai-plugin.md) for installation and validation details.
|
|
187
|
+
|
|
188
|
+
### Public OpenAI Skills-only plugin behaves differently from local Codex plugin
|
|
189
|
+
|
|
190
|
+
**Symptom:** A public/reviewer Skills-only install does not run local `.codex-plugin` lifecycle hooks.
|
|
191
|
+
|
|
192
|
+
**Expected behavior:** This is by design. The public Skills-only upload contains reusable skills and referenced assets, but not the local `.codex-plugin` lifecycle hooks. Validate public behavior with:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
npm run plugin:submission:build
|
|
196
|
+
npm run test:plugin:submission
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Do not troubleshoot a missing `SessionStart` or `UserPromptSubmit` hook in the public Skills-only artifact as if it were a packaging defect.
|
|
200
|
+
|
|
201
|
+
### OpenCode plugin implementation works in tests but host loading is uncertain
|
|
202
|
+
|
|
203
|
+
**Symptom:** Source/mechanism tests pass, but there is no evidence that a real OpenCode session loaded and fired the plugin.
|
|
204
|
+
|
|
205
|
+
**Interpretation:** The current repository claim is intentionally **mechanism-tested, live loading unverified**. Check [`../opencode-plugin/README.md`](../opencode-plugin/README.md) and run the OpenCode mechanism coverage. Do not promote a source-level pass into a live-host pass without a real session artifact.
|
|
160
206
|
|
|
161
207
|
## Performance Issues
|
|
162
208
|
|
|
163
209
|
### Slow Hook Execution
|
|
164
210
|
|
|
165
|
-
**Symptom:** Terminal commands feel slower
|
|
211
|
+
**Symptom:** Terminal commands feel slower on a hook-enabled integration.
|
|
166
212
|
|
|
167
213
|
**Solution:**
|
|
168
|
-
1. Check hook execution time:
|
|
214
|
+
1. Check Claude Code hook execution time where applicable:
|
|
169
215
|
```bash
|
|
170
216
|
time node hooks/scripts/rule-of-3.js < /dev/null
|
|
171
217
|
```
|
|
172
|
-
|
|
173
218
|
2. If >200ms, check for:
|
|
174
219
|
- Large state files
|
|
175
220
|
- Network calls in hooks
|
|
176
221
|
- Complex file operations
|
|
177
|
-
|
|
178
|
-
3. Reset state:
|
|
222
|
+
3. Reset state if appropriate:
|
|
179
223
|
```bash
|
|
180
224
|
rm -rf .claude/harness-everything/state/sessions/
|
|
181
225
|
```
|
|
@@ -187,47 +231,43 @@ npx github:dyphn1/Harness-everything install
|
|
|
187
231
|
**Solution:**
|
|
188
232
|
1. Check for memory leaks:
|
|
189
233
|
```bash
|
|
190
|
-
# Monitor Node.js processes
|
|
191
234
|
ps aux | grep node
|
|
192
235
|
```
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
3. Report issue if persistent
|
|
236
|
+
2. Restart session if needed.
|
|
237
|
+
3. Report issue if persistent.
|
|
196
238
|
|
|
197
239
|
## Debugging
|
|
198
240
|
|
|
199
241
|
### Enable Verbose Logging
|
|
200
242
|
|
|
201
243
|
```bash
|
|
202
|
-
# Set debug environment variable
|
|
203
244
|
export HARNESS_DEBUG=1
|
|
204
|
-
|
|
205
|
-
# Run with verbose output
|
|
206
245
|
node hooks/scripts/rule-of-3.js < payload.json
|
|
207
246
|
```
|
|
208
247
|
|
|
209
248
|
### Check State Files
|
|
210
249
|
|
|
211
250
|
```bash
|
|
212
|
-
#
|
|
251
|
+
# Claude Code hook-path state example
|
|
213
252
|
cat .claude/harness-everything/state/sessions/default/rule-of-3-state.json
|
|
214
253
|
cat .claude/harness-everything/state/sessions/default/handoff-state.json
|
|
215
254
|
|
|
216
|
-
# Reset
|
|
255
|
+
# Reset Claude hook-path state
|
|
217
256
|
rm -rf .claude/harness-everything/state/sessions/
|
|
218
257
|
npm run harness:reset
|
|
219
258
|
```
|
|
220
259
|
|
|
221
260
|
### Manual Hook Testing
|
|
222
261
|
|
|
223
|
-
|
|
224
|
-
# Test rule-of-3 hook
|
|
225
|
-
echo '{"tool_name":"Bash","tool_input":{"command":"test"}}' | node hooks/scripts/rule-of-3.js
|
|
262
|
+
For deterministic cross-platform mechanism checks, prefer:
|
|
226
263
|
|
|
227
|
-
|
|
228
|
-
|
|
264
|
+
```bash
|
|
265
|
+
npm run test:mechanism
|
|
266
|
+
npm run test:docs:capabilities
|
|
229
267
|
```
|
|
230
268
|
|
|
269
|
+
When isolating a specific Claude hook, use the Windows-safe `spawnSync` recipes in [../VERIFICATION.md](../VERIFICATION.md) rather than assuming a shell `echo | node` pipeline behaves the same on every OS.
|
|
270
|
+
|
|
231
271
|
## Getting Help
|
|
232
272
|
|
|
233
273
|
### Collect Diagnostic Information
|
|
@@ -244,22 +284,18 @@ cat package.json | grep version >> harness-diagnostic.txt
|
|
|
244
284
|
echo "" >> harness-diagnostic.txt
|
|
245
285
|
|
|
246
286
|
echo "=== Installed Platforms ===" >> harness-diagnostic.txt
|
|
247
|
-
ls -la .claude/ .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/ .hermes.md 2>/dev/null >> harness-diagnostic.txt
|
|
287
|
+
ls -la .claude/ .cursorrules .github/copilot-instructions.md AGENTS.md .continue/rules/ .hermes.md .agents/plugins/ plugins/harness-everything/ 2>/dev/null >> harness-diagnostic.txt
|
|
248
288
|
echo "" >> harness-diagnostic.txt
|
|
249
289
|
|
|
250
290
|
echo "=== Hook Status ===" >> harness-diagnostic.txt
|
|
251
291
|
cat .claude/settings.json | grep -A 20 "hooks" >> harness-diagnostic.txt 2>/dev/null
|
|
252
|
-
echo "" >> harness-diagnostic.txt
|
|
253
|
-
|
|
254
|
-
echo "=== Recent Errors ===" >> harness-diagnostic.txt
|
|
255
|
-
# Add any recent error logs here
|
|
256
292
|
```
|
|
257
293
|
|
|
258
294
|
### Contact Support
|
|
259
295
|
|
|
260
296
|
1. **GitHub Issues:** https://github.com/dyphn1/Harness-everything/issues
|
|
261
297
|
2. **Include:** Diagnostic report, error messages, steps to reproduce
|
|
262
|
-
3. **Platform:** Specify which AI tool you're using (
|
|
298
|
+
3. **Platform:** Specify which AI tool and which Harness installation surface you're using (for example `--codex` advisory installer vs local OpenAI plugin vs public Skills-only plugin).
|
|
263
299
|
|
|
264
300
|
## Common Error Messages
|
|
265
301
|
|
|
@@ -272,8 +308,8 @@ echo "=== Recent Errors ===" >> harness-diagnostic.txt
|
|
|
272
308
|
- **Solution:** Will fail open to Tier 1 - reinstall to restore
|
|
273
309
|
|
|
274
310
|
### "Session state not found"
|
|
275
|
-
- **Cause:** First run or state
|
|
276
|
-
- **Solution:**
|
|
311
|
+
- **Cause:** First run, state cleared, or the selected platform surface does not create that runtime state
|
|
312
|
+
- **Solution:** Confirm the platform/integration surface first; on a supported stateful hook path, state is created on first use
|
|
277
313
|
|
|
278
314
|
### "Zoom-out report not found"
|
|
279
315
|
- **Cause:** Circuit breaker tripped but no report written
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Verifier Boundary Contracts
|
|
2
|
+
|
|
3
|
+
This repository handles paths and execution evidence produced by local agent
|
|
4
|
+
sessions. Consumers must use these contracts before writing, deleting, or
|
|
5
|
+
grading anything derived from a session. The repository-side evidence archiver
|
|
6
|
+
and legacy workspace migration use the same checks; the standalone OpenCode
|
|
7
|
+
plugin mirrors the patch authorization rule because it is distributed as one
|
|
8
|
+
file.
|
|
9
|
+
|
|
10
|
+
## Physical path containment
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
const { assertContainedPath } = require('../scripts/lib/path-boundary');
|
|
14
|
+
|
|
15
|
+
const { target } = assertContainedPath(outputRoot, requestedPath);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
`assertContainedPath()` resolves the deepest existing ancestor before appending
|
|
19
|
+
missing segments. It rejects lexical traversal, junction/symlink components
|
|
20
|
+
below the selected root, and physical paths outside the root. Call it for the
|
|
21
|
+
final target, not only for the user-provided parent directory. Consumers must
|
|
22
|
+
handle `PATH_OUTSIDE_BOUNDARY`, `LINK_COMPONENT_IN_BOUNDARY`, and
|
|
23
|
+
`INVALID_BOUNDARY_PATH` as hard failures.
|
|
24
|
+
|
|
25
|
+
## Exact execution evidence
|
|
26
|
+
|
|
27
|
+
Use `commandMatches()` for command expectations. Complete strings compare after
|
|
28
|
+
whitespace normalization; argv arrays compare each argument and length exactly.
|
|
29
|
+
The only shorthand accepted is a script basename when an approved interpreter
|
|
30
|
+
(`node`, `bun`, `deno`, Python, or Ruby) is the command launcher. Substring
|
|
31
|
+
checks are not valid evidence.
|
|
32
|
+
|
|
33
|
+
Use `extractPatchPaths()` and `patchPathsAuthorized()` for patch-shaped tool
|
|
34
|
+
output. A patch is authorized only when every touched path is allowlisted;
|
|
35
|
+
mixed authorized and unauthorized patches must be rejected atomically.
|
|
36
|
+
|
|
37
|
+
Prefer structured argv and patch metadata when the producer provides them.
|
|
38
|
+
These string fallbacks intentionally fail closed rather than guessing intent.
|
|
39
|
+
|
|
40
|
+
## Mutation gate
|
|
41
|
+
|
|
42
|
+
`npm run test:mutations` runs focused tests against temporary in-memory source
|
|
43
|
+
mutations for each consumer boundary. A green result means the test would fail
|
|
44
|
+
if its corresponding protection were removed; it does not replace the normal
|
|
45
|
+
mechanism, consistency, or live behavioral-evidence gates.
|