plan-governance-cli 0.3.3 → 0.3.5

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/README.md CHANGED
@@ -190,12 +190,14 @@ plan-governance-cli graph code impact --repo modelpad --file Sources/ModelPadCor
190
190
 
191
191
  ## 持续推进
192
192
 
193
- 在 Codex 中需要跨轮持续推进时使用 `goal`。`plan-governance` skill 和 CLI 只负责计划、证据、阶段准入与检查,不提供自主连续执行模式或步骤级下一步查询。
193
+ 在 Codex 中需要跨轮持续推进时使用 `goal`。阶段内独立复核只绑定阶段准入、阶段转换或明确的高影响边界,不为每个微小动作单独复核。
194
+
195
+ 对目标、范围和授权边界清楚、且不涉及高影响外部动作的普通阶段门,执行者应自动启动独立只读 subagent 或等价独立复核者;复核通过后记录证据并继续当前阶段,不等待用户逐项确认。复核失败、入口不可用、超时或证据冲突时保留阻塞并报告,不能自行放行;涉及外部授权、凭证、公开暴露、破坏性或不可逆操作、安全、隐私、合规或产品取舍时,仍须请求用户确认。`plan-governance` skill 和 CLI 负责计划、证据、阶段准入与检查,不提供整计划自主执行模式、执行清单或步骤级下一步查询。
194
196
 
195
197
  也可以不全局安装,直接使用锁定版本:
196
198
 
197
199
  ```bash
198
- npx --yes --package plan-governance-cli@0.3.3 plan-governance-cli check . --strict-readiness
200
+ npx --yes --package plan-governance-cli@0.3.4 plan-governance-cli check . --strict-readiness
199
201
  ```
200
202
 
201
203
  npm 包内部仍使用版本化的 Python 检查器,但用户不需要直接调用或复制该脚本。旧项目已有本地脚本时仍可保留作为兼容或回滚路径。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "plan-governance-cli",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "统一入口的计划治理检查 CLI",
5
5
  "private": false,
6
6
  "type": "module",
@@ -23,7 +23,8 @@
23
23
  "access": "public"
24
24
  },
25
25
  "scripts": {
26
- "test": "node --test tests/npm_cli.test.mjs tests/graph_cli.test.mjs tests/architecture_graph_cli.test.mjs tests/plan_impact_step0.test.mjs tests/plan_impact_cli.test.mjs"
26
+ "test": "node --test tests/npm_cli.test.mjs tests/graph_cli.test.mjs tests/architecture_graph_cli.test.mjs tests/plan_impact_step0.test.mjs tests/plan_impact_cli.test.mjs",
27
+ "release:npm": "node scripts/release_npm.mjs"
27
28
  },
