@hunter-harness/workflow-harness 0.2.59 → 0.2.61
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/README.md +14 -16
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +43 -46
- package/harness/bundles/general/claude-code/harness-archive/checklist.md +10 -10
- package/harness/bundles/general/claude-code/harness-archive/reference.md +29 -22
- package/harness/bundles/general/claude-code/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
- 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 +4 -4
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +5 -3
- package/harness/bundles/general/claude-code/harness-run/checklist.md +10 -9
- package/harness/bundles/general/claude-code/harness-run/protocols.md +2 -0
- package/harness/bundles/general/claude-code/harness-run/reference.md +19 -16
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/claude-code/harness-test/checklist.md +2 -2
- package/harness/bundles/general/claude-code/harness-test/pitfalls.md +3 -3
- package/harness/bundles/general/claude-code/harness-test/reference.md +2 -2
- package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/general/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/general/claude-code/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/general/claude-code/scripts/harness_context.py +8 -2
- package/harness/bundles/general/claude-code/scripts/harness_events.py +5 -0
- package/harness/bundles/general/claude-code/scripts/harness_ledger.py +79 -2
- package/harness/bundles/general/claude-code/scripts/harness_profile.py +7 -0
- package/harness/bundles/general/claude-code/scripts/harness_state.py +22 -3
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/README.md +14 -16
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +43 -46
- package/harness/bundles/general/codebuddy/harness-archive/checklist.md +10 -10
- package/harness/bundles/general/codebuddy/harness-archive/reference.md +29 -22
- package/harness/bundles/general/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
- 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 +4 -4
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +5 -3
- package/harness/bundles/general/codebuddy/harness-run/checklist.md +10 -9
- package/harness/bundles/general/codebuddy/harness-run/protocols.md +2 -0
- package/harness/bundles/general/codebuddy/harness-run/reference.md +19 -16
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codebuddy/harness-test/checklist.md +2 -2
- package/harness/bundles/general/codebuddy/harness-test/pitfalls.md +3 -3
- package/harness/bundles/general/codebuddy/harness-test/reference.md +2 -2
- package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/general/codebuddy/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/general/codebuddy/scripts/harness_context.py +8 -2
- package/harness/bundles/general/codebuddy/scripts/harness_events.py +5 -0
- package/harness/bundles/general/codebuddy/scripts/harness_ledger.py +79 -2
- package/harness/bundles/general/codebuddy/scripts/harness_profile.py +7 -0
- package/harness/bundles/general/codebuddy/scripts/harness_state.py +22 -3
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/README.md +14 -16
- package/harness/bundles/general/codex/harness-archive/SKILL.md +43 -46
- package/harness/bundles/general/codex/harness-archive/checklist.md +10 -10
- package/harness/bundles/general/codex/harness-archive/reference.md +29 -22
- package/harness/bundles/general/codex/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
- 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 +4 -4
- package/harness/bundles/general/codex/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-run/SKILL.md +5 -3
- package/harness/bundles/general/codex/harness-run/checklist.md +10 -9
- package/harness/bundles/general/codex/harness-run/protocols.md +2 -0
- package/harness/bundles/general/codex/harness-run/reference.md +19 -16
- package/harness/bundles/general/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/codex/harness-test/checklist.md +2 -2
- package/harness/bundles/general/codex/harness-test/pitfalls.md +3 -3
- package/harness/bundles/general/codex/harness-test/reference.md +2 -2
- package/harness/bundles/general/codex/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/codex/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/codex/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/general/codex/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/general/codex/scripts/harness_context.py +8 -2
- package/harness/bundles/general/codex/scripts/harness_events.py +5 -0
- package/harness/bundles/general/codex/scripts/harness_ledger.py +79 -2
- package/harness/bundles/general/codex/scripts/harness_profile.py +7 -0
- package/harness/bundles/general/codex/scripts/harness_state.py +22 -3
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/README.md +14 -16
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +43 -46
- package/harness/bundles/general/cursor/harness-archive/checklist.md +10 -10
- package/harness/bundles/general/cursor/harness-archive/reference.md +29 -22
- package/harness/bundles/general/cursor/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
- 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 +4 -4
- package/harness/bundles/general/cursor/harness-review/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-run/SKILL.md +5 -3
- package/harness/bundles/general/cursor/harness-run/checklist.md +10 -9
- package/harness/bundles/general/cursor/harness-run/protocols.md +2 -0
- package/harness/bundles/general/cursor/harness-run/reference.md +19 -16
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-test/SKILL.md +2 -2
- package/harness/bundles/general/cursor/harness-test/checklist.md +2 -2
- package/harness/bundles/general/cursor/harness-test/pitfalls.md +3 -3
- package/harness/bundles/general/cursor/harness-test/reference.md +2 -2
- package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/cursor/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/general/cursor/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/general/cursor/scripts/harness_context.py +8 -2
- package/harness/bundles/general/cursor/scripts/harness_events.py +5 -0
- package/harness/bundles/general/cursor/scripts/harness_ledger.py +79 -2
- package/harness/bundles/general/cursor/scripts/harness_profile.py +7 -0
- package/harness/bundles/general/cursor/scripts/harness_state.py +22 -3
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/README.md +14 -16
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +43 -46
- package/harness/bundles/java/claude-code/harness-archive/checklist.md +10 -10
- package/harness/bundles/java/claude-code/harness-archive/reference.md +29 -22
- package/harness/bundles/java/claude-code/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
- 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 +2 -2
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +5 -3
- package/harness/bundles/java/claude-code/harness-run/protocols.md +2 -0
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/claude-code/harness-test/checklist.md +2 -2
- package/harness/bundles/java/claude-code/harness-test/pitfalls.md +3 -3
- package/harness/bundles/java/claude-code/harness-test/reference.md +2 -2
- package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/java/claude-code/scripts/harness_context.py +8 -2
- package/harness/bundles/java/claude-code/scripts/harness_events.py +5 -0
- package/harness/bundles/java/claude-code/scripts/harness_ledger.py +79 -2
- package/harness/bundles/java/claude-code/scripts/harness_profile.py +7 -0
- package/harness/bundles/java/claude-code/scripts/harness_state.py +22 -3
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/README.md +14 -16
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +43 -46
- package/harness/bundles/java/codebuddy/harness-archive/checklist.md +10 -10
- package/harness/bundles/java/codebuddy/harness-archive/reference.md +29 -22
- package/harness/bundles/java/codebuddy/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
- 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 +2 -2
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +5 -3
- package/harness/bundles/java/codebuddy/harness-run/protocols.md +2 -0
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/codebuddy/harness-test/checklist.md +2 -2
- package/harness/bundles/java/codebuddy/harness-test/pitfalls.md +3 -3
- package/harness/bundles/java/codebuddy/harness-test/reference.md +2 -2
- package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/java/codebuddy/scripts/harness_context.py +8 -2
- package/harness/bundles/java/codebuddy/scripts/harness_events.py +5 -0
- package/harness/bundles/java/codebuddy/scripts/harness_ledger.py +79 -2
- package/harness/bundles/java/codebuddy/scripts/harness_profile.py +7 -0
- package/harness/bundles/java/codebuddy/scripts/harness_state.py +22 -3
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/README.md +14 -16
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-archive/SKILL.md +43 -46
- package/harness/bundles/java/codex/harness-archive/checklist.md +10 -10
- package/harness/bundles/java/codex/harness-archive/reference.md +29 -22
- package/harness/bundles/java/codex/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
- 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 +2 -2
- package/harness/bundles/java/codex/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/codex/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-run/SKILL.md +5 -3
- package/harness/bundles/java/codex/harness-run/protocols.md +2 -0
- package/harness/bundles/java/codex/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/codex/harness-test/checklist.md +2 -2
- package/harness/bundles/java/codex/harness-test/pitfalls.md +3 -3
- package/harness/bundles/java/codex/harness-test/reference.md +2 -2
- package/harness/bundles/java/codex/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/codex/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/codex/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/java/codex/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/java/codex/scripts/harness_context.py +8 -2
- package/harness/bundles/java/codex/scripts/harness_events.py +5 -0
- package/harness/bundles/java/codex/scripts/harness_ledger.py +79 -2
- package/harness/bundles/java/codex/scripts/harness_profile.py +7 -0
- package/harness/bundles/java/codex/scripts/harness_state.py +22 -3
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/README.md +14 -16
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +43 -46
- package/harness/bundles/java/cursor/harness-archive/checklist.md +10 -10
- package/harness/bundles/java/cursor/harness-archive/reference.md +29 -22
- package/harness/bundles/java/cursor/harness-archive/templates/summary-data-template.json +1 -7
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
- 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 +2 -2
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +4 -4
- package/harness/bundles/java/cursor/harness-review/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-run/SKILL.md +5 -3
- package/harness/bundles/java/cursor/harness-run/protocols.md +2 -0
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-test/SKILL.md +2 -2
- package/harness/bundles/java/cursor/harness-test/checklist.md +2 -2
- package/harness/bundles/java/cursor/harness-test/pitfalls.md +3 -3
- package/harness/bundles/java/cursor/harness-test/reference.md +2 -2
- package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +18 -25
- package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/cursor/protocols/ledger-protocol.md +7 -7
- package/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +10 -9
- package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +5 -6
- package/harness/bundles/java/cursor/scripts/harness_archive.py +1043 -1108
- package/harness/bundles/java/cursor/scripts/harness_context.py +8 -2
- package/harness/bundles/java/cursor/scripts/harness_events.py +5 -0
- package/harness/bundles/java/cursor/scripts/harness_ledger.py +79 -2
- package/harness/bundles/java/cursor/scripts/harness_profile.py +7 -0
- package/harness/bundles/java/cursor/scripts/harness_state.py +22 -3
- package/harness/manifests/general/claude-code.json +35 -39
- package/harness/manifests/general/codebuddy.json +35 -39
- package/harness/manifests/general/codex.json +35 -39
- package/harness/manifests/general/cursor.json +35 -39
- package/harness/manifests/java/claude-code.json +35 -39
- package/harness/manifests/java/codebuddy.json +35 -39
- package/harness/manifests/java/codex.json +35 -39
- package/harness/manifests/java/cursor.json +35 -39
- package/hunter-workflow-family.json +5 -5
- package/package.json +1 -1
- package/harness/bundles/general/claude-code/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/general/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/general/codex/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/general/cursor/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/java/claude-code/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/java/codebuddy/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/java/codex/harness-archive/templates/render-summary.mjs +0 -299
- package/harness/bundles/java/cursor/harness-archive/templates/render-summary.mjs +0 -299
|
@@ -1,19 +1,35 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-archive 的归档流程、manifest、summary-data
|
|
2
|
+
description: harness-archive 的归档流程、manifest、summary-data 校验、目录结构与最终状态规则。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# harness-archive 参考
|
|
6
6
|
|
|
7
7
|
## 归档流程(对齐 SKILL.md Workflow)
|
|
8
8
|
|
|
9
|
-
- **Phase 0 读取上下文**:读 SKILL.md
|
|
10
|
-
- **Phase 1
|
|
11
|
-
- **Phase 2
|
|
9
|
+
- **Phase 0 读取上下文**:读 SKILL.md,解析 `$ARGUMENTS`,刷新一次状态快照。常规路径不预读全部参考资料。
|
|
10
|
+
- **Phase 1 确认归档对象**:使用 `harness_change.py resolve` 解析 contract/state 双层目录;多变更让用户选择或终止。
|
|
11
|
+
- **Phase 2 确定归档结局**:已有明确指令时直接使用;只有结局不明确或需要认领既有提交范围时才询问。
|
|
12
12
|
- **Phase 3 执行归档**:
|
|
13
|
-
1.
|
|
14
|
-
2. `meta/archive-meta.md`
|
|
15
|
-
3.
|
|
16
|
-
- **Phase 4
|
|
13
|
+
1. 运行一次 `python <skills-root>/scripts/harness_archive.py execute --change-dir ... --archive-root ".harness/archive" --intent <...> --closure <...> --json`。不要预先运行 `auto-gate` 或 `status`,也不要随后直接运行 `finalize`。候选收据缺失时,`execute` 会先尝试复用完整且身份一致的 `unitTestFull` ledger;产品内容未变化而 HEAD 因提交前移时,只重绑定候选身份,不重跑测试。
|
|
14
|
+
2. `execute` 在同一进程中复用预检结果,并负责且仅负责一次正式 `phase.start` / `phase.end`。准备耗时单独记录。`meta/archive-meta.md` 与 summary 均由 finalize 内部生成;禁止手写。
|
|
15
|
+
3. finalize 在 before-manifest 前执行 cleanup(删除 lock/pid/launcher/credential,截断超大日志)。它采用冻结优先:collect 前 fsync 事件并写 `evidence/evidence-cutoff.json`;cutoff 后不再追加事件。source consistency 或 summary consistency 失败时,脚本保留原 changes 目录并非零退出。
|
|
16
|
+
- **Phase 4 验证与提示**:优先使用 `execute` 返回的 manifest、ZIP 和上传回执;仅在结果缺失或不一致时读取 `checklist.md`。
|
|
17
|
+
|
|
18
|
+
数据库兼容性由项目能力配置决定。门禁策略既未声明 `database` 能力,也未把 `dbCompatibility` 列为必需验证时,汇总结果为 `NOT_APPLICABLE`,并以 `capability-profile` 作为类型化来源;只有明确具备数据库能力或明确要求该验证时才检查数据库证据。
|
|
19
|
+
|
|
20
|
+
## 基线折叠的恢复方式
|
|
21
|
+
|
|
22
|
+
`ARCHIVE_BASE_EQUALS_FEATURE_TIP` 表示正常完成的归档范围为空。不要修改 ledger、state snapshot 或制造空提交。按实际情况选择:
|
|
23
|
+
|
|
24
|
+
1. 本次变更确实对应仓库中一段已有提交:展示 base、tip 和产品文件清单,获得用户明确确认后运行:
|
|
25
|
+
|
|
26
|
+
```powershell
|
|
27
|
+
python <skills-root>/scripts/harness_archive.py adopt-existing-range --change-dir ".harness/changes/<change>" --base <base> --tip <tip> --reason "<中文原因>" --confirm-existing-range --json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
命令生成不可覆盖的 `meta/archive-range-adoption.json`,并绑定仓库身份、ownership、diffHash 和文件清单。随后只重跑一次 `execute`。
|
|
31
|
+
2. 需求未完成:使用 `--intent record-only --closure abandoned|superseded --closure-reason "<中文原因>"`。零产品增量作为 warning 保存,不阻止封存,且 `releaseEligible=false`。
|
|
32
|
+
3. 无法证明范围或用户拒绝确认:取消归档,保留原目录。
|
|
17
33
|
|
|
18
34
|
## manifest 生成
|
|
19
35
|
|
|
@@ -55,29 +71,21 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "harness-skills/harness-
|
|
|
55
71
|
|
|
56
72
|
报告必须突出业务目标和维护者结论。所有统计数字只能来自 events、summary-data、ledger 或 manifest,不得手写另一套。历史 archive 没有 `events.ndjson` 时,允许从 ledger/log/manifest 回放,并在 `reportPipeline.sources` 中记录来源。
|
|
57
73
|
|
|
58
|
-
##
|
|
59
|
-
|
|
60
|
-
默认使用 Node.js 渲染器:
|
|
61
|
-
|
|
62
|
-
```powershell
|
|
63
|
-
powershell.exe -NoProfile -Command "& '<node-path>' 'harness-skills/harness-archive/templates/render-summary.mjs' --summary '.harness/archive/<date-change>/reports/final/summary-data.json' --out '.harness/archive/<date-change>/reports/final/final-summary.html'"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
如模板脚本位于 skill 目录,则先复制到 archive 目录或直接引用 skill 路径。
|
|
74
|
+
## 平台展示与数据校验
|
|
67
75
|
|
|
68
|
-
|
|
76
|
+
平台监控直接读取 `reports/final/summary-data.json`,归档阶段不再生成本地 HTML 报告,也不得由模型临场维护第二份展示数据。
|
|
69
77
|
|
|
70
78
|
`validate` 是 `harness_archive.py finalize` 的内嵌同进程步骤(不再作为独立 `report validate` CLI 调用)。finalize 在 validate error 存在时恢复原 `.harness/changes/<change>` 目录并 exit 非 0,绝不归档未通过校验的变更。
|
|
71
79
|
|
|
72
80
|
## repair(归档后修复,不改写原版)
|
|
73
81
|
|
|
74
|
-
|
|
82
|
+
归档后发现来源事实与 summary-data 不一致时,使用显式修复(`replay` 仍为只读):
|
|
75
83
|
|
|
76
84
|
```powershell
|
|
77
85
|
python <skills-root>/scripts/harness_archive.py repair --archive-dir ".harness/archive/<archive-id>" --json
|
|
78
86
|
```
|
|
79
87
|
|
|
80
|
-
repair 在 archive
|
|
88
|
+
repair 在 archive 外生成候选版本。来源校验与数据校验通过后,写入不可变 `derived/v<N>/`(summary-data.json + repair-record.json),并更新 `derived/authoritative.json` pointer;原 summary 与 manifest 不覆盖。知识层仅从 authoritative pointer 且 hash 校验通过的版本提取。
|
|
81
89
|
|
|
82
90
|
## archive-meta.md 模板
|
|
83
91
|
|
|
@@ -103,8 +111,7 @@ cleanup 步骤(before-manifest 前):删除 `events.ndjson.lock`、`runtime
|
|
|
103
111
|
|
|
104
112
|
## 目录结构与最终状态规则
|
|
105
113
|
|
|
106
|
-
-
|
|
107
|
-
- `render-summary.mjs` 是默认 UTF-8 渲染器;finalize 内嵌调用,不得由模型临场写 HTML。
|
|
114
|
+
- 平台直接读取 `reports/final/summary-data.json`;本地不生成重复展示文件。
|
|
108
115
|
- 新路径优先:`meta/`、`logs/`、`evidence/`、`reports/final/`、`scripts/`、`backups/uncommitted-tests/`。旧路径只做读取兼容,不再写大量根目录文件。
|
|
109
116
|
- 当 `summary-data.json.verification.apiTests.status=USER_SKIPPED` 或 `verification.dbCompatibility.status=BLOCKED_BY_DBA`,最终状态必须是 `CONDITIONAL_OK`。
|
|
110
117
|
- 复杂 PowerShell 命令写入 `scripts/*.ps1` 后 `-File` 执行,禁止内联 `$` / `$_`。
|
|
@@ -203,13 +203,7 @@
|
|
|
203
203
|
"source": "events.ndjson | evidence/verification-ledger.json"
|
|
204
204
|
}
|
|
205
205
|
],
|
|
206
|
-
"artifacts": [
|
|
207
|
-
{
|
|
208
|
-
"path": "reports/final/final-summary.html",
|
|
209
|
-
"kind": "final-report",
|
|
210
|
-
"phase": "archive"
|
|
211
|
-
}
|
|
212
|
-
],
|
|
206
|
+
"artifacts": [],
|
|
213
207
|
"validationIssues": [],
|
|
214
208
|
"sourceConsistency": {
|
|
215
209
|
"ok": true,
|
|
@@ -3,7 +3,7 @@ name: harness-codebase-map
|
|
|
3
3
|
description: 分析现有代码库并生成 .harness/codebase/map/
|
|
4
4
|
下的结构化代码库地图。用于陌生项目理解、重大改造前梳理、harness-sync 提示 map 过期后的人工刷新。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-codebase-map — 代码库地图
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=af7bb8ab1a56ca6b; 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=af7bb8ab1a56ca6b; 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=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-plan — 需求规划
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -28,7 +28,7 @@ description: 将需求转化为设计文档+实施计划+完整测试场景表
|
|
|
28
28
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
29
29
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
30
30
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
31
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit
|
|
31
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
32
32
|
|
|
33
33
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
34
34
|
> 片段:read-protocol · plan 额外写 `meta/worktree.json`、`meta/change-context.json`
|
|
@@ -66,7 +66,7 @@ description: 将需求转化为设计文档+实施计划+完整测试场景表
|
|
|
66
66
|
| 阶段 | 动作 |
|
|
67
67
|
|------|------|
|
|
68
68
|
| 0 | 用当前解释器运行 `harness_runtime.py doctor`,后续消费绝对 argv;git status;脏工作区 → baseline 隔离 + `decision`,不询问 |
|
|
69
|
-
| 0.5 | 确定英文 `change-name` 后,根据需求生成一次简洁的中文展示标题(建议 6~24 个可见字符,保留必要产品名),执行 `harness_context.py prepare --phase plan --executor <tool> [--change <id>] --title "<中文标题>" --json
|
|
69
|
+
| 0.5 | 确定英文 `change-name` 后,根据需求生成一次简洁的中文展示标题(建议 6~24 个可见字符,保留必要产品名),执行 `harness_context.py prepare --phase plan --executor <tool> [--change <id>] --title "<中文标题>" --json`;英文名继续作为目录与稳定标识。立即运行一次 `harness_state.py capture --project . --change-dir "<executionRoot>" --json`,把此时 HEAD 固定为不可变 `changeBase`。以其唯一 change/executionRoot 初始化 plan-run-id 与 attempt(首次为 1),用同一身份追加 `phase.start`;从第一条知识查询起保留事件证据,并在 finalizer 中复用该身份 |
|
|
70
70
|
| 0.6 | 使用 `classify` 返回的默认阶段和项目能力生成 `plannedPhases`,向用户用中文说明可选阶段;确认后运行 `harness_context.py configure-plan --project . --change <id> --phases "plan,run,...,archive" --operator <tool> --reason "<中文原因>" --json`。无 Git 或不需要提交时不得加入 `submit`;快速迭代默认 `plan,run,archive`。省略项由脚本写入 `skippedPhases`,不得伪造阶段事件 |
|
|
71
71
|
| 1 | `harness-knowledge-query` 单次远端 query(失败记 `issue`,不建立本地索引或离线回退) |
|
|
72
72
|
| 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
|
|
@@ -107,7 +107,7 @@ change-name 范围变更 → 提示重命名或记 🟡WARN(→ `reference.md`
|
|
|
107
107
|
| 简单修复探索预算 | 预计不超过 2 个代码文件、且不涉及认证/安全/迁移/并发/API 契约重设时,最多 1 次合并 CodeGraph 查询 + 1 次定向补查、1 个用户澄清问题;无关发现只记非阻断说明 |
|
|
108
108
|
| 精简产物 | 简单修复只保留实现所需的设计、任务、边界和测试;禁止在 spec/plan/detail/scenarios 中重复同一背景和结论 |
|
|
109
109
|
| 测试执行成本 | 场景表必须设计快速反馈层级、预计时长、资源预算、超时和可复用证据;默认先跑受影响测试,再跑模块门禁,候选验证只复用身份一致的全量证据 |
|
|
110
|
-
| state snapshot |
|
|
110
|
+
| state snapshot | Plan 首次 capture 固定不可变 `changeBase`;后续刷新只更新 HEAD 和各段指纹,不得把当前 HEAD 写回为基线。读取 `state-snapshot.json` 了解 project/worktree root、HEAD/base、profile/rules/map/knowledge 指纹;失效由脚本刷新,**不得仅凭缓存跳过代码探索或验证门禁**(design §3.6) |
|
|
111
111
|
| 协议 | sensitive-info / evidence-based-reporting / state-layout |
|
|
112
112
|
|
|
113
113
|
产出物表、frontmatter、legacy 兼容、结束输出模板 → `reference.md`
|
|
@@ -4,7 +4,7 @@ description: 6维度代码审查(架构/安全/规范/兼容/测试/性能)
|
|
|
4
4
|
.harness/context-index.json)和测试场景表,在隔离上下文运行。仅当用户显式调用 /harness-review 时使用;不得在
|
|
5
5
|
test 结束后自动接续执行。
|
|
6
6
|
---
|
|
7
|
-
<!-- generated by harness_deploy.py; core=
|
|
7
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
8
8
|
# harness-review — 代码审查
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
@@ -38,7 +38,7 @@ description: 6维度代码审查(架构/安全/规范/兼容/测试/性能)
|
|
|
38
38
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
39
39
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
40
40
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
41
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit
|
|
41
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
42
42
|
|
|
43
43
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
44
44
|
> 片段:read-protocol
|
|
@@ -3,7 +3,7 @@ name: harness-run
|
|
|
3
3
|
description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编译验证),逐变更簇实现计划中的任务。仅当用户显式调用
|
|
4
4
|
/harness-run 时使用;不得因用户提到编码/实现就自动触发,也不得被其他阶段 skill 自动接续。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-run — 需求编码
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -48,7 +48,7 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
|
|
|
48
48
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
49
49
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
50
50
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
51
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit
|
|
51
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
52
52
|
|
|
53
53
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
54
54
|
> 片段:read-protocol · run 必读文件优先级 → `reference.md` Step 0
|
|
@@ -66,6 +66,8 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
|
|
|
66
66
|
3. **场景覆盖检查**(场景表映射,禁止用用例数冒充场景数)
|
|
67
67
|
4. **关门检查**(10 项)→ 只执行一次 `harness_gate.py close`;`--to-phase` 必须取返回的 `nextPhases` 或 `plannedPhases` 中 run 的真实后继,禁止写死 test。该命令内部关闭 test guard、写 `phase.end`、释放租约、写 handoff 并补传事件;不得再单独调用 test-guard/context close。失败时按结构化 `recoveryAction` 原样重试,已完成步骤幂等复用。
|
|
68
68
|
|
|
69
|
+
**阶段归属规则**:只用 `ownerPhase=run` 的任务和场景判定编码阶段结果。`ownerPhase=test` 的任务或场景按计划留给测试阶段属于正常移交,必须记录为“待测试阶段执行”,不得将编码阶段降级为 WARN;只有 run 自身负责的工作未完成、验证降级或证据异常时才使用 WARN。
|
|
70
|
+
|
|
69
71
|
**Fixback**:入口只用 `launch-review`,后续问题处理通过 `resolve-issue/close` 驱动,不得把修复说明当成新的普通 Run。只读取返回的受影响问题和文件;验证仅失效与 `changedFiles` 相交的目标,其他 Test/Review 证据继续复用。RED 优先;`manual`、`workflow` 或未选用的建议不进入代码批次,使用中文记录处理结论。
|
|
70
72
|
|
|
71
73
|
**执行器边界**:优先使用项目 build profile 和已有测试入口。禁止为了绕过 ESM、路径或参数问题临时生成 `.js`、`require` 脚本;需要文件式 runner 时使用项目已有入口,确需新增时遵循项目模块类型(例如 ESM 使用 `.mjs`)。runner 包装说明写入 `runnerCommand` 元数据,不得拼进账本的规范 `command`。
|
|
@@ -97,7 +99,7 @@ description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编
|
|
|
97
99
|
| **探测/ledger** | 基础设施先探测;每次构建/测试经 `harness_ledger.py record`;禁止手写 ledger JSON;用 canonical `diff-hash --change-dir` |
|
|
98
100
|
| **Gate/Guard** | 跨 Agent/阶段先用 `harness_context.py prepare/begin`;阶段门禁与上下文交接统一用 `harness_gate.py begin/close`;gate 内部负责 guard begin/close,模型只在需要记录测试来源或修复时调用 guard 的 `record/stage/mark` |
|
|
99
101
|
| **预存变更** | 保留 → baseline 隔离;存在则最终 ≥ 🟡WARN |
|
|
100
|
-
| **关门/状态** | 10 项关门检查;持久化 run-task-status
|
|
102
|
+
| **关门/状态** | 10 项关门检查;持久化 run-task-status;仅 run-owned P0 静态-only 导致 WARN;test-owned 待办正常移交 |
|
|
101
103
|
| **Worktree** | `requested=true` 时代码只写 worktree |
|
|
102
104
|
| **PowerShell** | 所有 git/构建经 `powershell.exe -NoProfile -Command` |
|
|
103
105
|
|
|
@@ -164,13 +164,14 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
|
|
|
164
164
|
- [ ] 单元测试场景逐条确认覆盖
|
|
165
165
|
- [ ] 接口测试场景逐条确认代码逻辑覆盖
|
|
166
166
|
- [ ] 数据兼容场景逐条确认(新字段 nullable、旧格式兼容)
|
|
167
|
-
- [ ]
|
|
168
|
-
- [ ] **覆盖状态必须正确分类**:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证
|
|
167
|
+
- [ ] 将覆盖结果展示给用户(✅/🟡/❌/⏳ 标注)
|
|
168
|
+
- [ ] **覆盖状态必须正确分类**:✅ 自动化测试通过 / 🟡 静态检查未真实测试 / ❌ 未验证 / ⏳ `ownerPhase=test` 按计划移交
|
|
169
169
|
- [ ] 🟡 静态检查 **不得计入"已测试通过"**
|
|
170
|
-
- [ ] 如果任一 P0 场景仅静态验证 → 最终结果必须是 🟡WARN
|
|
170
|
+
- [ ] 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证 → 最终结果必须是 🟡WARN
|
|
171
|
+
- [ ] `ownerPhase=test` 的任务或场景只记录为“待测试阶段执行”,不得将编码阶段降级为 WARN
|
|
171
172
|
- [ ] 最终摘要禁止写 `5✅ + 17🟡 = 22/22`,必须写 `自动化测试通过: 5 / 静态检查未真实验证: 17 / 未验证: 0`
|
|
172
173
|
- [ ] **禁止用测试用例数(如 178 tests)冒充场景数**——计数对象是 test-scenarios.md 的场景编号
|
|
173
|
-
- [ ]
|
|
174
|
+
- [ ] 四类计数自洽:run-owned 🟡/❌ 计入未验证;test-owned ⏳ 单列移交数量
|
|
174
175
|
- [ ] 输出为场景表映射(UT/API/COM/INT 逐条或范围 ✅/🟡/❌),不得只给聚合测试数
|
|
175
176
|
|
|
176
177
|
### 权限/组织过滤类变更:安全矩阵
|
|
@@ -238,15 +239,15 @@ description: harness-run 的执行检查清单。仅在编码执行时读取。
|
|
|
238
239
|
## 事件收尾记录
|
|
239
240
|
|
|
240
241
|
- [ ] append `phase.end` **仅**通过 `harness_gate.py close`(禁止手工 Edit `events.ndjson` / 直接 append phase.end 绕过 close 校验)
|
|
241
|
-
- [ ] 如果存在 🟡静态验证 P0 场景 → 下一步必须写 `必须先运行 /harness-test`,不得并列"提交代码"
|
|
242
|
-
- [ ]
|
|
242
|
+
- [ ] 如果存在 run-owned 🟡静态验证 P0 场景 → 下一步必须写 `必须先运行 /harness-test`,不得并列"提交代码"
|
|
243
|
+
- [ ] 如果 run 阶段负责的数据库迁移/DB 验证未完成 → 最终不得输出纯 ✅OK
|
|
243
244
|
|
|
244
245
|
### 最终状态分级
|
|
245
246
|
|
|
246
|
-
- [ ] **✅OK**:所有计划内代码变更完成 + 关键 P0 场景已自动化测试通过 + 构建成功 + 无预存变更或已隔离 + 无非计划文件混入 + 无 P0 静态-only 场景
|
|
247
|
-
- [ ] **🟡WARN**:存在 P0/P1 场景仅静态验证 / 存在预存变更 /
|
|
247
|
+
- [ ] **✅OK**:所有计划内代码变更完成 + run-owned 关键 P0 场景已自动化测试通过 + 构建成功 + 无预存变更或已隔离 + 无非计划文件混入 + 无 run-owned P0 静态-only 场景
|
|
248
|
+
- [ ] **🟡WARN**:存在 run-owned P0/P1 场景仅静态验证 / 存在预存变更 / run-owned 数据库验证未完成 / 低价值 Mock 替代真实验证
|
|
248
249
|
- [ ] **❌FAIL**:构建失败 / 有效测试失败 / RED 无法建立 / 非计划文件被修改且无法解释 / git diff --check 失败
|
|
249
|
-
- [ ]
|
|
250
|
+
- [ ] `ownerPhase=test` 的待办属于正常阶段移交;不得因为后续阶段尚未执行而把已完成的 run 标成 WARN
|
|
250
251
|
## PowerShell-only 命令检查
|
|
251
252
|
|
|
252
253
|
- [ ] 所有 git 命令使用 `powershell.exe -NoProfile -Command "git ..."`
|
|
@@ -40,6 +40,8 @@ REFACTOR 只允许不改变行为的整理。若重构改变行为,必须回
|
|
|
40
40
|
|
|
41
41
|
禁止把静态验证写成“测试通过”。静态 RED/GREEN 的最终状态至少是 🟡WARN,除非后续真实验证已完成。
|
|
42
42
|
|
|
43
|
+
上述分级只评估 `ownerPhase=run` 的任务和场景。`ownerPhase=test` 的验证按计划留给测试阶段时,记录为“待测试阶段执行”,不得将编码阶段降级为 WARN;后续阶段未开始不是当前阶段的风险。
|
|
44
|
+
|
|
43
45
|
## 协议二:change-cluster-review-protocol
|
|
44
46
|
|
|
45
47
|
用于高风险变更簇后的轻量审查。它内化 subagent-driven-development 的“新上下文审查”价值,但不把每个变更簇的 subagent 审查设为默认流程。
|
|
@@ -459,19 +459,20 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
|
|
|
459
459
|
|
|
460
460
|
### ✅OK
|
|
461
461
|
- 所有计划内代码变更完成
|
|
462
|
-
-
|
|
462
|
+
- 所有 `ownerPhase=run` 的关键 P0 场景已自动化测试通过
|
|
463
463
|
- 构建成功
|
|
464
464
|
- 无预存变更或预存变更已明确隔离
|
|
465
465
|
- 无非计划文件混入
|
|
466
|
-
- 无 P0 静态-only 场景
|
|
466
|
+
- 无 run-owned P0 静态-only 场景
|
|
467
|
+
- `ownerPhase=test` 的待办已清楚移交给测试阶段
|
|
467
468
|
|
|
468
469
|
### 🟡WARN
|
|
469
|
-
- 存在 P0/P1
|
|
470
|
+
- 存在 `ownerPhase=run` 的 P0/P1 场景仅静态验证
|
|
470
471
|
- 存在预存变更
|
|
471
|
-
-
|
|
472
|
-
-
|
|
472
|
+
- run 阶段负责的数据库迁移脚本需要人工执行或 DB 验证
|
|
473
|
+
- run 阶段负责的数据访问层/数据库迁移查询只做静态验证
|
|
473
474
|
- 使用了低价值 Mock 替代真实验证
|
|
474
|
-
-
|
|
475
|
+
- run 阶段负责的接口/DB 验证仍未完成
|
|
475
476
|
|
|
476
477
|
### ❌FAIL
|
|
477
478
|
- 构建失败
|
|
@@ -480,8 +481,7 @@ TestA+TestB+TestC RED → 实现相关代码 → TestA+TestB+TestC GREEN → 最
|
|
|
480
481
|
- 非计划文件被修改且无法解释
|
|
481
482
|
- git diff --check 失败
|
|
482
483
|
|
|
483
|
-
|
|
484
|
-
🟡WARN:编码完成,需 harness-test 验证剩余 DB/API 场景。
|
|
484
|
+
`ownerPhase=test` 的任务或场景按计划留给测试阶段属于正常移交,必须记录为“待测试阶段执行”,不得将编码阶段降级为 WARN。只有这些验证属于 `ownerPhase=run` 且未完成时,才输出 `🟡WARN`。
|
|
485
485
|
|
|
486
486
|
## 步骤 2:构建验证(默认轻量,按需全量 test)
|
|
487
487
|
|
|
@@ -544,18 +544,19 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
544
544
|
|
|
545
545
|
## 步骤 3:场景覆盖检查
|
|
546
546
|
|
|
547
|
-
|
|
547
|
+
对照场景表,逐条确认代码逻辑已覆盖,**并将覆盖结果展示给用户**。状态按阶段归属分为四类:
|
|
548
548
|
|
|
549
549
|
- ✅ **已测试通过**:测试基础设施可用且测试已实际运行通过(测试命令输出测试通过证据,如 Java 的 Tests run + Failures: 0)
|
|
550
550
|
- 🟡 **静态检查通过,未真实测试**:TDD 降级,仅做代码逻辑静态检查。**不得计入"已测试通过"**
|
|
551
551
|
- ❌ **未覆盖 / 未验证**:场景未对应代码逻辑或需端到端验证
|
|
552
|
+
- ⏳ **按计划移交**:场景明确为 `ownerPhase=test`,由测试阶段执行;不计入 run 的 🟡/❌,也不降低编码阶段结果
|
|
552
553
|
|
|
553
554
|
### 静态验证不等于测试覆盖(⚠️ 关键规则)
|
|
554
555
|
|
|
555
556
|
1. 🟡 静态检查 **不得计入"已测试通过"**
|
|
556
|
-
2. 如果任一 P0 场景仅静态验证,则 harness-run 最终结果必须是:
|
|
557
|
+
2. 如果任一 `ownerPhase=run` 的 P0 场景仅静态验证,则 harness-run 最终结果必须是:
|
|
557
558
|
`🟡WARN:编码和编译完成,但存在 P0 场景未真实验证`
|
|
558
|
-
3. 只有所有 P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
|
|
559
|
+
3. 只有所有 run-owned P0 场景都有自动化测试或真实接口验证时,最终结果才能是:
|
|
559
560
|
`✅OK成功`
|
|
560
561
|
4. **最终摘要禁止写**:`5✅ + 17🟡 = 22/22`
|
|
561
562
|
5. **最终摘要必须写**:
|
|
@@ -566,7 +567,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
566
567
|
harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
|
|
567
568
|
```
|
|
568
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 的场景数。
|
|
569
|
-
7.
|
|
570
|
+
7. **四类计数须自洽**:run-owned 的 🟡/❌ 计入未验证;`ownerPhase=test` 单列为 ⏳“按计划移交”,不得冒充 ✅,也不得反向污染 run 的结果。
|
|
570
571
|
8. **输出须为场景表映射**:按 `UT-001~037: ✅X/🟡Y/❌Z`、`API-001~032: ...`、`COM-001~007: ...`、`INT-001~008: ...` 形式逐条或范围标注,不得只给一个聚合测试数。
|
|
571
572
|
|
|
572
573
|
> 展示格式示例:
|
|
@@ -575,9 +576,9 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
575
576
|
> - ✅ UT-001~005: getEnabledIndicators 正常/异常/边界场景已测试通过
|
|
576
577
|
> - 🟡 UT-006~010: getIndicatorPage 分页场景静态验证通过,待测试基础设施补齐后运行 harness-test
|
|
577
578
|
> - ❌ UT-011~015: getIndicatorByCode 场景未覆盖,需补充测试用例
|
|
578
|
-
> -
|
|
579
|
+
> - ⏳ API-001~005: `ownerPhase=test`,接口测试按计划移交 harness-test
|
|
579
580
|
> - ✅ COM-001~005: 数据库迁移脚本覆盖
|
|
580
|
-
> -
|
|
581
|
+
> - ⏳ INT-001~004: `ownerPhase=test`,按计划移交测试阶段验证
|
|
581
582
|
> ```
|
|
582
583
|
>
|
|
583
584
|
> **最终汇总**:
|
|
@@ -585,6 +586,7 @@ python <skills-root>/scripts/harness_ledger.py record --change-dir ".harness/cha
|
|
|
585
586
|
> 自动化测试通过: 5
|
|
586
587
|
> 静态检查未真实验证: 17
|
|
587
588
|
> 未验证: 0
|
|
589
|
+
> 按计划移交测试阶段: 4
|
|
588
590
|
> harness-run 结果: 🟡WARN,必须进入 harness-test 后才能 submit
|
|
589
591
|
> ```
|
|
590
592
|
|
|
@@ -767,7 +769,8 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
767
769
|
- 自动化测试通过: K
|
|
768
770
|
- 静态检查未真实验证: M
|
|
769
771
|
- 未验证: P
|
|
770
|
-
-
|
|
772
|
+
- 按计划移交测试阶段: Q
|
|
773
|
+
- harness-run 结果: ✅OK成功 / 🟡WARN(只由 run-owned 工作决定)
|
|
771
774
|
|
|
772
775
|
### 关门检查结果
|
|
773
776
|
- git status --porcelain: ✅/❌
|
|
@@ -785,7 +788,7 @@ powershell.exe -Command "git -C '<project-path>' diff --check"
|
|
|
785
788
|
- 状态已写入: `.harness/changes/<change-name>/evidence/run-task-status.md`
|
|
786
789
|
|
|
787
790
|
### 下一步
|
|
788
|
-
> ⚠️ 如果存在 P0 场景为 🟡静态验证,下一步必须且只能是 harness-test。
|
|
791
|
+
> ⚠️ 如果存在 run-owned P0 场景为 🟡静态验证,下一步必须且只能是 harness-test。
|
|
789
792
|
|
|
790
793
|
运行 `/harness-test` 验证剩余 P0 场景。
|
|
791
794
|
在 harness-test 通过前,不建议也不应进入 `/harness-submit`。
|
|
@@ -3,7 +3,7 @@ name: harness-submit
|
|
|
3
3
|
description: 最终提交封装:验证→中文 commit→提交/推送;worktree 模式含 --no-ff 合并回主分支。仅当用户显式调用
|
|
4
4
|
/harness-submit(或 /harness-merge 重入合并段)时使用;用户口头说'提交/commit/push'时必须先确认,不得自动触发。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -37,7 +37,7 @@ description: 最终提交封装:验证→中文 commit→提交/推送;workt
|
|
|
37
37
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
38
38
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
39
39
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
40
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit
|
|
40
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
41
41
|
|
|
42
42
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
43
43
|
> 片段:read-protocol
|
|
@@ -4,7 +4,7 @@ description: Use when the user asks to synchronize, refresh, or validate Harness
|
|
|
4
4
|
metadata, adapters, remote knowledge ownership, instruction entrypoints,
|
|
5
5
|
config origins, or CodeGraph status.
|
|
6
6
|
---
|
|
7
|
-
<!-- generated by harness_deploy.py; core=
|
|
7
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
8
8
|
# harness-sync
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
@@ -3,7 +3,7 @@ name: harness-test
|
|
|
3
3
|
description: 测试执行:读取场景表,执行单元测试+API接口测试+数据兼容验证,输出测试报告。仅当用户显式调用 /harness-test
|
|
4
4
|
时使用;不得在 run 结束后自动接续执行。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=af7bb8ab1a56ca6b; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-test — 测试执行
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -39,7 +39,7 @@ description: 测试执行:读取场景表,执行单元测试+API接口测试
|
|
|
39
39
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
40
40
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
41
41
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
42
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit
|
|
42
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --json`。首次 Plan 捕获时,脚本把当时的 Git HEAD 写入不可变 `changeBase`;后续阶段只刷新 `git.head` 与各段指纹,不得用当前 HEAD 覆盖 `changeBase`。只有迁移旧 change 且已能证明真实计划起点时,才在首次补录时传 `--base <baseCommit>`。`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
43
43
|
|
|
44
44
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
45
45
|
> 片段:read-protocol
|
|
@@ -232,7 +232,7 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
|
|
|
232
232
|
- `USER_STARTED` → 保留进程,报告中提示用户可手动停止。
|
|
233
233
|
- `REUSED_EXISTING` → 保留进程,除非用户明确要求关闭。
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
测试报告与 `summary-data.json` 的服务生命周期投影必须包含:
|
|
236
236
|
|
|
237
237
|
```md
|
|
238
238
|
## 服务生命周期
|
|
@@ -354,4 +354,4 @@ powershell.exe -NoProfile -Command "try { (Invoke-WebRequest -Uri 'http://127.0.
|
|
|
354
354
|
- 请求执行器必须在报告中明确记录(四种执行器,含降级原因)
|
|
355
355
|
- 请求耗时统计必须包含在报告中
|
|
356
356
|
- 服务由 AI 启动的情况,测试结束默认 Stop-Process;**即使测试失败也要进入 finally 清理**
|
|
357
|
-
-
|
|
357
|
+
- `summary-data.json` 与平台监控中的 `apiTest` 状态必须使用 OK/PARTIAL/BLOCKED/NOT_RUN/FAIL(不得把 PARTIAL 写成 NOT_RUN)
|
|
@@ -32,7 +32,7 @@ description: harness-test 的踩坑规则(来自真实对话日志)。执行
|
|
|
32
32
|
| 21 | **直接 Edit tracked 应用配置文件** | 测试期间改配置,之后又还原,diff 噪声大 | 把运行时配置覆盖直接写进 tracked 文件 | 生成 ASCII 运行时配置叠加 `C:/temp/harness-test-overlay/<change>/application-harness-test.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
|
-
| 24 |
|
|
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` |
|
|
36
36
|
| 25 | **AI 启动的服务测试结束不关闭** | 端口长期占用,下次启动端口占用异常(如 `BindException`) | 没有 service lifecycle 管理 | 通过 `service.pid` + `serviceState` 区分,AI_STARTED 默认 Stop-Process,**即使测试失败也 finally 清理** |
|
|
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 必须输出一次状态行 |
|
|
@@ -208,9 +208,9 @@ $cred = $resp.data.accessToken
|
|
|
208
208
|
**后果**:后续接口大面积 400/500,掩盖真正的根因(setup 失败)
|
|
209
209
|
**正确做法**:执行器强制 setup/test/cleanup 三阶段;依赖 setup 数据的场景在 test 阶段开头判定依赖,缺失则标 🟡 BLOCKED,**不发起请求**
|
|
210
210
|
|
|
211
|
-
### 规则 24
|
|
211
|
+
### 规则 24:归档数据把 PARTIAL 写成 NOT_RUN
|
|
212
212
|
**严重度**:🟡WARN
|
|
213
|
-
**场景**:15 个 API 场景中 5 PASS + 9 BLOCKED + 1 FAIL
|
|
213
|
+
**场景**:15 个 API 场景中 5 PASS + 9 BLOCKED + 1 FAIL,`summary-data.json` 却写成 `apiTest=NOT_RUN`,导致平台错误显示为「未执行」。
|
|
214
214
|
**后果**:报告与现实不符,下游 review / submit / package 误判
|
|
215
215
|
**正确做法**:API 维度状态使用 5 个值:`OK / PARTIAL / BLOCKED / NOT_RUN / FAIL`。"部分执行+部分阻塞" 是 `PARTIAL`,附说明:`apiTest=PARTIAL — 15 个场景中 5 个 PASS, 9 个 BLOCKED, 1 个 FAIL`
|
|
216
216
|
|
|
@@ -708,7 +708,7 @@ TEST_<change-name>_<timestamp>_<short-random>
|
|
|
708
708
|
- 测试数据: N 条已清理 / M 条遗留
|
|
709
709
|
- credentialRefreshCount: 0
|
|
710
710
|
|
|
711
|
-
###
|
|
711
|
+
### 归档数据与平台监控(顶层维度状态)
|
|
712
712
|
- compile: ✅ OK
|
|
713
713
|
- unitTest: ✅ OK / 🟡 REUSED_FROM_RUN
|
|
714
714
|
- apiTest: **OK / PARTIAL / BLOCKED / NOT_RUN / FAIL**
|
|
@@ -797,7 +797,7 @@ python <skills-root>/scripts/harness_ledger.py can-reuse --change-dir <dir> --ve
|
|
|
797
797
|
|
|
798
798
|
> **P0 场景 BLOCKED 不得仍 OK**:必须 🟡 WARN 或 ❌ FAIL。
|
|
799
799
|
|
|
800
|
-
### API
|
|
800
|
+
### API 测试维度状态(写入 `summary-data.json` 并由平台展示)
|
|
801
801
|
|
|
802
802
|
| 状态 | 定义 |
|
|
803
803
|
|---|---|
|