Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .cursor/rules/06-harness-pointer.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
description: Harness Starter — 读序、task、人工闸与 Verify 纪律(嵌入业务仓 · Cursor)
alwaysApply: true
globs:
- "**/*"
---

# Harness Starter(业务仓 · Cursor)

> **单源真值**:`docs/coding_wiki/` 读序 + `docs/standards/` + `AGENTS.md`。
> **本规则**:摘要 + **POINTER**;条文真值在 `docs/harness/prompts/`。

## 执行 task 前

1. Open Folder = **本仓根**
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
- 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
- **`HG-AUDIT-R1` pending** → **30 拒改码**
- 声称与 task 表冲突 → **STOP**
4. 过程 invoke:`docs/harness/invokes/by-task/<task_slug>/`

## Verify(合并前)

| 栈 | 命令(与 `.github/workflows/` 一致) |
|----|--------------------------------------|
| 前端 | `pnpm lint` → `pnpm test` → `pnpm build` |
| 后端 | `pytest tests`(按仓 marker 裁剪) |
| iOS | `xcodebuild`(见 task `test_strategy_note`) |

## 关键词

`Harness`、`task`、`invoke`、`HG-AUDIT-R1`、`HG-GRAPH-MODULES`、`human_gate`、`拒开工`

## 完整库 POINTER

工作区:`docs/harness/prompts/`(22/30/TEMPLATE_30_gate_stop 等)
47 changes: 47 additions & 0 deletions .cyning-harness/QUICKREF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# cyning-harness · 业务仓速查

> 本文件由 `npx @cyning/harness init/upgrade` 自动生成,可手动删除。

---

## 常用命令

```bash
# 30 前聚合验证(gate-check + audit D5 + S5 warn + 可选 --graph)
npx @cyning/harness verify [--target .] [--task docs/tasks/active/task_xxx.md] [--graph] [--json] [--agent-hint] [--workspace-root PATH]

# 仅人工闸 npx @cyning/harness gate-check [--target .] [--task ...] [--graph] [--json]

# 生成 invoke 索引
npx @cyning/harness sync index [--target .]

# 升级 Harness 过程轨
npx @cyning/harness upgrade --target . --yes

# ICVO 审计(指定 task)
npx @cyning/harness audit --target . --task docs/tasks/active/task_xxx.md
```

## Node 仓可选路径

若 init/upgrade 时使用了 `--with-scripts`:

```bash
pnpm install
pnpm harness:verify --task docs/tasks/active/task_xxx.md
pnpm harness:gate
pnpm harness:audit --task docs/tasks/active/task_xxx.md
```

---

## 本地产品包覆盖

维护者开发时:

```bash
export CYNING_HARNESS=/path/to/cyning-harness
npx @cyning/harness verify --target .
```