28
29
  "dependencies": {
29
30
  "yaml": "^2.9.0"
@@ -7,7 +7,7 @@ description: 轻量计划治理工作流。Use when 用户要求管理路线图
7
7
 
8
8
  使用这个 skill 管理跨阶段、会漂移、需要证据闭环的工作。普通一次性 bugfix、小范围本地修改、互不依赖的待办列表,不要启用治理,除非用户明确要求。
9
9
 
10
- 跨轮持续推进由 Codex 的 `goal` 机制管理;本 skill 不定义自主连续执行模式、执行清单或下一步骤查询。
10
+ 跨轮持续推进由 Codex 的 `goal` 机制管理;阶段内独立准入复核按“阶段内独立复核调度”契约处理。本 skill 不定义整计划自主执行模式、执行清单或步骤级下一步骤查询。
11
11
 
12
12
  ## 启用判定
13
13
 
@@ -127,6 +127,15 @@ docs/
127
127
 
128
128
  专项计划应保留追加式的独立复核记录,并显式维护最新结论的日期、阶段、结论、证据和复核者。历史记录不得覆盖;新的“未通过”覆盖此前的“通过”,修复后的新“通过”必须追加新记录。`PLAN_MAP.md` 只链接最新有效结论,不复制历史表格。
129
129
 
130
+ ### 阶段内独立复核调度
131
+
132
+ - 阶段门复核只在阶段准入、阶段转换或计划明确的高影响边界触发;不为每个微小动作单独复核。
133
+ - 对目标、范围和授权边界已清楚且不涉及高影响外部动作的普通阶段门,执行者应自动启动独立只读 subagent 或等价独立复核者,不等待用户逐项确认。复核任务使用新上下文,不参与当前阶段实施,不修改工作区;输入至少包括计划、阶段、被审查 revision、范围、验证命令、完成条件和安全边界。
134
+ - 复核通过后,记录复核者、命令和证据位置,并继续当前计划/阶段推进;跨轮继续由 `goal` 保持上下文。
135
+ - 复核失败、复核入口不可用、超时或证据冲突时,保留阻塞并报告,不得自我批准或以安全替代动作单独放行。只有满足同等独立性和证据要求的等价复核者可以替代;没有复核者时必须停止并报告。
136
+ - 涉及外部授权、凭证、公开暴露、破坏性或不可逆操作、安全、隐私、合规或产品取舍的事项,必须请求用户确认;独立复核不能代替用户授权。
137
+ - 复核结果至少记录:计划、阶段、被审查 revision、复核范围、实际执行命令、证据位置、结论、阻塞项和复核者标识。
138
+
130
139
  阶段准入检查命令为 `--strict-readiness`。默认治理检查保持兼容,面向历史文档的准入缺陷先以 `WARNING` 提示;严格模式才将机械准入缺陷提升为 `ERROR`。该检查只判断结构化准入条件,不替代业务验收。
131
140
 
132
141
  ## 工作流
@@ -177,6 +186,14 @@ docs/
177
186
 
178
187
  `PLAN_MAP.md` 的计划索引应包含 `最后更新` 列,日期格式为 `YYYY-MM-DD`。
179
188
 
189
+ 计划索引必须在同一个 `## 计划索引` 章节下,按固定顺序拆成三张六列表格:`### 未完成`、`### 已完成`、`### 已废弃`。状态归类规则如下:
190
+
191
+ - `未完成`:`候选`、`设计中`、`待实施`、`实施中`。
192
+ - `已完成`:`已完成`。
193
+ - `已废弃`:`已废弃`、`已替代`、`已合并`等不再推进的终态;表格标题不改变行内真实状态。
194
+
195
+ 每个计划只能出现一次;没有对应计划的分类保留表头但不添加占位行。必须使用三级标题,以便治理 CLI 将三张表作为同一个计划索引读取。
196
+
180
197
  推荐表头:
181
198
 
182
199
  ```markdown
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "Plan Governance"
3
3
  short_description: "用计划、证据和检查管理分阶段工作"
4
- default_prompt: "使用 $plan-governance 管理这个跨阶段变更,维护计划文档、Step 0 证据和完成检查。"
4
+ default_prompt: "使用 $plan-governance 管理这个跨阶段变更,维护计划文档、Step 0 证据和完成检查;阶段门仅在必要时自动启动独立只读 subagent,不为每个微小动作单独复核。"
@@ -11,13 +11,26 @@
11
11
  - 阶段准入摘要、样本矩阵和独立复核记录只写入专项计划,不复制到本索引。
12
12
  - 专项计划可在当前阶段声明阶段证据和追加式实施/验证记录;完成快照默认保持旧 JSON 兼容格式,发布/合规场景再显式使用 purpose 关系。
13
13
  - `--drift`/`--pre-commit` 的关闭窗口只在已完成计划自身也发生变更时覆盖该计划自身和显式阶段证据,不复用已完成计划的完整影响范围。
14
+ - 计划索引固定分为 `未完成`、`已完成`、`已废弃` 三张表;`已替代`、`已合并`等不再推进的终态归入 `已废弃` 表,但保留真实状态值。
14
15
 
15
16
  ## 计划索引
16
17
 
18
+ ### 未完成
19
+
17
20
  | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
18
21
  |---|---|---|---|---|---|
19
22
  | [example-plan](plans/example-plan.md) | 候选 | 阶段 0 | <YYYY-MM-DD> | - | - |
20
23
 
24
+ ### 已完成
25
+
26
+ | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
27
+ |---|---|---|---|---|---|
28
+
29
+ ### 已废弃
30
+
31
+ | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
32
+ |---|---|---|---|---|---|
33
+
21
34
  允许状态:`候选`、`设计中`、`待实施`、`实施中`、`已完成`、`已替代`、`已合并`、`已废弃`。
22
35
 
23
36
  ## 推荐顺序
@@ -31,6 +31,8 @@
31
31
 
32
32
  - 当前阶段写细,后续阶段写粗。
33
33
  - 完成时必须记录可验证证据。
34
+ - 普通阶段门自动启动独立只读复核,复核通过后继续;高影响或失败/不可用/冲突按规则停机。
35
+ - 独立复核只绑定阶段准入/阶段转换和高影响边界,不为每个微小动作单独复核。
34
36
 
35
37
  ## 影响模块或文件
36
38
 
@@ -96,6 +96,15 @@ def agent_rules_body():
96
96
 
97
97
  专项计划应保留追加式独立复核记录,并显式维护最新结论的日期、阶段、结论、证据和复核者。历史记录不得覆盖;`PLAN_MAP.md` 只链接最新有效结论。
98
98
 
99
+ 阶段内独立复核调度:
100
+
101
+ - 阶段门复核只在阶段准入、阶段转换或计划明确的高影响边界触发;不为每个微小动作单独复核。
102
+ - 对目标、范围和授权边界已清楚且不涉及高影响外部动作的普通阶段门,执行者应自动启动独立只读 subagent 或等价独立复核者,不等待用户逐项确认。复核任务使用新上下文,不参与当前阶段实施,不修改工作区;输入至少包括计划、阶段、被审查 revision、范围、验证命令、完成条件和安全边界。
103
+ - 复核通过后,记录复核者、命令和证据位置,并继续当前计划/阶段推进;跨轮继续由 `goal` 保持上下文。
104
+ - 复核失败、复核入口不可用、超时或证据冲突时,保留阻塞并报告,不得自我批准或以安全替代动作单独放行。只有满足同等独立性和证据要求的等价复核者可以替代;没有复核者时必须停止并报告。
105
+ - 涉及外部授权、凭证、公开暴露、破坏性或不可逆操作、安全、隐私、合规或产品取舍的事项,必须请求用户确认;独立复核不能代替用户授权。
106
+ - 复核结果至少记录:计划、阶段、被审查 revision、复核范围、实际执行命令、证据位置、结论、阻塞项和复核者标识。
107
+
99
108
  阶段准入严格检查命令为 `--strict-readiness`。默认治理检查保持兼容,准入缺陷先以 `WARNING` 提示,严格模式才提升为 `ERROR`;该检查只判断结构化准入条件,不替代业务验收。
100
109
 
101
110
  草案和历史文档规则:
@@ -192,6 +201,10 @@ def update_agent_rules(root):
192
201
 
193
202
  def plan_map_content(plan_slug, title, status, phase):
194
203
  today = date.today().isoformat()
204
+ row = f"| [{title}](plans/{plan_slug}.md) | {status} | {phase} | {today} | - | - |"
205
+ unfinished_row = row if status in {"候选", "设计中", "待实施", "实施中"} else ""
206
+ completed_row = row if status == "已完成" else ""
207
+ deprecated_row = row if status in {"已废弃", "已替代", "已合并"} else ""
195
208
  return f"""# PLAN_MAP
196
209
 
197
210
  ## 治理范围
@@ -208,12 +221,27 @@ def plan_map_content(plan_slug, title, status, phase):
208
221
  - `PLAN_MAP.md` 的 `状态` 是计划级生命周期,`当前阶段` 是阶段身份指针;阶段 N 完成后,阶段 N+1 默认保持 `设计中`。
209
222
  - 阶段准入摘要、样本矩阵和独立复核记录只写入专项计划,不复制到本索引。
210
223
  - 启用治理后,已有草案、历史设计、归档计划和临时分析文档默认只作为背景材料,不再作为规范事实源;后续新规范默认进入 `docs/plans/*.md`、ADR、migration、正式 spec 或 `docs/PLAN_MAP.md`。
224
+ - 计划索引固定分为 `未完成`、`已完成`、`已废弃` 三张表;`已替代`、`已合并`等不再推进的终态归入 `已废弃` 表,但保留真实状态值。
211
225
 
212
226
  ## 计划索引
213
227
 
228
+ ### 未完成
229
+
230
+ | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
231
+ |---|---|---|---|---|---|
232
+ {unfinished_row}
233
+
234
+ ### 已完成
235
+
236
+ | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
237
+ |---|---|---|---|---|---|
238
+ {completed_row}
239
+
240
+ ### 已废弃
241
+
214
242
  | 计划 | 状态 | 当前阶段 | 最后更新 | 依赖 | 证据 |
215
243
  |---|---|---|---|---|---|
216
- | [{title}](plans/{plan_slug}.md) | {status} | {phase} | {today} | - | - |
244
+ {deprecated_row}
217
245
 
218
246
  允许状态:`候选`、`设计中`、`待实施`、`实施中`、`已完成`、`已替代`、`已合并`、`已废弃`。
219
247