Files
Agent-System/.doc/ops/short-term/2026-09-14-workflow-plan-409-frozen-and-optional-duties.md
T
weichenandCursor f2a7fa94d2 docs(workflow): record frozen plan 409 and optional-duty governance docs
Keep the audit, remediation, and MVP rule review with the short-term tasks so later waves do not rediscover the 409 root cause.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 13:00:26 +00:00

4.5 KiB
Raw Blame History

title, status, created, updated, owner, branch, worktree, mutex
title status created updated owner branch worktree mutex
workflow-plan 409 冻结态守卫 + 文档职责可选治理 in_progress 2026-09-14 2026-09-14 implementer_cursor fix/workflow-plan-409-frozen-and-optional-duties .worktrees/fix-workflow-plan-409-frozen-and-optional-duties workflow

workflow-plan 409 冻结态守卫 + 文档职责可选治理

目标

已激活项目的设置页进入明确的冻结只读态;非必需且允许裁剪的文档可选择“不纳入人工审批”,部分职责、必需文档空职责、非成员职责和零治理激活由服务端拒绝;门禁、权限、快照与页面语义保持一致。

范围

  • web/src/components/project/ProjectSettingsModal.tsx:frozen 视图、逐文档审批开关、内联/sticky 错误、并发恢复。
  • web/src/api/projectSettings.ts:保留 status/code/message/issues 的 typed error。
  • internal/projectinstance/validator.go:统一 DutyMode、工作流定义约束、结构与成员校验。
  • internal/projectinstance/service.go:保存/预览/激活重复复核 active members。
  • internal/projectinstance/gate.go、stage_access.go、document_access.go:none/full/disabled 一致语义。
  • internal/projectinstance/store.go、internal/workflow/runtime/orchestrator.go:快照清理、零 assignment rows、零职责运行时契约。
  • 激活预览统计与相应前后端测试。

非目标

  • 不修改项目 143 的现有工作流配置,不在验收中终止项目 143。
  • 不支持部分指派或自动补齐职责。
  • 不允许项目配置降低工作流定义中必需/阻断文档的治理要求。
  • 不把“无需人工审批”文档改成无版本、无审计的非受控文档。
  • 不迁移历史 active 实例;冻结快照继续作为历史 SSOT。

步骤

  1. 定位项目 143 的 409 PLAN_FROZEN 根因并落盘 audit。
  2. 完成方案审核:补齐定义优先、零治理拦截、成员有效性、权限、快照清理和真实 UI 边界。
  3. Wave 1:typed API error + frozen 独立只读视图 + sticky/可访问错误 + 两标签竞态恢复。
  4. Wave 2:DutyMode、强制/可选任务策略、partial/成员/零治理校验、服务端规范化。
  5. Wave 3:门禁、readiness、阶段/文档访问、运行时和预览统计统一。
  6. Wave 4:前端逐文档“纳入人工审批”开关及 full/none/partial 交互测试。
  7. Wave 5:合 dev、rebuild、真实浏览器新项目全链路;项目 143 只读回归;归档 test report。

验收标准

  • active 项目设置无编辑控件,页面显示冻结原因、工作流/阶段/职责快照和受控终止影响入口。
  • 允许裁剪的非必需文档 full/none 均合法;partial 精确拒绝。
  • 必需/阻断/不可裁剪文档全空被服务端拒绝。
  • 保存和激活均拒绝非 active project member;预览后成员退出也 fail closed。
  • 所有文档 none 时可保存草稿但不能激活。
  • none 文档仍生成和入账本、项目成员只读可见、创建者可生成/编辑,但无 review/approve 且不阻塞阶段。
  • disabled/none 的冻结快照、plan hash 和 assignment rows 不残留旧职责。
  • 两标签陈旧保存的 409 在当前视口可见、草稿保留并转 frozen。
  • 工程门禁与整改方案中的真实 UI 用例全部有证据;报告回链。

相关链接

证据 / 备注

  • dev 项目 143:lifecycle_status=active、active_workflow_key=main、实例 89 active;409 与三名职责人选择内容无关。
  • 当前 parseError 已读取后端 message;前端改造重点是 typed error、冻结态切换和视口内呈现。
  • 当前职责校验只检查正数/互异,数据库只外键到 users;项目成员有效性必须补服务端校验。
  • 当前终止实现会取消运行任务、关闭实例并退回 planning;关闭实例访问 fail closed,因此项目 143 不能作为终止测试对象。
  • 开始编码前必须先把本任务从当前误置的 feature/remove-herdr-agent-settings 工作区迁移至声明的 fix/workflow-plan-409-frozen-and-optional-duties 分支/worktree,禁止污染无关分支。