@hunter-harness/workflow-harness 0.2.49 → 0.2.51
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 +4 -4
- package/harness/bundles/general/claude-code/harness-archive/SKILL.md +11 -3
- package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
- package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +41 -112
- package/harness/bundles/general/claude-code/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/claude-code/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/claude-code/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +12 -7
- package/harness/bundles/general/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +7 -2
- package/harness/bundles/general/claude-code/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/claude-code/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/claude-code/scripts/harness_archive.py +769 -191
- package/harness/bundles/general/claude-code/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/claude-code/scripts/harness_gate.py +17 -0
- package/harness/bundles/general/claude-code/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/claude-code/scripts/harness_state.py +3 -5
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/README.md +4 -4
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +11 -3
- package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codebuddy/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/codebuddy/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +7 -2
- package/harness/bundles/general/codebuddy/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/codebuddy/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/codebuddy/scripts/harness_archive.py +769 -191
- package/harness/bundles/general/codebuddy/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/codebuddy/scripts/harness_gate.py +17 -0
- package/harness/bundles/general/codebuddy/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/codebuddy/scripts/harness_state.py +3 -5
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/README.md +4 -4
- package/harness/bundles/general/codex/harness-archive/SKILL.md +11 -3
- package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/codex/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/codex/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/codex/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/codex/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/codex/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/general/codex/harness-test/SKILL.md +7 -2
- package/harness/bundles/general/codex/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/codex/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/codex/scripts/harness_archive.py +769 -191
- package/harness/bundles/general/codex/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/codex/scripts/harness_gate.py +17 -0
- package/harness/bundles/general/codex/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/codex/scripts/harness_state.py +3 -5
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/README.md +4 -4
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +11 -3
- package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/general/cursor/harness-plan/SKILL.md +9 -4
- package/harness/bundles/general/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/general/cursor/harness-review/SKILL.md +7 -2
- package/harness/bundles/general/cursor/harness-run/SKILL.md +8 -3
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +7 -2
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +13 -8
- package/harness/bundles/general/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/general/cursor/harness-test/SKILL.md +7 -2
- package/harness/bundles/general/cursor/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/general/cursor/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/general/cursor/scripts/harness_archive.py +769 -191
- package/harness/bundles/general/cursor/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/general/cursor/scripts/harness_gate.py +17 -0
- package/harness/bundles/general/cursor/scripts/harness_profile.py +0 -1
- package/harness/bundles/general/cursor/scripts/harness_state.py +3 -5
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/README.md +4 -4
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +45 -244
- package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +41 -112
- package/harness/bundles/java/claude-code/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/claude-code/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/claude-code/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +12 -7
- package/harness/bundles/java/claude-code/harness-sync/reference.md +18 -11
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +7 -2
- package/harness/bundles/java/claude-code/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/claude-code/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/claude-code/scripts/harness_archive.py +769 -191
- package/harness/bundles/java/claude-code/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/claude-code/scripts/harness_gate.py +17 -0
- package/harness/bundles/java/claude-code/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/claude-code/scripts/harness_state.py +3 -5
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/README.md +4 -4
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/codebuddy/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/codebuddy/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codebuddy/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/codebuddy/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +7 -2
- package/harness/bundles/java/codebuddy/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/codebuddy/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/codebuddy/scripts/harness_archive.py +769 -191
- package/harness/bundles/java/codebuddy/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/codebuddy/scripts/harness_gate.py +17 -0
- package/harness/bundles/java/codebuddy/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/codebuddy/scripts/harness_state.py +3 -5
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/README.md +4 -4
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/codex/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/codex/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/codex/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/codex/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/codex/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/codex/harness-sync/reference.md +18 -11
- package/harness/bundles/java/codex/harness-test/SKILL.md +7 -2
- package/harness/bundles/java/codex/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/codex/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/codex/scripts/harness_archive.py +769 -191
- package/harness/bundles/java/codex/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/codex/scripts/harness_gate.py +17 -0
- package/harness/bundles/java/codex/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/codex/scripts/harness_state.py +3 -5
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/README.md +4 -4
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +11 -3
- package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +6 -1
- package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +42 -230
- package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +38 -98
- package/harness/bundles/java/cursor/harness-package/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-plan/SKILL.md +9 -4
- package/harness/bundles/java/cursor/harness-plan/checklist.md +2 -2
- package/harness/bundles/java/cursor/harness-review/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-run/SKILL.md +8 -3
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +7 -2
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +13 -8
- package/harness/bundles/java/cursor/harness-sync/reference.md +18 -11
- package/harness/bundles/java/cursor/harness-test/SKILL.md +7 -2
- package/harness/bundles/java/cursor/protocols/archive-report-protocol.md +5 -7
- package/harness/bundles/java/cursor/protocols/state-layout-protocol.md +17 -11
- package/harness/bundles/java/cursor/scripts/harness_archive.py +769 -191
- package/harness/bundles/java/cursor/scripts/harness_events_sync.py +90 -12
- package/harness/bundles/java/cursor/scripts/harness_gate.py +17 -0
- package/harness/bundles/java/cursor/scripts/harness_profile.py +0 -1
- package/harness/bundles/java/cursor/scripts/harness_state.py +3 -5
- package/harness/manifests/general/claude-code.json +23 -47
- package/harness/manifests/general/codebuddy.json +23 -47
- package/harness/manifests/general/codex.json +23 -47
- package/harness/manifests/general/cursor.json +23 -47
- package/harness/manifests/java/claude-code.json +25 -49
- package/harness/manifests/java/codebuddy.json +25 -49
- package/harness/manifests/java/codex.json +25 -49
- package/harness/manifests/java/cursor.json +25 -49
- package/hunter-workflow-family.json +4 -4
- package/package.json +1 -1
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/codex/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/general/cursor/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/general/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/general/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/codex/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/codex/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/codex/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
- package/harness/bundles/java/cursor/harness-knowledge-ingest/design.md +0 -842
- package/harness/bundles/java/cursor/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
- package/harness/bundles/java/cursor/harness-knowledge-ingest/mcp-config.example.json +0 -10
- package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +0 -413
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -7263
- package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -275
|
@@ -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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
26
26
|
# harness-review — 代码审查
|
|
27
27
|
|
|
28
28
|
## Purpose
|
|
@@ -56,7 +56,7 @@ disallowed-tools:
|
|
|
56
56
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
57
57
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
58
58
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
59
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
59
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
60
60
|
|
|
61
61
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
62
62
|
> 片段:read-protocol
|
|
@@ -125,6 +125,11 @@ review:
|
|
|
125
125
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
126
126
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
127
127
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
128
|
+
|
|
129
|
+
## 生成内容语言约定
|
|
130
|
+
|
|
131
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
132
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
128
133
|
> 片段:p0-trust
|
|
129
134
|
|
|
130
135
|
## 关键规则(硬门禁速查)
|
|
@@ -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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
26
26
|
# harness-run — 需求编码
|
|
27
27
|
|
|
28
28
|
## Purpose
|
|
@@ -67,7 +67,7 @@ disallowed-tools:
|
|
|
67
67
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
68
68
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
69
69
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
70
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
70
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
71
71
|
|
|
72
72
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
73
73
|
> 片段:read-protocol · run 必读文件优先级 → `reference.md` Step 0
|
|
@@ -78,7 +78,7 @@ disallowed-tools:
|
|
|
78
78
|
|
|
79
79
|
## Workflow 概要
|
|
80
80
|
|
|
81
|
-
0. 加载上下文:先 `harness_context.py prepare --phase run --executor <tool> [--change <id>] --json`,以返回的唯一 change/executionRoot/transition receipt 为准(多 active 缺参 → `ACTIVE_CHANGE_AMBIGUOUS`,禁止按 mtime 猜测);再 **`harness_context.py begin --phase run --change <id> --executor <tool> --json`** 校验 Plan artifact/hash/HEAD,读 spec/plan/detail/scenarios/ledger/run-task-status/worktree;`--fixback` 读 fixback → **`harness_gate.py begin --phase run --change <id>`**(claim + phase.start + identity;禁止手工 Write `events.ndjson` / 手工 `phase.end
|
|
81
|
+
0. 加载上下文:先 `harness_context.py prepare --phase run --executor <tool> [--change <id>] --json`,以返回的唯一 change/executionRoot/transition receipt 为准(多 active 缺参 → `ACTIVE_CHANGE_AMBIGUOUS`,禁止按 mtime 猜测);再 **`harness_context.py begin --phase run --change <id> --executor <tool> --json`** 校验 Plan artifact/hash/HEAD,读 spec/plan/detail/scenarios/ledger/run-task-status/worktree;`--fixback` 读 fixback → **`harness_gate.py begin --phase run --change <id>`**(claim + phase.start + identity;禁止手工 Write `events.ndjson` / 手工 `phase.end`)。**C3 钩子**:`harness_gate.py begin` 在已连接平台时会 best-effort 调用 events-sync(注册 run / `running`);失败只告警,不阻断 begin。
|
|
82
82
|
0.5. **测试基础设施探测**(先写 `CHECKING`,四项证据齐备后再结论)→ `reference.md` Step 0.5;进入 TDD 前执行 `harness_test_guard.py begin --project . --change-dir ".harness/changes/<cn>" --json`
|
|
83
83
|
1. **变更簇 TDD** — `protocols.md` `run-tdd-protocol`;批量 RED/GREEN;按需 `change-cluster-review-protocol`(高风险 + reviewer 预检可用)
|
|
84
84
|
2. 构建验证 + **仅**通过 `harness_ledger.py record` 写 ledger(禁止 Write/Edit `verification-ledger.json`);`diff-hash --change-dir` 纳入 ignored tests → `reference.md` Step 2c
|
|
@@ -102,6 +102,11 @@ disallowed-tools:
|
|
|
102
102
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
103
103
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
104
104
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
105
|
+
|
|
106
|
+
## 生成内容语言约定
|
|
107
|
+
|
|
108
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
109
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
105
110
|
> 片段:p0-trust
|
|
106
111
|
|
|
107
112
|
## 关键规则(硬门禁速查)
|
|
@@ -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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -55,7 +55,7 @@ disallowed-tools:
|
|
|
55
55
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
56
56
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
57
57
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
58
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
58
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
59
59
|
|
|
60
60
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
61
61
|
> 片段:read-protocol
|
|
@@ -119,6 +119,11 @@ M7. **ledger + 收尾** — 经 `harness_ledger.py record` 写入 `mergeFinalHas
|
|
|
119
119
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
120
120
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
121
121
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
122
|
+
|
|
123
|
+
## 生成内容语言约定
|
|
124
|
+
|
|
125
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
126
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
122
127
|
> 片段:p0-trust
|
|
123
128
|
|
|
124
129
|
## 关键规则(硬门禁速查)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: harness-sync
|
|
3
|
-
description: "Use when the user asks to synchronize, refresh, or validate Harness metadata, adapters, knowledge
|
|
3
|
+
description: "Use when the user asks to synchronize, refresh, or validate Harness metadata, adapters, remote knowledge ownership, instruction entrypoints, config origins, or CodeGraph status."
|
|
4
4
|
argument-hint: "项目路径或留空使用当前目录"
|
|
5
5
|
effort: medium
|
|
6
6
|
allowed-tools: [Read, Glob, Grep, Edit, Write, Bash(powershell.exe:*)]
|
|
@@ -19,12 +19,12 @@ 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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
23
23
|
# harness-sync
|
|
24
24
|
|
|
25
25
|
## Purpose
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
通过一个有界入口刷新 Harness Adapter 与元数据、检查远端知识职责和项目指令状态,并输出可验证的组件收据。`sync` 不直接改写 AGENTS/CLAUDE/CODEBUDDY 或规则;文档优化使用远端审计提案。
|
|
28
28
|
|
|
29
29
|
## Before running
|
|
30
30
|
|
|
@@ -39,7 +39,7 @@ disallowed-tools:
|
|
|
39
39
|
npx hunter-harness sync --project <项目路径> --profile interactive --progress jsonl --json
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
CLI 负责 Python runtime
|
|
42
|
+
CLI 负责 Python runtime 解析、Adapter 事务、远端知识职责、文档审计提示、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用旧知识 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
|
|
43
43
|
|
|
44
44
|
只读诊断使用 `--check`(`--dry-run` 为兼容别名);它不得写报告、receipt 或投影。
|
|
45
45
|
长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的
|
|
@@ -54,23 +54,28 @@ JSON 报告回显到对话。
|
|
|
54
54
|
## Interpret
|
|
55
55
|
|
|
56
56
|
- `OK`:所有可验证组件通过。
|
|
57
|
-
- `ADVISORY
|
|
57
|
+
- `ADVISORY`:例如需要运行中文指令审计提案;退出码仍为 0,且 `sync` 本身没有改写文档。
|
|
58
58
|
- `WARN`:存在过期、冲突、待评审或 `UNKNOWN` 证据;按 `reportPath` 中的 `nextAction` 处理。
|
|
59
59
|
- `FAIL`:组件执行失败;不得宣称同步完成。
|
|
60
60
|
- `BLOCKED`:runtime、项目状态或能力契约阻塞;先修复阻塞条件。
|
|
61
61
|
- `UNKNOWN`:证据不足,不等于成功,也不触发无界重建。
|
|
62
62
|
|
|
63
|
-
非交互或 CI 使用 `--check --profile general --progress jsonl --json
|
|
63
|
+
非交互或 CI 使用 `--check --profile general --progress jsonl --json`。交互式运行若报告 `INSTRUCTION_AUDIT_REQUIRED`,运行 `hunter-harness instructions audit`;规则候选只进入提案,永不自动应用。
|
|
64
64
|
|
|
65
65
|
## Safety
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
同步不得直接修改项目指令文档或规则。配置真源与生成投影存在漂移时只报告,不静默覆盖真源。change 清理先 dry-run,仅对已验证归档收据执行安全清理。知识查询和 ingest 均为远端职责,不创建 `.harness/knowledge`。
|
|
68
68
|
|
|
69
69
|
## P0 执行可信度规则
|
|
70
70
|
|
|
71
71
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
72
72
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
73
73
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
74
|
+
|
|
75
|
+
## 生成内容语言约定
|
|
76
|
+
|
|
77
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
78
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
74
79
|
> 片段:p0-trust
|
|
75
80
|
|
|
76
81
|
## 执行日志
|
|
@@ -29,7 +29,7 @@ CLI 按以下顺序解析 Python,并在详细报告中记录来源:
|
|
|
29
29
|
5. `python3`
|
|
30
30
|
6. `python`
|
|
31
31
|
|
|
32
|
-
所有探测都必须有超时。完全不可用时返回 `PYTHON_RUNTIME_UNAVAILABLE
|
|
32
|
+
所有探测都必须有超时。完全不可用时返回 `PYTHON_RUNTIME_UNAVAILABLE`,并跳过仍依赖 Python 的变更状态阶段;远端知识和指令审计不允许回退到本地 Python 实现。
|
|
33
33
|
|
|
34
34
|
## 3. 统一同步
|
|
35
35
|
|
|
@@ -84,9 +84,8 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
84
84
|
|---|---|---|
|
|
85
85
|
| capability | CLI 版本、必需能力 | 不匹配立即 `BLOCKED` |
|
|
86
86
|
| adapter projection | 事务后的实际文件 hash | 使用 post-transaction 校验;partial refresh 不得把未选 adapter 标成 stale |
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
| rules | 投影收据、冲突、待评审数 | 真实分歧只报告,不覆盖 |
|
|
87
|
+
| knowledge | 远端职责声明 | 固定报告 `remote-only`、`fallback=false`、`localIndex=false`;不运行本地 ingest |
|
|
88
|
+
| rules | 审计—提案—应用契约 | `sync` 只给出 `instructions audit` 下一步,不改写文档或自动应用候选 |
|
|
90
89
|
| codebase map | manifest 文档清单、hash、生成时间 | 真实文件校验,不复用旧 display status |
|
|
91
90
|
| instruction graph | 入口、include 边、环、主题可达性 | 缺失引用或循环为 `FAIL` |
|
|
92
91
|
| config origins | canonical/projection 路径与 hash | 漂移 `WARN`,不静默覆盖 |
|
|
@@ -94,8 +93,7 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
94
93
|
| CodeGraph | `codegraph status --json` 的 pending、数据库观察时间、watcher 可达性 | 输出 `CURRENT/PENDING/STALE/INDEX_PRESENT_UNVERIFIED/MISSING/UNKNOWN`;日志 mtime 只证明 watcher 活动,不证明索引完成;不自动全量 reindex |
|
|
95
94
|
|
|
96
95
|
全局状态优先级:`BLOCKED` → `FAIL` → `WARN` → `ADVISORY` → `OK`。任一 `UNKNOWN`
|
|
97
|
-
至少使全局结果为 `WARN
|
|
98
|
-
为 `ADVISORY`,不得误报为过期。
|
|
96
|
+
至少使全局结果为 `WARN`。远端知识可用性由实际 query/upload 收据判断,`sync` 不伪造本地 freshness。
|
|
99
97
|
|
|
100
98
|
## 5. Git 与 CodeGraph
|
|
101
99
|
|
|
@@ -136,15 +134,23 @@ npx hunter-harness doctor --managed-blocks --json
|
|
|
136
134
|
|
|
137
135
|
change cleanup 由同步报告提供具体动作。只允许已验证的 `ARCHIVED_LEFTOVER` 进入删除路径;`RECOVERABLE` 只能移入隔离区;`ORPHAN`/`INVALID` 保持原状并提示人工处理。
|
|
138
136
|
|
|
139
|
-
## 9.
|
|
137
|
+
## 9. 中文指令与规则提案
|
|
140
138
|
|
|
141
|
-
|
|
139
|
+
`sync` 只报告 `INSTRUCTION_AUDIT_REQUIRED`。需要优化时执行:
|
|
142
140
|
|
|
143
141
|
```powershell
|
|
144
|
-
npx hunter-harness
|
|
142
|
+
npx hunter-harness instructions audit --json
|
|
145
143
|
```
|
|
146
144
|
|
|
147
|
-
|
|
145
|
+
服务端结合项目类型、现有文档、Codebase Map、近期变更总结和公开最佳实践生成中文提案。
|
|
146
|
+
提案先保存到 `.harness/state/local/instruction-proposals/`,项目文件保持不变。审阅后显式执行:
|
|
147
|
+
|
|
148
|
+
```powershell
|
|
149
|
+
npx hunter-harness instructions apply --proposal <proposal.json> --yes --json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
应用必须校验基线 hash 并使用事务;文件在审计后变化则返回 `INSTRUCTION_PROPOSAL_STALE`。
|
|
153
|
+
近期变更中的经验只形成 rule candidates,`instructions apply` 也不得自动写入这些候选。
|
|
148
154
|
|
|
149
155
|
## 10. 完成判定
|
|
150
156
|
|
|
@@ -153,6 +159,7 @@ npx hunter-harness rules-review --json
|
|
|
153
159
|
- stdout 摘要与详细报告 hash 一致;
|
|
154
160
|
- 没有 `FAIL` 或 `BLOCKED`;
|
|
155
161
|
- 所有自动修复均有 post-transaction 证据;
|
|
156
|
-
- knowledge
|
|
162
|
+
- knowledge 组件明确为 remote-only,且未创建或刷新本地索引;
|
|
163
|
+
- 文档和规则组件未直接改写项目文件;
|
|
157
164
|
- 未把 `UNKNOWN` 描述成已验证;
|
|
158
165
|
- 第二次无输入变化的运行不产生投影 churn。
|
|
@@ -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=63cbdcb9833a5c07; overlay=java; agent=claude-code; do not edit -->
|
|
27
27
|
# harness-test — 测试执行
|
|
28
28
|
|
|
29
29
|
## Purpose
|
|
@@ -59,7 +59,7 @@ disallowed-tools:
|
|
|
59
59
|
6. **implementation-detail** — 自适应执行参考;legacy 缺失 🟡WARN,不阻断
|
|
60
60
|
7. **test-scenarios** — 测试真相源:`plans/<change>-test-scenarios.md`
|
|
61
61
|
8. **禁止读取 `docs/superpowers/` 作为正式输入** — 旧草稿仅人工线索
|
|
62
|
-
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/
|
|
62
|
+
9. **每个 skill 边界只刷新一次状态快照** — 先运行 `python <skills-root>/scripts/harness_state.py capture --project . --change-dir ".harness/changes/<change-name>" --base <baseCommit> --json`;`changedSegments=[]` 时复用已有 profile/rules/map/change/code 指纹,不再重复跑全量 `harness-sync` 或代码库扫描。`knowledge` 段仅为兼容空段,知识始终按需远端查询;快照不能替代源码读取和验证门禁。
|
|
63
63
|
|
|
64
64
|
状态目录分层:新路径优先,旧路径兼容 → [[../protocols/state-layout-protocol.md|state-layout-protocol]]
|
|
65
65
|
> 片段:read-protocol
|
|
@@ -156,6 +156,11 @@ Runner 强制同项目单实例、低调度优先级、逐命令超时、正常
|
|
|
156
156
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
157
157
|
- 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
|
|
158
158
|
- 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
|
|
159
|
+
|
|
160
|
+
## 生成内容语言约定
|
|
161
|
+
|
|
162
|
+
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
163
|
+
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
159
164
|
> 片段:p0-trust
|
|
160
165
|
|
|
161
166
|
## 关键规则(硬门禁速查)
|
|
@@ -173,20 +173,18 @@ python harness/scripts/harness_archive.py repair --archive-dir ".harness/archive
|
|
|
173
173
|
|
|
174
174
|
repair 先在 archive 外生成候选 derived version,两层 validator 均通过后,才以不可变新版本写入 `derived/v<N>/{summary-data.json, final-summary.html, repair-record.json}`,并把 `derived/authoritative.json` pointer 指向该版本;**原 summary-data.json、final-summary.html 与 manifest 永不覆盖**。知识层只从 authoritative pointer 指向且 hash 校验通过的版本提取条目。
|
|
175
175
|
|
|
176
|
-
##
|
|
176
|
+
## 归档包与服务端知识 ingest(§8)
|
|
177
177
|
|
|
178
178
|
archive close 的破坏性事务只执行确定性 close:
|
|
179
179
|
|
|
180
180
|
```text
|
|
181
181
|
status -> manifest -> move -> collect -> render -> validate -> compare
|
|
182
|
-
->
|
|
182
|
+
-> 生成确定性核心 ZIP -> 上传并等待服务端持久化/ingest 收据 -> stop AI service -> return
|
|
183
183
|
```
|
|
184
184
|
|
|
185
|
-
close
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
**机械 maintain 不得假装完成语义裁决**:存在待裁决项(conflict / promote-candidate)时状态为 `completed_rules_pending_judge`、`pendingJudgements>0`、写 `pending-judgements-<archive-id>.json`,由模型层后续 `judge --apply` 处理;`manualReview=true` 时保留人工确认。
|
|
185
|
+
close 不再运行 `harness_knowledge.py`,也不写本地 outbox/index。服务端先保存原 ZIP,再安全
|
|
186
|
+
解包发布核心文件并重建项目语义索引;客户端以 package hash 与 `knowledge_status` 作为收据。
|
|
187
|
+
失败时本地归档保持有效,待上传 ZIP 保留供同包重试,不允许改走散文件 push 或本地索引。
|
|
190
188
|
|
|
191
189
|
## 最终状态
|
|
192
190
|
|
|
@@ -6,7 +6,7 @@ description: harness .harness 状态目录分层协议。用于减少根目录
|
|
|
6
6
|
|
|
7
7
|
## 升级与本地状态保护边界
|
|
8
8
|
|
|
9
|
-
`.harness/archive/`、`.harness/changes
|
|
9
|
+
`.harness/archive/`、`.harness/changes/` 是 protected local roots。CLI init/configure/refresh/rules 操作前必须:
|
|
10
10
|
|
|
11
11
|
1. 综合 project marker、adapter `.harness-build.json`、managed block、恢复事务和非空 `.harness` 判断 `absent / valid / partial / recovery-required`;
|
|
12
12
|
2. 对 protected roots 记录文件数、目录数、字节数、Merkle root,以及 archive 首末 identity;
|
|
@@ -84,21 +84,27 @@ description: harness .harness 状态目录分层协议。用于减少根目录
|
|
|
84
84
|
`runtime/retired-service-sessions/`;该动作保留原始回执且不终止进程。受管命令、
|
|
85
85
|
环境会话和 fixback 的完整合同见 `execution-session-protocol.md`。
|
|
86
86
|
|
|
87
|
-
##
|
|
87
|
+
## 归档上传重试状态(§8)
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
知识 ingest 由 Hunter Platform 在接收归档 ZIP 后执行,本地不再创建 `.harness/knowledge`
|
|
90
|
+
或 maintenance-outbox。尚未被服务端确认持久化的包保存在:
|
|
90
91
|
|
|
91
92
|
```text
|
|
92
|
-
.harness/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
completed/<archive-id>.json # 已完成(status=completed 或 completed_rules_pending_judge)
|
|
96
|
-
failed/<archive-id>.json # 失败(attempts+1,可重试)
|
|
93
|
+
.harness/state/local/archive-packages/
|
|
94
|
+
<change-key>.zip # 确定性核心归档包
|
|
95
|
+
<change-key>.upload.json # 上传/失败收据(如存在)
|
|
97
96
|
```
|
|
98
97
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
`
|
|
98
|
+
ZIP 只包含 summary、spec、plans、archive-meta、change-context 和包 manifest。上传失败保留;
|
|
99
|
+
每次 finalize 都先生成 ZIP 与对应回执,再按 `credentials.local.yaml` 或
|
|
100
|
+
`project.yaml` 的 `server.url` + `server.token_env` 环境变量解析远端凭据。缺少凭据、
|
|
101
|
+
网络失败、无效收据或知识状态为 `indexing`/`failed` 时均保留这两个按 change 命名的文件,
|
|
102
|
+
因此可枚举 `*.upload.json` 独立重试,不会由后一次归档覆盖前一次。只有 CLI 已核对
|
|
103
|
+
package SHA-256,且服务端同时确认 `archive_status=durable` 与
|
|
104
|
+
`knowledge_status=ready` 时,才清理对应 ZIP 和回执。回执的 `uploadStatus` 为
|
|
105
|
+
`pending|failed|ready`,`reasonCode` 使用 `ARCHIVE_UPLOAD_*` 或
|
|
106
|
+
`ARCHIVE_KNOWLEDGE_*` 稳定错误码;`indexing` 必须映射为 `pending`,不得误报失败。
|
|
107
|
+
远端知识查询失败不得创建本地 fallback。
|
|
102
108
|
|
|
103
109
|
## 读取兼容
|
|
104
110
|
|