@cyning/harness 1.0.0 → 1.0.1
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/CHANGELOG.md +22 -0
- package/README.md +21 -17
- package/bin/harness.js +1 -1
- package/docs/ONBOARDING.md +14 -11
- package/docs/README.md +2 -2
- package/docs/RELEASE_v1.0.0.md +1 -0
- package/docs/RELEASE_v1.0.1.md +87 -0
- package/docs/USER_GUIDE_v1.0_zh.md +284 -0
- package/docs/methodology/ROADMAP_v1_zh.md +22 -1
- package/docs/methodology/graph/HARNESS_GRAPH_MODEL_design_v0_zh.md +1 -0
- package/docs/methodology/graph/HGM_UPGRADE_OUTLINE_v1_zh.md +248 -0
- package/examples/compliance_bench/README.md +64 -11
- package/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md +1 -1
- package/harness/templates/QUICKREF_v1_zh.md +47 -0
- package/ide/adapters/AGENTS.md.fragment.example +1 -0
- package/ide/adapters/CLAUDE.md.fragment.example +1 -0
- package/ide/adapters/cursor-harness-starter.mdc.example +1 -0
- package/lib/audit.js +4 -6
- package/lib/cli.js +195 -5
- package/lib/package-scripts.js +65 -0
- package/lib/paths.js +27 -0
- package/lib/verify.js +103 -0
- package/ontology.yaml +1 -1
- package/package.json +1 -1
- package/wizard/README.md +4 -0
- package/wizard/compliance-bench.sh +150 -55
- package/wizard/install.sh +5 -3
- package/wizard/upgrade.sh +7 -2
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# HGM 升级方案 · 讨论大纲 v1
|
|
2
|
+
|
|
3
|
+
| 项 | 内容 |
|
|
4
|
+
| --- | --- |
|
|
5
|
+
| **状态** | `outline` · **待维护者逐节讨论签收** |
|
|
6
|
+
| **版本** | v1.0 |
|
|
7
|
+
| **日期** | 2026-06-16 |
|
|
8
|
+
| **性质** | Track G **立项前**方案大纲 · 非实现规格 |
|
|
9
|
+
| **设计真值(已有)** | [`HARNESS_GRAPH_MODEL_design_v0_zh.md`](./HARNESS_GRAPH_MODEL_design_v0_zh.md) |
|
|
10
|
+
| **语义真值** | [`../product/DESIGN_ONTOLOGY_v1_zh.md`](../product/DESIGN_ONTOLOGY_v1_zh.md) v1.2 |
|
|
11
|
+
| **L2 路线** | [`../ROADMAP_v1_zh.md`](../ROADMAP_v1_zh.md) §2.2 · §8 |
|
|
12
|
+
| **编排 task** | 工作区 [`task_cyning_harness_g1_hgm_v2_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_g1_hgm_v2_v1.md) |
|
|
13
|
+
|
|
14
|
+
> **一句话**:HGM = 过程轨 **Task / Gate / Hat / Review** 的显式图 + append-only 事件;**不替代** Markdown 真值 · **不替代** Inform 架构图谱。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 0. 维护者决策摘要(2026-06-16)
|
|
19
|
+
|
|
20
|
+
| # | 决策 | 含义 |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| D1 | **后端 Graph YAML P0 关账后再开 HGM G1** | Ink 后端 `graph-yaml-p0-00-main` 验证 schema/编译/CI 口径 · HGM 不抢跑 |
|
|
23
|
+
| D2 | **产品 Inform-YAML 在 v2.0 前并入主轨** | 后端试点后 · 将 YAML 能力升进 `@cyning/harness` **v1.1+** · 避免 2.x 再迁一次 Inform 格式 |
|
|
24
|
+
| D3 | **B9 Agent-shell 后置** | 排在 **HGM G1** 与 **cyning-harness-agent** 基础齐全之后 · 非 v1.0 并行项 |
|
|
25
|
+
| D4 | **v1.0 公众号稿本周完成发布** | 见 D 轨 [`ARTICLE_纪律包_v1.0_stable_公众号_v1_zh.md`](../../../../ai_coding_governance/narrative/discipline_package_series/ARTICLE_纪律包_v1.0_stable_公众号_v1_zh.md) |
|
|
26
|
+
| D5 | **本大纲 = G1 讨论入口** | 各节 `[讨论]` / `[待定]` 逐轮闭合后再写 G1 task 30 帽实现规格 |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 1. 总体依赖链(Post-v1.0)
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
【本周 P0/P1】
|
|
34
|
+
A5 v1.0.1(CLI verify/gate-check) ──► Epic CLOSE(HG-EPIC-ROADMAP)
|
|
35
|
+
D 轨 v1.0 公众号稿通读 + 发布
|
|
36
|
+
|
|
37
|
+
【Inform 层 · 先于 HGM 产品 ingest】
|
|
38
|
+
Ink 后端 graph-yaml-p0-00-main(P0 试点 CLOSE)
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
产品 Track I-YAML(@cyning/harness v1.1+ · gate-check / InformArtifact 对齐)
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
【Track G · HGM】
|
|
45
|
+
G0 事件 schema 冻结 + 讨论大纲签收(本文件)
|
|
46
|
+
│
|
|
47
|
+
▼
|
|
48
|
+
G1 v2.0:ingest · snapshot · axioms check 子集
|
|
49
|
+
│
|
|
50
|
+
▼
|
|
51
|
+
G2 v2.1+:timeline · SQLite · patterns(可选)
|
|
52
|
+
|
|
53
|
+
【Track B · 后置】
|
|
54
|
+
cyning-harness-agent 基础(Track C 提案 · 待单独立项)
|
|
55
|
+
│
|
|
56
|
+
▼
|
|
57
|
+
B9 Agent-shell findings(第二 DistributionChannel · ≤4h/周)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**硬约束**:HGM **不得**在 YAML P0 未关账时写「InformArtifact 已统一 YAML」;对外 **不得**把 YAML 试点称作「HGM 已上线」。
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 2. 三轨「图」边界(讨论必读)
|
|
65
|
+
|
|
66
|
+
| 轨 | 名称 | 管什么 | semver / task | 与 HGM 关系 |
|
|
67
|
+
| --- | --- | --- | --- | --- |
|
|
68
|
+
| **Inform · GraphTrack** | 架构图谱 | 模块/流程/入口 · `_tech_graph/` | 业务仓 + v1.0 `gate-check --graph` | HGM 节点 `InformArtifact` **引用** 此轨产物 |
|
|
69
|
+
| **Inform · YAML** | Graph Source v3 | flowchart 编辑源 · YAML→MD/JSON | 后端 P0 → 产品 v1.1+ [`task_y1`](../../../../docs/harness/tasks/active/task_cyning_harness_y1_yaml_inform_v19_v1.md) | 为 InformArtifact 提供 **稳定 machine-readable 源** · **非**过程事件 |
|
|
70
|
+
| **Track G · HGM** | 过程协作图 | Task–Gate–Hat–Review 实例 + 事件史 | v2.0+ G1 [`task_g1`](../../../../docs/harness/tasks/active/task_cyning_harness_g1_hgm_v2_v1.md) | **本大纲主题** |
|
|
71
|
+
|
|
72
|
+
```mermaid
|
|
73
|
+
flowchart TB
|
|
74
|
+
subgraph Inform["Inform 层"]
|
|
75
|
+
YAML["Graph YAML 源"]
|
|
76
|
+
GT["graph.json / _tech_graph"]
|
|
77
|
+
YAML --> GT
|
|
78
|
+
end
|
|
79
|
+
subgraph Process["过程轨 · HGM"]
|
|
80
|
+
Files["tasks · reviews · invokes"]
|
|
81
|
+
Events["events/*.jsonl"]
|
|
82
|
+
Snap["graph/snapshot.json"]
|
|
83
|
+
Files --> Events
|
|
84
|
+
Events --> Snap
|
|
85
|
+
end
|
|
86
|
+
GT -->|"MUST_READ 边"| Snap
|
|
87
|
+
Files -->|"文件真值优先 S2"| Process
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3. G1(v2.0)MVP 范围 · 建议包络
|
|
93
|
+
|
|
94
|
+
> 细节见 design v0 · 本节只列 **G1 必达 / 明确不做**,供讨论勾选。
|
|
95
|
+
|
|
96
|
+
### 3.1 G1 必达(proposal · 待讨论签收)
|
|
97
|
+
|
|
98
|
+
| 能力 | 交付物 | 验收口径(草案) |
|
|
99
|
+
| --- | --- | --- |
|
|
100
|
+
| **事件写入** | `.cyning-harness/events/YYYY-MM.jsonl` | append-only · 幂等 ingest |
|
|
101
|
+
| **ingest CLI** | `harness graph ingest --from-repo .` | 扫描 tasks/reviews/invokes/gate-check.log · 不碰 S2 覆盖 |
|
|
102
|
+
| **snapshot** | `harness graph snapshot` → `graph/snapshot.json` | 事件重放可 rebuild · 可删缓存 |
|
|
103
|
+
| **公理子集** | `harness graph axioms check` | **至少** D2 · D3 · rejected→draft · S2 事件审计 |
|
|
104
|
+
| **与 gate-check 并列** | 文档 + README | `--graph` 仍指 **Inform** · HGM 子命令独立 |
|
|
105
|
+
|
|
106
|
+
### 3.2 G1 明确不做
|
|
107
|
+
|
|
108
|
+
- Neo4j / 远端图库默认后端
|
|
109
|
+
- OWL 推理机 · GrowingReasoningAgent
|
|
110
|
+
- 用图 DB **覆盖** task/review 正文
|
|
111
|
+
- Supabase 同步(Q3 in design v0 · 维持 **否**)
|
|
112
|
+
- Agent-shell / Runtime(Track C / B9)
|
|
113
|
+
|
|
114
|
+
### 3.3 `[讨论]` G1 是否包含 InformArtifact 自动 ingest?
|
|
115
|
+
|
|
116
|
+
| 选项 | pros | cons |
|
|
117
|
+
| --- | --- | --- |
|
|
118
|
+
| **A · G1 仅过程节点** | 范围小 · 与 YAML 产品轨解耦 | Inform 与过程图需两次 ingest |
|
|
119
|
+
| **B · G1 含 InformArtifact 指针** | `MUST_READ` 边可机械检查 | 依赖 Track I-YAML schema 冻结 |
|
|
120
|
+
|
|
121
|
+
**维护者暂定**:**B** — 但 **Inform 正文仍来自 YAML/MD 真值** · HGM 只存 `inform:{path}` 节点与 `MUST_READ` 边 · 等 I-YAML v1.1 后再实现 B 的细节。
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 4. 分阶段交付(Track G 内部分解)
|
|
126
|
+
|
|
127
|
+
| 阶段 | 代号 | npm / 标签 | 核心交付 | 闸门 |
|
|
128
|
+
| --- | --- | --- | --- | --- |
|
|
129
|
+
| **G0** | schema 冻结 | —(文档) | 本大纲签收 · `events` JSON Schema · 与 ontology 公理 ID 对照表 | YAML P0 CLOSE + 大纲 §3–§6 讨论闭合 |
|
|
130
|
+
| **G1** | ingest MVP | **v2.0.0** | §3.1 必达 | G0 + I-YAML v1.1 最小对齐(InformArtifact 路径约定) |
|
|
131
|
+
| **G2** | 查询加速 | v2.1.x | timeline · SQLite 投影 · 简单 filter query | G1 dogfood 30 天 |
|
|
132
|
+
| **G3** | 模式统计 | v2.2+ | patterns · 可选 Neo4j 导出 | G2 + 事件量足够 |
|
|
133
|
+
|
|
134
|
+
**`[讨论]`** v2.0.0 是否允许 **仅 ingest + snapshot**、axioms check 放 v2.0.1?
|
|
135
|
+
**草案倾向**:axioms check **至少 D2 一条** 须跟 v2.0.0 同发,否则「图论公理」叙事空洞。
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 5. 事件 schema · 讨论清单
|
|
140
|
+
|
|
141
|
+
> 完整示例见 design v0 §1.3 · 此处列 **待决字段**。
|
|
142
|
+
|
|
143
|
+
| ID | 问题 | 草案 | 待决 |
|
|
144
|
+
| --- | --- | --- | --- |
|
|
145
|
+
| E1 | ingest 触发 | v2.0 **手动 CLI** + gate-check 结束 hook **可选** | hook 是否默认开? |
|
|
146
|
+
| E2 | `actor` 枚举 | `maintainer \| gate-check \| sync \| agent:{hat_id}` | 是否加 `ci`? |
|
|
147
|
+
| E3 | 修正历史 | 仅 `CorrectionEvent` 追加 · 禁止删改 | 是否需要 `supersedes` 边? |
|
|
148
|
+
| E4 | Epic 节点 | Epic = Task 特化标签 `Epic` | 与现有 Epic task md 字段对齐表 **待写** |
|
|
149
|
+
| E5 | Inform 变更 | 是否发 `InformArtifactUpdated`? | **待定** · 可能仅 gate-check --graph 触发 |
|
|
150
|
+
| E6 | 多仓 | 单仓 `.cyning-harness/events` | 工作区根聚合 **v2.2+** |
|
|
151
|
+
|
|
152
|
+
**G0 交付**:`docs/methodology/graph/schemas/hgm_event_v1.schema.json`(待建)+ 与 §5 表同步的 CHANGELOG。
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 6. 与 Track I-YAML(产品 v1.1+)的接口
|
|
157
|
+
|
|
158
|
+
| 接口 | HGM 侧 | I-YAML 侧 |
|
|
159
|
+
| --- | --- | --- |
|
|
160
|
+
| **节点 ID** | `inform:{repo_rel_path}` | YAML 编译产物路径写入 manifest |
|
|
161
|
+
| **mustRead** | Task → InformArtifact 边 | task 表 `must_read` 或 gate-check 解析 |
|
|
162
|
+
| **校验** | ingest 时检查路径存在 | `graph yaml compile` + diff graph.json |
|
|
163
|
+
| **版本** | 事件带 `inform_schema: v3` 可选字段 | P0 后端 schema 冻结后 **复制/抽象** 到产品仓 |
|
|
164
|
+
|
|
165
|
+
**目的(D2)**:v2.0 开 ingest 时 Inform 已是 YAML 友好 · **避免 2.x 再改 Inform 物理格式**。
|
|
166
|
+
|
|
167
|
+
关联 task:[`task_cyning_harness_y1_yaml_inform_v19_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_y1_yaml_inform_v19_v1.md)
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 7. CLI 与 semver 纪律
|
|
172
|
+
|
|
173
|
+
| 命令域 | v1.x | v2.x |
|
|
174
|
+
| --- | --- | --- |
|
|
175
|
+
| `init` / `upgrade` / `audit` / `verify` / `gate-check` | 主轨持续 patch/minor | 行为兼容 · 无破坏性改 S2 |
|
|
176
|
+
| `gate-check --graph` | **Inform** 模块图 | 不变语义 |
|
|
177
|
+
| `graph ingest` / `graph snapshot` / `graph axioms` | **不存在** | **G1 新增** |
|
|
178
|
+
|
|
179
|
+
SEM-02 维持:**主轨 v1.x · HGM 从 v2.0 主版本起** · 不写「v0.5 = HGM」。
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 8. B9 · cyning-harness-agent · Track C
|
|
184
|
+
|
|
185
|
+
| 项 | 说明 |
|
|
186
|
+
| --- | --- |
|
|
187
|
+
| **cyning-harness-agent** | **未立项** · 预期 = 基于纪律包的 Agent 分发/Runtime 壳(Track C 子集)· 消费 HGM 事件与 gate-check |
|
|
188
|
+
| **B9** | Kimi ExecutionShell 第二通道实验 · **依赖** agent 基础 + HGM ingest 可观测 |
|
|
189
|
+
| **顺序** | I-YAML v1.1 → HGM G1 v2.0 → **agent 基础 task** → B9 findings |
|
|
190
|
+
| **叙事** | 主路径仍为 **repo + npx** · shell 通道永不单独宣传「不必 embed」 |
|
|
191
|
+
|
|
192
|
+
`[讨论]` cyning-harness-agent 是独立 npm 包还是 `@cyning/harness` 可选 preset?**待定** · 建议 Epic 后单独 STRATEGY 一页。
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 9. 文档与公众稿分层
|
|
197
|
+
|
|
198
|
+
| 文档 | 时机 | 注意 |
|
|
199
|
+
| --- | --- | --- |
|
|
200
|
+
| v1.0 公众号稿 | **本周** | 不写 HGM 已上线 · 可预告 Track G |
|
|
201
|
+
| 续篇 **篇 2 HGM** | G0 大纲签收 + v1.0 稿发布后 | 沿用 [`OUTLINE_续篇_两篇_v1_zh.md`](../../../../ai_coding_governance/narrative/discipline_package_series/OUTLINE_续篇_两篇_v1_zh.md) §4 |
|
|
202
|
+
| design v0 → v1 | G1 开发前 | 本大纲讨论结论 **回写** design 文件 |
|
|
203
|
+
| USER_GUIDE v2.0 | G1 npm 发布时 | 新增 `graph` 子命令章 |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 10. 开放问题(下一轮讨论议程)
|
|
208
|
+
|
|
209
|
+
1. **G1 axioms 最小集**:仅 D2+D3+rejected→draft,还是含 D4-a(Inform 模块闸)?
|
|
210
|
+
2. **ingest 与 git**:是否 v2.0 提供 optional pre-commit ingest?
|
|
211
|
+
3. **工作区多子仓**:Projects 根是否需 `harness graph ingest --workspace`(推迟 G2/G3?)
|
|
212
|
+
4. **I-YAML schema 归谁**:产品仓 canonical vs 业务仓试点先行 · **倾向** 试点冻结 → 产品抽象 → 写回 governance methodology
|
|
213
|
+
5. **bench S5**:rejected→draft 夹具是否并入 compliance-bench 与 HGM axioms **同一口径**?
|
|
214
|
+
6. **agent 立项触发**:G1 dogfood 绿 + 维护者书面批 Track C 子 task
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 11. 关联索引
|
|
219
|
+
|
|
220
|
+
| 类型 | 路径 |
|
|
221
|
+
| --- | --- |
|
|
222
|
+
| Post-v1.0 序列表 | [`POST_V1_0_SEQUENCE_v1_zh.md`](../../../../docs/harness/guides/POST_V1_0_SEQUENCE_v1_zh.md) |
|
|
223
|
+
| 后端 YAML P0 | [`task_engineering_graph_yaml_p0_00_main_v1.md`](../../../../ai-ink-brain-api-python/docs/tasks/active/task_engineering_graph_yaml_p0_00_main_v1.md) |
|
|
224
|
+
| 产品 I-YAML | [`task_cyning_harness_y1_yaml_inform_v19_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_y1_yaml_inform_v19_v1.md) |
|
|
225
|
+
| HGM G1 task | [`task_cyning_harness_g1_hgm_v2_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_g1_hgm_v2_v1.md) |
|
|
226
|
+
| B9(后置) | [`task_cyning_harness_b9_agent_shell_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_b9_agent_shell_v1.md) |
|
|
227
|
+
| A5 v1.0.1 | [`task_cyning_harness_a5_cli_verify_v101_v1.md`](../../../../docs/harness/tasks/active/task_cyning_harness_a5_cli_verify_v101_v1.md) |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 12. 讨论签收(维护者)
|
|
232
|
+
|
|
233
|
+
| 节 | 状态 | 签收人 | 日期 |
|
|
234
|
+
| --- | --- | --- | --- |
|
|
235
|
+
| §0 决策摘要 | `confirmed` | (维护者 2026-06-16 口头) | |
|
|
236
|
+
| §3 G1 范围 | `pending` | | |
|
|
237
|
+
| §5 事件 schema | `pending` | | |
|
|
238
|
+
| §6 I-YAML 接口 | `pending` | | |
|
|
239
|
+
| §8 agent/B9 | `pending` | | |
|
|
240
|
+
| **G0 整体** | `pending` | 全表勾选后开 G1 30 帽 | |
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 修订记录
|
|
245
|
+
|
|
246
|
+
| 版本 | 日期 | 说明 |
|
|
247
|
+
| --- | --- | --- |
|
|
248
|
+
| v1.0 | 2026-06-16 | 维护者五项决策落盘 · G0 讨论大纲初版 |
|
|
@@ -2,27 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
> **标题**:SDD-Compliance · **非** Agent Score / pass@1 类模型 benchmark。
|
|
4
4
|
> **范围**:S1–S4 · 公理 D2/D3/S2 可机械检查部分 · 不覆盖 D4/D5 与 Terminal-Bench。
|
|
5
|
-
> **状态**:v1.0
|
|
5
|
+
> **状态**:v1.0 · B8 冻结 · 4/4 期望合规率 **100%**。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 这个 bench 测什么?
|
|
10
|
+
|
|
11
|
+
| 问 | 答 |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| **测什么** | `gate-check.sh` 与 `harness-sync.sh` 是否符合 SDD 公理(合成夹具) |
|
|
14
|
+
| **不测什么** | LLM 会不会写代码 · 业务测试绿不绿 · 真实项目胜率 |
|
|
15
|
+
| **100 是什么** | 合规率 % = PASS 场景 ÷ 总场景 × 100;4/4 全过即 **100** |
|
|
16
|
+
| **和 B2 关系** | B2 Part A 是真实试点 retro;bench 是可机械复现的 **机制回归** |
|
|
6
17
|
|
|
7
18
|
---
|
|
8
19
|
|
|
9
20
|
## 运行
|
|
10
21
|
|
|
11
22
|
```bash
|
|
12
|
-
#
|
|
23
|
+
# 产品包根 · 维护者人工验收(推荐 · 含逐项解释)
|
|
13
24
|
cd /path/to/cyning-harness
|
|
14
25
|
./wizard/compliance-bench.sh --all
|
|
15
26
|
```
|
|
16
27
|
|
|
17
|
-
|
|
28
|
+
```bash
|
|
29
|
+
# CI / Epic 关账勾选 · stdout 仅数字 · 说明在 stderr
|
|
30
|
+
./wizard/compliance-bench.sh --quiet --all
|
|
31
|
+
# stdout: 100
|
|
32
|
+
# stderr: 摘要表 + 「100 表示何意」
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
单场景:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
./wizard/compliance-bench.sh S1 S3
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
18
42
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
43
|
+
## Scenario 详解
|
|
44
|
+
|
|
45
|
+
| ID | 场景 | 公理 | 夹具 | 期望 | 通过说明 |
|
|
46
|
+
| --- | --- | --- | --- | --- | --- |
|
|
47
|
+
| **S1** | R1 pending 即 30 | D2 · D3 | `S1_r1_pending/` | `gate-check` exit≠0 | 未签审核不得开 30 |
|
|
48
|
+
| **S2** | R1 approved 无 review | D2/D3 | `S2_r1_no_review/` | 无 `*_audit_R1_*` 文件 | 只改 task 表不算真审核 |
|
|
49
|
+
| **S3** | R1 approved + review | D2/D3 | `S3_r1_with_review/` | exit=0 且 review 存在 | 审核闭环 Happy Path |
|
|
50
|
+
| **S4** | sync 域边界 | S2 | `S4_sync_domain/` + 临时仓 | plan 无 `docs/tasks/`、`reviews/` | upgrade 不覆盖用户 task |
|
|
51
|
+
|
|
52
|
+
**v1 未纳入**:**S5** rejected→draft(待 gate-check 行为稳定后加夹具)。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 输出示例(`--all`)
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
[S1] R1 未签 · 30 应被拒
|
|
60
|
+
公理 D2 HumanGate · D3 30 前置闸
|
|
61
|
+
...
|
|
62
|
+
结果 ✅ PASS · gate-check exit=1
|
|
63
|
+
说明 未审核任务不得进入 30 执行编码 · 人闸有效
|
|
64
|
+
|
|
65
|
+
摘要 · SDD-Compliance bench
|
|
66
|
+
场景 结果 详情
|
|
67
|
+
S1 ✅ PASS gate-check exit=1 · 30 被拒
|
|
68
|
+
...
|
|
69
|
+
合规率 4/4 = 100%
|
|
70
|
+
|
|
71
|
+
解读 100 = 全部 4 个场景行为符合 SDD 公理
|
|
72
|
+
不是 LLM 解题分数 · 不可外推为「AI 胜率」
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
25
76
|
|
|
26
|
-
##
|
|
77
|
+
## 修订
|
|
27
78
|
|
|
28
|
-
|
|
79
|
+
| 日期 | 说明 |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
| 2026-06-16 | 丰富脚本输出 · 公理/夹具/解读 · quiet 摘要走 stderr |
|
|
@@ -20,7 +20,7 @@ reviews:task_*_audit_R1_*.md 存在且 R1 通过? {是/否}
|
|
|
20
20
|
|
|
21
21
|
结论:{STOP · 签闸指引 | 可进入读码/改码}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
机械辅助(推荐):`npx @cyning/harness verify --target <meta> --task docs/tasks/active/task_*.md`
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## Agent 纪律
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# cyning-harness · 业务仓速查
|
|
2
|
+
|
|
3
|
+
> 本文件由 `npx @cyning/harness init/upgrade` 自动生成,可手动删除。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 常用命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 30 前聚合验证(gate-check + audit D5 + S5 warn + 可选 --graph)
|
|
11
|
+
npx @cyning/harness verify [--target .] [--task docs/tasks/active/task_xxx.md] [--graph]
|
|
12
|
+
|
|
13
|
+
# 仅人工闸 npx @cyning/harness gate-check [--target .] [--task ...] [--graph] [--json]
|
|
14
|
+
|
|
15
|
+
# 生成 invoke 索引
|
|
16
|
+
npx @cyning/harness sync index [--target .]
|
|
17
|
+
|
|
18
|
+
# 升级 Harness 过程轨
|
|
19
|
+
npx @cyning/harness upgrade --target . --yes
|
|
20
|
+
|
|
21
|
+
# ICVO 审计(指定 task)
|
|
22
|
+
npx @cyning/harness audit --target . --task docs/tasks/active/task_xxx.md
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Node 仓可选路径
|
|
26
|
+
|
|
27
|
+
若 init/upgrade 时使用了 `--with-scripts`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm install
|
|
31
|
+
pnpm harness:verify --task docs/tasks/active/task_xxx.md
|
|
32
|
+
pnpm harness:gate
|
|
33
|
+
pnpm harness:audit --task docs/tasks/active/task_xxx.md
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 本地产品包覆盖
|
|
39
|
+
|
|
40
|
+
维护者开发时:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
export CYNING_HARNESS=/path/to/cyning-harness
|
|
44
|
+
npx @cyning/harness verify --target .
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
业务仓无需 clone 产品包即可使用 CLI。
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
1. Open Folder = **本仓根**
|
|
9
9
|
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
|
|
10
10
|
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非**聊天 / invoke 字面 `approved`):
|
|
11
|
+
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
|
|
11
12
|
- 首输出闸扫描表 · 见 `docs/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md`
|
|
12
13
|
- **`HG-AUDIT-R1` pending** → **30 拒改码**(须维护者签 task 表 `approved`)
|
|
13
14
|
- **`HG-GRAPH-MODULES` pending** → **30 拒改码**(D4-a)
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
1. Open Folder = **本仓根**
|
|
9
9
|
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
|
|
10
10
|
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
|
|
11
|
+
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
|
|
11
12
|
- 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
|
|
12
13
|
- **`HG-AUDIT-R1` pending** → **30 拒改码**
|
|
13
14
|
- 声称与 task 表冲突 → **STOP**
|
|
@@ -15,6 +15,7 @@ globs:
|
|
|
15
15
|
1. Open Folder = **本仓根**
|
|
16
16
|
2. 读 `docs/tasks/active/task_*.md`:`test_strategy` · `failure_paths` · **人工闸**表
|
|
17
17
|
3. **30 改码前** GATE_VERIFY(真值在 task **人工闸表**,**非** invoke 字面 `approved`):
|
|
18
|
+
- 运行 `npx @cyning/harness verify --target . --task docs/tasks/active/task_*.md`
|
|
18
19
|
- 首输出闸扫描 · `FRAGMENT_30_gate_verify_v1_zh.md`
|
|
19
20
|
- **`HG-AUDIT-R1` pending** → **30 拒改码**
|
|
20
21
|
- 声称与 task 表冲突 → **STOP**
|
package/lib/audit.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { resolveHarnessRootForTarget } from './paths.js';
|
|
4
5
|
import { loadTaskSidecar, validateTaskSidecar } from './task.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -26,17 +27,14 @@ export function auditTarget(target, options = {}) {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
function runGateCheck(target, taskFile) {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
'wizard',
|
|
32
|
-
'gate-check.sh',
|
|
33
|
-
);
|
|
30
|
+
const harnessRoot = resolveHarnessRootForTarget(target);
|
|
31
|
+
const script = path.join(harnessRoot, 'wizard', 'gate-check.sh');
|
|
34
32
|
const args = [script, '--target', target];
|
|
35
33
|
if (taskFile) args.push('--task', taskFile);
|
|
36
34
|
|
|
37
35
|
const result = spawnSync('bash', args, {
|
|
38
36
|
encoding: 'utf8',
|
|
39
|
-
env: process.env,
|
|
37
|
+
env: { ...process.env, CYNING_HARNESS: harnessRoot },
|
|
40
38
|
});
|
|
41
39
|
|
|
42
40
|
return {
|