@hunter-harness/workflow-harness 0.2.59 → 0.2.60
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 +11 -13
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +13 -16
- package/harness/bundles/general/claude-code/harness-archive/checklist.md +5 -8
- package/harness/bundles/general/claude-code/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +4 -2
- 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 +1 -1
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/general/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/claude-code/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/general/claude-code/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/general/claude-code/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +161 -987
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/README.md +11 -13
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +13 -16
- package/harness/bundles/general/codebuddy/harness-archive/checklist.md +5 -8
- package/harness/bundles/general/codebuddy/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +4 -2
- 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 +1 -1
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/general/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/codebuddy/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/general/codebuddy/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/general/codebuddy/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +161 -987
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/README.md +11 -13
- package/harness/bundles/general/codex/harness-archive/SKILL.md +13 -16
- package/harness/bundles/general/codex/harness-archive/checklist.md +5 -8
- package/harness/bundles/general/codex/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-run/SKILL.md +4 -2
- 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 +1 -1
- package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/general/codex/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/codex/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/general/codex/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/general/codex/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/codex/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/general/codex/scripts/harness_archive.py +161 -987
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/README.md +11 -13
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +13 -16
- package/harness/bundles/general/cursor/harness-archive/checklist.md +5 -8
- package/harness/bundles/general/cursor/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-run/SKILL.md +4 -2
- 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 +1 -1
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/general/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/general/cursor/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/general/cursor/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/general/cursor/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/general/cursor/scripts/harness_archive.py +161 -987
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/README.md +11 -13
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +13 -16
- package/harness/bundles/java/claude-code/harness-archive/checklist.md +5 -8
- package/harness/bundles/java/claude-code/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +4 -2
- package/harness/bundles/java/claude-code/harness-run/protocols.md +2 -0
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/java/claude-code/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/claude-code/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/java/claude-code/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/java/claude-code/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +161 -987
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/README.md +11 -13
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +13 -16
- package/harness/bundles/java/codebuddy/harness-archive/checklist.md +5 -8
- package/harness/bundles/java/codebuddy/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +4 -2
- package/harness/bundles/java/codebuddy/harness-run/protocols.md +2 -0
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/java/codebuddy/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/codebuddy/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/java/codebuddy/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/java/codebuddy/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +161 -987
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/README.md +11 -13
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/SKILL.md +13 -16
- package/harness/bundles/java/codex/harness-archive/checklist.md +5 -8
- package/harness/bundles/java/codex/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-run/SKILL.md +4 -2
- package/harness/bundles/java/codex/harness-run/protocols.md +2 -0
- package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/java/codex/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/codex/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/java/codex/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/java/codex/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/codex/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/java/codex/scripts/harness_archive.py +161 -987
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/README.md +11 -13
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +13 -16
- package/harness/bundles/java/cursor/harness-archive/checklist.md +5 -8
- package/harness/bundles/java/cursor/harness-archive/reference.md +7 -16
- 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 +1 -1
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-run/SKILL.md +4 -2
- package/harness/bundles/java/cursor/harness-run/protocols.md +2 -0
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
- 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 +16 -27
- package/harness/bundles/java/cursor/protocols/evidence-based-reporting-protocol.md +5 -5
- package/harness/bundles/java/cursor/protocols/ledger-protocol.md +6 -6
- package/harness/bundles/java/cursor/protocols/report-pipeline-protocol.md +5 -6
- package/harness/bundles/java/cursor/protocols/sensitive-info-protocol.md +3 -3
- package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +2 -4
- package/harness/bundles/java/cursor/scripts/harness_archive.py +161 -987
- package/harness/manifests/general/claude-code.json +30 -34
- package/harness/manifests/general/codebuddy.json +30 -34
- package/harness/manifests/general/codex.json +30 -34
- package/harness/manifests/general/cursor.json +30 -34
- package/harness/manifests/java/claude-code.json +30 -34
- package/harness/manifests/java/codebuddy.json +30 -34
- package/harness/manifests/java/codex.json +30 -34
- package/harness/manifests/java/cursor.json +30 -34
- 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
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
|
|
24
24
|
## 共用规则文件(强制约束)
|
|
25
25
|
|
|
26
|
-
跨 skill 共用的强制约束规则全部集中在 `protocols/` 下(8 个 protocol;其中 report pipeline
|
|
26
|
+
跨 skill 共用的强制约束规则全部集中在 `protocols/` 下(8 个 protocol;其中 report pipeline 用于结构化事件,以及 summary-data 的生成与校验),各 skill 通过相对路径引用:
|
|
27
27
|
|
|
28
28
|
| 文件 | 作用 |
|
|
29
29
|
|------|------|
|
|
30
30
|
| `protocols/powershell-protocol.md` | Shell 执行安全策略:Windows/中文路径下禁止普通 Bash,所有 git/构建命令必须通过 `powershell.exe -Command "..."` 执行;命令被拒绝时不得回退普通 Bash;所有"成功"必须有明确证据(构建成功 / git 输出 / 文件存在 / exit code 0) |
|
|
31
|
-
| `protocols/sensitive-info-protocol.md` | 敏感信息脱敏:token、密码、Authorization header、Cookie、API key、access/secret key 不得明文出现在 execution-log、报告、commit message、
|
|
31
|
+
| `protocols/sensitive-info-protocol.md` | 敏感信息脱敏:token、密码、Authorization header、Cookie、API key、access/secret key 不得明文出现在 execution-log、报告、commit message、summary-data 中;引用时统一替换为 `<TOKEN_REDACTED>` / `<PASSWORD_REDACTED>` / `<SECRET_REDACTED>` |
|
|
32
32
|
| `protocols/evidence-based-reporting-protocol.md` | 证据化报告:所有 skill 输出必须区分 ✅ 真实成功 / 🟡 静态验证或用户跳过 / ❌ 失败或被拒绝;禁止把"静态验证"写成"测试通过",禁止把"命令被拒绝"写成"成功" |
|
|
33
33
|
| `protocols/ledger-protocol.md` | 验证账本:每个变更目录维护 `verification-ledger.json`,记录 compile/unitTest/apiTest 的结果+证据+diffHash+作用范围;后续阶段先读 ledger 判定是否可复用,避免跨阶段重复编译/测试;post-test 变更按 7 类分类,决定是否重跑 |
|
|
34
34
|
| `protocols/state-layout-protocol.md` | 状态目录分层:`.harness/changes/<cn>/` 下按 `meta/`、`logs/`、`evidence/`、`reports/`、`scripts/`、`backups/` 子目录分层写入;读取时先读新路径再兼容旧路径 |
|
|
35
35
|
| `protocols/submit-protocol.md` | 固定提交交互:提交方式与 commit message 确认使用固定选项模板,禁止 AI footer |
|
|
36
|
-
| `protocols/archive-report-protocol.md` | 归档报告:`summary-data.json
|
|
37
|
-
| `protocols/report-pipeline-protocol.md` | 报告流水线:`events.ndjson` + `harness_archive.py finalize/replay` +
|
|
36
|
+
| `protocols/archive-report-protocol.md` | 归档报告:`summary-data.json`、manifest/checksum 与真实性规则 |
|
|
37
|
+
| `protocols/report-pipeline-protocol.md` | 报告流水线:`events.ndjson` + `harness_archive.py finalize/replay` + 数据一致性校验 |
|
|
38
38
|
|
|
39
39
|
每个 skill 的 SKILL.md 关键规则章节都通过相对路径引用这些 protocol(`../protocols/powershell-protocol.md` 等)。
|
|
40
40
|
|
|
@@ -85,8 +85,7 @@
|
|
|
85
85
|
│ │ ├── test/
|
|
86
86
|
│ │ ├── review/
|
|
87
87
|
│ │ └── final/
|
|
88
|
-
│ │
|
|
89
|
-
│ │ └── final-summary.html # 最终报告(代码量+产出清单+测试/审查摘要)
|
|
88
|
+
│ │ └── summary-data.json # 平台展示使用的最终报告数据
|
|
90
89
|
│ ├── events.ndjson # 结构化事件层(新流程推荐;历史 archive 可缺失)
|
|
91
90
|
│ └── backups/
|
|
92
91
|
├── <change-name>/ # 当前未归档变更(最多 1 个,不提交)
|
|
@@ -211,8 +210,7 @@ harness-skills/
|
|
|
211
210
|
├── checklist.md # 归档前后检查项
|
|
212
211
|
├── reference.md # 归档操作 + 占位符真实性规则
|
|
213
212
|
└── templates/
|
|
214
|
-
|
|
215
|
-
└── render-summary.mjs # final-summary UTF-8 固定渲染脚本
|
|
213
|
+
└── summary-data-template.json # 最终报告数据结构
|
|
216
214
|
```
|
|
217
215
|
|
|
218
216
|
## Skill 列表
|
|
@@ -280,11 +278,11 @@ harness-skills/
|
|
|
280
278
|
| **submit hash 记录** | pre-pull local hash + final pushed hash 双标注(主目录);worktree 模式 submit 段只本地 commit,合并段产生 `mergeFinalHash`,archive 以 `mergeFinalHash` 为准(无则回退 final pushed hash) |
|
|
281
279
|
| **archive 阶段 1** | 归档前确认实际计划阶段的证据与结局;有 Git 时核对最终提交身份,无 Git、无 upstream 或跳过 submit 时使用内容清单身份。发布候选资格与本地封存分开判断;阶段边界由 finalize 单进程维护,调用者不额外 append |
|
|
282
280
|
| **archive 文件移动** | 只用 PowerShell 或 Read+Write+验证,**禁止 Bash mv/cp/rm**;移动失败时不删除原目录 |
|
|
283
|
-
| **archive
|
|
281
|
+
| **archive 最终报告** | 必须运行 `harness_archive.py finalize` 生成权威 `summary-data.json` 并完成 validate。平台直接读取该 JSON;本地不生成重复的 HTML 报告。无测试或无 review 时必须标记 `NOT_RUN` / `ADVISORY_NOT_RUN`,禁止伪造 100% 通过率。状态演进须真实展示(✅OK / 🟡WARN / 🔁REUSED / 🔁RETESTED / 📝ADVISORY / 🧹NON_BEHAVIORAL_CLEANUP) |
|
|
284
282
|
|
|
285
283
|
### 敏感信息脱敏
|
|
286
284
|
|
|
287
|
-
- token / Authorization / Cookie / Redis 密码 / 数据库密码 / API key / access&secret key 不得明文出现在 execution-log、报告、commit message、
|
|
285
|
+
- token / Authorization / Cookie / Redis 密码 / 数据库密码 / API key / access&secret key 不得明文出现在 execution-log、报告、commit message、summary-data 中
|
|
288
286
|
- 引用敏感值时统一使用占位符:`<TOKEN_REDACTED>` / `<PASSWORD_REDACTED>` / `<SECRET_REDACTED>` / `<API_KEY_REDACTED>` / `<AUTH_HEADER_REDACTED>` / `<COOKIE_REDACTED>`
|
|
289
287
|
- 命令示例使用占位符,不复述真实值
|
|
290
288
|
- 测试中临时使用的 token 在持久化测试报告中必须替换为占位符
|
|
@@ -455,8 +453,8 @@ npx hunter-harness # 初始化阶段检查环境/CodeGraph/基础状态(非
|
|
|
455
453
|
- `protocols/sensitive-info-protocol.md`:敏感信息脱敏(token/密码/密钥占位符化,已取代原 `harness-plan/sensitive-info.md`,各 skill 引用此版本)。
|
|
456
454
|
- `protocols/evidence-based-reporting-protocol.md`:证据化报告(✅/🟡/❌ 三态,已取代原 `harness-plan/evidence-based-reporting.md`,各 skill 引用此版本)。
|
|
457
455
|
- `protocols/submit-protocol.md`:固定提交交互、中文 commit 文件、禁止 AI footer。
|
|
458
|
-
- `protocols/archive-report-protocol.md`:summary-data
|
|
459
|
-
- `protocols/report-pipeline-protocol.md`:events.ndjson + `harness_archive.py finalize/replay` +
|
|
456
|
+
- `protocols/archive-report-protocol.md`:summary-data、manifest/checksum 与平台归档展示合同。
|
|
457
|
+
- `protocols/report-pipeline-protocol.md`:events.ndjson + `harness_archive.py finalize/replay` + summary-data 一致性校验。
|
|
460
458
|
- `protocols/state-layout-protocol.md`:`.harness/changes/<cn>/` 子目录分层(meta/logs/evidence/reports/scripts/backups),读取先新后旧。
|
|
461
459
|
|
|
462
460
|
各 skill 的 `SKILL.md` 只保留阶段目标和硬门禁,细节优先引用这些协议,避免在多个 skill 中复制并产生冲突。
|
|
@@ -477,4 +475,4 @@ backups/ 未提交但用于验证的测试文件等备份
|
|
|
477
475
|
|
|
478
476
|
读取时先读新路径,再兼容旧路径。详见 `protocols/state-layout-protocol.md`。
|
|
479
477
|
|
|
480
|
-
Archive
|
|
478
|
+
Archive 最终报告由 `harness_archive.py finalize` 生成 `summary-data.json`。Hunter Platform 直接读取该文件,避免本地重复渲染和两份报告数据不一致。
|
|
@@ -21,7 +21,7 @@ disallowed-tools:
|
|
|
21
21
|
- Bash(awk *)
|
|
22
22
|
- Bash(curl *)
|
|
23
23
|
---
|
|
24
|
-
<!-- generated by harness_deploy.py; core=
|
|
24
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-archive — 变更归档
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -76,7 +76,7 @@ disallowed-tools:
|
|
|
76
76
|
### Phase 0:读取规则和上下文
|
|
77
77
|
|
|
78
78
|
1. 读取本文件。
|
|
79
|
-
2. 按需读取 `reference.md`(归档流程、manifest、summary-data
|
|
79
|
+
2. 按需读取 `reference.md`(归档流程、manifest、summary-data、目录结构与最终状态规则)。
|
|
80
80
|
3. 读取共用约束:
|
|
81
81
|
- `../protocols/archive-report-protocol.md`
|
|
82
82
|
- `../protocols/state-layout-protocol.md`
|
|
@@ -106,14 +106,13 @@ disallowed-tools:
|
|
|
106
106
|
|
|
107
107
|
1. 对“发布候选”使用 `--intent release-candidate --closure completed`;对正常本地完成使用 `--intent record-only --closure completed`;主动废弃或被替代分别使用 `--intent record-only --closure abandoned|superseded --closure-reason "<中文原因>"`。先运行 `status`;有可复用全量 ledger 时可运行 `certify-local`,不得重复测试。
|
|
108
108
|
2. `meta/archive-meta.md` **由 `harness_archive.py finalize` 自动生成**(与 summary-data `finalStatus` 同源);**禁止 agent 手写**该文件,手写视为数据丢失。维护者结论写入 events(decision/issue)即可,finalize 会汇总到 summary / archive-meta。
|
|
109
|
-
3. 运行 `harness_archive.py finalize --change-dir "<executionRoot>" --archive-root ".harness/archive" --intent <...> --closure <...> [--closure-reason "..."] --json`;读 JSON(cleanup、事件、移动、collect、
|
|
109
|
+
3. 运行 `harness_archive.py finalize --change-dir "<executionRoot>" --archive-root ".harness/archive" --intent <...> --closure <...> [--closure-reason "..."] --json`;读 JSON(cleanup、事件、移动、collect、validate、manifest、archive-meta、ZIP、上传与服务端知识状态)。finalize 内部只负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**本地不执行知识 ingest**;服务端在 ZIP 持久保存并解包后 ingest。失败时保留原目录、ZIP 和回执。
|
|
110
110
|
- **归档包上传**:始终先生成一个确定性 ZIP;有远程凭据时再调用 `npx hunter-harness archive upload`。ZIP 仅包含 `summary-data.json`、`spec/**/*.md`、`plans/**/*.md`、`archive-meta.md`、`change-context.json` 和稳定 manifest;明确排除 logs、review/test 报告、HTML、缓存、备份、凭据和临时文件。
|
|
111
111
|
- **失败可恢复**:无论远端凭据是否齐全,都先生成 ZIP 与 `<change-key>.upload.json`;上传或服务端 ingest 失败不破坏本地归档。待上传 ZIP 与逐 change 回执保留在 `.harness/state/local/archive-packages/`,可枚举独立重试。只有 CLI 核验 package hash 且服务端同时返回 `archive_status=durable`、`knowledge_status=ready` 后,才清理对应 ZIP 与回执;`indexing` 记为 pending,不记为失败。
|
|
112
112
|
- **监控终态(C3)**:auto-upload 之后自动 `events-sync`,用归档前 change 路径派生的 `run_id` + 原 `change_key` 上报;失败只记 warning。
|
|
113
113
|
|
|
114
114
|
- **Read `reference.md`** — finalize 输出字段、archive-meta 格式、CONDITIONAL_OK 规则
|
|
115
115
|
- **Read `templates/summary-data-template.json`** — summary-data 数据结构
|
|
116
|
-
- **Read `templates/render-summary.mjs`** — final-summary 渲染脚本(finalize 内嵌调用)
|
|
117
116
|
|
|
118
117
|
### Phase 4:验证与提示
|
|
119
118
|
|
|
@@ -149,9 +148,9 @@ disallowed-tools:
|
|
|
149
148
|
|
|
150
149
|
移动用 Read+Write+验证 或 PowerShell;**禁止 Bash mv/cp/rm**。移动失败时不删除原目录,报错退出让用户手动处理。
|
|
151
150
|
|
|
152
|
-
###
|
|
151
|
+
### 四、数据化归档门禁
|
|
153
152
|
|
|
154
|
-
必须通过 `harness_archive.py finalize` 生成权威 `reports/final/summary-data.json` 并完成 validate
|
|
153
|
+
必须通过 `harness_archive.py finalize` 生成权威 `reports/final/summary-data.json` 并完成 validate。平台监控直接读取该数据;本地不再生成重复的 HTML 报告。统计数字只能来自 summary-data、events、ledger 或 manifest。详见 `../protocols/report-pipeline-protocol.md`、`../protocols/archive-report-protocol.md`、`reference.md`。
|
|
155
154
|
|
|
156
155
|
### 五、manifest/checksum 必须存在
|
|
157
156
|
|
|
@@ -166,13 +165,13 @@ disallowed-tools:
|
|
|
166
165
|
|
|
167
166
|
### 七、verification-ledger 汇总状态
|
|
168
167
|
|
|
169
|
-
归档前读 `evidence/verification-ledger.json`,提取各阶段 status、postTestClassification、复用关系,供
|
|
168
|
+
归档前读 `evidence/verification-ledger.json`,提取各阶段 status、postTestClassification、复用关系,供 summary-data 真实记录状态演进。若 ledger 有 `postTestClassification`,summary-data 必须记录该分类及对应的复用/重测决策。
|
|
170
169
|
|
|
171
|
-
### 八、
|
|
170
|
+
### 八、summary-data 不得伪造且必须记录状态演进
|
|
172
171
|
|
|
173
172
|
无测试报告 → 显示"未运行测试 / 静态验证",不得 100% 通过率;无 review → "📝ADVISORY:未运行 review"。状态用 ✅OK / 🟡WARN / 🔁REUSED / 🔁RETESTED / 📝ADVISORY / 🧹NON_BEHAVIORAL_CLEANUP,复用前一阶段结果显示 🔁REUSED,**不得伪装成重新执行,不得无脑全绿**。
|
|
174
173
|
|
|
175
|
-
|
|
174
|
+
`summary-data.json` 是最终报告的唯一权威数据源,必须产出并通过 validate/adequacy。平台按该文件展示归档结果,本地不维护第二份展示文件。
|
|
176
175
|
|
|
177
176
|
### 九、CONDITIONAL_OK 最终状态
|
|
178
177
|
|
|
@@ -180,7 +179,7 @@ API 测试 `USER_SKIPPED` 或 DB 兼容 `BLOCKED_BY_DBA` 时,最终状态必
|
|
|
180
179
|
|
|
181
180
|
### 十、未提交测试文件归档
|
|
182
181
|
|
|
183
|
-
未提交但用于验证的测试文件必须归档到 `backups/uncommitted-tests
|
|
182
|
+
未提交但用于验证的测试文件必须归档到 `backups/uncommitted-tests/`,并在 summary-data 中记录。
|
|
184
183
|
|
|
185
184
|
### 十一、归档事件单一所有权
|
|
186
185
|
|
|
@@ -188,7 +187,7 @@ finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,并在移
|
|
|
188
187
|
|
|
189
188
|
### 十二、Shell 安全 / 敏感信息 / 证据化报告
|
|
190
189
|
|
|
191
|
-
git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和
|
|
190
|
+
git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 summary-data.json 不得含明文 token、密码或密钥;归档报告必须区分 ✅真实成功 / 🟡跳过·静态验证 / ❌失败。
|
|
192
191
|
|
|
193
192
|
### 十三、归档完整性与发布资格分离
|
|
194
193
|
|
|
@@ -196,23 +195,21 @@ git 命令通过 `powershell.exe -Command "..."` 执行;archive-meta.md 和 fi
|
|
|
196
195
|
|
|
197
196
|
## Output Format
|
|
198
197
|
|
|
199
|
-
> 归档元数据格式见 `reference.md` 的 archive-meta
|
|
198
|
+
> 归档元数据格式见 `reference.md` 的 archive-meta 模板;最终报告使用 `templates/summary-data-template.json` 定义的数据结构。
|
|
200
199
|
|
|
201
200
|
产出文件:
|
|
202
201
|
|
|
203
202
|
- `.harness/archive/YYYY-MM-DD-<change-name>/meta/archive-meta.md` — 归档元数据
|
|
204
203
|
- `.harness/archive/YYYY-MM-DD-<change-name>/events.ndjson` — 结构化事件层(新流程推荐;旧 archive 可缺失)
|
|
205
204
|
- `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/summary-data.json` — 最终报告数据源
|
|
206
|
-
- `.harness/archive/YYYY-MM-DD-<change-name>/reports/final/final-summary.html` — 可选展示投影,由 `render-summary.mjs` 渲染(Node 失败时 Python fallback);渲染失败降级 warning,`--no-html` 可跳过
|
|
207
205
|
- `.harness/archive/YYYY-MM-DD-<change-name>/evidence/archive-manifest-before.json` / `archive-manifest-after.json` — 归档前后 manifest/checksum
|
|
208
206
|
|
|
209
207
|
## 渐进披露
|
|
210
208
|
|
|
211
209
|
- **Read `checklist.md`** 仅在 Phase 1 归档前检查和 Phase 4 验证时 — 含归档前检查项和归档后验证项
|
|
212
|
-
- **Read `reference.md`** 仅在 Phase 0/2/3 时 — 含归档流程、archive-meta 格式、summary-data
|
|
213
|
-
- **Read `reference.md`** 仅在 Phase 3 finalize 时 — summary-data
|
|
210
|
+
- **Read `reference.md`** 仅在 Phase 0/2/3 时 — 含归档流程、archive-meta 格式、summary-data 字段说明、目录结构与最终状态规则
|
|
211
|
+
- **Read `reference.md`** 仅在 Phase 3 finalize 时 — summary-data 校验与 archive-meta 补写
|
|
214
212
|
- **Read `templates/summary-data-template.json`** 仅在 Phase 3 生成 `summary-data.json` 时 — 含最终报告数据结构
|
|
215
|
-
- **Read `templates/render-summary.mjs`** 仅在 Phase 3 渲染 `final-summary.html` 时 — 固定 HTML 渲染脚本
|
|
216
213
|
|
|
217
214
|
## 交互白名单
|
|
218
215
|
|
|
@@ -8,11 +8,10 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
|
|
|
8
8
|
|
|
9
9
|
归档遵循 `../protocols/archive-report-protocol.md`,门禁要点见 SKILL.md `## 关键规则` 四/五/九:
|
|
10
10
|
|
|
11
|
-
-
|
|
11
|
+
- 生成并校验 `reports/final/summary-data.json`;平台直接使用该文件展示结果。
|
|
12
12
|
- 归档前生成 `evidence/archive-manifest-before.json`,移动后生成 `archive-manifest-after.json`。
|
|
13
|
-
-
|
|
13
|
+
- 归档统计只能来自 summary-data 或 manifest。
|
|
14
14
|
- before/after checksum 不一致时,不得删除原目录。
|
|
15
|
-
- 默认渲染器 `templates/render-summary.mjs`(finalize 内嵌调用)。
|
|
16
15
|
- 需要跨工作区恢复时传 `--durable-root <独立存储>`;成功必须为 `ARCHIVED_DURABLE`,并验证 content-addressed object 与 durable receipt 可读回。
|
|
17
16
|
- `restore-durable` 只恢复到不存在的目标;目标已存在或对象 digest 不符时 fail closed,禁止覆盖。
|
|
18
17
|
- 未配置 durable root 时显式记录 `ARCHIVED_LOCAL_ONLY` 风险,不得把同工作区 move 宣称为独立备份。
|
|
@@ -48,11 +47,11 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
|
|
|
48
47
|
- [ ] 最终产品身份来自 Submit 收据或当前内容;提交前候选只允许在验证输入未变化时由 `certify-local` 自动重绑定
|
|
49
48
|
- [ ] **test/review 报告状态确认**:
|
|
50
49
|
- ✅ `.harness/changes/<change-name>/tests/test-report-*.md` 存在 → 归档正常
|
|
51
|
-
- 🟡 不存在 → 必须在 archive-meta.md 和
|
|
50
|
+
- 🟡 不存在 → 必须在 archive-meta.md 和 summary-data.json 中标记「跳过测试」或「未运行测试」,不得伪造通过率
|
|
52
51
|
- ✅ `.harness/changes/<change-name>/reports/review/review-report-*.md` 存在(旧路径 `reviews/review-report-*.md` 兼容回退)→ 作为 📝ADVISORY 归档材料
|
|
53
52
|
- 📝 `.harness/changes/<change-name>/reports/review/fixback-*.md` 存在 → 随 review 报告一并归档;默认 advisory,除非 `strict-review-gate=true`
|
|
54
53
|
- 🟡 不存在但 `logs/execution-log.md` 有 harness-review 小节 → **review 已运行但未落盘**(harness-review `context:fork` 交接缝常见,见 `agent/case-candidates/2026-06-30-harness-review-forked-not-persisting-report.md`):从 execution-log/会话补落盘到 `reports/review/review-report-YYYYMMDD-HHmm.md` 再归档,**不得误标"未运行 review"**(实际跑过)
|
|
55
|
-
- 🟡 不存在且 execution-log 无 review 小节 → 在 archive-meta.md 和
|
|
54
|
+
- 🟡 不存在且 execution-log 无 review 小节 → 在 archive-meta.md 和 summary-data.json 中标记「📝ADVISORY:未运行 review」
|
|
56
55
|
|
|
57
56
|
## 归档后验证(Phase 4)
|
|
58
57
|
|
|
@@ -61,11 +60,9 @@ description: harness-archive 的归档前检查项和归档后验证项。仅在
|
|
|
61
60
|
- [ ] before/after manifest 校验通过(排除 `logs/execution-log.md`——归档追加结束记录预期 sha256 变化;其他 moved 文件 sha256 必须一致,missing/mismatch=0)
|
|
62
61
|
- [ ] archive-meta.md 由 finalize 自动生成且字段完整;调用者未手写或补改
|
|
63
62
|
- [ ] summary-data.json 已生成,且为合法 JSON
|
|
64
|
-
- [ ]
|
|
65
|
-
- [ ] **final-summary.html 真实性检查**:
|
|
63
|
+
- [ ] **summary-data.json 真实性检查**:
|
|
66
64
|
- 无测试报告时,`summary-data.json.verification.unitTests.status` / `summary-data.json.verification.apiTests.status` 必须标记为 `NOT_RUN`、`USER_SKIPPED`、`BLOCKED` 或 `STATIC_ONLY`,不得显示 100%
|
|
67
65
|
- 无 review 报告时,`summary-data.json.reviewSummary.status` 必须标记为 `ADVISORY_NOT_RUN`,不得显示 100%
|
|
68
66
|
- 跳过、复用、人工确认的部分必须明确标记,不伪装成 ✅
|
|
69
|
-
- final-summary.html 中不得残留 `{{...}}` 占位符
|
|
70
67
|
- [ ] 原目录 `.harness/changes/<change-name>/` 已删除(仅在前面所有验证通过后)
|
|
71
68
|
- [ ] .harness/ 下无残留未归档变更目录
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: harness-archive 的归档流程、manifest、summary-data
|
|
2
|
+
description: harness-archive 的归档流程、manifest、summary-data 校验、目录结构与最终状态规则。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# harness-archive 参考
|
|
@@ -12,7 +12,7 @@ description: harness-archive 的归档流程、manifest、summary-data、final-s
|
|
|
12
12
|
- **Phase 3 执行归档**:
|
|
13
13
|
1. 运行 `python <skills-root>/scripts/harness_archive.py status --change-dir ... --json` 做前置检查。
|
|
14
14
|
2. `meta/archive-meta.md` 由 finalize 生成(与 summary `finalStatus` 同源);禁止手写。维护者结论写入 events 即可。finalize 在 before-manifest 前执行 cleanup(删除 lock/pid/launcher/credential,截断超大日志)。
|
|
15
|
-
3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ... --archive-root ".harness/archive" --json`;读 JSON 结果。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**finalize 报错或 validate 失败时不删除原 changes 目录**。finalize 为冻结优先(freeze-first):collect 前先 fsync 事件并写 `evidence/evidence-cutoff.json`,cutoff 后不再追加事件;随后依次执行 source consistency(层 1,写入 `reportPipeline.sourceConsistency`)→
|
|
15
|
+
3. 运行 `python <skills-root>/scripts/harness_archive.py finalize --change-dir ... --archive-root ".harness/archive" --json`;读 JSON 结果。finalize 内部负责且仅负责一次 `phase.start` / `phase.end`,调用者不得重复追加。**finalize 报错或 validate 失败时不删除原 changes 目录**。finalize 为冻结优先(freeze-first):collect 前先 fsync 事件并写 `evidence/evidence-cutoff.json`,cutoff 后不再追加事件;随后依次执行 source consistency(层 1,写入 `reportPipeline.sourceConsistency`)→ summary consistency(层 2),任一层失败即恢复原目录并非零退出。
|
|
16
16
|
- **Phase 4 验证与提示**:见 `checklist.md` 归档后验证项。
|
|
17
17
|
|
|
18
18
|
## manifest 生成
|
|
@@ -55,29 +55,21 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass -File "harness-skills/harness-
|
|
|
55
55
|
|
|
56
56
|
报告必须突出业务目标和维护者结论。所有统计数字只能来自 events、summary-data、ledger 或 manifest,不得手写另一套。历史 archive 没有 `events.ndjson` 时,允许从 ledger/log/manifest 回放,并在 `reportPipeline.sources` 中记录来源。
|
|
57
57
|
|
|
58
|
-
##
|
|
58
|
+
## 平台展示与数据校验
|
|
59
59
|
|
|
60
|
-
|
|
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 路径。
|
|
67
|
-
|
|
68
|
-
禁止模型临场手写大段 HTML。确需临时修 HTML,只能修模板,不得让统计数字脱离 `summary-data.json`。
|
|
60
|
+
平台监控直接读取 `reports/final/summary-data.json`,归档阶段不再生成本地 HTML 报告,也不得由模型临场维护第二份展示数据。
|
|
69
61
|
|
|
70
62
|
`validate` 是 `harness_archive.py finalize` 的内嵌同进程步骤(不再作为独立 `report validate` CLI 调用)。finalize 在 validate error 存在时恢复原 `.harness/changes/<change>` 目录并 exit 非 0,绝不归档未通过校验的变更。
|
|
71
63
|
|
|
72
64
|
## repair(归档后修复,不改写原版)
|
|
73
65
|
|
|
74
|
-
|
|
66
|
+
归档后发现来源事实与 summary-data 不一致时,使用显式修复(`replay` 仍为只读):
|
|
75
67
|
|
|
76
68
|
```powershell
|
|
77
69
|
python <skills-root>/scripts/harness_archive.py repair --archive-dir ".harness/archive/<archive-id>" --json
|
|
78
70
|
```
|
|
79
71
|
|
|
80
|
-
repair 在 archive
|
|
72
|
+
repair 在 archive 外生成候选版本。来源校验与数据校验通过后,写入不可变 `derived/v<N>/`(summary-data.json + repair-record.json),并更新 `derived/authoritative.json` pointer;原 summary 与 manifest 不覆盖。知识层仅从 authoritative pointer 且 hash 校验通过的版本提取。
|
|
81
73
|
|
|
82
74
|
## archive-meta.md 模板
|
|
83
75
|
|
|
@@ -103,8 +95,7 @@ cleanup 步骤(before-manifest 前):删除 `events.ndjson.lock`、`runtime
|
|
|
103
95
|
|
|
104
96
|
## 目录结构与最终状态规则
|
|
105
97
|
|
|
106
|
-
-
|
|
107
|
-
- `render-summary.mjs` 是默认 UTF-8 渲染器;finalize 内嵌调用,不得由模型临场写 HTML。
|
|
98
|
+
- 平台直接读取 `reports/final/summary-data.json`;本地不生成重复展示文件。
|
|
108
99
|
- 新路径优先:`meta/`、`logs/`、`evidence/`、`reports/final/`、`scripts/`、`backups/uncommitted-tests/`。旧路径只做读取兼容,不再写大量根目录文件。
|
|
109
100
|
- 当 `summary-data.json.verification.apiTests.status=USER_SKIPPED` 或 `verification.dbCompatibility.status=BLOCKED_BY_DBA`,最终状态必须是 `CONDITIONAL_OK`。
|
|
110
101
|
- 复杂 PowerShell 命令写入 `scripts/*.ps1` 后 `-File` 执行,禁止内联 `$` / `$_`。
|
package/harness/bundles/general/claude-code/harness-archive/templates/summary-data-template.json
CHANGED
|
@@ -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,
|
|
@@ -20,7 +20,7 @@ disallowed-tools:
|
|
|
20
20
|
- Bash(awk *)
|
|
21
21
|
- Bash(curl *)
|
|
22
22
|
---
|
|
23
|
-
<!-- generated by harness_deploy.py; core=
|
|
23
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
24
24
|
# harness-codebase-map — 代码库地图
|
|
25
25
|
|
|
26
26
|
## Purpose
|
|
@@ -8,7 +8,7 @@ disallowed-tools:
|
|
|
8
8
|
- Bash(git *)
|
|
9
9
|
- Bash(curl *)
|
|
10
10
|
---
|
|
11
|
-
<!-- generated by harness_deploy.py; core=
|
|
11
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
12
12
|
# harness-knowledge-ingest
|
|
13
13
|
|
|
14
14
|
知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
|
|
@@ -8,7 +8,7 @@ disallowed-tools:
|
|
|
8
8
|
- Bash(git *)
|
|
9
9
|
- Bash(curl *)
|
|
10
10
|
---
|
|
11
|
-
<!-- generated by harness_deploy.py; core=
|
|
11
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
12
12
|
# harness-knowledge-query
|
|
13
13
|
|
|
14
14
|
项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
|
|
@@ -21,7 +21,7 @@ disallowed-tools:
|
|
|
21
21
|
- Bash(awk *)
|
|
22
22
|
- Bash(curl *)
|
|
23
23
|
---
|
|
24
|
-
<!-- generated by harness_deploy.py; core=
|
|
24
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-plan — 需求规划
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -22,7 +22,7 @@ disallowed-tools:
|
|
|
22
22
|
- Bash(curl *)
|
|
23
23
|
- Bash(codegraph *)
|
|
24
24
|
---
|
|
25
|
-
<!-- generated by harness_deploy.py; core=
|
|
25
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
26
26
|
# harness-review — 代码审查
|
|
27
27
|
|
|
28
28
|
## Purpose
|
|
@@ -22,7 +22,7 @@ disallowed-tools:
|
|
|
22
22
|
- Bash(curl *)
|
|
23
23
|
- Bash(codegraph *)
|
|
24
24
|
---
|
|
25
|
-
<!-- generated by harness_deploy.py; core=
|
|
25
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
26
26
|
# harness-run — 需求编码
|
|
27
27
|
|
|
28
28
|
## Purpose
|
|
@@ -85,6 +85,8 @@ disallowed-tools:
|
|
|
85
85
|
3. **场景覆盖检查**(场景表映射,禁止用用例数冒充场景数)
|
|
86
86
|
4. **关门检查**(10 项)→ 只执行一次 `harness_gate.py close`;`--to-phase` 必须取返回的 `nextPhases` 或 `plannedPhases` 中 run 的真实后继,禁止写死 test。该命令内部关闭 test guard、写 `phase.end`、释放租约、写 handoff 并补传事件;不得再单独调用 test-guard/context close。失败时按结构化 `recoveryAction` 原样重试,已完成步骤幂等复用。
|
|
87
87
|
|
|
88
|
+
**阶段归属规则**:只用 `ownerPhase=run` 的任务和场景判定编码阶段结果。`ownerPhase=test` 的任务或场景按计划留给测试阶段属于正常移交,必须记录为“待测试阶段执行”,不得将编码阶段降级为 WARN;只有 run 自身负责的工作未完成、验证降级或证据异常时才使用 WARN。
|
|
89
|
+
|
|
88
90
|
**Fixback**:入口只用 `launch-review`,后续问题处理通过 `resolve-issue/close` 驱动,不得把修复说明当成新的普通 Run。只读取返回的受影响问题和文件;验证仅失效与 `changedFiles` 相交的目标,其他 Test/Review 证据继续复用。RED 优先;`manual`、`workflow` 或未选用的建议不进入代码批次,使用中文记录处理结论。
|
|
89
91
|
|
|
90
92
|
**执行器边界**:优先使用项目 build profile 和已有测试入口。禁止为了绕过 ESM、路径或参数问题临时生成 `.js`、`require` 脚本;需要文件式 runner 时使用项目已有入口,确需新增时遵循项目模块类型(例如 ESM 使用 `.mjs`)。runner 包装说明写入 `runnerCommand` 元数据,不得拼进账本的规范 `command`。
|
|
@@ -116,7 +118,7 @@ disallowed-tools:
|
|
|
116
118
|
| **探测/ledger** | 基础设施先探测;每次构建/测试经 `harness_ledger.py record`;禁止手写 ledger JSON;用 canonical `diff-hash --change-dir` |
|
|
117
119
|
| **Gate/Guard** | 跨 Agent/阶段先用 `harness_context.py prepare/begin`;阶段门禁与上下文交接统一用 `harness_gate.py begin/close`;gate 内部负责 guard begin/close,模型只在需要记录测试来源或修复时调用 guard 的 `record/stage/mark` |
|
|
118
120
|
| **预存变更** | 保留 → baseline 隔离;存在则最终 ≥ 🟡WARN |
|
|
119
|
-
| **关门/状态** | 10 项关门检查;持久化 run-task-status
|
|
121
|
+
| **关门/状态** | 10 项关门检查;持久化 run-task-status;仅 run-owned P0 静态-only 导致 WARN;test-owned 待办正常移交 |
|
|
120
122
|
| **Worktree** | `requested=true` 时代码只写 worktree |
|
|
121
123
|
| **PowerShell** | 所有 git/构建经 `powershell.exe -NoProfile -Command` |
|
|
122
124
|
|
|
@@ -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`。
|
|
@@ -21,7 +21,7 @@ disallowed-tools:
|
|
|
21
21
|
- Bash(awk *)
|
|
22
22
|
- Bash(curl *)
|
|
23
23
|
---
|
|
24
|
-
<!-- generated by harness_deploy.py; core=
|
|
24
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -19,7 +19,7 @@ disallowed-tools:
|
|
|
19
19
|
- Bash(awk *)
|
|
20
20
|
- Bash(curl *)
|
|
21
21
|
---
|
|
22
|
-
<!-- generated by harness_deploy.py; core=
|
|
22
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
23
23
|
# harness-sync
|
|
24
24
|
|
|
25
25
|
## Purpose
|
|
@@ -23,7 +23,7 @@ disallowed-tools:
|
|
|
23
23
|
- Bash(node *)
|
|
24
24
|
- Bash(codegraph *)
|
|
25
25
|
---
|
|
26
|
-
<!-- generated by harness_deploy.py; core=
|
|
26
|
+
<!-- generated by harness_deploy.py; core=a011efdf9f2b846f; overlay=none; agent=claude-code; do not edit -->
|
|
27
27
|
# harness-test — 测试执行
|
|
28
28
|
|
|
29
29
|
## Purpose
|
|
@@ -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)
|