@hunter-harness/workflow-harness 0.2.62 → 0.2.63
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/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/claude-code/harness-sync/SKILL.md +15 -22
- package/harness/bundles/general/claude-code/harness-sync/reference.md +22 -11
- package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +15 -22
- package/harness/bundles/general/codebuddy/harness-sync/reference.md +22 -11
- package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/codex/.harness-build.json +1 -1
- package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/codex/harness-sync/SKILL.md +15 -22
- package/harness/bundles/general/codex/harness-sync/reference.md +22 -11
- package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
- package/harness/bundles/general/cursor/.harness-build.json +1 -1
- package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
- package/harness/bundles/general/cursor/harness-sync/SKILL.md +15 -22
- package/harness/bundles/general/cursor/harness-sync/reference.md +22 -11
- package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/.harness-build.json +1 -1
- package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/claude-code/harness-sync/SKILL.md +15 -22
- package/harness/bundles/java/claude-code/harness-sync/reference.md +22 -11
- package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
- package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +15 -22
- package/harness/bundles/java/codebuddy/harness-sync/reference.md +22 -11
- package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/codex/.harness-build.json +1 -1
- package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/codex/harness-sync/SKILL.md +15 -22
- package/harness/bundles/java/codex/harness-sync/reference.md +22 -11
- package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
- package/harness/bundles/java/cursor/.harness-build.json +1 -1
- package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
- 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 +1 -1
- package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
- package/harness/bundles/java/cursor/harness-sync/SKILL.md +15 -22
- package/harness/bundles/java/cursor/harness-sync/reference.md +22 -11
- package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
- package/harness/manifests/general/claude-code.json +14 -14
- package/harness/manifests/general/codebuddy.json +14 -14
- package/harness/manifests/general/codex.json +14 -14
- package/harness/manifests/general/cursor.json +14 -14
- package/harness/manifests/java/claude-code.json +16 -16
- package/harness/manifests/java/codebuddy.json +16 -16
- package/harness/manifests/java/codex.json +16 -16
- package/harness/manifests/java/cursor.json +16 -16
- package/hunter-workflow-family.json +5 -5
- package/package.json +1 -1
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-archive — 变更归档
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; 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=f13d1bb7177b0294; 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=f13d1bb7177b0294; 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=f13d1bb7177b0294; 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=f13d1bb7177b0294; 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=f13d1bb7177b0294; overlay=none; agent=claude-code; do not edit -->
|
|
26
26
|
# harness-run — 需求编码
|
|
27
27
|
|
|
28
28
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=claude-code; do not edit -->
|
|
25
25
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=claude-code; do not edit -->
|
|
23
23
|
# harness-sync
|
|
24
24
|
|
|
25
25
|
## Purpose
|
|
26
26
|
|
|
27
|
-
通过一个有界入口刷新 Harness Adapter
|
|
27
|
+
通过一个有界入口刷新 Harness Adapter 与元数据、检查远端知识职责和项目指令状态,并在当前命令输出中给出组件结果。`sync` 是维护命令,不是 change 生命周期阶段:不追加 change 事件、不调用 `events-sync`、不上传运行监控。`sync` 不直接改写 AGENTS/CLAUDE/CODEBUDDY 或规则;文档优化使用远端审计提案。
|
|
28
28
|
|
|
29
29
|
## Before running
|
|
30
30
|
|
|
@@ -41,10 +41,7 @@ npx hunter-harness sync --project <项目路径> --profile interactive --progres
|
|
|
41
41
|
|
|
42
42
|
CLI 负责 Python runtime 解析、Adapter 事务、远端知识职责、文档审计提示、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用旧知识 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
|
|
43
43
|
|
|
44
|
-
只读诊断使用 `--check`(`--dry-run`
|
|
45
|
-
长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的
|
|
46
|
-
`reportPath`,并带 `reportSha256`。需要组件级证据时显式加 `--verbose`,不得默认把完整
|
|
47
|
-
JSON 报告回显到对话。
|
|
44
|
+
只读诊断使用 `--check`(`--dry-run` 为兼容别名);它不得写 receipt 或投影。普通模式只允许执行用户请求的 Adapter 事务,不写入 `.harness/runtime/sync/`。长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。需要组件级证据时显式加 `--verbose`;`reportPath` 和 `reportSha256` 固定为 `null`。
|
|
48
45
|
|
|
49
46
|
摘要中的 `remediations[]` 是稳定修复契约。先用对应 `previewCommand` 预览;低风险修复用
|
|
50
47
|
`--apply safe`,指定修复用 `--fix <id>`。需覆盖受管投影的修复必须同时提供 `--yes`,
|
|
@@ -55,17 +52,28 @@ JSON 报告回显到对话。
|
|
|
55
52
|
|
|
56
53
|
- `OK`:所有可验证组件通过。
|
|
57
54
|
- `ADVISORY`:例如需要运行中文指令审计提案;退出码仍为 0,且 `sync` 本身没有改写文档。
|
|
58
|
-
- `WARN`:存在过期、冲突、待评审或 `UNKNOWN`
|
|
55
|
+
- `WARN`:存在过期、冲突、待评审或 `UNKNOWN` 证据;按组件的中文 `nextAction` 处理。
|
|
59
56
|
- `FAIL`:组件执行失败;不得宣称同步完成。
|
|
60
57
|
- `BLOCKED`:runtime、项目状态或能力契约阻塞;先修复阻塞条件。
|
|
61
58
|
- `UNKNOWN`:证据不足,不等于成功,也不触发无界重建。
|
|
62
59
|
|
|
63
60
|
非交互或 CI 使用 `--check --profile general --progress jsonl --json`。交互式运行若报告 `INSTRUCTION_AUDIT_REQUIRED`,运行 `hunter-harness instructions audit`;规则候选只进入提案,永不自动应用。
|
|
64
61
|
|
|
62
|
+
## 交互后续动作
|
|
63
|
+
|
|
64
|
+
交互式宿主支持选择器时,必须使用**多选复选框**,保持用户熟悉的勾选形式;只显示与本次非 OK 组件对应的选项,再附加“保持现状”。不要改成自由输入或普通编号问答。选项标题和说明优先使用通俗中文,机器原因码只放在技术详情中。
|
|
65
|
+
|
|
66
|
+
- **生成 Codebase Map**:仅在 `codebase-map` 缺失或过期时显示。说明它会扫描项目的技术栈、外部集成、架构、目录结构、编码约定、测试方式和风险,生成 `.harness/codebase/map/` 下的 `STACK.md`、`INTEGRATIONS.md`、`ARCHITECTURE.md`、`STRUCTURE.md`、`CONVENTIONS.md`、`TESTING.md`、`CONCERNS.md`,以及 `map-summary.md` 和 `map-manifest.json`;不会修改源码。
|
|
67
|
+
- **运行指令审计**:仅在 `rules` 需要审计时显示。说明服务端会结合项目类型、现有指令文档、Codebase Map 和近期变更生成中文优化提案,不会直接修改项目文档;用户审阅后才可显式应用。
|
|
68
|
+
- **检查 CodeGraph 后台同步**:仅在 watcher 未验证、停用或存在待同步源码时显示。若索引可用且待同步数为 0,应说明当前查询仍可用,检查 watcher 只是为了确认后续源码能否自动增量更新。
|
|
69
|
+
- **保持现状**:接受本次提示,不执行任何后续动作。
|
|
70
|
+
|
|
65
71
|
## Safety
|
|
66
72
|
|
|
67
73
|
同步不得直接修改项目指令文档或规则。配置真源与生成投影存在漂移时只报告,不静默覆盖真源。change 清理先 dry-run,仅对已验证归档收据执行安全清理。知识查询和 ingest 均为远端职责,不创建 `.harness/knowledge`。
|
|
68
74
|
|
|
75
|
+
无论结果如何,`sync` 都不写持久同步报告、不追加 change 事件、不调用 `events-sync`,也不上传监控;组件详情仅存在于本次 stdout。Adapter 事务本身的必要备份和回滚证据不属于 sync 日志,不得因此禁用。
|
|
76
|
+
|
|
69
77
|
## P0 执行可信度规则
|
|
70
78
|
|
|
71
79
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
@@ -77,18 +85,3 @@ JSON 报告回显到对话。
|
|
|
77
85
|
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
78
86
|
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
79
87
|
> 片段:p0-trust
|
|
80
|
-
|
|
81
|
-
## 执行日志
|
|
82
|
-
|
|
83
|
-
`events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
|
|
84
|
-
|
|
85
|
-
```powershell
|
|
86
|
-
python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --run-id <phase-run-id> --attempt <n> --note "<触发指令>"
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
> **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
|
|
90
|
-
|
|
91
|
-
> **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
|
|
92
|
-
|
|
93
|
-
每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
|
|
94
|
-
> 片段:logging · phase=`sync`
|
|
@@ -46,7 +46,8 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
`--check` 是严格只读检查;`--dry-run` 是兼容别名。两者都不生成持久报告、receipt 或
|
|
49
|
-
|
|
49
|
+
投影。普通模式可以执行明确请求的 Adapter 事务,但同样不写持久同步报告。每个长阶段
|
|
50
|
+
通过 stderr 输出受限 heartbeat;stdout 默认只输出:
|
|
50
51
|
|
|
51
52
|
```json
|
|
52
53
|
{
|
|
@@ -59,14 +60,15 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
59
60
|
"adapterBundleVersions": {}
|
|
60
61
|
},
|
|
61
62
|
"remediations": [],
|
|
62
|
-
"reportPath":
|
|
63
|
-
"reportSha256":
|
|
63
|
+
"reportPath": null,
|
|
64
|
+
"reportSha256": null
|
|
64
65
|
}
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
所有模式的 `reportPath` 和 `reportSha256` 固定为 `null`。只有显式 `--verbose` 才把每个
|
|
69
|
+
组件的 `status`、`reasonCode`、`observedAt`、`durationMs`、证据、是否自动修复及
|
|
70
|
+
`nextAction` 写到 stdout。`sync` 不写 `.harness/runtime/sync/`,不追加 change 生命周期
|
|
71
|
+
事件,不调用 `events-sync`,也不上传运行监控。
|
|
70
72
|
|
|
71
73
|
### 结构化修复
|
|
72
74
|
|
|
@@ -97,17 +99,25 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
97
99
|
|
|
98
100
|
## 5. Git 与 CodeGraph
|
|
99
101
|
|
|
100
|
-
|
|
102
|
+
增量基线只使用当前分支的 upstream merge-base;没有 upstream 时仅收集当前 HEAD 和有界文件统计。不得读取旧 `.harness/runtime/sync/last-success.json`,也禁止固定使用 `HEAD~5`。
|
|
101
103
|
|
|
102
104
|
CodeGraph 状态探测优先读取 `codegraph status --json` 的权威 pending 列表;只有该 API
|
|
103
105
|
不可用时才退回受限文件扫描,并把来源标成 `database-scan` 或 `unverified`。`.agents/`、
|
|
104
106
|
`.cursor/`、`.claude/` 等 Adapter 投影和 Markdown 文档不计入源码 pending。daemon log
|
|
105
|
-
mtime 只写入 `watcherObservedAt`,不能冒充 `indexObservedAt
|
|
106
|
-
|
|
107
|
+
mtime 只写入 `watcherObservedAt`,不能冒充 `indexObservedAt`。服务可达、watcher 已启用
|
|
108
|
+
且权威 `pendingFileCount=0` 时为 `CURRENT`。如果 API 不可用,但本地索引存在且受限扫描
|
|
109
|
+
确认 `pendingFileCount=0`,返回 `ADVISORY / INDEX_PRESENT_UNVERIFIED`:索引仍可用于查询,
|
|
110
|
+
只是无法证明 watcher 正在持续运行。存在待同步源码,或已确认 watcher 停用/服务不可达,
|
|
111
|
+
才返回 `WARN`。不要在 sync 内执行全量索引。
|
|
107
112
|
|
|
108
113
|
## 6. Instruction graph
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
只验证当前已启用 Agent 对应的入口文档及其引用图,而不是固定要求所有 Adapter 文件:
|
|
116
|
+
|
|
117
|
+
- `AGENTS.md` 是共享入口,始终验证。
|
|
118
|
+
- 仅启用 Claude Code 时验证 `CLAUDE.md`。
|
|
119
|
+
- 仅启用 CodeBuddy 时验证 `CODEBUDDY.md`。
|
|
120
|
+
- Codex 和 Cursor 不要求额外生成 `CLAUDE.md` 或 `CODEBUDDY.md`。
|
|
111
121
|
|
|
112
122
|
- Claude 可单向引用 AGENTS,共享约束保持单一真源。
|
|
113
123
|
- 禁止 AGENTS 反向引用 CLAUDE 形成环。
|
|
@@ -156,10 +166,11 @@ npx hunter-harness instructions apply --proposal <proposal.json> --yes --json
|
|
|
156
166
|
|
|
157
167
|
只有以下条件同时满足才能宣称同步成功:
|
|
158
168
|
|
|
159
|
-
- stdout
|
|
169
|
+
- stdout 摘要完整给出全局状态;使用 `--verbose` 时包含组件结果;
|
|
160
170
|
- 没有 `FAIL` 或 `BLOCKED`;
|
|
161
171
|
- 所有自动修复均有 post-transaction 证据;
|
|
162
172
|
- knowledge 组件明确为 remote-only,且未创建或刷新本地索引;
|
|
163
173
|
- 文档和规则组件未直接改写项目文件;
|
|
174
|
+
- 未写持久 sync 报告、change 事件或监控上传记录;
|
|
164
175
|
- 未把 `UNKNOWN` 描述成已验证;
|
|
165
176
|
- 第二次无输入变化的运行不产生投影 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=f13d1bb7177b0294; overlay=none; agent=claude-code; do not edit -->
|
|
27
27
|
# harness-test — 测试执行
|
|
28
28
|
|
|
29
29
|
## Purpose
|
|
@@ -3,7 +3,7 @@ name: harness-archive
|
|
|
3
3
|
description: 归档所有变更产出(计划/测试报告/审查/SQL/API文档)到 .harness/archive/,含归档元数据。仅当用户显式调用
|
|
4
4
|
/harness-archive 时使用;不得被其他阶段 skill 自动接续触发。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
7
7
|
# harness-archive — 变更归档
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=codebuddy; 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=f13d1bb7177b0294; overlay=none; agent=codebuddy; 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=f13d1bb7177b0294; overlay=none; agent=codebuddy; 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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
7
7
|
# harness-plan — 需求规划
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
8
8
|
# harness-review — 代码审查
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
7
7
|
# harness-run — 需求编码
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
7
7
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -4,12 +4,12 @@ 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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
8
8
|
# harness-sync
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
11
11
|
|
|
12
|
-
通过一个有界入口刷新 Harness Adapter
|
|
12
|
+
通过一个有界入口刷新 Harness Adapter 与元数据、检查远端知识职责和项目指令状态,并在当前命令输出中给出组件结果。`sync` 是维护命令,不是 change 生命周期阶段:不追加 change 事件、不调用 `events-sync`、不上传运行监控。`sync` 不直接改写 AGENTS/CLAUDE/CODEBUDDY 或规则;文档优化使用远端审计提案。
|
|
13
13
|
|
|
14
14
|
## Before running
|
|
15
15
|
|
|
@@ -26,10 +26,7 @@ npx hunter-harness sync --project <项目路径> --profile interactive --progres
|
|
|
26
26
|
|
|
27
27
|
CLI 负责 Python runtime 解析、Adapter 事务、远端知识职责、文档审计提示、map、指令图、配置来源、change 状态及 CodeGraph 证据汇总。禁止直接调用旧知识 Python 脚本,禁止使用固定 `HEAD~5`,禁止自动全量重建 CodeGraph。
|
|
28
28
|
|
|
29
|
-
只读诊断使用 `--check`(`--dry-run`
|
|
30
|
-
长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。完整报告写入摘要中的
|
|
31
|
-
`reportPath`,并带 `reportSha256`。需要组件级证据时显式加 `--verbose`,不得默认把完整
|
|
32
|
-
JSON 报告回显到对话。
|
|
29
|
+
只读诊断使用 `--check`(`--dry-run` 为兼容别名);它不得写 receipt 或投影。普通模式只允许执行用户请求的 Adapter 事务,不写入 `.harness/runtime/sync/`。长阶段的 heartbeat 写 stderr;stdout 只保留紧凑摘要。需要组件级证据时显式加 `--verbose`;`reportPath` 和 `reportSha256` 固定为 `null`。
|
|
33
30
|
|
|
34
31
|
摘要中的 `remediations[]` 是稳定修复契约。先用对应 `previewCommand` 预览;低风险修复用
|
|
35
32
|
`--apply safe`,指定修复用 `--fix <id>`。需覆盖受管投影的修复必须同时提供 `--yes`,
|
|
@@ -40,17 +37,28 @@ JSON 报告回显到对话。
|
|
|
40
37
|
|
|
41
38
|
- `OK`:所有可验证组件通过。
|
|
42
39
|
- `ADVISORY`:例如需要运行中文指令审计提案;退出码仍为 0,且 `sync` 本身没有改写文档。
|
|
43
|
-
- `WARN`:存在过期、冲突、待评审或 `UNKNOWN`
|
|
40
|
+
- `WARN`:存在过期、冲突、待评审或 `UNKNOWN` 证据;按组件的中文 `nextAction` 处理。
|
|
44
41
|
- `FAIL`:组件执行失败;不得宣称同步完成。
|
|
45
42
|
- `BLOCKED`:runtime、项目状态或能力契约阻塞;先修复阻塞条件。
|
|
46
43
|
- `UNKNOWN`:证据不足,不等于成功,也不触发无界重建。
|
|
47
44
|
|
|
48
45
|
非交互或 CI 使用 `--check --profile general --progress jsonl --json`。交互式运行若报告 `INSTRUCTION_AUDIT_REQUIRED`,运行 `hunter-harness instructions audit`;规则候选只进入提案,永不自动应用。
|
|
49
46
|
|
|
47
|
+
## 交互后续动作
|
|
48
|
+
|
|
49
|
+
交互式宿主支持选择器时,必须使用**多选复选框**,保持用户熟悉的勾选形式;只显示与本次非 OK 组件对应的选项,再附加“保持现状”。不要改成自由输入或普通编号问答。选项标题和说明优先使用通俗中文,机器原因码只放在技术详情中。
|
|
50
|
+
|
|
51
|
+
- **生成 Codebase Map**:仅在 `codebase-map` 缺失或过期时显示。说明它会扫描项目的技术栈、外部集成、架构、目录结构、编码约定、测试方式和风险,生成 `.harness/codebase/map/` 下的 `STACK.md`、`INTEGRATIONS.md`、`ARCHITECTURE.md`、`STRUCTURE.md`、`CONVENTIONS.md`、`TESTING.md`、`CONCERNS.md`,以及 `map-summary.md` 和 `map-manifest.json`;不会修改源码。
|
|
52
|
+
- **运行指令审计**:仅在 `rules` 需要审计时显示。说明服务端会结合项目类型、现有指令文档、Codebase Map 和近期变更生成中文优化提案,不会直接修改项目文档;用户审阅后才可显式应用。
|
|
53
|
+
- **检查 CodeGraph 后台同步**:仅在 watcher 未验证、停用或存在待同步源码时显示。若索引可用且待同步数为 0,应说明当前查询仍可用,检查 watcher 只是为了确认后续源码能否自动增量更新。
|
|
54
|
+
- **保持现状**:接受本次提示,不执行任何后续动作。
|
|
55
|
+
|
|
50
56
|
## Safety
|
|
51
57
|
|
|
52
58
|
同步不得直接修改项目指令文档或规则。配置真源与生成投影存在漂移时只报告,不静默覆盖真源。change 清理先 dry-run,仅对已验证归档收据执行安全清理。知识查询和 ingest 均为远端职责,不创建 `.harness/knowledge`。
|
|
53
59
|
|
|
60
|
+
无论结果如何,`sync` 都不写持久同步报告、不追加 change 事件、不调用 `events-sync`,也不上传监控;组件详情仅存在于本次 stdout。Adapter 事务本身的必要备份和回滚证据不属于 sync 日志,不得因此禁用。
|
|
61
|
+
|
|
54
62
|
## P0 执行可信度规则
|
|
55
63
|
|
|
56
64
|
- 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
|
|
@@ -62,18 +70,3 @@ JSON 报告回显到对话。
|
|
|
62
70
|
- sync/ingest 等生成的文档、规则、知识条目、架构说明一律**优先使用中文**撰写(标识符、命令、代码、API 字段名保持原文)
|
|
63
71
|
- 面向平台展示的标题/摘要/正文默认中文;仅当用户明确要求或目标系统强制时才用英文
|
|
64
72
|
> 片段:p0-trust
|
|
65
|
-
|
|
66
|
-
## 执行日志
|
|
67
|
-
|
|
68
|
-
`events.ndjson` 为唯一事实源(schema_version 3,兼容读取 v1/v2;`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止用 Write/Edit 直接维护**。直接修改的内容会在 `phase.end` 或 finalize 时被完整重建覆盖,属于数据丢失;需要保留的详情必须进入事件 `note`。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
|
|
69
|
-
|
|
70
|
-
```powershell
|
|
71
|
-
python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --run-id <phase-run-id> --attempt <n> --note "<触发指令>"
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
> **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
|
|
75
|
-
|
|
76
|
-
> **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。
|
|
77
|
-
|
|
78
|
-
每个阶段的 `phase.start` 与对应 `phase.end` 必须复用同一 `--run-id` / `--attempt`;阶段结束必须写 `--status OK|WARN|FAIL|BLOCKED`。重试同一阶段时生成新的 run-id 并增加 `--attempt <n>`,不得覆盖或伪装成一次执行。跨工具继续执行时写 `--executor-tool <codex|claude-code|codebuddy|cursor>`,并在接棒事件写 `--handoff-from-tool` / `--handoff-reason`;也可由 `HUNTER_HARNESS_TOOL/AGENT/MODEL/RUN_ID` 环境变量统一注入。
|
|
79
|
-
> 片段:logging · phase=`sync`
|
|
@@ -46,7 +46,8 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
`--check` 是严格只读检查;`--dry-run` 是兼容别名。两者都不生成持久报告、receipt 或
|
|
49
|
-
|
|
49
|
+
投影。普通模式可以执行明确请求的 Adapter 事务,但同样不写持久同步报告。每个长阶段
|
|
50
|
+
通过 stderr 输出受限 heartbeat;stdout 默认只输出:
|
|
50
51
|
|
|
51
52
|
```json
|
|
52
53
|
{
|
|
@@ -59,14 +60,15 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
59
60
|
"adapterBundleVersions": {}
|
|
60
61
|
},
|
|
61
62
|
"remediations": [],
|
|
62
|
-
"reportPath":
|
|
63
|
-
"reportSha256":
|
|
63
|
+
"reportPath": null,
|
|
64
|
+
"reportSha256": null
|
|
64
65
|
}
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
所有模式的 `reportPath` 和 `reportSha256` 固定为 `null`。只有显式 `--verbose` 才把每个
|
|
69
|
+
组件的 `status`、`reasonCode`、`observedAt`、`durationMs`、证据、是否自动修复及
|
|
70
|
+
`nextAction` 写到 stdout。`sync` 不写 `.harness/runtime/sync/`,不追加 change 生命周期
|
|
71
|
+
事件,不调用 `events-sync`,也不上传运行监控。
|
|
70
72
|
|
|
71
73
|
### 结构化修复
|
|
72
74
|
|
|
@@ -97,17 +99,25 @@ npx hunter-harness sync --check --project <项目路径> --profile general --pro
|
|
|
97
99
|
|
|
98
100
|
## 5. Git 与 CodeGraph
|
|
99
101
|
|
|
100
|
-
|
|
102
|
+
增量基线只使用当前分支的 upstream merge-base;没有 upstream 时仅收集当前 HEAD 和有界文件统计。不得读取旧 `.harness/runtime/sync/last-success.json`,也禁止固定使用 `HEAD~5`。
|
|
101
103
|
|
|
102
104
|
CodeGraph 状态探测优先读取 `codegraph status --json` 的权威 pending 列表;只有该 API
|
|
103
105
|
不可用时才退回受限文件扫描,并把来源标成 `database-scan` 或 `unverified`。`.agents/`、
|
|
104
106
|
`.cursor/`、`.claude/` 等 Adapter 投影和 Markdown 文档不计入源码 pending。daemon log
|
|
105
|
-
mtime 只写入 `watcherObservedAt`,不能冒充 `indexObservedAt
|
|
106
|
-
|
|
107
|
+
mtime 只写入 `watcherObservedAt`,不能冒充 `indexObservedAt`。服务可达、watcher 已启用
|
|
108
|
+
且权威 `pendingFileCount=0` 时为 `CURRENT`。如果 API 不可用,但本地索引存在且受限扫描
|
|
109
|
+
确认 `pendingFileCount=0`,返回 `ADVISORY / INDEX_PRESENT_UNVERIFIED`:索引仍可用于查询,
|
|
110
|
+
只是无法证明 watcher 正在持续运行。存在待同步源码,或已确认 watcher 停用/服务不可达,
|
|
111
|
+
才返回 `WARN`。不要在 sync 内执行全量索引。
|
|
107
112
|
|
|
108
113
|
## 6. Instruction graph
|
|
109
114
|
|
|
110
|
-
|
|
115
|
+
只验证当前已启用 Agent 对应的入口文档及其引用图,而不是固定要求所有 Adapter 文件:
|
|
116
|
+
|
|
117
|
+
- `AGENTS.md` 是共享入口,始终验证。
|
|
118
|
+
- 仅启用 Claude Code 时验证 `CLAUDE.md`。
|
|
119
|
+
- 仅启用 CodeBuddy 时验证 `CODEBUDDY.md`。
|
|
120
|
+
- Codex 和 Cursor 不要求额外生成 `CLAUDE.md` 或 `CODEBUDDY.md`。
|
|
111
121
|
|
|
112
122
|
- Claude 可单向引用 AGENTS,共享约束保持单一真源。
|
|
113
123
|
- 禁止 AGENTS 反向引用 CLAUDE 形成环。
|
|
@@ -156,10 +166,11 @@ npx hunter-harness instructions apply --proposal <proposal.json> --yes --json
|
|
|
156
166
|
|
|
157
167
|
只有以下条件同时满足才能宣称同步成功:
|
|
158
168
|
|
|
159
|
-
- stdout
|
|
169
|
+
- stdout 摘要完整给出全局状态;使用 `--verbose` 时包含组件结果;
|
|
160
170
|
- 没有 `FAIL` 或 `BLOCKED`;
|
|
161
171
|
- 所有自动修复均有 post-transaction 证据;
|
|
162
172
|
- knowledge 组件明确为 remote-only,且未创建或刷新本地索引;
|
|
163
173
|
- 文档和规则组件未直接改写项目文件;
|
|
174
|
+
- 未写持久 sync 报告、change 事件或监控上传记录;
|
|
164
175
|
- 未把 `UNKNOWN` 描述成已验证;
|
|
165
176
|
- 第二次无输入变化的运行不产生投影 churn。
|
|
@@ -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=f13d1bb7177b0294; overlay=none; agent=codebuddy; do not edit -->
|
|
7
7
|
# harness-test — 测试执行
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -3,7 +3,7 @@ name: harness-archive
|
|
|
3
3
|
description: 归档所有变更产出(计划/测试报告/审查/SQL/API文档)到 .harness/archive/,含归档元数据。仅当用户显式调用
|
|
4
4
|
/harness-archive 时使用;不得被其他阶段 skill 自动接续触发。
|
|
5
5
|
---
|
|
6
|
-
<!-- generated by harness_deploy.py; core=
|
|
6
|
+
<!-- generated by harness_deploy.py; core=b737565b4074dee2; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-archive — 变更归档
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=b737565b4074dee2; 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=b737565b4074dee2; 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=b737565b4074dee2; 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=b737565b4074dee2; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-plan — 需求规划
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=b737565b4074dee2; overlay=none; agent=codex; do not edit -->
|
|
8
8
|
# harness-review — 代码审查
|
|
9
9
|
|
|
10
10
|
## Purpose
|
|
@@ -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=b737565b4074dee2; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-run — 需求编码
|
|
8
8
|
|
|
9
9
|
## Purpose
|
|
@@ -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=b737565b4074dee2; overlay=none; agent=codex; do not edit -->
|
|
7
7
|
# harness-submit — 最终提交(含 worktree 合并)
|
|
8
8
|
|
|
9
9
|
## Purpose
|