docs(audit): classify planning projects with leftover workflow keys
Read-only dev query shows 83 planning rows with a leftover key; all are paired PROJ_MGR/TEST_PROJ fixtures, none are live business projects. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: "planning 项目残留 active_workflow_key 异态审计"
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
severity: low
|
||||
---
|
||||
|
||||
# planning 项目残留 active_workflow_key 异态审计
|
||||
|
||||
## 现象
|
||||
|
||||
dev 库存在 `lifecycle_status='planning' AND active_workflow_key <> ''` 行。评审时记为 81;本轮只读复测为 **83**(相对评审 +2)。这些行看起来像「已选工作流但未走设置激活」。
|
||||
|
||||
## 根因分析
|
||||
|
||||
关闭 `initial_workflow_key` 直通前,`CreateProject` 在键非空时会写 `lifecycle=active` + `ActiveWorkflowKey`。本异态是 **planning 却带 key**,更符合自动化测试夹具成对插入(`PROJ_MGR_*` / `TEST_PROJ_*`),而不是真实用户走创建旁路后的 active 项目。
|
||||
|
||||
本轮 **未** `UPDATE`/`DELETE`。
|
||||
|
||||
## 严重度
|
||||
|
||||
`low`
|
||||
|
||||
创建旁路已在 `fix/governance-action-level-authz` 关闭。存量 83 行全部无 live 实例、无创建人,不影响项目 143,也不阻塞 G1 鉴权矩阵。
|
||||
|
||||
## 关联整改
|
||||
|
||||
- Short-term: [2026-09-14-governance-action-level-authz](../ops/short-term/2026-09-14-governance-action-level-authz.md)
|
||||
- Research: [2026-09-14-mvp-governance-rules-review](../ops/research/2026-09-14-mvp-governance-rules-review.md)
|
||||
|
||||
## 证据
|
||||
|
||||
只读查询(`shuimu-context-pg-dev` / `agent_system_dev`,2026-09-14):
|
||||
|
||||
| 指标 | 数量 |
|
||||
|------|------|
|
||||
| `lifecycle=active` | 141 |
|
||||
| `lifecycle=planning` | 209 |
|
||||
| `planning AND active_workflow_key <> ''` | **83** |
|
||||
|
||||
分类(禁止改库,仅标注):
|
||||
|
||||
| 分类 | 数量 | 判定 |
|
||||
|------|------|------|
|
||||
| 测试夹具 | **83** | `code` 为 `PROJ_MGR_YYYYMMDDHHMMSS`(名「智能微创内窥镜」)或 `TEST_PROJ_*`(名「测试内窥镜系统」);`active_workflow_key=main`;`workflow_selection_version=1`;`creator_user_id` 空;`has_live_instance=false`;时间戳成对出现于 2026-09-12~09-14 |
|
||||
| 历史直通(真实用户创建旁路) | **0** | 无非夹具命名、无创建人、无 live 实例的业务项目 |
|
||||
| 不明 | **0** | — |
|
||||
|
||||
样本 id(完整 83 行均属上表夹具模式,不逐条展开):61–62、122–128、6015–6021、6160–6161、6192/6195。项目 **143 不在此集合**。
|
||||
|
||||
相对评审 81 的 +2:`6192` / `6195`,创建于 2026-09-14 07:26 UTC,仍是同一对夹具命名。
|
||||
|
||||
## 开放问题
|
||||
|
||||
- 是否在后续专项清理夹具行(需单独任务与备份,不在本治理鉴权波次)。
|
||||
@@ -53,10 +53,10 @@ mutex: workflow
|
||||
## 步骤
|
||||
|
||||
1. [x] 评审落盘 + 决策 A–D 收敛 + 本任务登记(Wave 5 已合入本地 `dev@19f6df5`,G0 已开工)
|
||||
2. [ ] G1 后端:`CheckDocTaskAccess` 动作-职责映射 + creator 例外移除(保留 none 生成触发)+ gov==nil 未激活拦截(202 契约保留);重写受影响单测
|
||||
3. [ ] G2 关闭 `initial_workflow_key` 直通 + 前后端字段废弃 + E2E legacy 用例更新
|
||||
4. [ ] G3 前端:chat 治理拦截自然语言提示、按钮级职责禁用、激活确认页冻结提示补强
|
||||
5. [ ] G4 dev 库 81 个 planning+with_wf 异态审计分类(只读报告)
|
||||
2. [x] G1 后端:`CheckDocTaskAccess` 动作-职责映射 + creator 例外移除(保留 none 生成触发)+ gov==nil 未激活拦截(202 契约保留);重写受影响单测
|
||||
3. [x] G2 关闭 `initial_workflow_key` 直通 + 前后端字段废弃 + E2E legacy 用例更新
|
||||
4. [x] G3 前端:chat 治理拦截自然语言提示、按钮级职责禁用、激活确认页冻结提示补强
|
||||
5. [x] G4 dev 库 planning+with_wf 异态审计分类(只读报告,现测 83 条均为测试夹具)
|
||||
6. [ ] G5 集成验证 + 测试报告归档(新项目全链路:零治理创建→对话→配置→激活→职责动作负例)
|
||||
|
||||
## 验收标准
|
||||
@@ -77,4 +77,4 @@ mutex: workflow
|
||||
## 证据 / 备注
|
||||
|
||||
- Wave 5 已合入本地 `dev@19f6df5`;本任务 worktree 已从该 `dev` 创建,mutex `workflow` 进入 `in_progress`。
|
||||
- dev 库:133 active / 204 planning;81 个 planning 项目带非空 `active_workflow_key`(待 G4 审计分类)。
|
||||
- G4 只读复测:141 active / 209 planning;**83** 个 planning 带非空 `active_workflow_key`,全部为 `PROJ_MGR_*`/`TEST_PROJ_*` 夹具。见 [audit](../../audit/2026-09-14-planning-with-workflow-key-anomaly.md)。
|
||||
|
||||
Reference in New Issue
Block a user