@hunter-harness/workflow-harness 0.4.3 → 0.4.9
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/CONTEXT.md +1 -1
- package/harness/bundles/general/claude-code/README.md +36 -38
- package/harness/bundles/general/claude-code/contracts/workflow-policy.json +0 -50
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +4 -3
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/general/claude-code/harness-execute/SKILL.md +19 -17
- package/harness/bundles/general/{codex/harness-run/checklist.md → claude-code/harness-execute/coding-checklist.md} +9 -9
- package/harness/bundles/general/{codex/harness-run/reference.md → claude-code/harness-execute/coding-reference.md} +36 -36
- package/harness/bundles/general/{codex/harness-run → claude-code/harness-execute}/protocols.md +4 -4
- package/harness/bundles/general/{codebuddy/harness-test/checklist.md → claude-code/harness-execute/testing-checklist.md} +9 -10
- package/harness/bundles/general/claude-code/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -2
- package/harness/bundles/general/{codex/harness-test/pitfalls.md → claude-code/harness-execute/testing-pitfalls.md} +7 -7
- package/harness/bundles/general/claude-code/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-plan/checklist.md +1 -1
- package/harness/bundles/general/claude-code/harness-plan/reference.md +30 -3
- package/harness/bundles/general/claude-code/harness-pull/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-push/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +5 -5
- package/harness/bundles/general/claude-code/harness-review/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 +1 -1
- package/harness/bundles/general/claude-code/harness-submit/reference.md +1 -1
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +28 -1
- package/harness/bundles/general/claude-code/scripts/harness_change.py +74 -0
- package/harness/bundles/general/claude-code/scripts/harness_context.py +271 -10
- package/harness/bundles/general/claude-code/scripts/harness_deploy.py +2 -2
- package/harness/bundles/general/claude-code/scripts/harness_events.py +4 -1
- package/harness/bundles/general/claude-code/scripts/harness_gate.py +281 -77
- package/harness/bundles/general/claude-code/scripts/harness_profile.py +3 -3
- package/harness/bundles/general/claude-code/scripts/harness_review.py +120 -0
- package/harness/bundles/general/claude-code/scripts/harness_runtime.py +13 -0
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/CONTEXT.md +1 -1
- package/harness/bundles/general/codebuddy/README.md +36 -38
- package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +0 -50
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +4 -3
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/general/codebuddy/harness-execute/SKILL.md +19 -17
- package/harness/bundles/general/{claude-code/harness-run/checklist.md → codebuddy/harness-execute/coding-checklist.md} +9 -9
- package/harness/bundles/general/codebuddy/{harness-run/reference.md → harness-execute/coding-reference.md} +36 -36
- package/harness/bundles/general/codebuddy/{harness-run → harness-execute}/protocols.md +4 -4
- package/harness/bundles/general/{codex/harness-test/checklist.md → codebuddy/harness-execute/testing-checklist.md} +9 -10
- package/harness/bundles/general/codebuddy/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -2
- package/harness/bundles/general/{claude-code/harness-test/pitfalls.md → codebuddy/harness-execute/testing-pitfalls.md} +7 -7
- package/harness/bundles/general/codebuddy/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-plan/checklist.md +1 -1
- package/harness/bundles/general/codebuddy/harness-plan/reference.md +30 -3
- package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-push/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +5 -5
- package/harness/bundles/general/codebuddy/harness-review/checklist.md +1 -1
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-submit/checklist.md +1 -1
- package/harness/bundles/general/codebuddy/harness-submit/reference.md +1 -1
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +28 -1
- package/harness/bundles/general/codebuddy/scripts/harness_change.py +74 -0
- package/harness/bundles/general/codebuddy/scripts/harness_context.py +271 -10
- package/harness/bundles/general/codebuddy/scripts/harness_deploy.py +2 -2
- package/harness/bundles/general/codebuddy/scripts/harness_events.py +4 -1
- package/harness/bundles/general/codebuddy/scripts/harness_gate.py +281 -77
- package/harness/bundles/general/codebuddy/scripts/harness_profile.py +3 -3
- package/harness/bundles/general/codebuddy/scripts/harness_review.py +120 -0
- package/harness/bundles/general/codebuddy/scripts/harness_runtime.py +13 -0
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/CONTEXT.md +1 -1
- package/harness/bundles/general/codex/README.md +36 -38
- package/harness/bundles/general/codex/contracts/workflow-policy.json +0 -50
- package/harness/bundles/general/codex/harness-archive/SKILL.md +4 -3
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/general/codex/harness-execute/SKILL.md +19 -17
- package/harness/bundles/general/{cursor/harness-run/checklist.md → codex/harness-execute/coding-checklist.md} +9 -9
- package/harness/bundles/general/{cursor/harness-run/reference.md → codex/harness-execute/coding-reference.md} +36 -36
- package/harness/bundles/general/{claude-code/harness-run → codex/harness-execute}/protocols.md +4 -4
- package/harness/bundles/general/{cursor/harness-test/checklist.md → codex/harness-execute/testing-checklist.md} +9 -10
- package/harness/bundles/general/codex/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -2
- package/harness/bundles/general/{codebuddy/harness-test/pitfalls.md → codex/harness-execute/testing-pitfalls.md} +7 -7
- package/harness/bundles/general/codex/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-plan/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-plan/checklist.md +1 -1
- package/harness/bundles/general/codex/harness-plan/reference.md +30 -3
- package/harness/bundles/general/codex/harness-pull/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-push/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-review/SKILL.md +3 -3
- package/harness/bundles/general/codex/harness-review/checklist.md +1 -1
- package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-submit/checklist.md +1 -1
- package/harness/bundles/general/codex/harness-submit/reference.md +1 -1
- package/harness/bundles/general/codex/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/general/codex/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/general/codex/scripts/harness_archive.py +28 -1
- package/harness/bundles/general/codex/scripts/harness_change.py +74 -0
- package/harness/bundles/general/codex/scripts/harness_context.py +271 -10
- package/harness/bundles/general/codex/scripts/harness_deploy.py +2 -2
- package/harness/bundles/general/codex/scripts/harness_events.py +4 -1
- package/harness/bundles/general/codex/scripts/harness_gate.py +281 -77
- package/harness/bundles/general/codex/scripts/harness_profile.py +3 -3
- package/harness/bundles/general/codex/scripts/harness_review.py +120 -0
- package/harness/bundles/general/codex/scripts/harness_runtime.py +13 -0
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/CONTEXT.md +1 -1
- package/harness/bundles/general/cursor/README.md +36 -38
- package/harness/bundles/general/cursor/contracts/workflow-policy.json +0 -50
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +4 -3
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/general/cursor/harness-execute/SKILL.md +19 -17
- package/harness/bundles/general/{codebuddy/harness-run/checklist.md → cursor/harness-execute/coding-checklist.md} +9 -9
- package/harness/bundles/general/{claude-code/harness-run/reference.md → cursor/harness-execute/coding-reference.md} +36 -36
- package/harness/bundles/general/cursor/{harness-run → harness-execute}/protocols.md +4 -4
- package/harness/bundles/general/{claude-code/harness-test/checklist.md → cursor/harness-execute/testing-checklist.md} +9 -10
- package/harness/bundles/general/cursor/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +2 -2
- package/harness/bundles/general/cursor/{harness-test/pitfalls.md → harness-execute/testing-pitfalls.md} +7 -7
- package/harness/bundles/general/cursor/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-plan/checklist.md +1 -1
- package/harness/bundles/general/cursor/harness-plan/reference.md +30 -3
- package/harness/bundles/general/cursor/harness-pull/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-push/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-review/SKILL.md +3 -3
- package/harness/bundles/general/cursor/harness-review/checklist.md +1 -1
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-submit/checklist.md +1 -1
- package/harness/bundles/general/cursor/harness-submit/reference.md +1 -1
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/general/cursor/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/general/cursor/scripts/harness_archive.py +28 -1
- package/harness/bundles/general/cursor/scripts/harness_change.py +74 -0
- package/harness/bundles/general/cursor/scripts/harness_context.py +271 -10
- package/harness/bundles/general/cursor/scripts/harness_deploy.py +2 -2
- package/harness/bundles/general/cursor/scripts/harness_events.py +4 -1
- package/harness/bundles/general/cursor/scripts/harness_gate.py +281 -77
- package/harness/bundles/general/cursor/scripts/harness_profile.py +3 -3
- package/harness/bundles/general/cursor/scripts/harness_review.py +120 -0
- package/harness/bundles/general/cursor/scripts/harness_runtime.py +13 -0
- package/harness/bundles/general/pi/.harness-build.json +1 -1
- package/harness/bundles/general/pi/CONTEXT.md +1 -1
- package/harness/bundles/general/pi/README.md +36 -38
- package/harness/bundles/general/pi/contracts/workflow-policy.json +0 -50
- package/harness/bundles/general/pi/harness-archive/SKILL.md +4 -3
- package/harness/bundles/general/pi/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/general/pi/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/general/pi/harness-execute/SKILL.md +19 -17
- package/harness/bundles/general/pi/harness-execute/coding-checklist.md +279 -0
- package/harness/bundles/general/pi/harness-execute/coding-reference.md +886 -0
- package/harness/bundles/general/pi/harness-execute/protocols.md +141 -0
- package/harness/bundles/general/pi/harness-execute/testing-checklist.md +358 -0
- package/harness/bundles/general/pi/harness-execute/testing-pitfalls-java.md +14 -0
- package/harness/bundles/general/pi/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/general/pi/harness-execute/testing-reference.md +880 -0
- package/harness/bundles/general/pi/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/general/pi/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/general/pi/harness-plan/SKILL.md +2 -2
- package/harness/bundles/general/pi/harness-plan/checklist.md +1 -1
- package/harness/bundles/general/pi/harness-plan/reference.md +30 -3
- package/harness/bundles/general/pi/harness-pull/SKILL.md +1 -1
- package/harness/bundles/general/pi/harness-push/SKILL.md +1 -1
- package/harness/bundles/general/pi/harness-review/SKILL.md +3 -3
- package/harness/bundles/general/pi/harness-review/checklist.md +1 -1
- package/harness/bundles/general/pi/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/pi/harness-submit/checklist.md +1 -1
- package/harness/bundles/general/pi/harness-submit/reference.md +1 -1
- package/harness/bundles/general/pi/harness-sync/SKILL.md +2 -2
- package/harness/bundles/general/pi/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/general/pi/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/general/pi/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/general/pi/scripts/harness_archive.py +28 -1
- package/harness/bundles/general/pi/scripts/harness_change.py +74 -0
- package/harness/bundles/general/pi/scripts/harness_context.py +271 -10
- package/harness/bundles/general/pi/scripts/harness_deploy.py +2 -2
- package/harness/bundles/general/pi/scripts/harness_events.py +4 -1
- package/harness/bundles/general/pi/scripts/harness_gate.py +281 -77
- package/harness/bundles/general/pi/scripts/harness_profile.py +3 -3
- package/harness/bundles/general/pi/scripts/harness_review.py +120 -0
- package/harness/bundles/general/pi/scripts/harness_runtime.py +13 -0
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/CONTEXT.md +1 -1
- package/harness/bundles/java/claude-code/README.md +36 -38
- package/harness/bundles/java/claude-code/contracts/workflow-policy.json +0 -50
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +4 -3
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/java/claude-code/harness-execute/SKILL.md +51 -17
- package/harness/bundles/java/claude-code/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
- package/harness/bundles/java/claude-code/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
- package/harness/bundles/java/claude-code/harness-execute/protocols.md +141 -0
- package/harness/bundles/java/claude-code/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
- package/harness/bundles/java/claude-code/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +1 -1
- package/harness/bundles/java/claude-code/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/java/claude-code/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-package/checklist.md +7 -7
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-plan/checklist.md +1 -1
- package/harness/bundles/java/claude-code/harness-plan/reference.md +30 -3
- package/harness/bundles/java/claude-code/harness-pull/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-push/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +5 -5
- package/harness/bundles/java/claude-code/harness-review/checklist.md +1 -1
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-submit/checklist.md +1 -1
- package/harness/bundles/java/claude-code/harness-submit/reference.md +1 -1
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +28 -1
- package/harness/bundles/java/claude-code/scripts/harness_change.py +74 -0
- package/harness/bundles/java/claude-code/scripts/harness_context.py +271 -10
- package/harness/bundles/java/claude-code/scripts/harness_deploy.py +2 -2
- package/harness/bundles/java/claude-code/scripts/harness_events.py +4 -1
- package/harness/bundles/java/claude-code/scripts/harness_gate.py +281 -77
- package/harness/bundles/java/claude-code/scripts/harness_profile.py +3 -3
- package/harness/bundles/java/claude-code/scripts/harness_review.py +120 -0
- package/harness/bundles/java/claude-code/scripts/harness_runtime.py +13 -0
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/CONTEXT.md +1 -1
- package/harness/bundles/java/codebuddy/README.md +36 -38
- package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +0 -50
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +4 -3
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/java/codebuddy/harness-execute/SKILL.md +51 -17
- package/harness/bundles/java/codebuddy/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
- package/harness/bundles/java/codebuddy/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
- package/harness/bundles/java/codebuddy/harness-execute/protocols.md +141 -0
- package/harness/bundles/java/codebuddy/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
- package/harness/bundles/java/codebuddy/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +1 -1
- package/harness/bundles/java/codebuddy/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/java/codebuddy/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-package/checklist.md +7 -7
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-plan/checklist.md +1 -1
- package/harness/bundles/java/codebuddy/harness-plan/reference.md +30 -3
- package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-push/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +5 -5
- package/harness/bundles/java/codebuddy/harness-review/checklist.md +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-submit/checklist.md +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/reference.md +1 -1
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +28 -1
- package/harness/bundles/java/codebuddy/scripts/harness_change.py +74 -0
- package/harness/bundles/java/codebuddy/scripts/harness_context.py +271 -10
- package/harness/bundles/java/codebuddy/scripts/harness_deploy.py +2 -2
- package/harness/bundles/java/codebuddy/scripts/harness_events.py +4 -1
- package/harness/bundles/java/codebuddy/scripts/harness_gate.py +281 -77
- package/harness/bundles/java/codebuddy/scripts/harness_profile.py +3 -3
- package/harness/bundles/java/codebuddy/scripts/harness_review.py +120 -0
- package/harness/bundles/java/codebuddy/scripts/harness_runtime.py +13 -0
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/CONTEXT.md +1 -1
- package/harness/bundles/java/codex/README.md +36 -38
- package/harness/bundles/java/codex/contracts/workflow-policy.json +0 -50
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/SKILL.md +4 -3
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/java/codex/harness-execute/SKILL.md +51 -17
- package/harness/bundles/java/codex/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
- package/harness/bundles/java/codex/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
- package/harness/bundles/java/codex/harness-execute/protocols.md +141 -0
- package/harness/bundles/java/codex/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
- package/harness/bundles/java/codex/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +1 -1
- package/harness/bundles/java/codex/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/java/codex/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-package/checklist.md +7 -7
- package/harness/bundles/java/codex/harness-plan/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-plan/checklist.md +1 -1
- package/harness/bundles/java/codex/harness-plan/reference.md +30 -3
- package/harness/bundles/java/codex/harness-pull/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-push/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-review/SKILL.md +3 -3
- package/harness/bundles/java/codex/harness-review/checklist.md +1 -1
- package/harness/bundles/java/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-submit/checklist.md +1 -1
- package/harness/bundles/java/codex/harness-submit/reference.md +1 -1
- package/harness/bundles/java/codex/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/java/codex/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/java/codex/scripts/harness_archive.py +28 -1
- package/harness/bundles/java/codex/scripts/harness_change.py +74 -0
- package/harness/bundles/java/codex/scripts/harness_context.py +271 -10
- package/harness/bundles/java/codex/scripts/harness_deploy.py +2 -2
- package/harness/bundles/java/codex/scripts/harness_events.py +4 -1
- package/harness/bundles/java/codex/scripts/harness_gate.py +281 -77
- package/harness/bundles/java/codex/scripts/harness_profile.py +3 -3
- package/harness/bundles/java/codex/scripts/harness_review.py +120 -0
- package/harness/bundles/java/codex/scripts/harness_runtime.py +13 -0
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/CONTEXT.md +1 -1
- package/harness/bundles/java/cursor/README.md +36 -38
- package/harness/bundles/java/cursor/contracts/workflow-policy.json +0 -50
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +4 -3
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/java/cursor/harness-execute/SKILL.md +51 -17
- package/harness/bundles/java/cursor/{harness-run/checklist.md → harness-execute/coding-checklist.md} +6 -6
- package/harness/bundles/java/cursor/{harness-run/reference.md → harness-execute/coding-reference.md} +37 -37
- package/harness/bundles/java/cursor/harness-execute/protocols.md +141 -0
- package/harness/bundles/java/cursor/{harness-test/checklist.md → harness-execute/testing-checklist.md} +9 -9
- package/harness/bundles/java/cursor/{harness-test/pitfalls-java.md → harness-execute/testing-pitfalls-java.md} +1 -1
- package/harness/bundles/java/cursor/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/java/cursor/{harness-test/reference.md → harness-execute/testing-reference.md} +13 -13
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-package/checklist.md +7 -7
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-plan/checklist.md +1 -1
- package/harness/bundles/java/cursor/harness-plan/reference.md +30 -3
- package/harness/bundles/java/cursor/harness-pull/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-push/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-review/SKILL.md +3 -3
- package/harness/bundles/java/cursor/harness-review/checklist.md +1 -1
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-submit/checklist.md +1 -1
- package/harness/bundles/java/cursor/harness-submit/reference.md +1 -1
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/java/cursor/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/java/cursor/scripts/harness_archive.py +28 -1
- package/harness/bundles/java/cursor/scripts/harness_change.py +74 -0
- package/harness/bundles/java/cursor/scripts/harness_context.py +271 -10
- package/harness/bundles/java/cursor/scripts/harness_deploy.py +2 -2
- package/harness/bundles/java/cursor/scripts/harness_events.py +4 -1
- package/harness/bundles/java/cursor/scripts/harness_gate.py +281 -77
- package/harness/bundles/java/cursor/scripts/harness_profile.py +3 -3
- package/harness/bundles/java/cursor/scripts/harness_review.py +120 -0
- package/harness/bundles/java/cursor/scripts/harness_runtime.py +13 -0
- package/harness/bundles/java/pi/.harness-build.json +1 -1
- package/harness/bundles/java/pi/CONTEXT.md +1 -1
- package/harness/bundles/java/pi/README.md +36 -38
- package/harness/bundles/java/pi/contracts/workflow-policy.json +0 -50
- package/harness/bundles/java/pi/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-archive/SKILL.md +4 -3
- package/harness/bundles/java/pi/harness-codebase-map/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-codebase-map/templates/TESTING.md +1 -1
- package/harness/bundles/java/pi/harness-execute/SKILL.md +51 -17
- package/harness/bundles/java/pi/harness-execute/coding-checklist.md +252 -0
- package/harness/bundles/java/pi/harness-execute/coding-reference.md +820 -0
- package/harness/bundles/java/pi/harness-execute/protocols.md +141 -0
- package/harness/bundles/java/pi/harness-execute/testing-checklist.md +320 -0
- package/harness/bundles/java/pi/harness-execute/testing-pitfalls-java.md +16 -0
- package/harness/bundles/java/pi/harness-execute/testing-pitfalls.md +307 -0
- package/harness/bundles/java/pi/harness-execute/testing-reference.md +792 -0
- package/harness/bundles/java/pi/harness-knowledge-ingest/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-knowledge-query/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-package/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-package/checklist.md +7 -7
- package/harness/bundles/java/pi/harness-plan/SKILL.md +2 -2
- package/harness/bundles/java/pi/harness-plan/checklist.md +1 -1
- package/harness/bundles/java/pi/harness-plan/reference.md +30 -3
- package/harness/bundles/java/pi/harness-pull/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-push/SKILL.md +1 -1
- package/harness/bundles/java/pi/harness-review/SKILL.md +3 -3
- package/harness/bundles/java/pi/harness-review/checklist.md +1 -1
- package/harness/bundles/java/pi/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/pi/harness-submit/checklist.md +1 -1
- package/harness/bundles/java/pi/harness-submit/reference.md +1 -1
- package/harness/bundles/java/pi/harness-sync/SKILL.md +2 -2
- package/harness/bundles/java/pi/protocols/evidence-based-reporting-protocol.md +1 -1
- package/harness/bundles/java/pi/protocols/ledger-protocol.md +8 -8
- package/harness/bundles/java/pi/protocols/sensitive-info-protocol.md +2 -2
- package/harness/bundles/java/pi/scripts/harness_archive.py +28 -1
- package/harness/bundles/java/pi/scripts/harness_change.py +74 -0
- package/harness/bundles/java/pi/scripts/harness_context.py +271 -10
- package/harness/bundles/java/pi/scripts/harness_deploy.py +2 -2
- package/harness/bundles/java/pi/scripts/harness_events.py +4 -1
- package/harness/bundles/java/pi/scripts/harness_gate.py +281 -77
- package/harness/bundles/java/pi/scripts/harness_profile.py +3 -3
- package/harness/bundles/java/pi/scripts/harness_review.py +120 -0
- package/harness/bundles/java/pi/scripts/harness_runtime.py +13 -0
- package/harness/manifests/general/claude-code.json +65 -73
- package/harness/manifests/general/codebuddy.json +65 -73
- package/harness/manifests/general/codex.json +65 -73
- package/harness/manifests/general/cursor.json +65 -73
- package/harness/manifests/general/pi.json +65 -73
- package/harness/manifests/java/claude-code.json +68 -76
- package/harness/manifests/java/codebuddy.json +68 -76
- package/harness/manifests/java/codex.json +68 -76
- package/harness/manifests/java/cursor.json +68 -76
- package/harness/manifests/java/pi.json +68 -76
- package/hunter-workflow-family.json +2 -2
- package/package.json +15 -15
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +0 -207
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +0 -270
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +0 -188
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +0 -250
- package/harness/bundles/general/codex/harness-run/SKILL.md +0 -188
- package/harness/bundles/general/codex/harness-test/SKILL.md +0 -250
- package/harness/bundles/general/cursor/harness-run/SKILL.md +0 -188
- package/harness/bundles/general/cursor/harness-test/SKILL.md +0 -250
- package/harness/bundles/general/pi/harness-run/SKILL.md +0 -188
- package/harness/bundles/general/pi/harness-run/checklist.md +0 -279
- package/harness/bundles/general/pi/harness-run/protocols.md +0 -141
- package/harness/bundles/general/pi/harness-run/reference.md +0 -886
- package/harness/bundles/general/pi/harness-test/SKILL.md +0 -250
- package/harness/bundles/general/pi/harness-test/checklist.md +0 -359
- package/harness/bundles/general/pi/harness-test/pitfalls-java.md +0 -14
- package/harness/bundles/general/pi/harness-test/pitfalls.md +0 -307
- package/harness/bundles/general/pi/harness-test/reference.md +0 -880
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +0 -225
- package/harness/bundles/java/claude-code/harness-run/protocols.md +0 -141
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +0 -284
- package/harness/bundles/java/claude-code/harness-test/pitfalls.md +0 -307
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +0 -206
- package/harness/bundles/java/codebuddy/harness-run/protocols.md +0 -141
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +0 -264
- package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +0 -307
- package/harness/bundles/java/codex/harness-run/SKILL.md +0 -206
- package/harness/bundles/java/codex/harness-run/protocols.md +0 -141
- package/harness/bundles/java/codex/harness-test/SKILL.md +0 -264
- package/harness/bundles/java/codex/harness-test/pitfalls.md +0 -307
- package/harness/bundles/java/cursor/harness-run/SKILL.md +0 -206
- package/harness/bundles/java/cursor/harness-run/protocols.md +0 -141
- package/harness/bundles/java/cursor/harness-test/SKILL.md +0 -264
- package/harness/bundles/java/cursor/harness-test/pitfalls.md +0 -307
- package/harness/bundles/java/pi/harness-run/SKILL.md +0 -206
- package/harness/bundles/java/pi/harness-run/checklist.md +0 -252
- package/harness/bundles/java/pi/harness-run/protocols.md +0 -141
- package/harness/bundles/java/pi/harness-run/reference.md +0 -820
- package/harness/bundles/java/pi/harness-test/SKILL.md +0 -264
- package/harness/bundles/java/pi/harness-test/checklist.md +0 -320
- package/harness/bundles/java/pi/harness-test/pitfalls-java.md +0 -16
- package/harness/bundles/java/pi/harness-test/pitfalls.md +0 -307
- package/harness/bundles/java/pi/harness-test/reference.md +0 -792
- /package/harness/bundles/general/claude-code/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/general/codebuddy/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/general/codex/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/general/cursor/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/general/pi/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/java/claude-code/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/java/codebuddy/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/java/codex/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/java/cursor/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
- /package/harness/bundles/java/pi/{harness-test → harness-execute}/scripts/runtime-helpers.mjs +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-
|
|
2
|
+
description: harness-execute 的编译失败策略表、TDD循环详细步骤和编码约束。仅在编码执行遇到编译问题或需要参考详细规则时读取。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# harness-
|
|
5
|
+
# harness-execute 参考 — 详细规则
|
|
6
6
|
|
|
7
7
|
## 为什么走变更簇 TDD 而不是逐任务 TDD
|
|
8
8
|
|
|
@@ -30,7 +30,7 @@ description: harness-run 的编译失败策略表、TDD循环详细步骤和编
|
|
|
30
30
|
|
|
31
31
|
## Worktree 创建与切换详细规则
|
|
32
32
|
|
|
33
|
-
`harness-
|
|
33
|
+
`harness-execute` 必须把 `worktree.json` 当作唯一决策源。
|
|
34
34
|
|
|
35
35
|
### 状态机
|
|
36
36
|
|
|
@@ -119,7 +119,7 @@ requested=true + path missing
|
|
|
119
119
|
4. 读取 .harness/changes/<change-name>/plans/<change-name>-test-scenarios.md
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
**禁止 /harness-
|
|
122
|
+
**禁止 /harness-execute 默认读取 `docs/superpowers/plans/*.md`** 作为任务来源。旧 `docs/superpowers/` 草稿最多作为人工线索,不作为执行输入。
|
|
123
123
|
|
|
124
124
|
### 步骤 0.1:执行模式(无询问)
|
|
125
125
|
|
|
@@ -182,7 +182,7 @@ powershell.exe -Command "<测试命令> <模块定位参数>"
|
|
|
182
182
|
从场景表选取对应当前变更簇的测试用例:
|
|
183
183
|
|
|
184
184
|
- **单元测试**(优先):按技术栈测试框架(如 Java 的 JUnit 5 + Mockito + AssertJ),命名 `{方法名}_{场景}_{预期结果}()`,用断言库(如 Java 的 AssertJ `assertThat`)
|
|
185
|
-
- **接口测试**(必要时代码逻辑已覆盖即可,实际 HTTP 调用留给 `harness-
|
|
185
|
+
- **接口测试**(必要时代码逻辑已覆盖即可,实际 HTTP 调用留给 `harness-execute`)
|
|
186
186
|
- **多个测试类合并到一次构建/测试命令执行**(按技术栈模块/用例定位参数,如 Java 的 `mvn test -pl <module> -Dtest=TestA,TestB,TestC -o`)
|
|
187
187
|
|
|
188
188
|
### RED 有效性判定(⚠️ 必须逐项确认)
|
|
@@ -245,7 +245,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
|
|
|
245
245
|
| 注释 | 构建验证 | 不影响运行时行为 |
|
|
246
246
|
| 代码整理(import 清理)| 构建验证 | 不影响运行时行为 |
|
|
247
247
|
| 格式化 | 构建验证 | 不影响运行时行为 |
|
|
248
|
-
| 数据库迁移脚本 | 静态审查 + harness-
|
|
248
|
+
| 数据库迁移脚本 | 静态审查 + harness-execute DB 验证 | 不做 TDD,生成审查清单 |
|
|
249
249
|
| 配置模板 | 静态审查 | 部署时生效 |
|
|
250
250
|
| 文档文件 | 静态审查 | 不涉及代码 |
|
|
251
251
|
|
|
@@ -283,7 +283,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
|
|
|
283
283
|
| 是否可通过静态 mock(如 Java 的 mockStatic)构造? | 是/否 |
|
|
284
284
|
| 是否可写轻量集成测试? | 是/否 |
|
|
285
285
|
| 跳过自动化测试的具体阻塞点 | ... |
|
|
286
|
-
| 后续必须由哪个阶段验证 | harness-
|
|
286
|
+
| 后续必须由哪个阶段验证 | harness-execute / 手工接口 / 部署验证 |
|
|
287
287
|
|
|
288
288
|
如果只是"配置麻烦"或"mock 复杂",不得直接跳过。对数据契约字段(DTO)、分页返回、权限过滤、组织过滤等用户可见行为,必须优先写公共行为测试。
|
|
289
289
|
|
|
@@ -304,9 +304,9 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
|
|
|
304
304
|
5. 输出必须明确写成:
|
|
305
305
|
- "🟡 静态逻辑验证通过"
|
|
306
306
|
- "未执行真实单元测试"
|
|
307
|
-
- "待测试基础设施补齐后运行 harness-
|
|
307
|
+
- "待测试基础设施补齐后运行 harness-execute"
|
|
308
308
|
6. **禁止写成**:"测试全部通过"、"测试通过 N/N"、"覆盖率 100%"等含暗示真实测试已运行的表述
|
|
309
|
-
7. 提示用户在测试基础设施就绪后补充运行 `harness-
|
|
309
|
+
7. 提示用户在测试基础设施就绪后补充运行 `harness-execute`
|
|
310
310
|
|
|
311
311
|
## GREEN:最简实现
|
|
312
312
|
|
|
@@ -327,7 +327,7 @@ RED 不是"测试失败"即可通过,必须确认失败原因与目标 bug/需
|
|
|
327
327
|
|
|
328
328
|
## GREEN 后反模式自检(内置清单)
|
|
329
329
|
|
|
330
|
-
> 此步骤是 `/harness-
|
|
330
|
+
> 此步骤是 `/harness-execute` 的内置自检,不依赖 Superpowers `test-driven-development`,也不存在外部 skill 调用成功后的跳过分支。
|
|
331
331
|
|
|
332
332
|
GREEN 阶段完成后,对照以下反模式清单自检:
|
|
333
333
|
|
|
@@ -358,7 +358,7 @@ GREEN 阶段完成后,对照以下反模式清单自检:
|
|
|
358
358
|
|
|
359
359
|
## 批量构建验证策略
|
|
360
360
|
|
|
361
|
-
harness-
|
|
361
|
+
harness-execute 必须减少构建/测试启动次数。
|
|
362
362
|
|
|
363
363
|
**默认策略**:
|
|
364
364
|
1. 每个变更簇最多执行一次 RED 构建/测试、一次 GREEN 构建/测试
|
|
@@ -391,7 +391,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
|
|
|
391
391
|
|
|
392
392
|
## 预存变更隔离
|
|
393
393
|
|
|
394
|
-
如果 harness-
|
|
394
|
+
如果 harness-execute 开始时检测到已有未提交变更,并且用户选择保留,必须创建 baseline。
|
|
395
395
|
|
|
396
396
|
### baseline 文件
|
|
397
397
|
|
|
@@ -485,7 +485,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
|
|
|
485
485
|
|
|
486
486
|
## 步骤 2:构建验证(默认轻量,按需全量 test)
|
|
487
487
|
|
|
488
|
-
> **轻量验证职责**:`/harness-
|
|
488
|
+
> **轻量验证职责**:`/harness-execute` 默认只做开发反馈,不默认跑全量测试命令。是否跑全量 test 按下方条件判断。
|
|
489
489
|
|
|
490
490
|
### 2a. 构建验证(始终执行)
|
|
491
491
|
|
|
@@ -496,14 +496,14 @@ powershell.exe -Command "<构建命令> <模块定位参数>"
|
|
|
496
496
|
|
|
497
497
|
### 2b. 全量测试(仅当满足触发条件时执行)
|
|
498
498
|
|
|
499
|
-
默认**跳过**全量测试命令,把完整单元测试留给 `/harness-
|
|
499
|
+
默认**跳过**全量测试命令,把完整单元测试留给 `/harness-execute`。仅当满足以下任一条件时才在本阶段执行测试命令(按技术栈,如 Java 的 `mvn test -pl <module> -o`):
|
|
500
500
|
|
|
501
501
|
- 修改了公共模块(被多模块依赖的 common/utils 等)
|
|
502
502
|
- 修改了数据访问层 / 数据库迁移 / 查询配置
|
|
503
503
|
- 修改了权限 / 认证 / 组织过滤逻辑
|
|
504
504
|
- 修改了接口层 / 数据契约(VO/DTO)
|
|
505
505
|
- 用户要求 `full-run-validation`
|
|
506
|
-
- 用户不打算继续运行 `/harness-
|
|
506
|
+
- 用户不打算继续运行 `/harness-execute`(run 需自证 P0 场景)
|
|
507
507
|
|
|
508
508
|
```powershell
|
|
509
509
|
powershell.exe -Command "<测试命令> <模块定位参数>"
|
|
@@ -523,7 +523,7 @@ powershell.exe -Command "<测试命令> <模块定位参数>"
|
|
|
523
523
|
步骤 2 完成后**必须**通过 `harness_ledger.py record` 写入/更新 ledger(**禁止** Write/Edit `verification-ledger.json`):
|
|
524
524
|
|
|
525
525
|
- `compile` 项:始终写入(status / command / scope / evidence / 时间戳 / durationMs)
|
|
526
|
-
- `unitTest` 项:仅当 2b 执行了全量测试命令时写入(testsRun / failures / errors / skipped / evidence);未执行时标记 `{"status": "NOT_RUN_BY_RUN", "note": "轻量验证,全量单元测试由 harness-
|
|
526
|
+
- `unitTest` 项:仅当 2b 执行了全量测试命令时写入(testsRun / failures / errors / skipped / evidence);未执行时标记 `{"status": "NOT_RUN_BY_RUN", "note": "轻量验证,全量单元测试由 harness-execute 执行"}`
|
|
527
527
|
- 顶层写入 `diffHash` / `currentHead` / `baseCommit` / `module` / `profile`
|
|
528
528
|
- `baseCommit`:merge-base 或计划起点(worktree 分支从主分支分出点,由 harness-plan 写入、run 读取复用;缺失时用 `git merge-base HEAD <默认分支>` 兜底)
|
|
529
529
|
- `currentHead`:`git rev-parse HEAD`(步骤 2c 在 Step 5 checkpoint commit 之前执行,此时 HEAD==baseCommit;commit 后 HEAD 前移到 checkpoint commit,由 ledger-protocol reuse 规则 #2「currentHead 可前移」容忍,**不需为它改时序**)
|
|
@@ -536,7 +536,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
536
536
|
|
|
537
537
|
> `content-changeset-2` 同时读取 tracked diff、标准 untracked 文件和 manifest 的精确测试路径。manifest 缺失时保持普通行为;manifest 存在但路径越界、内容 hash 漂移或结构非法时命令失败,ledger 不可复用。checkpoint commit 不改变各路径的工作树内容,因此提交前后 hash 保持一致。
|
|
538
538
|
|
|
539
|
-
> 这样 harness-
|
|
539
|
+
> 这样 harness-execute 的 Phase 1 可读取 ledger 判断是否复用 run 的 unitTest(diffHash commit-invariant + reuse 规则 #2 允许 HEAD 前移 → run 的 checkpoint commit 不破坏复用),submit 也可复用 compile 结果。详见 `../protocols/ledger-protocol.md`。
|
|
540
540
|
>
|
|
541
541
|
> **Ledger v3**:`record` 自动解析并强制顶层身份(`schemaVersion=3/repositoryId/changeName/baseCommit/currentHead/diffHash/ownershipHash`),缺字段非零退出、不写账本;已有 v1/v2 ledger 在写前透明迁移,`migrationHistory` 回执记录原/目标 schema 与迁移前后 evidence identity。无法迁移时返回 `LEDGER_MIGRATION_REQUIRED` 和确定性 `rerecordCommand`,不得半升级。v2 契约下 `--metrics-json` 必须通过 typed schema(unit=`total/passed/failed`,apiContract=`scenariosTotal/passed/failed`,browserE2E=`total/passed/failed`,dbCompatibility=`applicability(+reason)`)。详见 `../protocols/ledger-protocol.md` 第十节。
|
|
542
542
|
|
|
@@ -554,7 +554,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
554
554
|
### 静态验证不等于测试覆盖(⚠️ 关键规则)
|
|
555
555
|
|
|
556
556
|
1. 🟡 静态检查 **不得计入"已测试通过"**
|
|
557
|
-
2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-
|
|
557
|
+
2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-execute 最终结果必须是:
|
|
558
558
|
`🟡WARN:编码和编译完成,但存在 P0 场景未真实验证`
|
|
559
559
|
3. 只有所有 run-owned P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
|
|
560
560
|
`✅OK成功`
|
|
@@ -564,7 +564,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
564
564
|
自动化测试通过: 5
|
|
565
565
|
静态检查未真实验证: 17
|
|
566
566
|
未验证: 0
|
|
567
|
-
harness-
|
|
567
|
+
harness-execute 结果: 🟡WARN,必须进入 harness-execute 后才能 submit
|
|
568
568
|
```
|
|
569
569
|
6. **禁止用测试用例数冒充场景数**:计数对象是 `test-scenarios.md` 的场景编号(UT-001/N、API-001/N、COM-001/N、INT-001/N),不是测试框架的测试方法数(如 vitest "178 tests"、junit "Tests run: 178")。场景总数 = test-scenarios.md 的场景数。
|
|
570
570
|
7. **四类计数须自洽**:run-owned 的 🟡/❌ 计入未验证;`ownerPhase=test` 单列为 ⏳“按计划移交”,不得冒充 ✅,也不得反向污染 run 的结果。
|
|
@@ -574,9 +574,9 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
574
574
|
> ```
|
|
575
575
|
> ### 场景覆盖检查
|
|
576
576
|
> - ✅ UT-001~005: getEnabledIndicators 正常/异常/边界场景已测试通过
|
|
577
|
-
> - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-
|
|
577
|
+
> - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-execute
|
|
578
578
|
> - ❌ UT-011~015: getIndicatorByCode 场景未覆盖,需补充测试用例
|
|
579
|
-
> - ⏳ API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-
|
|
579
|
+
> - ⏳ API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-execute
|
|
580
580
|
> - ✅ COM-001~005: 数据库迁移脚本覆盖
|
|
581
581
|
> - ⏳ INT-001~004: `ownerPhase=test`,按计划移交测试阶段验证
|
|
582
582
|
> ```
|
|
@@ -587,12 +587,12 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
587
587
|
> 静态检查未真实验证: 17
|
|
588
588
|
> 未验证: 0
|
|
589
589
|
> 按计划移交测试阶段: 4
|
|
590
|
-
> harness-
|
|
590
|
+
> harness-execute 结果: 🟡WARN,必须进入 harness-execute 后才能 submit
|
|
591
591
|
> ```
|
|
592
592
|
|
|
593
593
|
## 步骤 3.5:权限/组织过滤类变更 — 安全矩阵
|
|
594
594
|
|
|
595
|
-
> 凡是修改了以下逻辑,必须强制生成安全矩阵。如果任一权限边界的预期不明确,不允许标记 harness-
|
|
595
|
+
> 凡是修改了以下逻辑,必须强制生成安全矩阵。如果任一权限边界的预期不明确,不允许标记 harness-execute 为 ✅OK。
|
|
596
596
|
|
|
597
597
|
### 触发条件
|
|
598
598
|
|
|
@@ -624,7 +624,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
624
624
|
|
|
625
625
|
### 判定规则
|
|
626
626
|
|
|
627
|
-
- 如果任一权限边界的预期不明确(如"非管理员+token空+指定组织"场景未明确是拒绝还是允许),则必须标记为 ❌未验证,且不允许标记 harness-
|
|
627
|
+
- 如果任一权限边界的预期不明确(如"非管理员+token空+指定组织"场景未明确是拒绝还是允许),则必须标记为 ❌未验证,且不允许标记 harness-execute 为 ✅OK
|
|
628
628
|
- 每个场景的覆盖状态必须真实标注:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证
|
|
629
629
|
- 安全矩阵必须写入执行日志
|
|
630
630
|
|
|
@@ -714,7 +714,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
714
714
|
|
|
715
715
|
## 步骤 5:计划状态持久化
|
|
716
716
|
|
|
717
|
-
如果 `.harness/changes/<change>/plans/*.md` 是任务来源,则 harness-
|
|
717
|
+
如果 `.harness/changes/<change>/plans/*.md` 是任务来源,则 harness-execute 完成任务后必须持久化任务状态。
|
|
718
718
|
|
|
719
719
|
### 持久化方式
|
|
720
720
|
|
|
@@ -729,12 +729,12 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
729
729
|
| 任务 | 状态 | 测试场景 | 待验证 |
|
|
730
730
|
|------|------|----------|--------|
|
|
731
731
|
| Task 1 | ✅ DONE_AUTOMATED_TESTED | UT-001~005 | - |
|
|
732
|
-
| Task 2 | 🟡 DONE_STATIC_ONLY | UT-006~010 | harness-
|
|
733
|
-
| Task 3 | 🟡 DONE_NEEDS_INTERFACE_TEST | API-001~003 | harness-
|
|
732
|
+
| Task 2 | 🟡 DONE_STATIC_ONLY | UT-006~010 | harness-execute |
|
|
733
|
+
| Task 3 | 🟡 DONE_NEEDS_INTERFACE_TEST | API-001~003 | harness-execute |
|
|
734
734
|
|
|
735
735
|
## 待验证场景汇总
|
|
736
|
-
- UT-006~010: 静态验证通过,需 harness-
|
|
737
|
-
- API-001~003: 接口逻辑已覆盖,需 harness-
|
|
736
|
+
- UT-006~010: 静态验证通过,需 harness-execute 接口验证
|
|
737
|
+
- API-001~003: 接口逻辑已覆盖,需 harness-execute 真实 HTTP 验证
|
|
738
738
|
```
|
|
739
739
|
|
|
740
740
|
### 状态定义
|
|
@@ -748,7 +748,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
748
748
|
|
|
749
749
|
- 不允许只在对话里说"任务完成"但不写入任何持久化文件
|
|
750
750
|
- 不允许修改 finalized plan Markdown 来记录状态;恢复信息只写 `evidence/run-task-status.md`
|
|
751
|
-
- 后续 harness-
|
|
751
|
+
- 后续 harness-execute 和 harness-review 必须能从持久化状态识别哪些场景仍待验证
|
|
752
752
|
|
|
753
753
|
## 输出示例
|
|
754
754
|
|
|
@@ -770,7 +770,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
770
770
|
- 静态检查未真实验证: M
|
|
771
771
|
- 未验证: P
|
|
772
772
|
- 按计划移交测试阶段: Q
|
|
773
|
-
- harness-
|
|
773
|
+
- harness-execute 结果: ✅OK成功 / 🟡WARN(只由 run-owned 工作决定)
|
|
774
774
|
|
|
775
775
|
### 关门检查结果
|
|
776
776
|
- git status --porcelain: ✅/❌
|
|
@@ -788,10 +788,10 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
788
788
|
- 状态已写入: `.harness/changes/<change-name>/evidence/run-task-status.md`
|
|
789
789
|
|
|
790
790
|
### 下一步
|
|
791
|
-
> ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-
|
|
791
|
+
> ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-execute。
|
|
792
792
|
|
|
793
|
-
运行 `/harness-
|
|
794
|
-
在 harness-
|
|
793
|
+
运行 `/harness-execute` 验证剩余 P0 场景。
|
|
794
|
+
在 harness-execute 通过前,不建议也不应进入 `/harness-submit`。
|
|
795
795
|
```
|
|
796
796
|
|
|
797
797
|
## CLI 速查(gate / ledger)
|
|
@@ -857,7 +857,7 @@ C9 场景覆盖按 `ownerPhase` **分阶段判定**:run 关门只要求 `owner
|
|
|
857
857
|
|
|
858
858
|
## 执行日志记录
|
|
859
859
|
|
|
860
|
-
`/harness-
|
|
860
|
+
`/harness-execute` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。步骤 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
|
|
861
861
|
|
|
862
862
|
关键 `note` / `decision` 须覆盖:测试基础设施探测(CHECKING→结论)、预存变更、run-tdd-protocol RED 类型、变更簇 RED/GREEN、批量构建 exit code、关门检查 10 项、计划状态持久化路径。
|
|
863
863
|
|
|
@@ -876,7 +876,7 @@ C9 场景覆盖按 `ownerPhase` **分阶段判定**:run 关门只要求 `owner
|
|
|
876
876
|
|
|
877
877
|
## 数据访问层复杂查询真实验证要求
|
|
878
878
|
|
|
879
|
-
数据访问层复杂查询(Java 的 `@Select`/JOIN/DISTINCT/IPage 分页/SQL/XML)变更在 run 阶段只能标记 🟡DONE_STATIC_ONLY,必须交给 harness-
|
|
879
|
+
数据访问层复杂查询(Java 的 `@Select`/JOIN/DISTINCT/IPage 分页/SQL/XML)变更在 run 阶段只能标记 🟡DONE_STATIC_ONLY,必须交给 harness-execute 真实 DB/API 验证:
|
|
880
880
|
|
|
881
881
|
- SQL 可执行;
|
|
882
882
|
- total 正确;
|
package/harness/bundles/general/{claude-code/harness-run → codex/harness-execute}/protocols.md
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-
|
|
2
|
+
description: harness-execute 的原生执行协议。内化 TDD 与变更簇审查能力,但不运行时依赖 Superpowers。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# harness-
|
|
5
|
+
# harness-execute 原生执行协议
|
|
6
6
|
|
|
7
|
-
本文件定义 `/harness-
|
|
7
|
+
本文件定义 `/harness-execute` 的内置执行协议。它吸收 test-driven-development 与 subagent-driven-development 的有效做法,但正式流程不调用 Superpowers,也不把外部 skill 是否存在作为执行条件。
|
|
8
8
|
|
|
9
9
|
## 协议一:run-tdd-protocol
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ description: harness-run 的原生执行协议。内化 TDD 与变更簇审查
|
|
|
15
15
|
| RED 类型 | 何时使用 | 证据要求 |
|
|
16
16
|
|----------|----------|----------|
|
|
17
17
|
| 真实 RED | 测试基础设施可用,能写测试并运行失败 | 测试编译通过,失败断言指向目标行为 |
|
|
18
|
-
| 静态 RED | 测试基础设施不可用或目标层无法真实验证 | 记录降级原因、静态验证场景、待 harness-
|
|
18
|
+
| 静态 RED | 测试基础设施不可用或目标层无法真实验证 | 记录降级原因、静态验证场景、待 harness-execute 验证场景 |
|
|
19
19
|
| 复用 RED | 计划和测试场景已明确失败场景,且本轮只执行同一场景的实现 | 引用 test-scenarios 编号与前序证据,仍需在 run 日志登记 |
|
|
20
20
|
|
|
21
21
|
RED 失败原因必须与目标 bug 或需求直接相关。无效 RED(测试搭建错误、private 访问限制、mock/stubbing 错误、依赖注入失败、NPE 来自测试夹具)不得进入 GREEN。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-
|
|
2
|
+
description: harness-execute 的 Phase 0 环境准备 + Playwright 探测 + 关门检查清单。仅在执行测试前的环境准备阶段读取。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# harness-
|
|
5
|
+
# harness-execute 检查清单 — Phase 0 环境准备 + 关门检查
|
|
6
6
|
|
|
7
7
|
以下检查项确认完了再开始测试。每一项背后都有踩坑经历。
|
|
8
8
|
|
|
@@ -16,8 +16,7 @@ description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门
|
|
|
16
16
|
|
|
17
17
|
先检查当前项目的测试配置文件(按优先级查找):
|
|
18
18
|
|
|
19
|
-
1.
|
|
20
|
-
2. **兼容**:`harness-test/harness-test-config.md(兼容旧路径)`(旧路径,过渡期仍支持)
|
|
19
|
+
1. `.harness/config/harness-test-config.md`(集中配置目录;旧 skill 目录下的兼容路径已随 harness-test 入口移除而废弃)
|
|
21
20
|
|
|
22
21
|
如果任一文件存在,**必须先读取并应用其中的配置**。配置文件通常包含:
|
|
23
22
|
|
|
@@ -70,7 +69,7 @@ description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门
|
|
|
70
69
|
- [ ] 检查 `claude mcp list` 中是否有 playwright(如果可以执行命令)
|
|
71
70
|
- [ ] 检查 `@playwright/mcp` 是否可启动
|
|
72
71
|
- [ ] 检查当前 skill 的 `allowed-tools` 是否允许 Playwright 相关工具
|
|
73
|
-
- [ ] 输出 fallback 执行器可用性表格(见 reference.md)
|
|
72
|
+
- [ ] 输出 fallback 执行器可用性表格(见 testing-reference.md)
|
|
74
73
|
- [ ] 记录决策:接口测试执行器 / PowerShell batch / Playwright MCP browser_evaluate / curl fallback
|
|
75
74
|
- [ ] 如果 fallback 不可用,必须写明原因,不得静默改用 curl
|
|
76
75
|
|
|
@@ -194,21 +193,21 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
|
|
|
194
193
|
|
|
195
194
|
**如果用户选择 AI 启动或 AI 重启**:
|
|
196
195
|
1. 从已知良好测试配置读取 module/profile/port/healthUrl/sdkUrl(按项目配置)。
|
|
197
|
-
2. 生成 ASCII 运行时配置叠加:`C:/temp/harness-
|
|
196
|
+
2. 生成 ASCII 运行时配置叠加:`C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml`(按技术栈;Java Spring Boot 的 application.yml 为例)。
|
|
198
197
|
3. 禁止默认直接 Edit tracked 应用配置文件(如 `application-local-dev.yml`)。
|
|
199
198
|
4. 默认启动命令(按技术栈,Java Spring Boot 为例):
|
|
200
199
|
```powershell
|
|
201
|
-
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-
|
|
200
|
+
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml'"
|
|
202
201
|
```
|
|
203
202
|
5. 写入 `service.pid`、`service-start-command.txt`、`service-start.log`、`runtime/service-session.json`(含 `moduleInputsHash`/`moduleInputsFiles`/`startCommandHash`/`profile`/`overlayPath`/`pid`/`startedBy=AI`/`startedAt`)。`moduleInputsHash` 来自 CLI `--files` ∪ `serviceStart.inputFiles`,空输入拒绝。
|
|
204
203
|
6. 服务启动等待:0–30s 每 2s 探测;30–120s 每 5s 探测;>10s 必须输出状态行;>120s 读取最近 200 行日志。
|
|
205
204
|
7. 发现启动失败特征(按技术栈识别,如 Java Spring Boot 的 `BindException` / `Could not resolve placeholder` / `Connection refused during bean init` / `BeanCreationException` / `Failed to start bean` / `BUILD FAILURE`)立即失败。
|
|
206
205
|
|
|
207
|
-
#### 0.10.x 重入沿用(同一变更 harness-
|
|
206
|
+
#### 0.10.x 重入沿用(同一变更 harness-execute 再次执行时)
|
|
208
207
|
|
|
209
208
|
满足以下**全部**条件时,可沿用上次服务决策,不重复询问:
|
|
210
209
|
|
|
211
|
-
1. 重入:同一 change-name 的 harness-
|
|
210
|
+
1. 重入:同一 change-name 的 harness-execute 再次执行(非首次)
|
|
212
211
|
2. 环境未变:PG 可用性、目标端口、执行器可用性与上次一致
|
|
213
212
|
3. 上次已确认执行器方案(如"内存 HTTP 执行器,PG 不可用")
|
|
214
213
|
4. 当前源码未改服务启动逻辑(如未改 main.ts 启动路径、未改服务端口/profile 配置)
|
|
@@ -270,7 +269,7 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
|
|
|
270
269
|
|
|
271
270
|
- [ ] Phase 1 前通过 state layout resolver 定位并检查 `evidence/verification-ledger.json`
|
|
272
271
|
- [ ] 判断是否复用 run 的 unitTest:diffHash 一致 + module/profile 一致 + scope 一致或更严格 + run 后无行为性修改 + run 实际跑了全量测试
|
|
273
|
-
- [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-
|
|
272
|
+
- [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-execute 单元测试结果"
|
|
274
273
|
- [ ] 不复用 → 按 profile key resolve 重跑测试命令(`harness_profile.py resolve --key unitTest`,不复制示例 `-pl` 命令),结果写回 ledger 的 `unitTest` 项
|
|
275
274
|
- [ ] HTTP/API 契约结果写入 `apiTest`;真实浏览器/真实栈 Playwright 结果写入 `browserTest`,两者不得互相覆盖
|
|
276
275
|
- [ ] **本变更没有该维度场景时**(如全部为单元场景 → 无 API 场景):用 `harness_ledger.py record --verification apiTest --status NOT_RUN --applicability NOT_APPLICABLE --applicability-reason "<为什么不适用>"` 登记,**不传 `--files`**。门禁 close 要求 requiredValidations 每项都有 entry,但**绝不能拿无关文件(比如单元测试文件)凑 `--files`**——那会让 ledger 声称该维度的输入是那些文件,是假证据
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Java/Feign 相关测试踩坑(harness-
|
|
2
|
+
description: Java/Feign 相关测试踩坑(harness-execute)。API 实测前通读;发现客户端路径缺陷时回写 plan 外修复记录。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# Java 测试踩坑补充(Feign / 远程客户端)
|
|
6
6
|
|
|
7
|
-
> 与 `pitfalls.md`(通用)及 `overlays/java/pitfalls-java.md`(overlay 速查表)互补;本文件收录路径拼接类缺陷的症状与流程要求。
|
|
7
|
+
> 与 `testing-pitfalls.md`(通用)及 `overlays/java/pitfalls-java.md`(overlay 速查表)互补;本文件收录路径拼接类缺陷的症状与流程要求。
|
|
8
8
|
|
|
9
9
|
## Feign/客户端路径前缀缺失
|
|
10
10
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-
|
|
2
|
+
description: harness-execute 的踩坑规则(来自真实对话日志)。执行测试前必须通读,遇到测试失败时重新参考。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# 避坑规则(32 条)
|
|
6
6
|
|
|
7
7
|
> 以下规则来自真实对话日志(2026-06-12 ~ 08-17),每个都有明确的现象和根因。
|
|
8
|
-
> 执行 `harness-
|
|
8
|
+
> 执行 `harness-execute` 时必须通读,避免重蹈覆辙。
|
|
9
9
|
|
|
10
10
|
| # | 规则 | 现象 | 根因 | 解法 |
|
|
11
11
|
|:--:|------|------|------|------|
|
|
@@ -29,7 +29,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
|
|
|
29
29
|
| 18 | **Bash 不可执行执行器(如 node)** | "Bash 中没有 node" → 错误降级到 Playwright MCP | Windows 中文路径项目下 Bash 被 hook 拒;Node 不在 Bash PATH | 强制 `powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '<executorPath>' '...mjs'"`,禁止裸 `node`、禁止用 Bash 执行执行器 |
|
|
30
30
|
| 19 | **Auto mode / 安全分类器降级时静默等待** | 接口测试长时间无响应,最终错误降级到逐条 MCP | PowerShell 命令被安全分类器拦截,Claude 静默重试 + fallback | Phase 0.1 preflight 检测出后**硬停**,原文输出"命令执行模式不可用...",提示用户切换权限模式 |
|
|
31
31
|
| 20 | **Playwright API 执行器与 Playwright MCP 混写** | 报告写"Playwright ✅ 使用",实际是逐条 `browser_evaluate` | 两者被笼统称为"Playwright" | 报告中**强制区分**四种执行器:接口测试执行器 / PowerShell batch / Playwright MCP browser_evaluate / curl |
|
|
32
|
-
| 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-
|
|
32
|
+
| 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-execute-overlay/<change>/application-harness-execute.yml`,启动用该绝对路径叠加(如 `-Dspring.config.additional-location=...`) |
|
|
33
33
|
| 22 | **唯一约束字段与本地预存数据冲突** | 大面积唯一约束冲突,9 个场景 BLOCKED | 执行器用硬编码字段值 | 用随机值(如 `900000 + random`)/ 先查避让 / 用唯一隔离值 |
|
|
34
34
|
| 23 | **setup 失败后继续用 null ID 发送请求** | 后续 9 个接口全部 400/500,掩盖真正问题 | 执行器不区分 BLOCKED 状态 | 执行器强制 setup/test/cleanup 三阶段,依赖未满足 → 标 🟡 BLOCKED,**不发起请求** |
|
|
35
35
|
| 24 | **归档数据把 PARTIAL 写成 NOT_RUN** | 平台显示「未执行」,但实际跑了 6 个场景 | 状态枚举不完整,只有 OK/FAIL/NOT_RUN | API 维度状态使用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL,5 PASS+9 BLOCKED+1 FAIL → `apiTest=PARTIAL` |
|
|
@@ -37,7 +37,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
|
|
|
37
37
|
| 26 | **凭证在同一流程内重复获取** | 浏览器 origin 在认证服务就再走一次登录 | 执行器依赖浏览器当前页面 origin | 执行器用 request context 直连本地 baseURL,凭证从 cache 读,`credentialRefreshCount > 1` → 🟡 WARN |
|
|
38
38
|
| 27 | **服务启动盲等 + 无反馈** | 等待 90s 后才发现启动报错 | 没有启动状态机和异常关键字检测 | 0–30s/2s × 30–120s/5s 状态机;遇启动失败特征(按技术栈,如 BindException/Could not resolve placeholder/BeanCreationException)立即停;> 10s 必须输出一次状态行 |
|
|
39
39
|
| 28 | **已有服务未先决策就跑业务接口** | 旧服务不含新代码,接口 500 后才发现版本不匹配 | 检测到已有应用服务(端口被占)后,未先展示服务决策门就跑业务接口 | 先展示服务决策门,询问复用/重启/跳过/停止;询问前只允许 health/meta 检查 |
|
|
40
|
-
| 29 | **启动命令反复试相对配置叠加 / 中文路径** | 相对路径或中文路径导致应用读不到运行时配置叠加,启动失败 | 默认只用 `C:/temp/harness-
|
|
40
|
+
| 29 | **启动命令反复试相对配置叠加 / 中文路径** | 相对路径或中文路径导致应用读不到运行时配置叠加,启动失败 | 默认只用 `C:/temp/harness-execute-overlay/<change>/application-harness-execute.yml` ASCII 绝对路径,并固化已知良好测试配置 |
|
|
41
41
|
| 30 | **伪 diffHash 导致错误复用** | `3files-84plus-5minus` 不能证明代码未变 | 用 `git diff --binary` 生成 patch 并计算 SHA-256,ledger 只认 `sha256:<hash>` |
|
|
42
42
|
| 31 | **尝试破解验证码 / 人机验证** | 认证服务返回"验证码不能为空",AI 写图像识别脚本反复试坐标(实测 28 次 / 4 种算法全失败) | 测试配置里的账号密码登录流程被加了滑块/图形验证码,配置未同步 | **硬停**。禁止编写或运行任何验证码求解代码;立即标 `apiTest=BLOCKED`,请用户手工提供凭证写入 `runtime/credential-cache.json`,或临时关闭测试环境验证码 |
|
|
43
43
|
| 32 | **预存环境缺陷被当成本次变更的阻塞** | `unitTestFull` 144 个测试挂 1 个,根因是别人提交引入的缺省配置缺失 | 全量验证把预存缺陷和本次 diff 混在一起判定 | 先用 `git log -S` + diff 触点证明与本次变更无关,再按「预存缺陷」上报并请用户决策(修根因 / 记 🟡WARN / 停止),**不得**擅自改 tracked 配置或排除测试 |
|
|
@@ -193,7 +193,7 @@ $cred = $resp.data.accessToken
|
|
|
193
193
|
**严重度**:🟡WARN
|
|
194
194
|
**场景**:测试期间为了切换外部服务配置直接 Edit tracked 配置文件(如 `application-local-dev.yml`),测试后再还原,留下 diff 噪声
|
|
195
195
|
**后果**:git diff --stat 出现意外文件、提交风险、误以为有业务变更
|
|
196
|
-
**正确做法**:生成运行时配置叠加 `.harness/changes/<change>/runtime/application-harness-
|
|
196
|
+
**正确做法**:生成运行时配置叠加 `.harness/changes/<change>/runtime/application-harness-execute.yml`(不提交),启动用 `-Dspring.config.additional-location=file:...` 叠加(按技术栈);如必须改 tracked 配置,先 blocking user confirmation,最终报告至少 🟡 WARN
|
|
197
197
|
|
|
198
198
|
### 规则 22:唯一约束字段与本地预存数据冲突
|
|
199
199
|
**严重度**:❌FAIL
|
|
@@ -249,9 +249,9 @@ $cred = $resp.data.accessToken
|
|
|
249
249
|
|
|
250
250
|
### 规则 29:启动命令反复试相对配置叠加 / 中文路径
|
|
251
251
|
**严重度**:🟡WARN
|
|
252
|
-
**场景**:运行时配置叠加用相对路径 `.harness/changes/<change>/runtime/application-harness-
|
|
252
|
+
**场景**:运行时配置叠加用相对路径 `.harness/changes/<change>/runtime/application-harness-execute.yml` 或中文路径作为 JVM `additional-location`,应用(如 Spring Boot)读不到配置叠加,启动失败后反复试不同路径
|
|
253
253
|
**后果**:启动反复失败,浪费时间;中文路径进入 JVM 参数也可能失败
|
|
254
|
-
**正确做法**:默认只用 ASCII 绝对路径 `C:/temp/harness-
|
|
254
|
+
**正确做法**:默认只用 ASCII 绝对路径 `C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml`,并固化已知良好测试配置。禁止把相对路径作为默认 JVM `additional-location`。
|
|
255
255
|
|
|
256
256
|
### 规则 30:伪 diffHash 导致错误复用
|
|
257
257
|
**严重度**:❌FAIL
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-
|
|
2
|
+
description: harness-execute 的 API 测试执行细节、批量 runner、token 缓存、测试数据治理、报告模板和关门检查。仅在执行接口测试需要参考详细操作时读取。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# harness-
|
|
5
|
+
# harness-execute 参考 — API 测试详情
|
|
6
6
|
|
|
7
7
|
## 命令执行模式 preflight(0.1)
|
|
8
8
|
|
|
9
|
-
`/harness-
|
|
9
|
+
`/harness-execute` 高度依赖 PowerShell 与接口测试执行器。在编译/启动服务/生成执行器 **之前**
|
|
10
10
|
必须执行 4 项执行模式检查:
|
|
11
11
|
|
|
12
12
|
| 检查项 | 命令 | 预期 |
|
|
@@ -110,8 +110,8 @@ known-good-test-profile:
|
|
|
110
110
|
|
|
111
111
|
overlay:
|
|
112
112
|
pathStrategy: ascii-temp
|
|
113
|
-
directory: C:/temp/harness-
|
|
114
|
-
fileName: application-harness-
|
|
113
|
+
directory: C:/temp/harness-execute-overlay
|
|
114
|
+
fileName: application-harness-execute.yml
|
|
115
115
|
|
|
116
116
|
service:
|
|
117
117
|
askBeforeReusingExisting: true
|
|
@@ -127,7 +127,7 @@ known-good-test-profile:
|
|
|
127
127
|
不要直接 Edit tracked 应用配置文件(如 `application-local-dev.yml`)。默认生成 ASCII 绝对路径运行时配置叠加:
|
|
128
128
|
|
|
129
129
|
```text
|
|
130
|
-
C:/temp/harness-
|
|
130
|
+
C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
内容按已知良好测试配置渲染(按项目;Java Spring Boot 为例):
|
|
@@ -147,10 +147,10 @@ spring:
|
|
|
147
147
|
唯一默认启动命令(按技术栈,Java Spring Boot 为例):
|
|
148
148
|
|
|
149
149
|
```powershell
|
|
150
|
-
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-
|
|
150
|
+
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module> -Dspring-boot.run.profiles=<profile> -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-execute-overlay/<change-name>/application-harness-execute.yml'"
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
不得默认使用 `.harness/changes/<change>/runtime/application-harness-
|
|
153
|
+
不得默认使用 `.harness/changes/<change>/runtime/application-harness-execute.yml` 相对路径作为 JVM `additional-location`。如必须修改 tracked 配置文件,先 blocking user confirmation,最终报告至少 🟡 WARN。
|
|
154
154
|
|
|
155
155
|
## 服务决策门(Service Decision Gate)与服务生命周期管理
|
|
156
156
|
|
|
@@ -184,7 +184,7 @@ serviceState:`AI_STARTED` / `AI_RESTARTED_FROM_USER_SERVICE` / `USER_STARTED`
|
|
|
184
184
|
|
|
185
185
|
### 重入沿用
|
|
186
186
|
|
|
187
|
-
同一变更的 harness-
|
|
187
|
+
同一变更的 harness-execute 重入时,若环境未变(PG/端口/执行器与上次一致)、上次已确认执行器方案、且源码未改服务启动逻辑,可沿用上次服务决策不重复询问,执行日志记 `重入沿用+环境未变`。不适用情形(fingerprint 不匹配、环境已变、USER_STARTED、源码改启动逻辑)仍须询问/重启。详见 testing-checklist.md「0.10.x 重入沿用」。
|
|
188
188
|
|
|
189
189
|
## 启动等待状态机
|
|
190
190
|
|
|
@@ -652,7 +652,7 @@ TEST_<change-name>_<timestamp>_<short-random>
|
|
|
652
652
|
- credentialRefreshCount: 0 / 1(>1 → 🟡 WARN)
|
|
653
653
|
|
|
654
654
|
### 单元测试
|
|
655
|
-
> ✅ 复用 harness-
|
|
655
|
+
> ✅ 复用 harness-execute 单元测试结果:Tests run: N, Failures: 0, Errors: 0
|
|
656
656
|
> (diffHash=<...>, module=<...>, profile=<...>, scope=<...>)
|
|
657
657
|
> 或:🔄 已重跑(原因:diffHash 变化 / 行为性 post-test 修改 / run 未跑全量)
|
|
658
658
|
|
|
@@ -729,7 +729,7 @@ TEST_<change-name>_<timestamp>_<short-random>
|
|
|
729
729
|
### 下一步
|
|
730
730
|
- 如果 ✅OK:进入 /harness-review
|
|
731
731
|
- 如果 🟡WARN:根据 WARN 原因决定是否补充测试或进入 review
|
|
732
|
-
- 如果 ❌FAIL:修复失败项后重新运行 /harness-
|
|
732
|
+
- 如果 ❌FAIL:修复失败项后重新运行 /harness-execute
|
|
733
733
|
```
|
|
734
734
|
|
|
735
735
|
## CLI 速查(gate / ledger)
|
|
@@ -769,7 +769,7 @@ python <skills-root>/scripts/harness_ledger.py scenario-receipt-template --chang
|
|
|
769
769
|
| `PROJECT_ROOT_INVALID` | `--project` 传了项目名而不是路径 | 传 `.` 或绝对路径;报错的 `resolvedProject` 显示实际解析结果 |
|
|
770
770
|
| `SCENARIO_RECEIPT_REQUIRED` | manifest 是 schemaVersion 2,`--scenario-ids` 必须配 receipt | 用 `scenario-receipt-template` 生成骨架 |
|
|
771
771
|
| `SCENARIO_RECEIPT_NOT_FOUND` | receipt 路径找不到 | 看报错的 `triedPaths`;相对路径同时按 CWD 与 `--change-dir` 解析 |
|
|
772
|
-
| `REQUIRED_SCENARIO_NOT_EXECUTED`(test 关门) | `ownerPhase=test` 的场景到 test 阶段仍无通过 receipt——这是真阻塞 | 补跑该场景;接口被验证码挡住时按 `pitfalls.md` 规则 31 记 BLOCKED,不得伪造 receipt |
|
|
772
|
+
| `REQUIRED_SCENARIO_NOT_EXECUTED`(test 关门) | `ownerPhase=test` 的场景到 test 阶段仍无通过 receipt——这是真阻塞 | 补跑该场景;接口被验证码挡住时按 `testing-pitfalls.md` 规则 31 记 BLOCKED,不得伪造 receipt |
|
|
773
773
|
|
|
774
774
|
`can-reuse` 的主文案按 `executionNeed` 呈现,错误码仅放技术详情:`first-run` 表示首次执行,`rerun` 表示已有证据因输入或环境变化失效,`evidence-incomplete` 表示旧记录缺少当前契约字段,`reuse` 表示可直接复用。不得把 `VALIDATION_MISSING` 翻译成“强制重跑”。
|
|
775
775
|
|
|
@@ -875,6 +875,6 @@ python <skills-root>/scripts/harness_ledger.py diff-hash --repo . --base <baseCo
|
|
|
875
875
|
|
|
876
876
|
## 执行日志记录
|
|
877
877
|
|
|
878
|
-
`/harness-
|
|
878
|
+
`/harness-execute` 只向 `events.ndjson` 追加事件(schema_version 3,兼容读取 v1/v2);`logs/execution-log.md` 由 `harness_events.py append` 自动渲染。Phase 0 之前 append `phase.start`;各阶段写入 `command` / `verification` / `decision` / `issue` / `artifact`,人类可读摘要放 `note`。事件类型与脚本用法见 [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]] 与 SKILL.md `## 执行日志`。
|
|
879
879
|
|
|
880
880
|
关键 `note` / 事件须覆盖:0.1 命令执行模式、fallback 执行器、serviceState、凭证策略、单元测试复用、批量执行器、verification-ledger 写入、关门检查、API 状态(不得把 PARTIAL 写成 NOT_RUN)。
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: harness-knowledge-ingest
|
|
3
3
|
description: 确认归档 ZIP 已上传并由 Hunter Platform 在服务端解包、校验和入库。客户端不再构建或维护本地知识索引。
|
|
4
4
|
---
|
|
5
|
-
<!-- generated by harness_deploy.py; core=
|
|
5
|
+
<!-- generated by harness_deploy.py; core=ac0ef39e09e6a559; overlay=none; agent=codex; do not edit -->
|
|
6
6
|
# harness-knowledge-ingest
|
|
7
7
|
|
|
8
8
|
知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: harness-knowledge-query
|
|
3
3
|
description: 在规划、实现或排查前,通过 hunter-harness CLI 查询远端项目知识库。远端不可用时直接报告不可用,不建立本地索引或离线回退。
|
|
4
4
|
---
|
|
5
|
-
<!-- generated by harness_deploy.py; core=
|
|
5
|
+
<!-- generated by harness_deploy.py; core=ac0ef39e09e6a559; overlay=none; agent=codex; do not edit -->
|
|
6
6
|
# harness-knowledge-query
|
|
7
7
|
|
|
8
8
|
项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
|
|
@@ -3,7 +3,7 @@ name: harness-plan
|
|
|
3
3
|
description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。仅当用户显式调用 /harness-plan 或明确要求进入
|
|
4
4
|
Harness 规划阶段时使用;不得因用户描述需求就自动触发。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=ac0ef39e09e6a559; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-plan — 需求规划
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -104,7 +104,7 @@ change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`
|
|
|
104
104
|
| 空目录 | 不得为“预留目录”生成 `.gitkeep`;只有产品明确需要跟踪空目录时才能创建,并在计划中说明业务原因 |
|
|
105
105
|
| 设计审批包 | 一次 blocking user confirmation 含 worktree(读 `harness.json` `defaultWorktree`)。必须同时展示 **in_scope 与 out_of_scope 两个列表**——只展示"做什么"会让范围误判活到发布之后,代价是整份计划 republish |
|
|
106
106
|
| 引用即追问 | 需求引用了外部设计文档章节(贴段落、指 `### Bn`、说"之前设计的时候如…")时,阶段 2 必须确认该章节是否纳入本次范围,落到 in_scope 或 out_of_scope;引用 ≠ 纳入,也 ≠ 排除 |
|
|
107
|
-
| 阶段 8 | 唯一入口:`hunter-harness plan finalize`(证据包 → 八 target + journal committed + plan-events.ndjson
|
|
107
|
+
| 阶段 8 | 唯一入口:`hunter-harness plan finalize`(证据包 → 八 target + journal committed + plan-events.ndjson)。assurance/高风险计划先跑 `plan review-record` 把对抗评审收据写回证据包(`PLAN_REVIEW_REQUIRED` 报错里的 `expected_review.input_hash` 是公开契约),不得手拼哈希。失败不得手工补终态;历史 legacy 收据只读(`harness_plan_finalize.py verify`) |
|
|
108
108
|
| 发布路径 | **只有 v2**(`plan evidence-pack` → `plan finalize`);legacy staging/finalize/republish 已于 0.3.0 移除,历史 legacy 收据保持可读(`harness_plan_finalize.py verify`)。v2 的场景契约已补齐 `priority`/`owner_phase` 与可执行测试三元,派生的 `meta/scenario-manifest.json` 能被 execute 门禁与 `harness_ledger.py record` 解包消费,证据闭环走得通。P0/P1 场景必须给全可执行三元(要么整组给全、要么整组省略;省略则 manifest 降为 schemaVersion 1,关门绑不上结构化执行收据) |
|
|
109
109
|
| 发布后改产物 | 改 `meta/plan-evidence-input.json` 后重跑 `plan evidence-pack`(`context.attempt` 递增、`expected_baseline` 置 present 并带上次 manifest 哈希/generation),再 `plan finalize`——新 attempt + 重新派生 manifest 一次完成。**绝不手改 `meta/scenario-manifest.json`**(派生物,手改必致 `ARTIFACT_HASH_DRIFT`)→ `reference.md`「发布后修订计划」 |
|
|
110
110
|
| v2 输入骨架 | 不要猜 `plan-evidence-input.json` 结构:`npx hunter-harness plan evidence-pack --print-template` 给出**一个字不改就能通过 evidence-pack** 的骨架(结构合法;`change_key`/`run_id` 仍须换成真实身份才能 finalize),逐项替换即可。结构不符时命令返回 `PLAN_EVIDENCE_INPUT_INVALID`,带 `field_path` 与 `problems[]`(缺失/多余键、枚举取值)——按 problems 改完重跑;**不得**为找契约去反编译 `dist/bin.js` 或翻 npx 缓存。带不了 `<>` 的占位字段与硬约束清单 → `reference.md` 阶段 8 v2 路径 |
|
|
@@ -227,7 +227,7 @@ description: harness-plan 的阶段检查清单和覆盖检查列表。仅在执
|
|
|
227
227
|
- 如果需求不明确,优先提问而不是猜测后继续设计
|
|
228
228
|
- 任务拆分粒度按复杂度调整——plan 简表保持可追踪,implementation-detail 按风险和复杂度自适应展开
|
|
229
229
|
|
|
230
|
-
> Plan 的结束行为(禁止询问执行模式、只提示 `/harness-
|
|
230
|
+
> Plan 的结束行为(禁止询问执行模式、只提示 `/harness-execute`)由 `SKILL.md` 的关键规则表定义,
|
|
231
231
|
> 详细规则见 `reference.md`「Plan 结束行为规则」。此处不再复述。
|
|
232
232
|
|
|
233
233
|
## 事件记录(前置规则)
|