业务仓无需 clone 产品包即可使用 CLI。
7 changes: 7 additions & 0 deletions .cyning-harness/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"version": "2.18.0",
"preset": "harness-only",
"ide": ["cursor","claude","agents"],
"from_version": null,
"upgraded_at": "2026-07-28T07:00:26Z"
}
19 changes: 19 additions & 0 deletions .cyning-harness/profile.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"version": 1,
"preset": "harness-only",
"description": "仅过程轨 + Cursor 规则(不覆盖图谱/业务 task)",
"paths": {
"ide_cursor": ".cursor/rules/06-harness-pointer.mdc"
},
"tracks": {
"graph": false,
"wiki": false,
"standards": false,
"harness_prompts": true,
"harness_invoke_template": true,
"ide_cursor": true,
"ide_claude": true,
"ide_agents": true,
"ci": "none"
}
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,6 @@ docs/diary/jsonPKmermaid/**/raw/
# --- Harness sessions(B1 · 本地 Inform 真值 · 不入库)---
docs/harness/sessions/**
!docs/harness/sessions/README.md

# cyning-harness local path (machine-specific)
.cyning-harness/local.json
35 changes: 35 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,38 @@
| `40-error-handling.mdc` | Error Handling | 错误处理与降级策略 — 结构化响应、异常分支、备选方案 |

全文附录:`python tools/gen_agents_md.py --full`

<!-- cyning-harness:begin -->
# Harness Starter(业务仓 · 通用 Agent)

> **单源真值**:`docs/coding_wiki/` 读序 + `docs/standards/` + 本文件其余业务约定。
> **本片段**:摘要 + **POINTER**;Harness 条文真值在 `docs/harness/prompts/`。

## 执行 task 前

1. Open Folder = **本仓根**
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非**聊天 / invoke 字面 `approved`):
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
- 首输出闸扫描表 · 见 `docs/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md`
- **`HG-AUDIT-R1` pending** → **30 拒改码**(须维护者签 task 表 `approved`)
- **`HG-GRAPH-MODULES` pending** → **30 拒改码**(D4-a)
- 用户声称与 task 表冲突 → **STOP** · 以 task 表为准
4. 过程 invoke:`docs/harness/invokes/by-task/<task_slug>/`

## Verify(合并前)

| 栈 | 命令(与 `.github/workflows/` 一致) |
|----|--------------------------------------|
| 前端 | `pnpm lint` → `pnpm test` → `pnpm build` |
| 后端 | `pytest tests`(按仓 marker 裁剪) |
| iOS | `xcodebuild`(见 task `test_strategy_note`) |

## 关键词

`Harness`、`task`、`invoke`、`HG-AUDIT-R1`、`HG-GRAPH-MODULES`、`human_gate`、`拒开工`

## 完整库 POINTER

工作区:`docs/harness/prompts/`(22/30/TEMPLATE_30_gate_stop 等)
<!-- cyning-harness:end -->
34 changes: 34 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1 +1,35 @@
@AGENTS.md

<!-- cyning-harness:begin -->
# Harness Starter(业务仓 · Claude Code)

> **单源真值**:`docs/coding_wiki/` 读序 + `docs/standards/` + `AGENTS.md`。
> **本片段**:摘要 + **POINTER**;条文真值在 `docs/harness/prompts/`。

## 执行 task 前

1. Open Folder = **本仓根**
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
- 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
- **`HG-AUDIT-R1` pending** → **30 拒改码**
- 声称与 task 表冲突 → **STOP**
4. 过程 invoke:`docs/harness/invokes/by-task/<task_slug>/`

## Verify(合并前)

| 栈 | 命令(与 `.github/workflows/` 一致) |
|----|--------------------------------------|
| 前端 | `pnpm lint` → `pnpm test` → `pnpm build` |
| 后端 | `pytest tests`(按仓 marker 裁剪) |
| iOS | `xcodebuild`(见 task `test_strategy_note`) |

## 关键词

`Harness`、`task`、`invoke`、`HG-AUDIT-R1`、`HG-GRAPH-MODULES`、`human_gate`、`拒开工`

## 完整库 POINTER

工作区:`docs/harness/prompts/`(22/30/TEMPLATE_30_gate_stop 等)
<!-- cyning-harness:end -->
12 changes: 12 additions & 0 deletions docs/harness/HARNESS_V2_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,17 @@ Inform(告知)与 Constrain(约束)在前后端子仓及工作区根已
- **00 总调度** 可链外编排并逐帽填 HatInstance;未用 00 时由 **关账(CLOSE)** 读各帽 Judgment + 50/reinspect 填表。
- **blocked**(任一帽 D2/D5 fail)→ **不得关账**;与 `human_gate` pending、50 书面阻塞、必绿 CI 红 **并行** 硬规则。

### 5.9 `wiki_delta` / `wiki_delta_note`(Wiki 反馈 · `@cyning/harness` ≥2.18)

| 取值 | 含义 | 关账时 |
|------|------|--------|
| `path` | 相对仓根的 wiki 文件/目录(通常 `docs/coding_wiki/…`) | 路径须存在;`experience_capture=required` 时经验节须含 `coding_wiki` / `Wiki:` / `wiki_promoted:` 指针 |
| `none` | 本 task 不改 wiki | **须** `wiki_delta_note` |
| `n/a` | 本仓未启用 WikiTrack | **须** `wiki_delta_note` |

- **缺字段 → `task close` BLOCK**(`verify --task` 默认 WARN;`--strict-wiki-delta` 可升 BLOCK)。
- **勿**默认 `--allow-wiki-gap`。钉版本见仓根 `harness.pin.json` 与 [`README.md`](./README.md)「npm 纪律包钉版本」。

---

## 6. 冻结点 vs 修订记录(再次落盘)
Expand Down Expand Up @@ -229,6 +240,7 @@ Inform(告知)与 Constrain(约束)在前后端子仓及工作区根已
| 2026-05-17 | §5.5 `audit_profile`、§5.6 `human_gate` / `semi_auto`;§0.2 链 [`handoff/HANDOFF_SEMI_AUTO.md`](prompts/HANDOFF_SEMI_AUTO.md) |
| 2026-06-08 | §5.6 升格 `orchestration` 链式常模 + `semi_auto` 过渡/废弃;链 [`SPEC-Governance-Harness-Chain-Orchestration-v1.md`](../spec/governance/SPEC-Governance-Harness-Chain-Orchestration-v1.md) |
| 2026-05-30 | §5.1 本仓 TDD 实践口径;task 模板 Delta/Scenario(OpenSpec 借鉴);链 diary TDD 专项分析 |
| 2026-07-28 | §5.9 `wiki_delta` / `wiki_delta_note`(对齐 `@cyning/harness@2.18.0` close 硬闸);钉版本见 `harness.pin.json` |
| 2026-05-31 | §5.7 `experience_capture`、§5.8 `kpi_rubric` / `kpi_aggregator` / `### KPI(00)`;链 KPI_RUBRIC_v1_2 与 00-orchestrator |

---
Expand Down
10 changes: 10 additions & 0 deletions docs/harness/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@
> **目标**:日常只读本目录 + `docs/tasks/`;含 **三方 Agent(50 帽)** 可查收落盘。
> **历史**:22/reviews、旧 invoke 见 [`../diary/harness-archive/`](../diary/harness-archive/README.md)。

### npm 纪律包钉版本(`@cyning/harness`)

| 项 | 真值 |
| --- | --- |
| **pin** | 仓根 [`harness.pin.json`](../../harness.pin.json)(当前 **2.18.0**) |
| **manifest** | [`.cyning-harness/manifest.json`](../../.cyning-harness/manifest.json) · preset `harness-only` |
| **升级** | `npx --yes @cyning/harness@<pin.version> upgrade --yes`(干净工作区;init 后改动未提交时可用 `--force`) |
| **破坏性(2.18+)** | task 缺 `wiki_delta` → **`task close` BLOCK**;`none`/`n/a` 须 `wiki_delta_note`。**勿**默认 `--allow-wiki-gap` |
| **本仓帽正文** | 真值仍在 `prompts/hats/` · `templates/` · `handoff/`;产品包扁平帽(`prompts/30-execute-code.md` 等)为 sync 对照层,**不**替代 `hats/` |

---

## 1. 日常读什么
Expand Down
61 changes: 61 additions & 0 deletions docs/harness/invokes/TEMPLATE_invoke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Harness invoke 快照模板

> **用途**:每 **新帽** 开局时,将 **占位符已全部替换** 的 §3 Prompt 落盘。
> **路径**:`docs/harness/invokes/by-task/<task_slug>/invoke_YYYYMMDD_<hat>_<slug>.md`

---

## 元信息表(必填)

| 字段 | 值 |
|------|-----|
| hat_id | 10 / 22 / 30 / 40 / 50 / 00 / CLOSE(合并可写 `30(含 40)`) |
| task_slug | `<slug>` |
| freeze_id | (可选) |
| task_paths | `docs/tasks/active/task_….md` |
| related_review_or_none | `docs/harness/reviews/…` 或 `无` |
| git_branch | `task/<slug>` |
| worktree_root | (并行时必填 · 相对仓根) |
| created_utc_or_local | YYYY-MM-DD |
| notes | (可选) |

---

## 可复制 Prompt 快照

```text
(粘贴本帽 TEMPLATE-*-invoke §3 全文 · 占位符须全部替换)
```

---

## 交付摘要(本帽结束时填)

- **验证命令** + 退出码
- **变更路径** 列表
- **下一棒** slug 或「交还 00」

---

## 纪律

| 规则 | 说明 |
|------|------|
| 同帽追问 | **不** 新增 invoke;沿用本节路径 |
| 打回重开 | 新文件或 `_r2` 后缀 |
| 与 reviews 分工 | reviews = 结论;invoke = **当时指令** |
| close 机械闸 | `harness task close` 按 task 元信息 `required_invoke_hats` / `invoke_retention_profile` 校验帽集合覆盖(v2.12+;缺省 `10,30,40`;文件名含 `30_40` 可双计;`--allow-invoke-gap` 豁免) |
| 命名 | `invoke_YYYYMMDD_<hat>[_<hat>...]_<slug>.md`(hat token **仅**在日期后、slug 前连续段;slug 勿夹 `10`/`40` 等白名单段 · v2.12.1) |
| commit | 落盘 + task 回填后再 commit(见 HANDOFF) |

---

## 完整库 POINTER

Ink 工作区:`docs/harness/invokes/README.md` · 各 `TEMPLATE-*-invoke.md` §3

## 修订记录

| 日期 | 说明 |
|------|------|
| YYYY-MM-DD | 从 cyning-harness 嵌入 |
53 changes: 53 additions & 0 deletions docs/harness/prompts/10-spec-requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# 帽子:10-spec · SPEC 需求分析(Harness · Starter 子集)

> **hat_id(V2)**:**10-spec**(自工作区 Extended 收编进包)。
> **姊妹帽**:task 思考 **10-task**([`10-task-requirements.md`](./10-task-requirements.md))。
> **双轨**:功能 / Epic **必经**;bugfix / 上游 Issue **可跳过**(Issue ≈ mini-SPEC)。
> **完整版 POINTER**(Ink 工作区):`docs/harness/prompts/10-spec-requirements.md`
> **本文件**:嵌入用户仓 `docs/harness/prompts/` 的 **精简真值**。

## 身份

**SPEC 需求分析** Agent:把模糊需求写成 **可签收 SPEC**;对 SPEC 做多轮思考并 **回填 SPEC 正文**;不写 task 实现细节、不改产品代码。

## 只做什么

- 明确 **范围 / 非范围 / 验收 / failure_paths**(可观测)
- **默认 R0 + R1–R5** 思考,结论写入 SPEC「思考轮」节 + **思考轮控制** 表
- 对话内 **缺口短评**(阻塞 vs 建议);契约变更标 **freeze_id** 升级点
- 产出 **「下一棒可复制 Prompt」**(通常:00 起草 task,或 20-spec-audit 审 SPEC 签收)

## 禁止什么

- 不实现业务代码;不替 10-task 写 task 思考轮(除非显式「SPEC→task 同会话」且 task 草稿已由 00 创建)
- 不在缺思考轮控制时宣称「SPEC 可签收」
- **不**签发 `HG-SPEC-SIGNOFF`(人签)· **不**签发 `HG-AUDIT-R1`(task 阶段由 20-task-audit + 人签)

## 默认轮语义(R0–R5 摘要)

| 轮 | 主题 |
|----|------|
| **R0** | 读人聊 / Issue / 业务目标 |
| **R1** | 范围 / 非范围 / 角色与场景 |
| **R2** | 方案对比(≥2 · 推荐 · 弃选) |
| **R3** | 边界 / 失败路径 / 安全与依赖 |
| **R4** | 验收标准 / 可测性 / `test_strategy` 建议 |
| **R5** | SPEC 签收就绪 · 是否交 00 出 task |

裁量须留痕:提前停填 `early_stop=yes` + reason + `residual_risks`;增 R6+ 填扩展理由;跳轮写「(跳过 · 见思考轮控制)」。

## 交接物

- 更新后的 **SPEC 路径**(`docs/spec/SPEC-<slug>_v1.md`)+ 思考轮控制已填
- **下一棒 Prompt**:00 起草 task,或 20-spec-audit 书面审
- 与 10-task 分界:10-spec 完成 → 人签 SPEC 或轻量 20-spec-audit → 00 起草 task

## 修订记录

| 日期 | 摘要 |
|------|------|
| 2026-07-24 | V2 拆分收编进包(来源:工作区 `10-spec-requirements.md` · 2026-06-12 v1.1) |

## 给 Cursor

`10-spec`、`SPEC`、`思考轮`、`R0`、`HG-SPEC-SIGNOFF`、`bugfix 跳过`
Loading
Loading