From c048060baed1968f18558beab65c005daa6c98d3 Mon Sep 17 00:00:00 2001 From: weichen Date: Mon, 14 Sep 2026 08:01:46 +0000 Subject: [PATCH] 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 --- ...9-14-planning-with-workflow-key-anomaly.md | 56 +++++++++++++++++++ ...026-09-14-governance-action-level-authz.md | 10 ++-- 2 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 .doc/audit/2026-09-14-planning-with-workflow-key-anomaly.md diff --git a/.doc/audit/2026-09-14-planning-with-workflow-key-anomaly.md b/.doc/audit/2026-09-14-planning-with-workflow-key-anomaly.md new file mode 100644 index 00000000..a8157a4e --- /dev/null +++ b/.doc/audit/2026-09-14-planning-with-workflow-key-anomaly.md @@ -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,仍是同一对夹具命名。 + +## 开放问题 + +- 是否在后续专项清理夹具行(需单独任务与备份,不在本治理鉴权波次)。 diff --git a/.doc/ops/short-term/2026-09-14-governance-action-level-authz.md b/.doc/ops/short-term/2026-09-14-governance-action-level-authz.md index f5dfb5ca..172cb4d6 100644 --- a/.doc/ops/short-term/2026-09-14-governance-action-level-authz.md +++ b/.doc/ops/short-term/2026-09-14-governance-action-level-authz.md @@ -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)。