hunter-harness 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +11 -0
- package/dist/bin.js +955 -318
- package/package.json +1 -1
- package/resources/harness/bundles/general/claude-code/.harness-build.json +6 -0
- package/resources/harness/{general → bundles/general/claude-code}/agents/harness-reviewer.md +2 -2
- package/resources/harness/{general → bundles/general/claude-code}/harness-archive/SKILL.md +1 -1
- package/resources/harness/{java → bundles/general/claude-code}/harness-codebase-map/SKILL.md +1 -1
- package/resources/harness/{java → bundles/general/claude-code}/harness-knowledge-ingest/SKILL.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/reference.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-query/SKILL.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-plan/SKILL.md +1 -1
- package/resources/harness/{java → bundles/general/claude-code}/harness-review/SKILL.md +8 -4
- package/resources/harness/{general → bundles/general/claude-code}/harness-review/checklist.md +3 -3
- package/resources/harness/{general → bundles/general/claude-code}/harness-run/SKILL.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-run/checklist.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-run/reference.md +2 -2
- package/resources/harness/{general → bundles/general/claude-code}/harness-submit/SKILL.md +1 -1
- package/resources/harness/{java → bundles/general/claude-code}/harness-sync/SKILL.md +2 -2
- package/resources/harness/{general → bundles/general/claude-code}/harness-sync/reference.md +7 -7
- package/resources/harness/{general → bundles/general/claude-code}/harness-test/SKILL.md +1 -1
- package/resources/harness/{general → bundles/general/claude-code}/harness-test/checklist.md +1 -1
- package/resources/harness/{java → bundles/general/claude-code}/scripts/harness_archive.py +2300 -2300
- package/resources/harness/{general → bundles/general/claude-code}/scripts/harness_deploy.py +74 -13
- package/resources/harness/{general → bundles/general/claude-code}/scripts/harness_events.py +680 -680
- package/resources/harness/{general → bundles/general/claude-code}/scripts/harness_ledger.py +660 -660
- package/resources/harness/{java → bundles/general/claude-code}/scripts/harness_preflight.py +765 -765
- package/resources/harness/{general → bundles/general/claude-code}/scripts/harness_service.py +1331 -1331
- package/resources/harness/bundles/general/codebuddy/.harness-build.json +6 -0
- package/resources/harness/bundles/general/codebuddy/agents/harness-evaluator.md +94 -0
- package/resources/harness/bundles/general/codebuddy/agents/harness-explorer.md +53 -0
- package/resources/harness/bundles/general/codebuddy/agents/harness-reviewer.md +52 -0
- package/resources/harness/bundles/general/codebuddy/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/reference.md +1 -1
- package/resources/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/general/codebuddy/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/general/codebuddy/harness-review/SKILL.md +142 -0
- package/resources/harness/{java → bundles/general/codebuddy}/harness-review/checklist.md +3 -3
- package/resources/harness/bundles/general/codebuddy/harness-run/SKILL.md +113 -0
- package/resources/harness/bundles/general/codebuddy/harness-run/checklist.md +259 -0
- package/resources/harness/bundles/general/codebuddy/harness-run/reference.md +834 -0
- package/resources/harness/bundles/general/codebuddy/harness-submit/SKILL.md +142 -0
- package/resources/harness/bundles/general/codebuddy/harness-sync/SKILL.md +65 -0
- package/resources/harness/{java → bundles/general/codebuddy}/harness-sync/reference.md +7 -7
- package/resources/harness/bundles/general/codebuddy/harness-test/SKILL.md +160 -0
- package/resources/harness/bundles/general/codebuddy/harness-test/checklist.md +319 -0
- package/resources/harness/bundles/general/codebuddy/harness-test/reference.md +791 -0
- package/resources/harness/{general → bundles/general/codebuddy}/scripts/harness_archive.py +2300 -2300
- package/resources/harness/{java → bundles/general/codebuddy}/scripts/harness_deploy.py +74 -13
- package/resources/harness/{java → bundles/general/codebuddy}/scripts/harness_events.py +680 -680
- package/resources/harness/{java → bundles/general/codebuddy}/scripts/harness_ledger.py +660 -660
- package/resources/harness/{general → bundles/general/codebuddy}/scripts/harness_preflight.py +765 -765
- package/resources/harness/{java → bundles/general/codebuddy}/scripts/harness_service.py +1331 -1331
- package/resources/harness/bundles/general/codex/.harness-build.json +6 -0
- package/resources/harness/bundles/general/codex/CONTEXT.md +65 -0
- package/resources/harness/bundles/general/codex/README.md +478 -0
- package/resources/harness/bundles/general/codex/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/general/codex/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/general/codex/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/general/codex/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/general/codex/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/general/codex/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/general/codex/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/general/codex/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/general/codex/harness-plan/reference.md +376 -0
- package/resources/harness/bundles/general/codex/harness-review/SKILL.md +137 -0
- package/resources/harness/bundles/general/codex/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/general/codex/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/general/codex/harness-review/reference.md +86 -0
- package/resources/harness/bundles/general/codex/harness-run/SKILL.md +113 -0
- package/resources/harness/bundles/general/codex/harness-run/checklist.md +259 -0
- package/resources/harness/bundles/general/codex/harness-run/protocols.md +78 -0
- package/resources/harness/bundles/general/codex/harness-run/reference.md +834 -0
- package/resources/harness/bundles/general/codex/harness-submit/SKILL.md +142 -0
- package/resources/harness/bundles/general/codex/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/general/codex/harness-submit/reference.md +152 -0
- package/resources/harness/bundles/general/codex/harness-sync/SKILL.md +65 -0
- package/resources/harness/bundles/general/codex/harness-sync/reference.md +153 -0
- package/resources/harness/bundles/general/codex/harness-test/SKILL.md +160 -0
- package/resources/harness/bundles/general/codex/harness-test/checklist.md +319 -0
- package/resources/harness/bundles/general/codex/harness-test/pitfalls.md +260 -0
- package/resources/harness/bundles/general/codex/harness-test/reference.md +791 -0
- package/resources/harness/bundles/general/codex/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/general/codex/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/general/codex/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/general/codex/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/general/codex/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/general/codex/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/general/codex/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/general/codex/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/general/codex/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/general/codex/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/general/codex/scripts/harness_service.py +1331 -0
- package/resources/harness/bundles/general/cursor/.harness-build.json +6 -0
- package/resources/harness/bundles/general/cursor/CONTEXT.md +65 -0
- package/resources/harness/bundles/general/cursor/README.md +478 -0
- package/resources/harness/bundles/general/cursor/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/general/cursor/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/general/cursor/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/general/cursor/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/general/cursor/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/general/cursor/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/general/cursor/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/general/cursor/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/general/cursor/harness-plan/reference.md +376 -0
- package/resources/harness/bundles/general/cursor/harness-review/SKILL.md +137 -0
- package/resources/harness/bundles/general/cursor/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/general/cursor/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/general/cursor/harness-review/reference.md +86 -0
- package/resources/harness/bundles/general/cursor/harness-run/SKILL.md +113 -0
- package/resources/harness/bundles/general/cursor/harness-run/checklist.md +259 -0
- package/resources/harness/bundles/general/cursor/harness-run/protocols.md +78 -0
- package/resources/harness/bundles/general/cursor/harness-run/reference.md +834 -0
- package/resources/harness/bundles/general/cursor/harness-submit/SKILL.md +142 -0
- package/resources/harness/bundles/general/cursor/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/general/cursor/harness-submit/reference.md +152 -0
- package/resources/harness/bundles/general/cursor/harness-sync/SKILL.md +65 -0
- package/resources/harness/bundles/general/cursor/harness-sync/reference.md +153 -0
- package/resources/harness/bundles/general/cursor/harness-test/SKILL.md +160 -0
- package/resources/harness/bundles/general/cursor/harness-test/checklist.md +319 -0
- package/resources/harness/bundles/general/cursor/harness-test/pitfalls.md +260 -0
- package/resources/harness/bundles/general/cursor/harness-test/reference.md +791 -0
- package/resources/harness/bundles/general/cursor/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/general/cursor/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/general/cursor/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/general/cursor/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/general/cursor/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/general/cursor/scripts/harness_service.py +1331 -0
- package/resources/harness/bundles/java/claude-code/.harness-build.json +6 -0
- package/resources/harness/bundles/java/claude-code/CONTEXT.md +65 -0
- package/resources/harness/bundles/java/claude-code/README.md +478 -0
- package/resources/harness/{java → bundles/java/claude-code}/agents/harness-reviewer.md +2 -2
- package/resources/harness/{java → bundles/java/claude-code}/harness-apidoc/SKILL.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-archive/SKILL.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/java/claude-code/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/java/claude-code/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/{general → bundles/java/claude-code}/harness-codebase-map/SKILL.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/java/claude-code/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/{general → bundles/java/claude-code}/harness-knowledge-ingest/SKILL.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/{java → bundles/java/claude-code}/harness-knowledge-query/SKILL.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-package/SKILL.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-package/reference.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-plan/SKILL.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/java/claude-code/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/java/claude-code/harness-plan/reference.md +376 -0
- package/resources/harness/{general → bundles/java/claude-code}/harness-review/SKILL.md +8 -4
- package/resources/harness/bundles/java/claude-code/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/java/claude-code/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/java/claude-code/harness-review/reference.md +86 -0
- package/resources/harness/{java → bundles/java/claude-code}/harness-run/SKILL.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-run/checklist.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-run/protocols.md +78 -0
- package/resources/harness/{java → bundles/java/claude-code}/harness-run/reference.md +2 -2
- package/resources/harness/{java → bundles/java/claude-code}/harness-submit/SKILL.md +1 -1
- package/resources/harness/bundles/java/claude-code/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/java/claude-code/harness-submit/reference.md +152 -0
- package/resources/harness/{general → bundles/java/claude-code}/harness-sync/SKILL.md +2 -2
- package/resources/harness/bundles/java/claude-code/harness-sync/reference.md +153 -0
- package/resources/harness/{java → bundles/java/claude-code}/harness-test/SKILL.md +1 -1
- package/resources/harness/{java → bundles/java/claude-code}/harness-test/checklist.md +316 -316
- package/resources/harness/bundles/java/claude-code/harness-test/pitfalls.md +260 -0
- package/resources/harness/{java → bundles/java/claude-code}/harness-test/reference.md +788 -788
- package/resources/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/java/claude-code/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/java/claude-code/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/java/claude-code/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/java/claude-code/scripts/harness_service.py +1331 -0
- package/resources/harness/bundles/java/codebuddy/.harness-build.json +6 -0
- package/resources/harness/bundles/java/codebuddy/CONTEXT.md +65 -0
- package/resources/harness/bundles/java/codebuddy/README.md +478 -0
- package/resources/harness/bundles/java/codebuddy/agents/harness-evaluator.md +94 -0
- package/resources/harness/bundles/java/codebuddy/agents/harness-explorer.md +53 -0
- package/resources/harness/bundles/java/codebuddy/agents/harness-reviewer.md +52 -0
- package/resources/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +68 -0
- package/resources/harness/bundles/java/codebuddy/harness-apidoc/checklist.md +142 -0
- package/resources/harness/bundles/java/codebuddy/harness-apidoc/reference.md +233 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/java/codebuddy/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/java/codebuddy/harness-package/SKILL.md +69 -0
- package/resources/harness/bundles/java/codebuddy/harness-package/checklist.md +322 -0
- package/resources/harness/bundles/java/codebuddy/harness-package/reference.md +210 -0
- package/resources/harness/bundles/java/codebuddy/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/java/codebuddy/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/java/codebuddy/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/java/codebuddy/harness-plan/reference.md +376 -0
- package/resources/harness/bundles/java/codebuddy/harness-review/SKILL.md +142 -0
- package/resources/harness/bundles/java/codebuddy/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/java/codebuddy/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/java/codebuddy/harness-review/reference.md +86 -0
- package/resources/harness/bundles/java/codebuddy/harness-run/SKILL.md +129 -0
- package/resources/harness/bundles/java/codebuddy/harness-run/checklist.md +250 -0
- package/resources/harness/bundles/java/codebuddy/harness-run/protocols.md +78 -0
- package/resources/harness/bundles/java/codebuddy/harness-run/reference.md +814 -0
- package/resources/harness/bundles/java/codebuddy/harness-submit/SKILL.md +149 -0
- package/resources/harness/bundles/java/codebuddy/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/java/codebuddy/harness-submit/reference.md +152 -0
- package/resources/harness/bundles/java/codebuddy/harness-sync/SKILL.md +65 -0
- package/resources/harness/bundles/java/codebuddy/harness-sync/reference.md +153 -0
- package/resources/harness/bundles/java/codebuddy/harness-test/SKILL.md +172 -0
- package/resources/harness/bundles/java/codebuddy/harness-test/checklist.md +317 -0
- package/resources/harness/bundles/java/codebuddy/harness-test/pitfalls-java.md +16 -0
- package/resources/harness/bundles/java/codebuddy/harness-test/pitfalls.md +260 -0
- package/resources/harness/bundles/java/codebuddy/harness-test/reference.md +788 -0
- package/resources/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/java/codebuddy/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/java/codebuddy/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/java/codebuddy/scripts/harness_service.py +1331 -0
- package/resources/harness/bundles/java/codex/.harness-build.json +6 -0
- package/resources/harness/bundles/java/codex/CONTEXT.md +65 -0
- package/resources/harness/bundles/java/codex/README.md +478 -0
- package/resources/harness/bundles/java/codex/harness-apidoc/SKILL.md +68 -0
- package/resources/harness/bundles/java/codex/harness-apidoc/checklist.md +142 -0
- package/resources/harness/bundles/java/codex/harness-apidoc/reference.md +233 -0
- package/resources/harness/bundles/java/codex/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/java/codex/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/java/codex/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/java/codex/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/java/codex/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/java/codex/harness-package/SKILL.md +69 -0
- package/resources/harness/bundles/java/codex/harness-package/checklist.md +322 -0
- package/resources/harness/bundles/java/codex/harness-package/reference.md +210 -0
- package/resources/harness/bundles/java/codex/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/java/codex/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/java/codex/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/java/codex/harness-plan/reference.md +376 -0
- package/resources/harness/bundles/java/codex/harness-review/SKILL.md +137 -0
- package/resources/harness/bundles/java/codex/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/java/codex/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/java/codex/harness-review/reference.md +86 -0
- package/resources/harness/bundles/java/codex/harness-run/SKILL.md +129 -0
- package/resources/harness/bundles/java/codex/harness-run/checklist.md +250 -0
- package/resources/harness/bundles/java/codex/harness-run/protocols.md +78 -0
- package/resources/harness/bundles/java/codex/harness-run/reference.md +814 -0
- package/resources/harness/bundles/java/codex/harness-submit/SKILL.md +149 -0
- package/resources/harness/bundles/java/codex/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/java/codex/harness-submit/reference.md +152 -0
- package/resources/harness/bundles/java/codex/harness-sync/SKILL.md +65 -0
- package/resources/harness/bundles/java/codex/harness-sync/reference.md +153 -0
- package/resources/harness/bundles/java/codex/harness-test/SKILL.md +172 -0
- package/resources/harness/bundles/java/codex/harness-test/checklist.md +317 -0
- package/resources/harness/bundles/java/codex/harness-test/pitfalls-java.md +16 -0
- package/resources/harness/bundles/java/codex/harness-test/pitfalls.md +260 -0
- package/resources/harness/bundles/java/codex/harness-test/reference.md +788 -0
- package/resources/harness/bundles/java/codex/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/java/codex/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/java/codex/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/java/codex/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/java/codex/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/java/codex/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/java/codex/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/java/codex/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/java/codex/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/java/codex/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/java/codex/scripts/harness_service.py +1331 -0
- package/resources/harness/bundles/java/cursor/.harness-build.json +6 -0
- package/resources/harness/bundles/java/cursor/CONTEXT.md +65 -0
- package/resources/harness/bundles/java/cursor/README.md +478 -0
- package/resources/harness/bundles/java/cursor/harness-apidoc/SKILL.md +68 -0
- package/resources/harness/bundles/java/cursor/harness-apidoc/checklist.md +142 -0
- package/resources/harness/bundles/java/cursor/harness-apidoc/reference.md +233 -0
- package/resources/harness/bundles/java/cursor/harness-archive/SKILL.md +198 -0
- package/resources/harness/bundles/java/cursor/harness-archive/checklist.md +52 -0
- package/resources/harness/bundles/java/cursor/harness-archive/reference.md +103 -0
- package/resources/harness/bundles/java/cursor/harness-archive/scripts/gen-manifest.ps1 +31 -0
- package/resources/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +171 -0
- package/resources/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +128 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +95 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/checklist.md +126 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/reference.md +364 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/ARCHITECTURE.md +57 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/CONCERNS.md +49 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/CONVENTIONS.md +57 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/INTEGRATIONS.md +52 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/STACK.md +55 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/STRUCTURE.md +69 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/TESTING.md +64 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/map-manifest.schema.json +73 -0
- package/resources/harness/bundles/java/cursor/harness-codebase-map/templates/map-summary.md +64 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +229 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/design.md +842 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +42 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/mcp-config.example.json +10 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +309 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +4082 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +273 -0
- package/resources/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +147 -0
- package/resources/harness/bundles/java/cursor/harness-package/SKILL.md +69 -0
- package/resources/harness/bundles/java/cursor/harness-package/checklist.md +322 -0
- package/resources/harness/bundles/java/cursor/harness-package/reference.md +210 -0
- package/resources/harness/bundles/java/cursor/harness-plan/SKILL.md +109 -0
- package/resources/harness/bundles/java/cursor/harness-plan/checklist.md +243 -0
- package/resources/harness/bundles/java/cursor/harness-plan/protocols.md +124 -0
- package/resources/harness/bundles/java/cursor/harness-plan/reference.md +376 -0
- package/resources/harness/bundles/java/cursor/harness-review/SKILL.md +137 -0
- package/resources/harness/bundles/java/cursor/harness-review/checklist.md +124 -0
- package/resources/harness/bundles/java/cursor/harness-review/protocols.md +68 -0
- package/resources/harness/bundles/java/cursor/harness-review/reference.md +86 -0
- package/resources/harness/bundles/java/cursor/harness-run/SKILL.md +129 -0
- package/resources/harness/bundles/java/cursor/harness-run/checklist.md +250 -0
- package/resources/harness/bundles/java/cursor/harness-run/protocols.md +78 -0
- package/resources/harness/bundles/java/cursor/harness-run/reference.md +814 -0
- package/resources/harness/bundles/java/cursor/harness-submit/SKILL.md +149 -0
- package/resources/harness/bundles/java/cursor/harness-submit/checklist.md +407 -0
- package/resources/harness/bundles/java/cursor/harness-submit/reference.md +152 -0
- package/resources/harness/bundles/java/cursor/harness-sync/SKILL.md +65 -0
- package/resources/harness/bundles/java/cursor/harness-sync/reference.md +153 -0
- package/resources/harness/bundles/java/cursor/harness-test/SKILL.md +172 -0
- package/resources/harness/bundles/java/cursor/harness-test/checklist.md +317 -0
- package/resources/harness/bundles/java/cursor/harness-test/pitfalls-java.md +16 -0
- package/resources/harness/bundles/java/cursor/harness-test/pitfalls.md +260 -0
- package/resources/harness/bundles/java/cursor/harness-test/reference.md +788 -0
- package/resources/harness/bundles/java/cursor/protocols/archive-report-protocol.md +175 -0
- package/resources/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +134 -0
- package/resources/harness/bundles/java/cursor/protocols/ledger-protocol.md +270 -0
- package/resources/harness/bundles/java/cursor/protocols/powershell-protocol.md +181 -0
- package/resources/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +150 -0
- package/resources/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +92 -0
- package/resources/harness/bundles/java/cursor/protocols/state-layout-protocol.md +131 -0
- package/resources/harness/bundles/java/cursor/protocols/submit-protocol.md +78 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_archive.py +2319 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_deploy.py +674 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_events.py +680 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_ledger.py +671 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_preflight.py +780 -0
- package/resources/harness/bundles/java/cursor/scripts/harness_service.py +1331 -0
- package/resources/harness/manifests/{general.json → general/claude-code.json} +27 -26
- package/resources/harness/manifests/general/codebuddy.json +277 -0
- package/resources/harness/manifests/general/codex.json +265 -0
- package/resources/harness/manifests/general/cursor.json +265 -0
- package/resources/harness/manifests/{java.json → java/claude-code.json} +31 -30
- package/resources/harness/manifests/java/codebuddy.json +305 -0
- package/resources/harness/manifests/java/codex.json +293 -0
- package/resources/harness/manifests/java/cursor.json +293 -0
- package/resources/harness/general/.harness-build.json +0 -5
- package/resources/harness/java/.harness-build.json +0 -5
- /package/resources/harness/{general → bundles/general/claude-code}/CONTEXT.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/README.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/agents/harness-evaluator.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/agents/harness-explorer.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-archive/checklist.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-archive/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-archive/scripts/gen-manifest.ps1 +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-archive/templates/render-summary.mjs +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-archive/templates/summary-data-template.json +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/checklist.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/ARCHITECTURE.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/CONCERNS.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/CONVENTIONS.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/INTEGRATIONS.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/STACK.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/STRUCTURE.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/TESTING.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/map-manifest.schema.json +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-codebase-map/templates/map-summary.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/design.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/mcp-config.example.json +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-plan/checklist.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-plan/protocols.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-plan/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-review/protocols.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-review/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-run/protocols.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-submit/checklist.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-submit/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-test/pitfalls.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/harness-test/reference.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/archive-report-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/evidence-based-reporting-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/ledger-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/powershell-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/report-pipeline-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/sensitive-info-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/state-layout-protocol.md +0 -0
- /package/resources/harness/{general → bundles/general/claude-code}/protocols/submit-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/CONTEXT.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/README.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-archive/checklist.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-archive/reference.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-archive/scripts/gen-manifest.ps1 +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-archive/templates/render-summary.mjs +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-archive/templates/summary-data-template.json +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/checklist.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/reference.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/ARCHITECTURE.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/CONCERNS.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/CONVENTIONS.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/INTEGRATIONS.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/STACK.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/STRUCTURE.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/TESTING.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/map-manifest.schema.json +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-codebase-map/templates/map-summary.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/design.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/mcp-config.example.json +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-plan/checklist.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-plan/protocols.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-plan/reference.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-review/protocols.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-review/reference.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-run/protocols.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-submit/checklist.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-submit/reference.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/harness-test/pitfalls.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/archive-report-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/evidence-based-reporting-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/ledger-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/powershell-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/report-pipeline-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/sensitive-info-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/state-layout-protocol.md +0 -0
- /package/resources/harness/{java → bundles/general/codebuddy}/protocols/submit-protocol.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/agents/harness-evaluator.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/agents/harness-explorer.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/harness-apidoc/checklist.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/harness-apidoc/reference.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/harness-package/checklist.md +0 -0
- /package/resources/harness/{java → bundles/java/claude-code}/harness-test/pitfalls-java.md +0 -0
|
@@ -1,317 +1,317 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门检查清单。仅在执行测试前的环境准备阶段读取。
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# harness-test 检查清单 — Phase 0 环境准备 + 关门检查
|
|
6
|
-
|
|
7
|
-
这 7 项确认完了再开始测试。每一项背后都有踩坑经历。
|
|
8
|
-
|
|
9
|
-
#### 0.0 加载项目配置(如存在)与确定变更名
|
|
10
|
-
|
|
11
|
-
先检查当前项目的测试配置文件(按优先级查找):
|
|
12
|
-
|
|
13
|
-
1. **优先**:`.harness/config/harness-test-config.md`(集中配置目录)
|
|
14
|
-
2.
|
|
15
|
-
|
|
16
|
-
如果任一文件存在,**必须先读取并应用其中的配置**。配置文件通常包含:
|
|
17
|
-
|
|
18
|
-
- **登录端点**:本地无法直接登录时,远程 SSO/Gateway 的登录 URL
|
|
19
|
-
- **测试账号**:各权限级别的用户名密码(如 admin、一层组织管理员等)
|
|
20
|
-
- **真实测试数据**:有效的部门编码和名称、项目 ID、规则 ID 等
|
|
21
|
-
- **环境调整**:需要使用的 profile、需要临时放行的 URL 路径、需要跳过的模块
|
|
22
|
-
- **避坑补充**:本项目特有的已知问题和解决方案
|
|
23
|
-
|
|
24
|
-
**Profile 选择**(从配置文件读取,如无配置则询问用户):
|
|
25
|
-
|
|
26
|
-
| Profile | 适用场景 | 配置文件 |
|
|
27
|
-
|---------|---------|---------|
|
|
28
|
-
| `local` | 连接远程数据库/Redis | `application-local.yml` |
|
|
29
|
-
| `local-dev` | 完全本地隔离 | `application-local-dev.yml` |
|
|
30
|
-
|
|
31
|
-
> **关键**:不指定 profile 时默认使用 `application.yml` 中的配置(可能指向生产环境),必须显式指定。启动命令必须包含 `--spring.profiles.active=<profile>`。
|
|
32
|
-
|
|
33
|
-
然后确定变更名:用 Glob 搜索 `.harness/changes/*/plans/*-plan.md`(**排除 `.harness/archive/*/`**),读取 frontmatter 提取 `change-name`。
|
|
34
|
-
|
|
35
|
-
#### 0.0y:命令执行模式 preflight(⚠️ 必须在编译/启动服务/生成 runner 之前执行)
|
|
36
|
-
|
|
37
|
-
- [ ] 检查 PowerShell 基础命令:`powershell.exe -NoProfile -Command "$PSVersionTable.PSVersion"` 返回 exitCode=0
|
|
38
|
-
- [ ] 检查 Node 绝对路径:`powershell.exe -NoProfile -Command "& 'C:\nvm4w\nodejs\node.exe' --version"` 返回 exitCode=0
|
|
39
|
-
- [ ] 检查 Maven 可用性:`powershell.exe -NoProfile -Command "mvn -version"` 返回 exitCode=0
|
|
40
|
-
- [ ] 检查安全分类器:上述任一命令是否返回"安全分类器暂时不可用" / Auto mode 拦截 → **不应出现**
|
|
41
|
-
- [ ] 将通过的 `nodeAbsolutePath` / `powershellVersion` / `mvnVersion` 写入 `.harness/changes/<change-name>/runtime/preflight.json`
|
|
42
|
-
- [ ] **任一情况触发硬停**:原文输出"❌ 命令执行模式不可用:PowerShell/Node runner 无法稳定执行...",**不得继续编译/启动服务/生成 runner,不得长时间等待,不得盲目降级到 Playwright MCP**
|
|
43
|
-
- [ ] 用户确认切换权限模式后,**重新执行 0.0y**;重试 ≤ 1 次
|
|
44
|
-
|
|
45
|
-
#### 0.0x:fallback 执行器探测(仅在 Node runner 不可用时执行)
|
|
46
|
-
|
|
47
|
-
- [ ] 如果 0.0y 已确认 PowerShell Node API runner 可用:标记 `NOT_NEEDED`,**跳过本阶段**,直接使用 Node runner
|
|
48
|
-
- [ ] 仅当 Node runner 不可用时,检查 PowerShell batch runner (`.ps1`) 是否可用
|
|
49
|
-
- [ ] 仅当 PowerShell batch 也不可用时,检查 Claude Code 是否暴露 Playwright MCP 工具(`mcp__plugin_playwright_playwright__*` 存在)
|
|
50
|
-
- [ ] 检查 `claude mcp list` 中是否有 playwright(如果可以执行命令)
|
|
51
|
-
- [ ] 检查 `@playwright/mcp` 是否可启动
|
|
52
|
-
- [ ] 检查当前 skill 的 `allowed-tools` 是否允许 Playwright 相关工具
|
|
53
|
-
- [ ] 输出 fallback 执行器可用性表格(见 reference.md)
|
|
54
|
-
- [ ] 记录决策:PowerShell Node API runner / PowerShell batch / Playwright MCP browser_evaluate / curl fallback
|
|
55
|
-
- [ ] 如果 fallback 不可用,必须写明原因,不得静默改用 curl
|
|
56
|
-
|
|
57
|
-
#### 0.1 编译确认
|
|
58
|
-
|
|
59
|
-
```powershell
|
|
60
|
-
powershell.exe -Command "Test-Path 'target/classes/<package>/<ChangedClass>.class'"
|
|
61
|
-
```
|
|
62
|
-
编译产物时间戳早于源文件 → 重新编译:
|
|
63
|
-
```powershell
|
|
64
|
-
powershell.exe -Command "mvn compile -pl <module> -o -q"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**编译成功必须有证据**:
|
|
68
|
-
- mvn 输出包含 `BUILD SUCCESS` 才能继续测试
|
|
69
|
-
- 如果命令被 hook 拒绝(`Denied` / `PreToolUse:Bash hook error`),停止流程
|
|
70
|
-
- 不得在编译失败时继续宣称"准备进入测试阶段"
|
|
71
|
-
|
|
72
|
-
#### 0.1b 依赖模块预安装检查
|
|
73
|
-
|
|
74
|
-
> **强制检查,不可跳过。** 即使服务已运行,worktree 中的编译仍可能缺少依赖(服务可能从主目录启动)。
|
|
75
|
-
|
|
76
|
-
**在编译前检查上游依赖模块是否已安装到本地仓库**:
|
|
77
|
-
|
|
78
|
-
```powershell
|
|
79
|
-
powershell.exe -Command "Test-Path '$env:USERPROFILE\.m2\repository\<group-path>\<module>\*\*.jar'"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
如果缺失,先安装上游依赖:
|
|
83
|
-
```powershell
|
|
84
|
-
powershell.exe -Command "mvn install -pl <upstream-modules> -am -DskipTests -nsu"
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
#### 0.2 认证方案确认
|
|
88
|
-
|
|
89
|
-
| 方案 | 适用场景 | 操作 |
|
|
90
|
-
|------|----------|------|
|
|
91
|
-
| A. 配置放行 | 纯本地开发 | `application-local.yml` 的 `permit-all-urls` |
|
|
92
|
-
| B. 本地 Token | 有本地 SSO | 通过本地登录接口获取 |
|
|
93
|
-
| C. 权限降级 | 临时测试 | 无认证上下文时降级为 admin |
|
|
94
|
-
|
|
95
|
-
> ⚠️ 方案 A 或 C 时,测试完成后确认还原配置。
|
|
96
|
-
|
|
97
|
-
#### 0.3 请求头确认
|
|
98
|
-
|
|
99
|
-
所有 HTTP 请求必须带:`Content-Type: application/json; charset=UTF-8` 及 build-profile 的 `httpHeaders`。
|
|
100
|
-
|
|
101
|
-
#### 0.4 编码确认
|
|
102
|
-
|
|
103
|
-
Windows 环境特别注意:
|
|
104
|
-
- 不要用 `curl` 发送含中文的请求体(curl 在 Windows 默认用 GBK 编码)
|
|
105
|
-
- 优先用 PowerShell Node API runner;单次临时请求可用 PowerShell `Invoke-RestMethod`
|
|
106
|
-
- curl 仅作为最后兜底,且必须用 UTF-8 JSON body file
|
|
107
|
-
|
|
108
|
-
#### 0.5 服务确认、Service Decision Gate 与启动等待
|
|
109
|
-
|
|
110
|
-
检查服务是否运行(优先使用已知接口,不依赖 `/actuator/health`):
|
|
111
|
-
|
|
112
|
-
```powershell
|
|
113
|
-
powershell.exe -NoProfile -Command "Test-NetConnection -ComputerName localhost -Port <port>"
|
|
114
|
-
powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.0.1:<port>/<context-path>/meta' -UseBasicParsing -TimeoutSec 3).StatusCode } catch { $_.Exception.Message }"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**如果端口已有 <service-module-from-build-profile> 进程,必须先进入 Service Decision Gate,禁止先跑业务接口。**
|
|
118
|
-
|
|
119
|
-
需要展示:pid、profile、startTime、commandLine、healthResult、serviceFingerprint(match/missing/mismatch)、当前源码是否晚于服务启动时间。
|
|
120
|
-
|
|
121
|
-
询问用户:
|
|
122
|
-
|
|
123
|
-
```text
|
|
124
|
-
1. 直接复用当前服务
|
|
125
|
-
2. 重启服务,使用 known-good-test-profile
|
|
126
|
-
3. 跳过接口测试,只执行单元测试
|
|
127
|
-
4. 停止测试
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
只有 service-fingerprint 与当前真实 diffHash/profile/sdkUrl/startCommandHash 完全匹配时,才允许自动复用。否则必须询问。
|
|
131
|
-
|
|
132
|
-
**如果服务未运行**,询问用户:
|
|
133
|
-
|
|
134
|
-
```text
|
|
135
|
-
服务未启动(端口 <port> 无响应)。请选择:
|
|
136
|
-
1. AI 启动 — 使用 known-good-test-profile,serviceState=AI_STARTED
|
|
137
|
-
2. 用户手动启动 — 启动后告诉我继续,serviceState=USER_STARTED
|
|
138
|
-
3. 跳过接口测试 — 只运行单元测试,serviceState=NOT_STARTED
|
|
139
|
-
4. 停止测试
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**如果用户选择 AI 启动或 AI 重启**:
|
|
143
|
-
1. 从 `known-good-test-profile` 读取 module/profile/port/healthUrl/sdkUrl。
|
|
144
|
-
2. 生成 ASCII overlay:`C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml`。
|
|
145
|
-
3. 禁止默认直接 Edit tracked `application-local-dev.yml`。
|
|
146
|
-
4. 默认启动命令:
|
|
147
|
-
```powershell
|
|
148
|
-
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module-from-build-profile> -Dspring-boot.run.profiles=local-dev -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml'"
|
|
149
|
-
```
|
|
150
|
-
5. 写入 `service.pid`、`service-start-command.txt`、`service-start.log`、`service-fingerprint.json`。
|
|
151
|
-
6. 服务启动等待:0–30s 每 2s 探测;30–120s 每 5s 探测;>10s 必须输出状态行;>120s 读取最近 200 行日志。
|
|
152
|
-
7. 发现 `BindException` / `Could not resolve placeholder` / `Connection refused during bean init` / `BeanCreationException` / `Failed to start bean` / `BUILD FAILURE` 立即失败。
|
|
153
|
-
|
|
154
|
-
#### 0.5x 重入沿用(同一变更 harness-test 再次执行时)
|
|
155
|
-
|
|
156
|
-
满足以下**全部**条件时,可沿用上次服务决策,不重复询问:
|
|
157
|
-
|
|
158
|
-
1. 重入:同一 change-name 的 harness-test 再次执行(非首次)
|
|
159
|
-
2. 环境未变:PG 可用性、目标端口、执行器可用性与上次一致
|
|
160
|
-
3. 上次已确认执行器/服务方案(如"AI_STARTED,known-good-test-profile,端口 N")
|
|
161
|
-
4. 当前源码未改服务启动逻辑(如未改 main 启动路径、未改端口/profile 配置、未改 spring-boot:run 启动相关代码)
|
|
162
|
-
|
|
163
|
-
沿用时执行日志记录:`重入沿用上次服务决策 + 环境未变(PG=<同上次>、端口=<同上次>、执行器=<同上次>)`。
|
|
164
|
-
|
|
165
|
-
**不适用重入沿用**(仍须询问/重启):
|
|
166
|
-
- service-fingerprint 不匹配(diffHash 变化说明源码改了)
|
|
167
|
-
- 环境已变(PG 从不可用变可用、端口被占、执行器丢失)
|
|
168
|
-
- 上次 serviceState=USER_STARTED(用户手动启动,状态未知)
|
|
169
|
-
- 源码改动影响服务启动逻辑
|
|
170
|
-
|
|
171
|
-
#### 0.5d 服务生命周期收尾(即使测试失败也要进入 finally 清理)
|
|
172
|
-
|
|
173
|
-
测试结束前必须按 serviceState 分支处理:
|
|
174
|
-
|
|
175
|
-
- `AI_STARTED` → 默认 `Stop-Process -Id <pid> -Force`,删除 `service.pid`,记录 `testServiceStopped=✅`。
|
|
176
|
-
- `AI_RESTARTED_FROM_USER_SERVICE` → 默认停止新服务,报告中明确 `restoredOriginalService=❌ not supported`。
|
|
177
|
-
- `USER_STARTED` → 保留进程,报告中提示用户可手动停止。
|
|
178
|
-
- `REUSED_EXISTING` → 保留进程,除非用户明确要求关闭。
|
|
179
|
-
|
|
180
|
-
最终报告 / final-summary 必须包含:
|
|
181
|
-
|
|
182
|
-
```md
|
|
183
|
-
## 服务生命周期
|
|
184
|
-
| 项 | 值 |
|
|
185
|
-
|---|---|
|
|
186
|
-
| originalServicePid | ... / N/A |
|
|
187
|
-
| originalServiceStopped | ✅ / ❌ / N/A |
|
|
188
|
-
| testServicePid | ... / N/A |
|
|
189
|
-
| testServiceStopped | ✅ / ❌ / N/A |
|
|
190
|
-
| restoredOriginalService | ❌ not supported / N/A |
|
|
191
|
-
| finalPortState | no service / service running |
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
> 不要使用 Monitor 工具等待健康检查,直接用 PowerShell 检查已知接口。`/actuator/health` 可能返回 404。
|
|
195
|
-
|
|
196
|
-
#### 0.5b 配置文件完整性检查
|
|
197
|
-
|
|
198
|
-
**如果使用 worktree**,检查配置文件是否完整:
|
|
199
|
-
|
|
200
|
-
```powershell
|
|
201
|
-
powershell.exe -Command "Test-Path '<worktree-path>/<module>/src/main/resources/application-<profile>.yml'"
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
如果缺失,从主目录复制:
|
|
205
|
-
```powershell
|
|
206
|
-
powershell.exe -Command "Copy-Item '<main-dir>/<module>/src/main/resources/application-<profile>.yml' '<worktree-path>/<module>/src/main/resources/' -Force"
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
**检查关键配置项**(读取配置文件内容确认):
|
|
210
|
-
- `workflow.baseUrl`(或类似条件属性)— 缺失会导致 Bean 创建失败
|
|
211
|
-
- `spring.cloud.nacos.discovery.register-enabled: false` — 缺失会导致线上流量路由到本地
|
|
212
|
-
- `udp.security.permit-all-urls` — 需包含本次测试的接口路径
|
|
213
|
-
|
|
214
|
-
#### 0.5c Playwright 远程访问确认
|
|
215
|
-
|
|
216
|
-
如果接口测试需要通过 Playwright 访问远程服务(如远程 SSO 获取 token),确认 Playwright MCP 配置允许目标地址。
|
|
217
|
-
|
|
218
|
-
检查 `.mcp.json` 或全局 MCP 配置中 Playwright 的 `allowedOrigins`:
|
|
219
|
-
```json
|
|
220
|
-
{
|
|
221
|
-
"playwright": {
|
|
222
|
-
"allowedOrigins": ["http://localhost:*", "http://<remote-ip>:*"]
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
> 如果 Playwright 无法访问远程地址,降级为 PowerShell Invoke-RestMethod 获取 token。
|
|
228
|
-
|
|
229
|
-
#### 0.6 Nacos 风险确认
|
|
230
|
-
|
|
231
|
-
确认 `application-local.yml` 中 `spring.cloud.nacos.discovery.register-enabled: false`。
|
|
232
|
-
|
|
233
|
-
## 接口测试执行检查
|
|
234
|
-
|
|
235
|
-
### Token 缓存与复用
|
|
236
|
-
|
|
237
|
-
- [ ] 检查 `.harness/changes/<change-name>/runtime/credential-cache.json` 是否存在
|
|
238
|
-
- [ ] 如果存在 → 读取已有 token,用**本地轻量接口**(直连本地 baseURL)验证有效性
|
|
239
|
-
- [ ] 验证通过 → 复用,不重新登录、不访问远程 SSO
|
|
240
|
-
- [ ] 验证失败(401/expired) → 才访问远程 SSO 重新获取后写回 cache
|
|
241
|
-
- [ ] 同一上下文中,前面已获取过 token 时必须优先复用
|
|
242
|
-
- [ ] **同一次测试流程内只允许因 token 失效重新获取 1 次**;超过 1 次 → 🟡 WARN,记录原因
|
|
243
|
-
- [ ] API runner 用 request context / node fetch 直连本地 baseURL,**不依赖浏览器当前页面 origin**
|
|
244
|
-
- [ ] **不得因浏览器 origin 在 SSO 就重新获取 token**;禁止"SSO 取 token→导航 localhost→重新取 token"
|
|
245
|
-
- [ ] **不得在报告、execution-log、对话总结中输出明文 token**
|
|
246
|
-
|
|
247
|
-
### 单元测试复用(ledger 驱动)
|
|
248
|
-
|
|
249
|
-
- [ ] Phase 1 前读取 `.harness/changes/<change-name>/evidence/verification-ledger.json`
|
|
250
|
-
- [ ] 判断是否复用 run 的 unitTest:diffHash 一致 + module/profile 一致 + scope 一致或更严格 + run 后无行为性修改 + run 实际跑了全量 mvn test
|
|
251
|
-
- [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-run 单元测试结果"
|
|
252
|
-
- [ ] 不复用 → 重跑 `mvn test -pl <module>`,结果写回 ledger 的 `unitTest` 项
|
|
253
|
-
|
|
254
|
-
### 批量 Runner(强制单次 PowerShell + Node 绝对路径执行)
|
|
255
|
-
|
|
256
|
-
- [ ] 0.0y preflight 已通过,`preflight.json` 包含 `nodeAbsolutePath`
|
|
257
|
-
- [ ] 生成 `.harness/changes/<change-name>/runtime/api-test-runner.mjs`,**按 setup / test / cleanup 三阶段结构**编写
|
|
258
|
-
- [ ] payload 来自 `<XxxSaveReqVO>` / Controller / 真实样例,runner 注释/JSON 中标注字段来源;**禁止临场猜字段、禁止先跑失败接口再补**
|
|
259
|
-
- [ ] 唯一前缀 `JAVATEST_<change-name>_<timestamp>_<random>`,priority/projectSubtype 用随机或避让策略,防 `priority=1` 冲突
|
|
260
|
-
- [ ] 通过**一次命令**执行(PowerShell + node 绝对路径):
|
|
261
|
-
```powershell
|
|
262
|
-
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '<nodeAbsolutePath>' '.harness/changes/<change-name>/runtime/api-test-runner.mjs'"
|
|
263
|
-
```
|
|
264
|
-
- [ ] **禁止**裸 `node ...`、禁止用 Bash 执行 node
|
|
265
|
-
- [ ] runner 失败 ≤ 1 次重试;仍失败 → 提示用户切换权限模式或手动执行,**不得继续盲目重试或长时间等待**
|
|
266
|
-
- [ ] runner 输出 `.harness/changes/<change-name>/runtime/api-test-results.json`,包含
|
|
267
|
-
`passed/failed/blocked/skipped/setupErrors/cleanupResult/tokenRefreshCount`
|
|
268
|
-
- [ ] **setup 失败时依赖该数据的场景必须标 🟡 BLOCKED,不得用 null ID 继续请求**
|
|
269
|
-
- [ ] 主会话只 Read JSON 生成摘要,不再调用 MCP
|
|
270
|
-
- [ ] **只有 Node runner 不可执行才降级**:PowerShell batch (.ps1) → 多次 MCP `browser_evaluate` → curl
|
|
271
|
-
- [ ] **如果 Node 在 PowerShell 可用,禁止使用 Playwright MCP 逐条执行接口测试**
|
|
272
|
-
- [ ] runner 直连本地 baseURL,复用 token,不依赖浏览器 origin
|
|
273
|
-
- [ ] 记录每个请求的 durationMs、status、code、message、assertionResult
|
|
274
|
-
- [ ] 支持失败时继续执行后续非依赖场景
|
|
275
|
-
- [ ] 报告区分四种执行器:**PowerShell Node API runner / PowerShell batch / Playwright MCP browser_evaluate / curl**(不得与"Playwright"混写)
|
|
276
|
-
|
|
277
|
-
### 测试数据命名
|
|
278
|
-
|
|
279
|
-
- [ ] 所有测试数据使用前缀 `JAVATEST_<change-name>_<timestamp>_<random>`
|
|
280
|
-
- [ ] 测试报告记录测试数据表(ID、Code、用途、是否需要清理)
|
|
281
|
-
- [ ] 测试结束后清理可清理的数据
|
|
282
|
-
- [ ] 不能清理的记录遗留数据和原因
|
|
283
|
-
|
|
284
|
-
### 请求耗时
|
|
285
|
-
|
|
286
|
-
- [ ] 每个请求记录 durationMs
|
|
287
|
-
- [ ] durationMs > 10000 → 🟡SLOW,说明原因
|
|
288
|
-
- [ ] durationMs > 30000 → ❌TIMEOUT_RISK,说明原因
|
|
289
|
-
|
|
290
|
-
## 关门检查(⚠️ 结束前强制执行)
|
|
291
|
-
|
|
292
|
-
- [ ] `powershell.exe -NoProfile -Command "git status --porcelain"`
|
|
293
|
-
- [ ] `powershell.exe -NoProfile -Command "git diff --stat"`
|
|
294
|
-
- [ ] `powershell.exe -NoProfile -Command "git diff --check"`(如果失败 → 最终结果 ❌FAIL)
|
|
295
|
-
- [ ] 检查报告和日志是否包含明文 token/password/secret/access-key/client-secret
|
|
296
|
-
- [ ] 检查 `.harness/changes/<change>/runtime/` 是否不会被提交(.gitignore 确认)
|
|
297
|
-
- [ ] **服务生命周期收尾**:AI_STARTED→Stop-Process / USER_STARTED→提示 / REUSED_EXISTING→保留或确认 / NOT_STARTED→N/A
|
|
298
|
-
- [ ] 检查测试数据是否需要清理
|
|
299
|
-
- [ ] 检查请求执行器结果是否完整(4 种执行器,未与 API runner 混写)
|
|
300
|
-
- [ ] 检查是否存在慢请求或超时风险
|
|
301
|
-
- [ ] **API 维度状态正确**:5 PASS + 9 BLOCKED + 1 FAIL → `apiTest=PARTIAL`,不得写成 `NOT_RUN`
|
|
302
|
-
- [ ] 如果存在未清理测试数据、fallback 请求执行器、慢请求或环境变更 → 至少 🟡WARN
|
|
303
|
-
|
|
304
|
-
## 关键原则
|
|
305
|
-
|
|
306
|
-
- 如果有项目配置文件,优先从 `.harness/config/harness-test-config.md` 读取并应用(含 `known-good-test-profile`)
|
|
307
|
-
- 环境准备(阶段 0)的 **0.0y 命令执行模式 preflight + 7 项检查 + Playwright 探测** 必须在测试之前全部通过
|
|
308
|
-
- 单元测试优先于接口测试(先跑 `mvn test`,通过后再跑接口)
|
|
309
|
-
- 接口测试优先级:**PowerShell Node API runner > PowerShell batch > Playwright MCP browser_evaluate > curl**
|
|
310
|
-
- 单用例失败不阻塞后续用例;setup 失败时依赖场景必须标 🟡 BLOCKED,**不得用 null ID 继续请求**
|
|
311
|
-
- 失败类型必须区分:代码 Bug vs 测试脚本问题 vs 预存问题
|
|
312
|
-
- 测试数据使用唯一前缀命名 + 唯一字段(priority/projectSubtype)随机或避让,测试后确认清理或记录遗留
|
|
313
|
-
- 测试报告持久化到 `.harness/changes/<change-name>/reports/test/test-report-YYYYMMDD-HHmm.md`(时间戳区分多次运行)
|
|
314
|
-
- 请求执行器必须在报告中明确记录(四种执行器,含降级原因)
|
|
315
|
-
- 请求耗时统计必须包含在报告中
|
|
316
|
-
- 服务由 AI 启动的情况,测试结束默认 Stop-Process;**即使测试失败也要进入 finally 清理**
|
|
1
|
+
---
|
|
2
|
+
description: harness-test 的 Phase 0 环境准备 + Playwright 探测 + 关门检查清单。仅在执行测试前的环境准备阶段读取。
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# harness-test 检查清单 — Phase 0 环境准备 + 关门检查
|
|
6
|
+
|
|
7
|
+
这 7 项确认完了再开始测试。每一项背后都有踩坑经历。
|
|
8
|
+
|
|
9
|
+
#### 0.0 加载项目配置(如存在)与确定变更名
|
|
10
|
+
|
|
11
|
+
先检查当前项目的测试配置文件(按优先级查找):
|
|
12
|
+
|
|
13
|
+
1. **优先**:`.harness/config/harness-test-config.md`(集中配置目录)
|
|
14
|
+
2. **兼容**:`harness-test/harness-test-config.md(兼容旧路径)`(旧路径,过渡期仍支持)
|
|
15
|
+
|
|
16
|
+
如果任一文件存在,**必须先读取并应用其中的配置**。配置文件通常包含:
|
|
17
|
+
|
|
18
|
+
- **登录端点**:本地无法直接登录时,远程 SSO/Gateway 的登录 URL
|
|
19
|
+
- **测试账号**:各权限级别的用户名密码(如 admin、一层组织管理员等)
|
|
20
|
+
- **真实测试数据**:有效的部门编码和名称、项目 ID、规则 ID 等
|
|
21
|
+
- **环境调整**:需要使用的 profile、需要临时放行的 URL 路径、需要跳过的模块
|
|
22
|
+
- **避坑补充**:本项目特有的已知问题和解决方案
|
|
23
|
+
|
|
24
|
+
**Profile 选择**(从配置文件读取,如无配置则询问用户):
|
|
25
|
+
|
|
26
|
+
| Profile | 适用场景 | 配置文件 |
|
|
27
|
+
|---------|---------|---------|
|
|
28
|
+
| `local` | 连接远程数据库/Redis | `application-local.yml` |
|
|
29
|
+
| `local-dev` | 完全本地隔离 | `application-local-dev.yml` |
|
|
30
|
+
|
|
31
|
+
> **关键**:不指定 profile 时默认使用 `application.yml` 中的配置(可能指向生产环境),必须显式指定。启动命令必须包含 `--spring.profiles.active=<profile>`。
|
|
32
|
+
|
|
33
|
+
然后确定变更名:用 Glob 搜索 `.harness/changes/*/plans/*-plan.md`(**排除 `.harness/archive/*/`**),读取 frontmatter 提取 `change-name`。
|
|
34
|
+
|
|
35
|
+
#### 0.0y:命令执行模式 preflight(⚠️ 必须在编译/启动服务/生成 runner 之前执行)
|
|
36
|
+
|
|
37
|
+
- [ ] 检查 PowerShell 基础命令:`powershell.exe -NoProfile -Command "$PSVersionTable.PSVersion"` 返回 exitCode=0
|
|
38
|
+
- [ ] 检查 Node 绝对路径:`powershell.exe -NoProfile -Command "& 'C:\nvm4w\nodejs\node.exe' --version"` 返回 exitCode=0
|
|
39
|
+
- [ ] 检查 Maven 可用性:`powershell.exe -NoProfile -Command "mvn -version"` 返回 exitCode=0
|
|
40
|
+
- [ ] 检查安全分类器:上述任一命令是否返回"安全分类器暂时不可用" / Auto mode 拦截 → **不应出现**
|
|
41
|
+
- [ ] 将通过的 `nodeAbsolutePath` / `powershellVersion` / `mvnVersion` 写入 `.harness/changes/<change-name>/runtime/preflight.json`
|
|
42
|
+
- [ ] **任一情况触发硬停**:原文输出"❌ 命令执行模式不可用:PowerShell/Node runner 无法稳定执行...",**不得继续编译/启动服务/生成 runner,不得长时间等待,不得盲目降级到 Playwright MCP**
|
|
43
|
+
- [ ] 用户确认切换权限模式后,**重新执行 0.0y**;重试 ≤ 1 次
|
|
44
|
+
|
|
45
|
+
#### 0.0x:fallback 执行器探测(仅在 Node runner 不可用时执行)
|
|
46
|
+
|
|
47
|
+
- [ ] 如果 0.0y 已确认 PowerShell Node API runner 可用:标记 `NOT_NEEDED`,**跳过本阶段**,直接使用 Node runner
|
|
48
|
+
- [ ] 仅当 Node runner 不可用时,检查 PowerShell batch runner (`.ps1`) 是否可用
|
|
49
|
+
- [ ] 仅当 PowerShell batch 也不可用时,检查 Claude Code 是否暴露 Playwright MCP 工具(`mcp__plugin_playwright_playwright__*` 存在)
|
|
50
|
+
- [ ] 检查 `claude mcp list` 中是否有 playwright(如果可以执行命令)
|
|
51
|
+
- [ ] 检查 `@playwright/mcp` 是否可启动
|
|
52
|
+
- [ ] 检查当前 skill 的 `allowed-tools` 是否允许 Playwright 相关工具
|
|
53
|
+
- [ ] 输出 fallback 执行器可用性表格(见 reference.md)
|
|
54
|
+
- [ ] 记录决策:PowerShell Node API runner / PowerShell batch / Playwright MCP browser_evaluate / curl fallback
|
|
55
|
+
- [ ] 如果 fallback 不可用,必须写明原因,不得静默改用 curl
|
|
56
|
+
|
|
57
|
+
#### 0.1 编译确认
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
powershell.exe -Command "Test-Path 'target/classes/<package>/<ChangedClass>.class'"
|
|
61
|
+
```
|
|
62
|
+
编译产物时间戳早于源文件 → 重新编译:
|
|
63
|
+
```powershell
|
|
64
|
+
powershell.exe -Command "mvn compile -pl <module> -o -q"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**编译成功必须有证据**:
|
|
68
|
+
- mvn 输出包含 `BUILD SUCCESS` 才能继续测试
|
|
69
|
+
- 如果命令被 hook 拒绝(`Denied` / `PreToolUse:Bash hook error`),停止流程
|
|
70
|
+
- 不得在编译失败时继续宣称"准备进入测试阶段"
|
|
71
|
+
|
|
72
|
+
#### 0.1b 依赖模块预安装检查
|
|
73
|
+
|
|
74
|
+
> **强制检查,不可跳过。** 即使服务已运行,worktree 中的编译仍可能缺少依赖(服务可能从主目录启动)。
|
|
75
|
+
|
|
76
|
+
**在编译前检查上游依赖模块是否已安装到本地仓库**:
|
|
77
|
+
|
|
78
|
+
```powershell
|
|
79
|
+
powershell.exe -Command "Test-Path '$env:USERPROFILE\.m2\repository\<group-path>\<module>\*\*.jar'"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
如果缺失,先安装上游依赖:
|
|
83
|
+
```powershell
|
|
84
|
+
powershell.exe -Command "mvn install -pl <upstream-modules> -am -DskipTests -nsu"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### 0.2 认证方案确认
|
|
88
|
+
|
|
89
|
+
| 方案 | 适用场景 | 操作 |
|
|
90
|
+
|------|----------|------|
|
|
91
|
+
| A. 配置放行 | 纯本地开发 | `application-local.yml` 的 `permit-all-urls` |
|
|
92
|
+
| B. 本地 Token | 有本地 SSO | 通过本地登录接口获取 |
|
|
93
|
+
| C. 权限降级 | 临时测试 | 无认证上下文时降级为 admin |
|
|
94
|
+
|
|
95
|
+
> ⚠️ 方案 A 或 C 时,测试完成后确认还原配置。
|
|
96
|
+
|
|
97
|
+
#### 0.3 请求头确认
|
|
98
|
+
|
|
99
|
+
所有 HTTP 请求必须带:`Content-Type: application/json; charset=UTF-8` 及 build-profile 的 `httpHeaders`。
|
|
100
|
+
|
|
101
|
+
#### 0.4 编码确认
|
|
102
|
+
|
|
103
|
+
Windows 环境特别注意:
|
|
104
|
+
- 不要用 `curl` 发送含中文的请求体(curl 在 Windows 默认用 GBK 编码)
|
|
105
|
+
- 优先用 PowerShell Node API runner;单次临时请求可用 PowerShell `Invoke-RestMethod`
|
|
106
|
+
- curl 仅作为最后兜底,且必须用 UTF-8 JSON body file
|
|
107
|
+
|
|
108
|
+
#### 0.5 服务确认、Service Decision Gate 与启动等待
|
|
109
|
+
|
|
110
|
+
检查服务是否运行(优先使用已知接口,不依赖 `/actuator/health`):
|
|
111
|
+
|
|
112
|
+
```powershell
|
|
113
|
+
powershell.exe -NoProfile -Command "Test-NetConnection -ComputerName localhost -Port <port>"
|
|
114
|
+
powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.0.1:<port>/<context-path>/meta' -UseBasicParsing -TimeoutSec 3).StatusCode } catch { $_.Exception.Message }"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**如果端口已有 <service-module-from-build-profile> 进程,必须先进入 Service Decision Gate,禁止先跑业务接口。**
|
|
118
|
+
|
|
119
|
+
需要展示:pid、profile、startTime、commandLine、healthResult、serviceFingerprint(match/missing/mismatch)、当前源码是否晚于服务启动时间。
|
|
120
|
+
|
|
121
|
+
询问用户:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
1. 直接复用当前服务
|
|
125
|
+
2. 重启服务,使用 known-good-test-profile
|
|
126
|
+
3. 跳过接口测试,只执行单元测试
|
|
127
|
+
4. 停止测试
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
只有 service-fingerprint 与当前真实 diffHash/profile/sdkUrl/startCommandHash 完全匹配时,才允许自动复用。否则必须询问。
|
|
131
|
+
|
|
132
|
+
**如果服务未运行**,询问用户:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
服务未启动(端口 <port> 无响应)。请选择:
|
|
136
|
+
1. AI 启动 — 使用 known-good-test-profile,serviceState=AI_STARTED
|
|
137
|
+
2. 用户手动启动 — 启动后告诉我继续,serviceState=USER_STARTED
|
|
138
|
+
3. 跳过接口测试 — 只运行单元测试,serviceState=NOT_STARTED
|
|
139
|
+
4. 停止测试
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**如果用户选择 AI 启动或 AI 重启**:
|
|
143
|
+
1. 从 `known-good-test-profile` 读取 module/profile/port/healthUrl/sdkUrl。
|
|
144
|
+
2. 生成 ASCII overlay:`C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml`。
|
|
145
|
+
3. 禁止默认直接 Edit tracked `application-local-dev.yml`。
|
|
146
|
+
4. 默认启动命令:
|
|
147
|
+
```powershell
|
|
148
|
+
powershell.exe -NoProfile -Command "mvn spring-boot:run -pl <module-from-build-profile> -Dspring-boot.run.profiles=local-dev -Dspring-boot.run.jvmArguments='-Dspring.config.additional-location=file:C:/temp/harness-test-overlay/<change-name>/application-harness-test.yml'"
|
|
149
|
+
```
|
|
150
|
+
5. 写入 `service.pid`、`service-start-command.txt`、`service-start.log`、`service-fingerprint.json`。
|
|
151
|
+
6. 服务启动等待:0–30s 每 2s 探测;30–120s 每 5s 探测;>10s 必须输出状态行;>120s 读取最近 200 行日志。
|
|
152
|
+
7. 发现 `BindException` / `Could not resolve placeholder` / `Connection refused during bean init` / `BeanCreationException` / `Failed to start bean` / `BUILD FAILURE` 立即失败。
|
|
153
|
+
|
|
154
|
+
#### 0.5x 重入沿用(同一变更 harness-test 再次执行时)
|
|
155
|
+
|
|
156
|
+
满足以下**全部**条件时,可沿用上次服务决策,不重复询问:
|
|
157
|
+
|
|
158
|
+
1. 重入:同一 change-name 的 harness-test 再次执行(非首次)
|
|
159
|
+
2. 环境未变:PG 可用性、目标端口、执行器可用性与上次一致
|
|
160
|
+
3. 上次已确认执行器/服务方案(如"AI_STARTED,known-good-test-profile,端口 N")
|
|
161
|
+
4. 当前源码未改服务启动逻辑(如未改 main 启动路径、未改端口/profile 配置、未改 spring-boot:run 启动相关代码)
|
|
162
|
+
|
|
163
|
+
沿用时执行日志记录:`重入沿用上次服务决策 + 环境未变(PG=<同上次>、端口=<同上次>、执行器=<同上次>)`。
|
|
164
|
+
|
|
165
|
+
**不适用重入沿用**(仍须询问/重启):
|
|
166
|
+
- service-fingerprint 不匹配(diffHash 变化说明源码改了)
|
|
167
|
+
- 环境已变(PG 从不可用变可用、端口被占、执行器丢失)
|
|
168
|
+
- 上次 serviceState=USER_STARTED(用户手动启动,状态未知)
|
|
169
|
+
- 源码改动影响服务启动逻辑
|
|
170
|
+
|
|
171
|
+
#### 0.5d 服务生命周期收尾(即使测试失败也要进入 finally 清理)
|
|
172
|
+
|
|
173
|
+
测试结束前必须按 serviceState 分支处理:
|
|
174
|
+
|
|
175
|
+
- `AI_STARTED` → 默认 `Stop-Process -Id <pid> -Force`,删除 `service.pid`,记录 `testServiceStopped=✅`。
|
|
176
|
+
- `AI_RESTARTED_FROM_USER_SERVICE` → 默认停止新服务,报告中明确 `restoredOriginalService=❌ not supported`。
|
|
177
|
+
- `USER_STARTED` → 保留进程,报告中提示用户可手动停止。
|
|
178
|
+
- `REUSED_EXISTING` → 保留进程,除非用户明确要求关闭。
|
|
179
|
+
|
|
180
|
+
最终报告 / final-summary 必须包含:
|
|
181
|
+
|
|
182
|
+
```md
|
|
183
|
+
## 服务生命周期
|
|
184
|
+
| 项 | 值 |
|
|
185
|
+
|---|---|
|
|
186
|
+
| originalServicePid | ... / N/A |
|
|
187
|
+
| originalServiceStopped | ✅ / ❌ / N/A |
|
|
188
|
+
| testServicePid | ... / N/A |
|
|
189
|
+
| testServiceStopped | ✅ / ❌ / N/A |
|
|
190
|
+
| restoredOriginalService | ❌ not supported / N/A |
|
|
191
|
+
| finalPortState | no service / service running |
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
> 不要使用 Monitor 工具等待健康检查,直接用 PowerShell 检查已知接口。`/actuator/health` 可能返回 404。
|
|
195
|
+
|
|
196
|
+
#### 0.5b 配置文件完整性检查
|
|
197
|
+
|
|
198
|
+
**如果使用 worktree**,检查配置文件是否完整:
|
|
199
|
+
|
|
200
|
+
```powershell
|
|
201
|
+
powershell.exe -Command "Test-Path '<worktree-path>/<module>/src/main/resources/application-<profile>.yml'"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
如果缺失,从主目录复制:
|
|
205
|
+
```powershell
|
|
206
|
+
powershell.exe -Command "Copy-Item '<main-dir>/<module>/src/main/resources/application-<profile>.yml' '<worktree-path>/<module>/src/main/resources/' -Force"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**检查关键配置项**(读取配置文件内容确认):
|
|
210
|
+
- `workflow.baseUrl`(或类似条件属性)— 缺失会导致 Bean 创建失败
|
|
211
|
+
- `spring.cloud.nacos.discovery.register-enabled: false` — 缺失会导致线上流量路由到本地
|
|
212
|
+
- `udp.security.permit-all-urls` — 需包含本次测试的接口路径
|
|
213
|
+
|
|
214
|
+
#### 0.5c Playwright 远程访问确认
|
|
215
|
+
|
|
216
|
+
如果接口测试需要通过 Playwright 访问远程服务(如远程 SSO 获取 token),确认 Playwright MCP 配置允许目标地址。
|
|
217
|
+
|
|
218
|
+
检查 `.mcp.json` 或全局 MCP 配置中 Playwright 的 `allowedOrigins`:
|
|
219
|
+
```json
|
|
220
|
+
{
|
|
221
|
+
"playwright": {
|
|
222
|
+
"allowedOrigins": ["http://localhost:*", "http://<remote-ip>:*"]
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
> 如果 Playwright 无法访问远程地址,降级为 PowerShell Invoke-RestMethod 获取 token。
|
|
228
|
+
|
|
229
|
+
#### 0.6 Nacos 风险确认
|
|
230
|
+
|
|
231
|
+
确认 `application-local.yml` 中 `spring.cloud.nacos.discovery.register-enabled: false`。
|
|
232
|
+
|
|
233
|
+
## 接口测试执行检查
|
|
234
|
+
|
|
235
|
+
### Token 缓存与复用
|
|
236
|
+
|
|
237
|
+
- [ ] 检查 `.harness/changes/<change-name>/runtime/credential-cache.json` 是否存在
|
|
238
|
+
- [ ] 如果存在 → 读取已有 token,用**本地轻量接口**(直连本地 baseURL)验证有效性
|
|
239
|
+
- [ ] 验证通过 → 复用,不重新登录、不访问远程 SSO
|
|
240
|
+
- [ ] 验证失败(401/expired) → 才访问远程 SSO 重新获取后写回 cache
|
|
241
|
+
- [ ] 同一上下文中,前面已获取过 token 时必须优先复用
|
|
242
|
+
- [ ] **同一次测试流程内只允许因 token 失效重新获取 1 次**;超过 1 次 → 🟡 WARN,记录原因
|
|
243
|
+
- [ ] API runner 用 request context / node fetch 直连本地 baseURL,**不依赖浏览器当前页面 origin**
|
|
244
|
+
- [ ] **不得因浏览器 origin 在 SSO 就重新获取 token**;禁止"SSO 取 token→导航 localhost→重新取 token"
|
|
245
|
+
- [ ] **不得在报告、execution-log、对话总结中输出明文 token**
|
|
246
|
+
|
|
247
|
+
### 单元测试复用(ledger 驱动)
|
|
248
|
+
|
|
249
|
+
- [ ] Phase 1 前读取 `.harness/changes/<change-name>/evidence/verification-ledger.json`
|
|
250
|
+
- [ ] 判断是否复用 run 的 unitTest:diffHash 一致 + module/profile 一致 + scope 一致或更严格 + run 后无行为性修改 + run 实际跑了全量 mvn test
|
|
251
|
+
- [ ] 复用 → 跳过重跑,标记"✅ 复用 harness-run 单元测试结果"
|
|
252
|
+
- [ ] 不复用 → 重跑 `mvn test -pl <module>`,结果写回 ledger 的 `unitTest` 项
|
|
253
|
+
|
|
254
|
+
### 批量 Runner(强制单次 PowerShell + Node 绝对路径执行)
|
|
255
|
+
|
|
256
|
+
- [ ] 0.0y preflight 已通过,`preflight.json` 包含 `nodeAbsolutePath`
|
|
257
|
+
- [ ] 生成 `.harness/changes/<change-name>/runtime/api-test-runner.mjs`,**按 setup / test / cleanup 三阶段结构**编写
|
|
258
|
+
- [ ] payload 来自 `<XxxSaveReqVO>` / Controller / 真实样例,runner 注释/JSON 中标注字段来源;**禁止临场猜字段、禁止先跑失败接口再补**
|
|
259
|
+
- [ ] 唯一前缀 `JAVATEST_<change-name>_<timestamp>_<random>`,priority/projectSubtype 用随机或避让策略,防 `priority=1` 冲突
|
|
260
|
+
- [ ] 通过**一次命令**执行(PowerShell + node 绝对路径):
|
|
261
|
+
```powershell
|
|
262
|
+
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '<nodeAbsolutePath>' '.harness/changes/<change-name>/runtime/api-test-runner.mjs'"
|
|
263
|
+
```
|
|
264
|
+
- [ ] **禁止**裸 `node ...`、禁止用 Bash 执行 node
|
|
265
|
+
- [ ] runner 失败 ≤ 1 次重试;仍失败 → 提示用户切换权限模式或手动执行,**不得继续盲目重试或长时间等待**
|
|
266
|
+
- [ ] runner 输出 `.harness/changes/<change-name>/runtime/api-test-results.json`,包含
|
|
267
|
+
`passed/failed/blocked/skipped/setupErrors/cleanupResult/tokenRefreshCount`
|
|
268
|
+
- [ ] **setup 失败时依赖该数据的场景必须标 🟡 BLOCKED,不得用 null ID 继续请求**
|
|
269
|
+
- [ ] 主会话只 Read JSON 生成摘要,不再调用 MCP
|
|
270
|
+
- [ ] **只有 Node runner 不可执行才降级**:PowerShell batch (.ps1) → 多次 MCP `browser_evaluate` → curl
|
|
271
|
+
- [ ] **如果 Node 在 PowerShell 可用,禁止使用 Playwright MCP 逐条执行接口测试**
|
|
272
|
+
- [ ] runner 直连本地 baseURL,复用 token,不依赖浏览器 origin
|
|
273
|
+
- [ ] 记录每个请求的 durationMs、status、code、message、assertionResult
|
|
274
|
+
- [ ] 支持失败时继续执行后续非依赖场景
|
|
275
|
+
- [ ] 报告区分四种执行器:**PowerShell Node API runner / PowerShell batch / Playwright MCP browser_evaluate / curl**(不得与"Playwright"混写)
|
|
276
|
+
|
|
277
|
+
### 测试数据命名
|
|
278
|
+
|
|
279
|
+
- [ ] 所有测试数据使用前缀 `JAVATEST_<change-name>_<timestamp>_<random>`
|
|
280
|
+
- [ ] 测试报告记录测试数据表(ID、Code、用途、是否需要清理)
|
|
281
|
+
- [ ] 测试结束后清理可清理的数据
|
|
282
|
+
- [ ] 不能清理的记录遗留数据和原因
|
|
283
|
+
|
|
284
|
+
### 请求耗时
|
|
285
|
+
|
|
286
|
+
- [ ] 每个请求记录 durationMs
|
|
287
|
+
- [ ] durationMs > 10000 → 🟡SLOW,说明原因
|
|
288
|
+
- [ ] durationMs > 30000 → ❌TIMEOUT_RISK,说明原因
|
|
289
|
+
|
|
290
|
+
## 关门检查(⚠️ 结束前强制执行)
|
|
291
|
+
|
|
292
|
+
- [ ] `powershell.exe -NoProfile -Command "git status --porcelain"`
|
|
293
|
+
- [ ] `powershell.exe -NoProfile -Command "git diff --stat"`
|
|
294
|
+
- [ ] `powershell.exe -NoProfile -Command "git diff --check"`(如果失败 → 最终结果 ❌FAIL)
|
|
295
|
+
- [ ] 检查报告和日志是否包含明文 token/password/secret/access-key/client-secret
|
|
296
|
+
- [ ] 检查 `.harness/changes/<change>/runtime/` 是否不会被提交(.gitignore 确认)
|
|
297
|
+
- [ ] **服务生命周期收尾**:AI_STARTED→Stop-Process / USER_STARTED→提示 / REUSED_EXISTING→保留或确认 / NOT_STARTED→N/A
|
|
298
|
+
- [ ] 检查测试数据是否需要清理
|
|
299
|
+
- [ ] 检查请求执行器结果是否完整(4 种执行器,未与 API runner 混写)
|
|
300
|
+
- [ ] 检查是否存在慢请求或超时风险
|
|
301
|
+
- [ ] **API 维度状态正确**:5 PASS + 9 BLOCKED + 1 FAIL → `apiTest=PARTIAL`,不得写成 `NOT_RUN`
|
|
302
|
+
- [ ] 如果存在未清理测试数据、fallback 请求执行器、慢请求或环境变更 → 至少 🟡WARN
|
|
303
|
+
|
|
304
|
+
## 关键原则
|
|
305
|
+
|
|
306
|
+
- 如果有项目配置文件,优先从 `.harness/config/harness-test-config.md` 读取并应用(含 `known-good-test-profile`)
|
|
307
|
+
- 环境准备(阶段 0)的 **0.0y 命令执行模式 preflight + 7 项检查 + Playwright 探测** 必须在测试之前全部通过
|
|
308
|
+
- 单元测试优先于接口测试(先跑 `mvn test`,通过后再跑接口)
|
|
309
|
+
- 接口测试优先级:**PowerShell Node API runner > PowerShell batch > Playwright MCP browser_evaluate > curl**
|
|
310
|
+
- 单用例失败不阻塞后续用例;setup 失败时依赖场景必须标 🟡 BLOCKED,**不得用 null ID 继续请求**
|
|
311
|
+
- 失败类型必须区分:代码 Bug vs 测试脚本问题 vs 预存问题
|
|
312
|
+
- 测试数据使用唯一前缀命名 + 唯一字段(priority/projectSubtype)随机或避让,测试后确认清理或记录遗留
|
|
313
|
+
- 测试报告持久化到 `.harness/changes/<change-name>/reports/test/test-report-YYYYMMDD-HHmm.md`(时间戳区分多次运行)
|
|
314
|
+
- 请求执行器必须在报告中明确记录(四种执行器,含降级原因)
|
|
315
|
+
- 请求耗时统计必须包含在报告中
|
|
316
|
+
- 服务由 AI 启动的情况,测试结束默认 Stop-Process;**即使测试失败也要进入 finally 清理**
|
|
317
317
|
- final-summary 的 apiTest 状态必须用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL(不得把 PARTIAL 写成 NOT_RUN)
|