@hunter-harness/workflow-harness 0.2.0 → 0.2.2
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/harness/bundles/general/claude-code/.harness-build.json +1 -1
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-archive/reference.md +2 -8
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +2 -1
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +5 -1
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-run/checklist.md +1 -1
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-submit/checklist.md +30 -6
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-test/checklist.md +1 -1
- package/harness/bundles/general/claude-code/harness-test/pitfalls.md +16 -0
- package/harness/bundles/general/claude-code/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/general/claude-code/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +31 -14
- package/harness/bundles/general/claude-code/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/general/claude-code/scripts/harness_deploy.py +179 -4
- package/harness/bundles/general/claude-code/scripts/harness_ledger.py +269 -3
- package/harness/bundles/general/claude-code/scripts/harness_preflight.py +72 -382
- package/harness/bundles/general/claude-code/scripts/harness_profile.py +742 -0
- package/harness/bundles/general/claude-code/scripts/harness_service.py +99 -2
- package/harness/bundles/general/claude-code/scripts/harness_state.py +179 -0
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-archive/reference.md +2 -8
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +2 -1
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +5 -1
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-run/checklist.md +1 -1
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-submit/checklist.md +30 -6
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-test/checklist.md +1 -1
- package/harness/bundles/general/codebuddy/harness-test/pitfalls.md +16 -0
- package/harness/bundles/general/codebuddy/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/general/codebuddy/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +31 -14
- package/harness/bundles/general/codebuddy/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/general/codebuddy/scripts/harness_deploy.py +179 -4
- package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +269 -3
- package/harness/bundles/general/codebuddy/scripts/harness_preflight.py +72 -382
- package/harness/bundles/general/codebuddy/scripts/harness_profile.py +742 -0
- package/harness/bundles/general/codebuddy/scripts/harness_service.py +99 -2
- package/harness/bundles/general/codebuddy/scripts/harness_state.py +179 -0
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-archive/reference.md +2 -8
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-plan/SKILL.md +2 -1
- package/harness/bundles/general/codex/harness-review/SKILL.md +5 -1
- package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-run/checklist.md +1 -1
- package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-submit/checklist.md +30 -6
- package/harness/bundles/general/codex/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-test/checklist.md +1 -1
- package/harness/bundles/general/codex/harness-test/pitfalls.md +16 -0
- package/harness/bundles/general/codex/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/general/codex/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/general/codex/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/general/codex/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/general/codex/scripts/harness_archive.py +31 -14
- package/harness/bundles/general/codex/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/general/codex/scripts/harness_deploy.py +179 -4
- package/harness/bundles/general/codex/scripts/harness_ledger.py +269 -3
- package/harness/bundles/general/codex/scripts/harness_preflight.py +72 -382
- package/harness/bundles/general/codex/scripts/harness_profile.py +742 -0
- package/harness/bundles/general/codex/scripts/harness_service.py +99 -2
- package/harness/bundles/general/codex/scripts/harness_state.py +179 -0
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-archive/reference.md +2 -8
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +2 -1
- package/harness/bundles/general/cursor/harness-review/SKILL.md +5 -1
- package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-run/checklist.md +1 -1
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-submit/checklist.md +30 -6
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-test/checklist.md +1 -1
- package/harness/bundles/general/cursor/harness-test/pitfalls.md +16 -0
- package/harness/bundles/general/cursor/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/general/cursor/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/general/cursor/scripts/harness_archive.py +31 -14
- package/harness/bundles/general/cursor/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/general/cursor/scripts/harness_deploy.py +179 -4
- package/harness/bundles/general/cursor/scripts/harness_ledger.py +269 -3
- package/harness/bundles/general/cursor/scripts/harness_preflight.py +72 -382
- package/harness/bundles/general/cursor/scripts/harness_profile.py +742 -0
- package/harness/bundles/general/cursor/scripts/harness_service.py +99 -2
- package/harness/bundles/general/cursor/scripts/harness_state.py +179 -0
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/reference.md +2 -8
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +3 -3
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +2 -1
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +5 -1
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +4 -4
- package/harness/bundles/java/claude-code/harness-run/checklist.md +1 -1
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +3 -3
- package/harness/bundles/java/claude-code/harness-submit/checklist.md +30 -6
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +5 -5
- package/harness/bundles/java/claude-code/harness-test/pitfalls.md +16 -0
- package/harness/bundles/java/claude-code/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +31 -14
- package/harness/bundles/java/claude-code/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/java/claude-code/scripts/harness_deploy.py +179 -4
- package/harness/bundles/java/claude-code/scripts/harness_ledger.py +269 -3
- package/harness/bundles/java/claude-code/scripts/harness_preflight.py +72 -382
- package/harness/bundles/java/claude-code/scripts/harness_profile.py +742 -0
- package/harness/bundles/java/claude-code/scripts/harness_service.py +99 -2
- package/harness/bundles/java/claude-code/scripts/harness_state.py +179 -0
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/reference.md +2 -8
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +3 -3
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +2 -1
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +5 -1
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +4 -4
- package/harness/bundles/java/codebuddy/harness-run/checklist.md +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +3 -3
- package/harness/bundles/java/codebuddy/harness-submit/checklist.md +30 -6
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +5 -5
- package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +16 -0
- package/harness/bundles/java/codebuddy/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +31 -14
- package/harness/bundles/java/codebuddy/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/java/codebuddy/scripts/harness_deploy.py +179 -4
- package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +269 -3
- package/harness/bundles/java/codebuddy/scripts/harness_preflight.py +72 -382
- package/harness/bundles/java/codebuddy/scripts/harness_profile.py +742 -0
- package/harness/bundles/java/codebuddy/scripts/harness_service.py +99 -2
- package/harness/bundles/java/codebuddy/scripts/harness_state.py +179 -0
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/reference.md +2 -8
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-package/SKILL.md +3 -3
- package/harness/bundles/java/codex/harness-plan/SKILL.md +2 -1
- package/harness/bundles/java/codex/harness-review/SKILL.md +5 -1
- package/harness/bundles/java/codex/harness-run/SKILL.md +4 -4
- package/harness/bundles/java/codex/harness-run/checklist.md +1 -1
- package/harness/bundles/java/codex/harness-submit/SKILL.md +3 -3
- package/harness/bundles/java/codex/harness-submit/checklist.md +30 -6
- package/harness/bundles/java/codex/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-test/SKILL.md +5 -5
- package/harness/bundles/java/codex/harness-test/pitfalls.md +16 -0
- package/harness/bundles/java/codex/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/java/codex/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/java/codex/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/java/codex/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/java/codex/scripts/harness_archive.py +31 -14
- package/harness/bundles/java/codex/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/java/codex/scripts/harness_deploy.py +179 -4
- package/harness/bundles/java/codex/scripts/harness_ledger.py +269 -3
- package/harness/bundles/java/codex/scripts/harness_preflight.py +72 -382
- package/harness/bundles/java/codex/scripts/harness_profile.py +742 -0
- package/harness/bundles/java/codex/scripts/harness_service.py +99 -2
- package/harness/bundles/java/codex/scripts/harness_state.py +179 -0
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/reference.md +2 -8
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +2 -1
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +35 -21
- package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +53 -7
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +521 -125
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-package/SKILL.md +3 -3
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +2 -1
- package/harness/bundles/java/cursor/harness-review/SKILL.md +5 -1
- package/harness/bundles/java/cursor/harness-run/SKILL.md +4 -4
- package/harness/bundles/java/cursor/harness-run/checklist.md +1 -1
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +3 -3
- package/harness/bundles/java/cursor/harness-submit/checklist.md +30 -6
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-test/SKILL.md +5 -5
- package/harness/bundles/java/cursor/harness-test/pitfalls.md +16 -0
- package/harness/bundles/java/cursor/harness-test/scripts/runtime-helpers.mjs +216 -0
- package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +1 -1
- package/harness/bundles/java/cursor/protocols/ledger-protocol.md +55 -2
- package/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +1 -8
- package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +13 -0
- package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +24 -0
- package/harness/bundles/java/cursor/scripts/harness_archive.py +31 -14
- package/harness/bundles/java/cursor/scripts/harness_check_gate.py +103 -0
- package/harness/bundles/java/cursor/scripts/harness_deploy.py +179 -4
- package/harness/bundles/java/cursor/scripts/harness_ledger.py +269 -3
- package/harness/bundles/java/cursor/scripts/harness_preflight.py +72 -382
- package/harness/bundles/java/cursor/scripts/harness_profile.py +742 -0
- package/harness/bundles/java/cursor/scripts/harness_service.py +99 -2
- package/harness/bundles/java/cursor/scripts/harness_state.py +179 -0
- package/harness/manifests/general/claude-code.json +46 -30
- package/harness/manifests/general/codebuddy.json +46 -30
- package/harness/manifests/general/codex.json +46 -30
- package/harness/manifests/general/cursor.json +46 -30
- package/harness/manifests/java/claude-code.json +47 -31
- package/harness/manifests/java/codebuddy.json +47 -31
- package/harness/manifests/java/codex.json +47 -31
- package/harness/manifests/java/cursor.json +47 -31
- package/hunter-workflow-family.json +2 -2
- package/package.json +1 -1
|
@@ -125,7 +125,14 @@ def read_json(path: Path) -> Any:
|
|
|
125
125
|
def write_json(path: Path, data: Any) -> None:
|
|
126
126
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
127
127
|
text = json.dumps(data, ensure_ascii=False, indent=2) + "\n"
|
|
128
|
-
|
|
128
|
+
# 原子写 temp+os.replace:崩溃后不留半写文件(与 runtime-helpers.mjs writeJsonUtf8NoBom 一致)。
|
|
129
|
+
tmp = path.with_name(f".{path.name}.{os.getpid()}.tmp")
|
|
130
|
+
try:
|
|
131
|
+
tmp.write_text(text, encoding="utf-8", newline="\n")
|
|
132
|
+
os.replace(tmp, path)
|
|
133
|
+
except BaseException:
|
|
134
|
+
tmp.unlink(missing_ok=True)
|
|
135
|
+
raise
|
|
129
136
|
|
|
130
137
|
|
|
131
138
|
def load_build_profile(project: Path) -> dict[str, Any]:
|
|
@@ -153,6 +160,72 @@ def get_service_start(profile: dict[str, Any]) -> dict[str, Any]:
|
|
|
153
160
|
return svc
|
|
154
161
|
|
|
155
162
|
|
|
163
|
+
# Worktree/change 路径标记:持久 profile 的 serviceStart 不得含这些具体路径。
|
|
164
|
+
# runtime resolve 把具体 overlay/profile 注入到 session,不写回持久 profile
|
|
165
|
+
# (spec §3.1 持久 profile 只保存模板;§3.4 修复输入端陈旧 profile)。
|
|
166
|
+
STALE_WORKTREE_MARKERS: tuple[str, ...] = (
|
|
167
|
+
".claude/worktrees/",
|
|
168
|
+
".cursor/worktrees/",
|
|
169
|
+
".codeium/worktrees/",
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def _detect_stale_persistent_values(service_start: dict[str, Any]) -> list[str]:
|
|
174
|
+
"""检测 serviceStart 是否含具体旧 worktree/change 持久路径。
|
|
175
|
+
|
|
176
|
+
持久 profile 只保存模板;command/overlayPath/profile 嵌入 worktree 路径
|
|
177
|
+
说明是 v1 残留或被错误写回的已解析 overlay,必须拒绝(spec §3.4)。
|
|
178
|
+
"""
|
|
179
|
+
stale: list[str] = []
|
|
180
|
+
for field in ("command", "overlayPath", "profile"):
|
|
181
|
+
val = service_start.get(field)
|
|
182
|
+
if not isinstance(val, str) or not val:
|
|
183
|
+
continue
|
|
184
|
+
for marker in STALE_WORKTREE_MARKERS:
|
|
185
|
+
if marker in val:
|
|
186
|
+
stale.append(f"{field} contains stale worktree path: {marker}")
|
|
187
|
+
break
|
|
188
|
+
return stale
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def resolve_service_start(
|
|
192
|
+
profile: dict[str, Any],
|
|
193
|
+
*,
|
|
194
|
+
change_name: str | None = None,
|
|
195
|
+
worktree_root: Path | None = None,
|
|
196
|
+
overlay_path: str | None = None,
|
|
197
|
+
) -> dict[str, Any]:
|
|
198
|
+
"""从模板 serviceStart + runtime context 生成 resolved serviceStart。
|
|
199
|
+
|
|
200
|
+
spec §3.1:持久 profile 的 serviceStart 是模板(profile/overlayPath 留空);
|
|
201
|
+
runtime 注入具体 overlay/profile 到返回值,写入 session,**不写回持久 profile**。
|
|
202
|
+
spec §3.4:含 worktree/change 陈旧持久值时拒绝(修复输入端陈旧 profile)。
|
|
203
|
+
|
|
204
|
+
向后兼容:持久 profile.profile 非空(如 v1 残留 "local-dev")→ 保留;
|
|
205
|
+
overlay_path 未提供 → 保留持久 overlayPath(可能为空)。
|
|
206
|
+
"""
|
|
207
|
+
service_start = get_service_start(profile) # 校验 command 非空
|
|
208
|
+
|
|
209
|
+
stale = _detect_stale_persistent_values(service_start)
|
|
210
|
+
if stale:
|
|
211
|
+
raise ValueError(
|
|
212
|
+
"serviceStart contains stale persistent worktree/change values; "
|
|
213
|
+
"run harness_profile.py migrate to clear: " + "; ".join(stale)
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
resolved = dict(service_start)
|
|
217
|
+
# runtime overlay 注入:显式 overlay_path 覆盖;否则保留持久模板值
|
|
218
|
+
if overlay_path is not None:
|
|
219
|
+
resolved["overlayPath"] = overlay_path
|
|
220
|
+
# runtime profile 注入:持久 profile 留空时用 change_name;非空则保留
|
|
221
|
+
if not str(resolved.get("profile") or "").strip():
|
|
222
|
+
resolved["profile"] = change_name or "local-dev"
|
|
223
|
+
# worktree_root 预留给未来相对 overlay 路径解析(spec §3.6 state snapshot);
|
|
224
|
+
# 不写入返回值,避免污染 session。
|
|
225
|
+
_ = worktree_root
|
|
226
|
+
return resolved
|
|
227
|
+
|
|
228
|
+
|
|
156
229
|
def resolve_service_input_files(
|
|
157
230
|
project: Path,
|
|
158
231
|
service_start: dict[str, Any],
|
|
@@ -934,10 +1007,24 @@ def cmd_ensure(args: argparse.Namespace) -> int:
|
|
|
934
1007
|
|
|
935
1008
|
try:
|
|
936
1009
|
profile = load_build_profile(project)
|
|
937
|
-
service_start = get_service_start(profile)
|
|
938
1010
|
except (OSError, ValueError, FileNotFoundError, json.JSONDecodeError) as exc:
|
|
939
1011
|
return emit_error(str(exc), as_json=as_json)
|
|
940
1012
|
|
|
1013
|
+
# cluster 3 (spec §3.1/§3.4): resolve 模板 serviceStart + runtime context。
|
|
1014
|
+
# 持久 profile 只保存模板;runtime overlay/profile 注入到 session,不写回持久 profile。
|
|
1015
|
+
# 含 worktree/change 陈旧持久值时拒绝(修复输入端陈旧 profile)。
|
|
1016
|
+
change_name = getattr(args, "change_name", None) or change_dir.name
|
|
1017
|
+
overlay = getattr(args, "overlay", None)
|
|
1018
|
+
try:
|
|
1019
|
+
service_start = resolve_service_start(
|
|
1020
|
+
profile,
|
|
1021
|
+
change_name=change_name,
|
|
1022
|
+
worktree_root=project,
|
|
1023
|
+
overlay_path=overlay,
|
|
1024
|
+
)
|
|
1025
|
+
except ValueError as exc:
|
|
1026
|
+
return emit_error(str(exc), as_json=as_json)
|
|
1027
|
+
|
|
941
1028
|
command = str(service_start["command"]).strip()
|
|
942
1029
|
port = extract_port(service_start)
|
|
943
1030
|
|
|
@@ -1292,6 +1379,16 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
1292
1379
|
default=None,
|
|
1293
1380
|
help="comma-separated service module source files for inputsHash",
|
|
1294
1381
|
)
|
|
1382
|
+
p_ensure.add_argument(
|
|
1383
|
+
"--change-name",
|
|
1384
|
+
default=None,
|
|
1385
|
+
help="change-name for runtime profile resolve (default: change-dir name)",
|
|
1386
|
+
)
|
|
1387
|
+
p_ensure.add_argument(
|
|
1388
|
+
"--overlay",
|
|
1389
|
+
default=None,
|
|
1390
|
+
help="runtime overlay path injected into resolved serviceStart",
|
|
1391
|
+
)
|
|
1295
1392
|
p_ensure.add_argument("--json", action="store_true")
|
|
1296
1393
|
p_ensure.set_defaults(func=cmd_ensure)
|
|
1297
1394
|
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Harness state/context snapshot (cluster 3, spec §3.6).
|
|
3
|
+
|
|
4
|
+
Per-segment fingerprints for project/worktree/git/profile/rules/map/knowledge/
|
|
5
|
+
diff. Each segment fails independently; cache miss re-captures only the affected
|
|
6
|
+
segment. plan/run/test/review/submit read this snapshot; stale segments are
|
|
7
|
+
re-captured by the script. Never skip code or verification gates on cache alone.
|
|
8
|
+
|
|
9
|
+
Python 3.10+ stdlib only. UTF-8 without BOM. Windows path friendly.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
import datetime as dt
|
|
15
|
+
import hashlib
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
import sys
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
SCRIPTS_DIR = Path(__file__).resolve().parent
|
|
24
|
+
if str(SCRIPTS_DIR) not in sys.path:
|
|
25
|
+
sys.path.insert(0, str(SCRIPTS_DIR))
|
|
26
|
+
|
|
27
|
+
from harness_ledger import compute_inputs_hash # noqa: E402
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
if hasattr(sys.stdout, "reconfigure"):
|
|
31
|
+
sys.stdout.reconfigure(encoding="utf-8")
|
|
32
|
+
if hasattr(sys.stderr, "reconfigure"):
|
|
33
|
+
sys.stderr.reconfigure(encoding="utf-8")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
SNAPSHOT_SCHEMA_VERSION = 1
|
|
37
|
+
SNAPSHOT_REL = Path("meta") / "state-snapshot.json"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def now_iso() -> str:
|
|
41
|
+
return dt.datetime.now().astimezone().isoformat(timespec="seconds")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def read_json(path: Path) -> Any:
|
|
45
|
+
# utf-8-sig 兼容可能残留的 BOM(与 harness_ledger.py 保持一致)。
|
|
46
|
+
return json.loads(path.read_text(encoding="utf-8-sig"))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def write_json(path: Path, data: Any) -> None:
|
|
50
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
51
|
+
text = json.dumps(data, ensure_ascii=False, indent=2) + "\n"
|
|
52
|
+
# 强制 LF,UTF-8 无 BOM(与 harness_ledger/harness_profile 保持一致)。
|
|
53
|
+
# 原子写 temp+os.replace:崩溃后不留半写文件(与 runtime-helpers.mjs writeJsonUtf8NoBom 一致)。
|
|
54
|
+
tmp = path.with_name(f".{path.name}.{os.getpid()}.tmp")
|
|
55
|
+
try:
|
|
56
|
+
tmp.write_text(text, encoding="utf-8", newline="\n")
|
|
57
|
+
os.replace(tmp, path)
|
|
58
|
+
except BaseException:
|
|
59
|
+
tmp.unlink(missing_ok=True)
|
|
60
|
+
raise
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def snapshot_path(change_dir: Path) -> Path:
|
|
64
|
+
return change_dir / SNAPSHOT_REL
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _empty_segment_fingerprint() -> str:
|
|
68
|
+
return "sha256:" + hashlib.sha256(b"").hexdigest()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def capture_file_segment(
|
|
72
|
+
files: list[str], *, captured_at: str | None = None
|
|
73
|
+
) -> dict[str, Any]:
|
|
74
|
+
"""对一组文件算指纹(compute_inputs_hash,order-independent),返回 segment dict。
|
|
75
|
+
|
|
76
|
+
空文件集 → 稳定空指纹 + 空 files(段存在但无输入,不算失效)。
|
|
77
|
+
缺失文件由 compute_inputs_hash 抛 FileNotFoundError(调用方应保证文件存在)。
|
|
78
|
+
"""
|
|
79
|
+
if files:
|
|
80
|
+
fp, resolved = compute_inputs_hash(files)
|
|
81
|
+
return {
|
|
82
|
+
"fingerprint": fp,
|
|
83
|
+
"files": resolved,
|
|
84
|
+
"capturedAt": captured_at or now_iso(),
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
"fingerprint": _empty_segment_fingerprint(),
|
|
88
|
+
"files": [],
|
|
89
|
+
"capturedAt": captured_at or now_iso(),
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def capture_snapshot(
|
|
94
|
+
change_dir: Path,
|
|
95
|
+
*,
|
|
96
|
+
change_name: str,
|
|
97
|
+
project: Path,
|
|
98
|
+
worktree_root: Path,
|
|
99
|
+
base: str | None = None,
|
|
100
|
+
head: str | None = None,
|
|
101
|
+
segment_files: dict[str, list[str]] | None = None,
|
|
102
|
+
) -> dict[str, Any]:
|
|
103
|
+
"""采集全段 state snapshot。
|
|
104
|
+
|
|
105
|
+
segment_files 指定每段(profile/rules/map/knowledge/...)的文件集;调用方
|
|
106
|
+
(各 skill)决定每段采什么文件,snapshot 只负责采集 + 比对 + 失效。
|
|
107
|
+
git 段记录 base/head;diff 指纹由调用方按需用 harness_ledger.compute_diff_hash
|
|
108
|
+
采后填入 segment_files(spec §3.6)。
|
|
109
|
+
"""
|
|
110
|
+
_ = change_dir # 预留给未来 write-back;当前 capture 只返回 dict
|
|
111
|
+
segment_files = segment_files or {}
|
|
112
|
+
segments: dict[str, Any] = {}
|
|
113
|
+
for name, files in segment_files.items():
|
|
114
|
+
segments[name] = capture_file_segment(files)
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
"schemaVersion": SNAPSHOT_SCHEMA_VERSION,
|
|
118
|
+
"generatedAt": now_iso(),
|
|
119
|
+
"changeName": change_name,
|
|
120
|
+
"project": {"root": str(project.resolve())},
|
|
121
|
+
"worktree": {"root": str(Path(worktree_root).resolve())},
|
|
122
|
+
"git": {"base": base or "", "head": head or ""},
|
|
123
|
+
"segments": segments,
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def write_snapshot(change_dir: Path, snapshot: dict[str, Any]) -> Path:
|
|
128
|
+
path = snapshot_path(change_dir)
|
|
129
|
+
write_json(path, snapshot)
|
|
130
|
+
return path
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def load_snapshot(change_dir: Path) -> dict[str, Any] | None:
|
|
134
|
+
path = snapshot_path(change_dir)
|
|
135
|
+
if not path.is_file():
|
|
136
|
+
return None
|
|
137
|
+
try:
|
|
138
|
+
data = read_json(path)
|
|
139
|
+
except (OSError, json.JSONDecodeError):
|
|
140
|
+
return None
|
|
141
|
+
return data if isinstance(data, dict) else None
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def is_segment_stale(
|
|
145
|
+
snapshot: dict[str, Any], segment: str, current_fingerprint: str
|
|
146
|
+
) -> bool:
|
|
147
|
+
"""某段指纹是否变化。段不存在 → True(需采集)。"""
|
|
148
|
+
segs = snapshot.get("segments") or {}
|
|
149
|
+
seg = segs.get(segment)
|
|
150
|
+
if not isinstance(seg, dict):
|
|
151
|
+
return True
|
|
152
|
+
return seg.get("fingerprint") != current_fingerprint
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def refresh_segments(
|
|
156
|
+
change_dir: Path,
|
|
157
|
+
snapshot: dict[str, Any],
|
|
158
|
+
*,
|
|
159
|
+
project: Path,
|
|
160
|
+
worktree_root: Path,
|
|
161
|
+
segment_files: dict[str, list[str]],
|
|
162
|
+
segments: list[str],
|
|
163
|
+
) -> dict[str, Any]:
|
|
164
|
+
"""只重采指定段;其他段保留原 capturedAt/fingerprint。
|
|
165
|
+
|
|
166
|
+
spec §3.6:缓存失效只重采受影响段,不得仅凭缓存跳过代码或验证门禁。
|
|
167
|
+
返回 refreshed snapshot(不写盘;调用方按需 write_snapshot)。
|
|
168
|
+
"""
|
|
169
|
+
_ = change_dir # 预留给未来 write-back
|
|
170
|
+
refreshed = dict(snapshot)
|
|
171
|
+
refreshed["project"] = {"root": str(project.resolve())}
|
|
172
|
+
refreshed["worktree"] = {"root": str(Path(worktree_root).resolve())}
|
|
173
|
+
refreshed_segments = dict(snapshot.get("segments") or {})
|
|
174
|
+
for name in segments:
|
|
175
|
+
files = segment_files.get(name, [])
|
|
176
|
+
refreshed_segments[name] = capture_file_segment(files)
|
|
177
|
+
refreshed["segments"] = refreshed_segments
|
|
178
|
+
refreshed["generatedAt"] = now_iso()
|
|
179
|
+
return refreshed
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"schema_version": 2,
|
|
3
3
|
"profile": "general",
|
|
4
4
|
"adapter": "claude-code",
|
|
5
|
-
"bundle_version": "0.2.
|
|
5
|
+
"bundle_version": "0.2.2",
|
|
6
6
|
"generator": "harness_deploy.py",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
9
|
"path": ".harness-build.json",
|
|
10
|
-
"sha256": "
|
|
10
|
+
"sha256": "d26aab76c6bd8862dd0442852f4f2d7f760a3550e66d64f8d1bd8a6db22b4933"
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
13
|
"path": "agents/harness-evaluator.md",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"path": "harness-archive/reference.md",
|
|
34
|
-
"sha256": "
|
|
34
|
+
"sha256": "06c031d728c7f56c31be3b72004d3f82febfed4cd9c7ce5d046e7549ae8c994a"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"path": "harness-archive/scripts/gen-manifest.ps1",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"path": "harness-archive/SKILL.md",
|
|
42
|
-
"sha256": "
|
|
42
|
+
"sha256": "9882482269bcce00e95c53a255d66fa9ba814c7f5fcbf234df0112a5c3d65f55"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"path": "harness-archive/templates/render-summary.mjs",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"path": "harness-codebase-map/SKILL.md",
|
|
62
|
-
"sha256": "
|
|
62
|
+
"sha256": "b360737e805607b6549be4299ba02f0fec18bd52fb7756381b175ad07bae94d3"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"path": "harness-codebase-map/templates/ARCHITECTURE.md",
|
|
@@ -111,23 +111,23 @@
|
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
"path": "harness-knowledge-ingest/reference.md",
|
|
114
|
-
"sha256": "
|
|
114
|
+
"sha256": "28665f8be71787e0eb67cf3f2d6ec8511ca484a228cd914e36c4082e05bd5d38"
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
"path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
|
|
118
|
-
"sha256": "
|
|
118
|
+
"sha256": "5a6efd08a4a8f46f92d715051904bf118b4159d76199c318d8accb0122a2e20f"
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
"path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
|
|
122
|
-
"sha256": "
|
|
122
|
+
"sha256": "6ec4851ed5fd99975b9dc192e826d0b20c24df638da4f428773476d29f7db7de"
|
|
123
123
|
},
|
|
124
124
|
{
|
|
125
125
|
"path": "harness-knowledge-ingest/SKILL.md",
|
|
126
|
-
"sha256": "
|
|
126
|
+
"sha256": "3516ab306d156bacb02af117632ecb25b22cbf9d1aba5e413be30140ad366c19"
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
"path": "harness-knowledge-query/SKILL.md",
|
|
130
|
-
"sha256": "
|
|
130
|
+
"sha256": "62c0dfc675f50af6e542b9bd9db45bc84cb50b3192ed7cf245ccc9d8d7204aee"
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"path": "harness-plan/checklist.md",
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"path": "harness-plan/SKILL.md",
|
|
146
|
-
"sha256": "
|
|
146
|
+
"sha256": "a0b0957f46ef803c4e53eafea9a8b662c95a9752cf4a9acf87854673853049e6"
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"path": "harness-review/checklist.md",
|
|
@@ -159,11 +159,11 @@
|
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
"path": "harness-review/SKILL.md",
|
|
162
|
-
"sha256": "
|
|
162
|
+
"sha256": "043c45183a4ca2df379e018ef0d960f7966318daf62bead04ff9e9808458d278"
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
"path": "harness-run/checklist.md",
|
|
166
|
-
"sha256": "
|
|
166
|
+
"sha256": "6804247fa8fcb0dd234b1dbb7f7cfbe93d7b8d1f4bf3486246e808725a5dae99"
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
"path": "harness-run/protocols.md",
|
|
@@ -175,11 +175,11 @@
|
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
"path": "harness-run/SKILL.md",
|
|
178
|
-
"sha256": "
|
|
178
|
+
"sha256": "178303783680bec6a71e7eb246fd31f0ef3457d14c7051497600b47aa1c3c5b0"
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
181
|
"path": "harness-submit/checklist.md",
|
|
182
|
-
"sha256": "
|
|
182
|
+
"sha256": "abe6e77386cc702b2edafdec69609f1064cbc0794d42a3b49949400019e73f76"
|
|
183
183
|
},
|
|
184
184
|
{
|
|
185
185
|
"path": "harness-submit/reference.md",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"path": "harness-submit/SKILL.md",
|
|
190
|
-
"sha256": "
|
|
190
|
+
"sha256": "3aaf462e279591911844c5bde4cd98c4615f7b7e8ae2ca2a15c0e6eff67f5433"
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
"path": "harness-sync/reference.md",
|
|
@@ -195,27 +195,31 @@
|
|
|
195
195
|
},
|
|
196
196
|
{
|
|
197
197
|
"path": "harness-sync/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
198
|
+
"sha256": "e5b8234b4b934ebb199e500fe1ac2ce825f03ba7c113ca3b20c566e0d24834e5"
|
|
199
199
|
},
|
|
200
200
|
{
|
|
201
201
|
"path": "harness-test/checklist.md",
|
|
202
|
-
"sha256": "
|
|
202
|
+
"sha256": "e4f27ba243fae50b69588bd327d164c8e1e1596dc2c111574ec5f43f1605f4a2"
|
|
203
203
|
},
|
|
204
204
|
{
|
|
205
205
|
"path": "harness-test/pitfalls.md",
|
|
206
|
-
"sha256": "
|
|
206
|
+
"sha256": "074ee0b2fb710840b6a323c4d677f14ac89e5cc77c36466bc89f9772a8443842"
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
"path": "harness-test/reference.md",
|
|
210
210
|
"sha256": "add958d6c55037ed12b4c51ba5af77ef72eb89a5835249ea092d7f6d93031760"
|
|
211
211
|
},
|
|
212
|
+
{
|
|
213
|
+
"path": "harness-test/scripts/runtime-helpers.mjs",
|
|
214
|
+
"sha256": "349fcdfb48bfbe4b16fcd4c349e14cd25dd6be0414d959a633eac9a06e5773c2"
|
|
215
|
+
},
|
|
212
216
|
{
|
|
213
217
|
"path": "harness-test/SKILL.md",
|
|
214
|
-
"sha256": "
|
|
218
|
+
"sha256": "89133639c6814f4aeddb27b339509e7e878988b1b119971f46788d778a37d891"
|
|
215
219
|
},
|
|
216
220
|
{
|
|
217
221
|
"path": "protocols/archive-report-protocol.md",
|
|
218
|
-
"sha256": "
|
|
222
|
+
"sha256": "e529e9e231f700e26b392105d290543e1347cb57e1ee940059a96a67a0ae9666"
|
|
219
223
|
},
|
|
220
224
|
{
|
|
221
225
|
"path": "protocols/evidence-based-reporting-protocol.md",
|
|
@@ -223,7 +227,7 @@
|
|
|
223
227
|
},
|
|
224
228
|
{
|
|
225
229
|
"path": "protocols/ledger-protocol.md",
|
|
226
|
-
"sha256": "
|
|
230
|
+
"sha256": "1971153eac12051f434af08416593fa63fb03eb4b2348c059daa6a4855e4af99"
|
|
227
231
|
},
|
|
228
232
|
{
|
|
229
233
|
"path": "protocols/powershell-protocol.md",
|
|
@@ -231,15 +235,15 @@
|
|
|
231
235
|
},
|
|
232
236
|
{
|
|
233
237
|
"path": "protocols/report-pipeline-protocol.md",
|
|
234
|
-
"sha256": "
|
|
238
|
+
"sha256": "988a311db58b8ce88544d28919cf7858fe1fa225af70fb604ae715805ac76d9e"
|
|
235
239
|
},
|
|
236
240
|
{
|
|
237
241
|
"path": "protocols/sensitive-info-protocol.md",
|
|
238
|
-
"sha256": "
|
|
242
|
+
"sha256": "152f87e3218c2eee89362c0ca00fea624e6e37e15c56ca7e28ad2202ef76acec"
|
|
239
243
|
},
|
|
240
244
|
{
|
|
241
245
|
"path": "protocols/state-layout-protocol.md",
|
|
242
|
-
"sha256": "
|
|
246
|
+
"sha256": "73fcaa67efb89714fd62896a7ce6b4e2932ea24cfcbf5c4e1faea5a451c97076"
|
|
243
247
|
},
|
|
244
248
|
{
|
|
245
249
|
"path": "protocols/submit-protocol.md",
|
|
@@ -251,11 +255,15 @@
|
|
|
251
255
|
},
|
|
252
256
|
{
|
|
253
257
|
"path": "scripts/harness_archive.py",
|
|
254
|
-
"sha256": "
|
|
258
|
+
"sha256": "ada5f736cd692eab1531288fecdf57ce36ff760b55dd470c4e0553a2c73608c4"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"path": "scripts/harness_check_gate.py",
|
|
262
|
+
"sha256": "184a546ab76e7b9d21bd8e27802fee1f6304c392c65bca041ff7914b7fa7722a"
|
|
255
263
|
},
|
|
256
264
|
{
|
|
257
265
|
"path": "scripts/harness_deploy.py",
|
|
258
|
-
"sha256": "
|
|
266
|
+
"sha256": "54f1bcdae1326588db65eec20cc650c41365b14ceb55655430ddde8343b60798"
|
|
259
267
|
},
|
|
260
268
|
{
|
|
261
269
|
"path": "scripts/harness_events.py",
|
|
@@ -263,15 +271,23 @@
|
|
|
263
271
|
},
|
|
264
272
|
{
|
|
265
273
|
"path": "scripts/harness_ledger.py",
|
|
266
|
-
"sha256": "
|
|
274
|
+
"sha256": "e91f2f02f46ebfd0946a25085abb02965c60051097c5b24e05a70b5d3808648e"
|
|
267
275
|
},
|
|
268
276
|
{
|
|
269
277
|
"path": "scripts/harness_preflight.py",
|
|
270
|
-
"sha256": "
|
|
278
|
+
"sha256": "7ef079a96f0e76b7fd54eb06cdab915b0dd7f0e59d368494a72faf508d40ba2f"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"path": "scripts/harness_profile.py",
|
|
282
|
+
"sha256": "070bd61231285e09a83752ec5c5a7b9fdc4919f36ce497643131336c8a6d77f6"
|
|
271
283
|
},
|
|
272
284
|
{
|
|
273
285
|
"path": "scripts/harness_service.py",
|
|
274
|
-
"sha256": "
|
|
286
|
+
"sha256": "fc471f90efcf03e26fcb6cd7757af37a0a1eea1184e2b57046665547a77f240f"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"path": "scripts/harness_state.py",
|
|
290
|
+
"sha256": "b33efacf9aba471f9f542f738c653acf274ed3ce57c4326520036e6df0f18966"
|
|
275
291
|
}
|
|
276
292
|
]
|
|
277
293
|
}
|