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>
4.5 KiB
4.5 KiB
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。
步骤
- 定位项目 143 的 409
PLAN_FROZEN根因并落盘 audit。 - 完成方案审核:补齐定义优先、零治理拦截、成员有效性、权限、快照清理和真实 UI 边界。
- Wave 1:typed API error + frozen 独立只读视图 + sticky/可访问错误 + 两标签竞态恢复。
- Wave 2:DutyMode、强制/可选任务策略、partial/成员/零治理校验、服务端规范化。
- Wave 3:门禁、readiness、阶段/文档访问、运行时和预览统计统一。
- Wave 4:前端逐文档“纳入人工审批”开关及 full/none/partial 交互测试。
- 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 用例全部有证据;报告回链。
相关链接
- Audit: 2026-09-14-workflow-plan-409-frozen-and-optional-duties.md
- Remediation: 2026-09-14-workflow-plan-409-frozen-and-optional-duties-remediation.md
- Test report: (Wave 5 归档至
.doc/test-reports/)
证据 / 备注
- 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,禁止污染无关分支。