PMFlow/docs/PMFLOW_PRODUCT_DELIVERY_STA...

2109 lines
124 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PMFlow 产品推进执行标准
版本日期:2026-04-24
本文档是 PMFlow 产品方案落地的推进标准。它回答四件事:
- 当前产品方案推进到哪里了。
- 下一步应该继续往哪里推进。
- 每次推进的范围、验收和文档回写怎么做。
- 新开 Codex 线程时如何接续,避免重做、漏做或偏离方向。
产品方向真源仍以 `docs/PMFLOW_PRODUCT_BLUEPRINT.md` 为准。本文档不重新定义战略,只管理落地节奏和进度。
## 1. 当前推进判断
截至 2026-04-24,PMFlow 已经完成“产品方向收敛 + 前端本地高保真主链 + 后端局部控制面”的阶段,但还没有完成“真实数据闭环产品化”。
### 1.1 已经推进到位的部分
#### 产品方向
- 已明确 PMFlow 不是“聊天工具 + 项目管理工具”,而是“对话驱动的 AI 产品执行操作系统”。
- 已明确首版方向为 `solo-first, team-ready`,面向个人开发者、一人公司、半技术产品创作者和 1-10 人 AI 应用小团队。
- 已明确团队协作不是传统多人维护任务表,而是围绕 AI 维护的项目真相层进行异步审查和人机混编执行。
- 已明确 V1 主链为:`创意输入 -> AI 结构化提取 -> 变更确认 -> 项目对象沉淀 -> 任务拆解 -> 推送 IDE / agent -> 开发与测试回写 -> 发布 -> 数据反馈 -> 下一轮迭代`。
真源:
- `docs/PMFLOW_PRODUCT_BLUEPRINT.md`
- `USER.md`
#### 前端产品域
当前已经存在三条独立产品域:
- `frontend/src/features/personal-space/`
- 空间入口。
- 用本地 mock 展示继续推进、待我确认、AI 正在推进、暂存想法、草案箱和新建项目入口。
- `frontend/src/features/project-launch/`
- 新项目启动台。
- 用本地状态机覆盖意图输入、AI 工作、人类确认、草案修改、失败态、创建成功态和移动端 bottom sheet。
- `frontend/src/features/pmflow-os/`
- PMFlow OS 项目内主体验。
- 已有本地 truth store 和页面:`CommandCenter / StructuredExtraction / ChangeReview / MemoryWritebackResult / WorkGraph / ExecutionBridge / ReleaseGrowth / TeamLayer / ProjectMemory`。
- 已有本地状态动作:`sendMessage -> generateExtraction -> acceptChange/editChange/deferChange -> promoteAcceptedToGraph -> pushTaskToExecution -> writeBackExecution -> publishRelease -> ingestGrowthSignal`。
当前性质:
- 这是产品主链的高保真原型和本地行为闭环。
- 还不是正式后端数据闭环。
- 不接真实 AI 提取,不写真实数据库,不消费真实项目对象。
#### 后端控制面
当前已经出现 AI 应用项目控制面的初步生产化能力:
- `backend/app/models/ai_project_control.py`
- 模型目录、项目模型绑定、模型推荐快照、模型用量、模型评测。
- Prompt Package。
- IDE 工作区绑定、Repo 绑定、GitHub App 安装/仓库/webhook 投递。
- TaskCodeLink、ProgressEvent、DevSession。
- ReleaseValidationRun、FeedbackIngest、IterationRecommendation、RevenueEvent、ROISnapshot、ComplianceCheckRun、EvidencePack。
- `backend/app/services/ai_project_control_service.py`
- 模型推荐、模型绑定、prompt package、开发同步、GitHub/repo 绑定、进度事件、发布验证、反馈/收入/合规等服务能力。
- `backend/app/api/sstc_api/model_control.py`
- 模型推荐、模型绑定、模型用量、Prompt Package、发布验证、反馈摄取、收入记录、合规检查等接口。
- `backend/app/api/dev_sync.py`
- GitHub App 安装、仓库绑定、开发任务、项目 dev-sync summary、任务进度事件等接口。
当前性质:
- 后端已经有 V1 产品化需要的部分基础对象和接口。
- 但它们还没有和 `frontend/src/features/pmflow-os/` 的本地 truth store 正式打通。
- `ChangeSet / Approval / Evidence / Project Memory` 这条主产品链仍主要停留在前端本地态和旧 SSTC/semantic facts 体系之间,缺少统一的 PMFlow OS 产品级 API 合同。
### 1.2 当前缺口
当前最大缺口不是再讨论产品方向,而是:
**把已经成立的产品主链从本地原型推进成真实可用的数据闭环。**
关键缺口按优先级排序:
1. `Project Thread / ChangeSet / Evidence / Approval / Project Memory` 的前后端合同没有完全收口。
2. `project-launch` 还没有接真实 AI 结构化、真实项目创建和真实草案确认。
3. `pmflow-os` 本地 store 还没有接后端读写,当前仍是 mock truth store。
4. `ChangeReview` 的接受、修改、暂缓还没有写入正式对象、审批记录和证据链。
5. `ExecutionBridge` 页面还没有消费 dev-sync / GitHub / PromptPackage 真实接口。
6. `ReleaseGrowth` 已接入 execution evidence gate、release validation run 与 feedback ingest;revenue、ROI、compliance 还没有串成完整发布后反馈循环。
7. `TeamLayer` 已接入 reviewer routing 读模型,能展示待审 ChangeSet、建议审查人、审查原因、风险类型和缺角色 warning;Role Inbox、Decision Desk、Team Feed 仍缺完整真实数据模型。
## 2. 下一步推进方向
下一步不要扩大战线,不要新增新的战略产品表面;可以在已确认的 `Main Flow / Space / Account Settings` 这些既有表面内并行推进。正确方向是:
**把 V1 主链真实闭环化。**
也就是从“本地高保真原型”推进到“真实项目对象 + 真实 AI 提取 + 真实确认写入 + 真实执行回写”。
### 2.1 下一阶段总目标
阶段目标命名为:
**V1 Productized Loop**
验收标准:
- 用户从 `/project-launch` 输入一个 AI 应用创意。
- 后端生成可审查的结构化草案或变更集。
- 用户确认后创建项目,并写入项目真相层。
- 进入 `/command-center` 后能看到真实项目线程、结构化提取、待确认项和项目对象。
- 用户接受变更后,正式对象、审批记录、证据链同步更新。
- 至少一个任务能生成 Prompt Package,并进入 Execution Bridge。
- Execution Bridge 能消费真实 dev-sync summary 或 progress event。
- 发布/反馈页能消费至少一类真实 release validation / feedback / revenue / compliance 数据。
### 2.2 暂不推进的方向
下一阶段暂不推进:
- 完整财务系统。
- 完整合规平台。
- 企业组织树和复杂权限矩阵。
- 多项目 portfolio。
- 应用市场、投融资、孵化生态。
- 前台多 agent 选择器。
- 与产品主链无关的后台治理页扩展。
这些都不是当前瓶颈。
## 3. 推荐推进顺序
### 3.0 功能原型一致性治理
任何 PMFlow 核心功能在继续出图、重画、实现或新开线程接续前,必须先确认是否已有 canonical 功能契约。若已有契约,后续只能在该契约下新增状态、补充局部区域或做明确版本迭代,不能把同一功能重新设计成另一套页面。
功能契约至少包含:
- 功能定位
- 页面/状态列表
- 固定导航壳
- 核心对象模型
- 状态标签体系
- 用户动作
- AI 动作
- 系统状态
- 移动端规则
- 不可随意改变的部分
- 可扩展的部分
确认流程:
1. 先列出本轮涉及的功能清单。
2. 每次只提交一个功能契约给用户确认。
3. 用户确认后,才把该功能契约写入本文档或对应产品真源。
4. 后续原型图、实现、验收都以已确认契约为准。
5. 如需重构,必须先说明旧版是什么、新版改什么、迁移影响是什么,并得到明确确认。
当前需要逐个确认的功能清单:
- 新项目启动台
- 个人空间首页
- 项目指挥台
- 本轮结构化提取
- 决策与待确认
- 项目记忆
- 移动端底部导航
- 项目切换器
- 项目工作台
- 开发执行联动
- 发布与增长
- 团队协作
### Phase A:产品合同收口
目标:
把 `pmflow-os` 本地类型、现有 SSTC/semantic facts/ai_project_control 后端对象和 V1 蓝图对象对齐。
范围:
- 梳理 `ProjectThread / ChangeSet / ChangeItem / Evidence / Approval / ProjectMemory / ExecutionRun` 的后端合同。
- 明确哪些对象复用现有表,哪些需要新表或投影表。
- 明确 `frontend/src/features/pmflow-os/types.ts` 如何映射到 API response。
- 明确哪些接口走已有 `sstc_api` / `dev_sync`,哪些需要新增 `pmflow_os_api`。
产物:
- API/Schema 设计说明或直接 Pydantic schema。
- 更新 `docs/architecture/CODE_REFERENCE_INDEX.md`。
- 如新增表,必须 Alembic migration。
验收:
- 能回答“前端每一个本地对象从哪个后端字段来,写回到哪里去”。
- 不能再出现前端原型对象和后端业务对象各讲各话。
### Phase B:Project Launch 真实创建链
目标:
把新项目启动台从本地状态机接到真实项目创建/草案确认主链。
范围:
- `/project-launch` 意图输入接真实 API。
- AI 结构化结果必须产出可审查草案,而不是直接静默创建。
- 用户确认后创建项目,并跳转真实 `/command-center`。
- 创建结果必须写入项目真相层初始对象:Idea、Requirement、Decision、Risk、Task 或等价 SSTC 对象。
验收:
- 真实接口创建项目。
- 失败时显式失败,不用 mock 冒充成功。
- 创建成功后进入真实项目上下文。
- 项目创建前移动端仍不展示正式底部导航。
### Phase C:Change Review 与 Project Memory 写入
目标:
让对话/结构化提取生成的 ChangeSet 能被接受、修改、暂缓,并写入正式项目对象和证据链。
当前拆分:
- C1:真实 Change Review 数据底座与审查状态机,已实现 `ChangeSet / ChangeItem / Approval / EvidenceLink` 表和 `accept / edit / defer`,但不 commit。
- C2:提交入库,把已接受/已编辑 ChangeItem 写入 `truth_nodes / tasks / semantic_facts` 并完成高风险 approval gate。
范围:
- `StructuredExtractionPage` 接真实提取结果。
- `ChangeReviewPage` 接真实 ChangeSet。
- 接受/修改/暂缓动作调用后端。
- C2 写入后 `ProjectMemoryPage / WorkGraphPage / TeamFeed` 能读到最新对象。
验收:
- ChangeSet 有 Evidence。
- 高风险变更需要 Approval。
- C1 接受后只进入 `accepted / edited / deferred` 审查状态,不进入 Project Memory。
- C2 commit 后对象状态从 proposed/draft 进入 confirmed 或对应正式状态。
- 暂缓后不进入项目真相层,但仍留审计。
### Phase D:Execution Bridge 真实开发同步
目标:
让 PMFlow 真正连接开发执行,而不是只展示执行概念。
范围:
- `ExecutionBridgePage` 消费 `devSyncApi`。
- 任务能生成 Prompt Package。
- 能绑定 repo 或展示 GitHub App 安装状态。
- 能创建或读取 ProgressEvent。
- 能把 PR/commit/test 信息回写到任务和 Team Feed。
验收:
- 至少一个真实任务能进入执行桥。
- 能看到真实 Prompt Package 或 dev task。
- 能看到真实 progress event。
- 任务状态能随回写变化。
### Phase E:Release / Growth 轻量闭环
目标:
上线后反馈进入下一轮迭代,不停在“开发完成”。
范围:
- `ReleaseGrowthPage` 已消费 execution evidence gate、release validation run 与 feedback ingest。
- 继续扩展 feedback / revenue / compliance 到统一发布后信号读模型。
- 支持 revenue event 或基础 ROI snapshot。
- 支持 compliance check 的轻量门禁。
- 反馈能生成 IterationRecommendation 或下一轮 ChangeSet。
验收:
- 发布前有门禁。
- 发布后有反馈/收入/成本/合规至少一类真实信号。
- 信号能回流为下一轮建议,不只是展示图表。
### Phase F:Team-ready 最小闭环
目标:
不做重型团队管理,但补齐小团队围绕项目真相层协作的最小能力。
范围:
- 成员归属。
- 角色收件箱 Role Inbox。
- Team Feed。
- Decision Desk 或高风险变更多人审查。
- Agent Workforce 的只读可见化。
验收:
- 不同角色看到不同待处理项。
- 高风险 ChangeSet 能先展示建议 reviewer/owner 与审查原因;自动指定或权限化分派不属于当前最小闭环。
- Team Feed 展示 AI 提取、人工确认、执行回写、测试/发布变化。
## 4. 单次任务范围标准
每次 Codex 执行产品推进任务,必须控制为一个“可闭环增量”,不要跨太多面。
### 4.1 默认范围
一次任务最多覆盖:
- 一个产品表面:如 Project Launch / Change Review / Execution Bridge。
- 一个后端合同或服务切片。
- 一个前端接入切片。
- 对应测试。
- 对应文档进度回写。
如果预计改动超过 5 个核心文件或超过约 200 行业务代码,必须先拆子任务,除非是同一根因的缺陷修复。
### 4.2 推荐任务模板
每次新任务开始前,先给自己明确:
- 本次要推进的 Phase。
- 本次要打通的用户路径。
- 涉及的前端入口。
- 涉及的后端 API / service / model。
- 本次不处理的边界。
- 最小验证命令。
- 完成后要更新的进度文档。
### 4.3 禁止范围漂移
产品推进任务里禁止顺手做:
- 无关视觉重构。
- 无关后台治理页扩展。
- 无关权限体系大改。
- 无关 AI prompt 大改。
- 无关模型路由策略调整。
- 无关文案大清洗。
除非这些问题直接阻断本次用户路径。
### 4.4 Codex 并行推进协议
PMFlow 允许多个 Codex 线程并行推进。产品上可以按“大模块 lane”长期并行,例如主流程、空间、个人中心,但实际执行单位仍必须是明确的 `Packet`。不能只用“做空间”“做个人中心”“做主流程”这类模糊大模块直接开工;每个模块 lane 都必须拆成带 `write_scope` 的 Packet。没有 `write_scope` 的任务不允许并行执行。
每个并行 `Packet` 开始前必须声明:
- `packet_id`
- `phase`
- `owner_thread`
- `base_ref`
- `read_scope`
- `write_scope`
- `forbidden_paths`
- `shared_files`
- `depends_on`
- `merge_after`
- `verification`
- `docs_to_sync`
并行硬规则:
- 只有 `write_scope` 不重叠的 Packet 才允许并行。
- 任意两个 Packet 若同时需要改 `router / schema / migration / shared API client / shared store / CLAUDE.md / CODE_REFERENCE_INDEX.md`,必须串行。
- 每轮并行最多保留一个 `contract / migration / router owner`;其它线程只能消费该 owner 已定义的稳定接口。
- 并行线程不得在自己的 `write_scope` 外做“顺手修复”;发现阻塞问题时,只记录到 integration notes 或新建后续 Packet。
- 同一批并行开发必须指定一个 `integration owner`,负责最终合并共享文件、跑集成验证和更新进度台账。
### 4.4.1 大模块并行治理
大模块并行的目标是让不同产品表面长期同时推进,但不让它们抢同一批共享文件、共享状态和共享合同。
大模块 lane 可以长期存在;Packet 必须短生命周期。lane owner 负责该产品表面的连续性,Packet owner 负责一次可验证增量。一个 lane 同一时间可以只有一个活跃 Packet,也可以拆成同 lane 内串行小 Packet;不同 lane 只有在 `write_scope` 不重叠时才允许并行。
大模块并行必须遵守以下规则:
- 先由 `Shell / Integration owner` 冻结公共壳、路由、导航、Provider、共享 API client、共享文档归属。
- `Main Flow / Space / Account Settings` 等模块线程只能写自己 lane 的 owned files。
- 任一模块需要改共享文件,必须先把该修改拆给 `Shell / Integration owner`,不能在模块 Packet 里顺手改。
- 模块之间只能通过稳定合同交互:URL、route params、只读 summary API、事件/待确认摘要、用户偏好 API;禁止跨模块直接 import 对方 store 内部实现。
- Space 只能聚合和跳转,不直接写 Project Memory、ChangeSet commit、Execution Bridge 回写。
- Account Settings 只能处理用户资料、偏好、通知和账户壳,不直接改项目主链、权限核心或 AI 路由。
- Main Flow 可以继续推进 PMFlow OS 主链,但不得顺手重做 Space 首页或个人中心。
- 每批大模块并行仍必须有一个 integration owner 统一执行 `Parallel Integration Gate`。
共享高冲突文件默认只归 `Shell / Integration owner`:
- `frontend/src/router/index.tsx`
- `frontend/src/main.tsx`
- `frontend/src/lib/api.ts` 或其它共享 API base
- `frontend/src/features/pmflow-os/components/PMFlowOsFrame.tsx`
- `frontend/src/features/pmflow-os/components/MobileBottomNav.tsx`
- `backend/app/api/router.py`
- `backend/app/models/__init__.py`
- `backend/alembic/versions/*`
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/API_CONTRACTS.md`
### 4.4.2 当前大模块 lane 划分
#### Lane 0:Shell / Integration
定位:
- 冻结公共应用壳、路由、移动底部导航、Provider、共享文档和合并顺序。
- 不承担具体产品表面的大量 UI 实现。
默认写范围:
- `frontend/src/router/index.tsx`
- `frontend/src/main.tsx`
- `frontend/src/features/pmflow-os/components/PMFlowOsFrame.tsx`
- `frontend/src/features/pmflow-os/components/MobileBottomNav.tsx`
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/API_CONTRACTS.md`
#### Lane 1:Main Flow / PMFlow OS 主流程
定位:
- 打穿 V1 主链:Project Thread -> Structured Extraction -> Change Review -> Project Memory -> Execution Bridge -> Release/Growth。
- 这是产品核心闭环,优先级最高。
默认写范围:
- `frontend/src/features/pmflow-os/`
- `frontend/src/api/pmflowOs.ts`
- `backend/app/api/pmflow_os_api/`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/services/pmflow_change_review_service.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/tests/test_pmflow_*`
默认禁止:
- 不改 `frontend/src/features/personal-space/`。
- 不改 Account Settings 域。
- 不改共享 router / nav / docs,除非本 Packet 就是 integration owner。
#### Lane 2:Space / 个人空间入口
定位:
- 建设 `/space` 作为所有项目、想法、草案、待确认和 AI 推进状态的上层入口。
- Space 是聚合与导航层,不是 Project Memory 或 ChangeSet 的写入层。
默认写范围:
- `frontend/src/features/personal-space/`
- `frontend/src/pages/PersonalSpacePage.tsx`
- `frontend/src/api/space.ts`(如需要)
- `backend/app/api/space_api/`(如需要,只读聚合优先)
- Space 相关测试
默认禁止:
- 不改 `frontend/src/features/pmflow-os/store.tsx`。
- 不改 PMFlow OS 主流程页面。
- 不改 ChangeSet commit / Execution Bridge 写回服务。
- 不直接写项目真相层;写动作必须跳转或调用已有主流程合同。
#### Lane 3:Account Settings / 个人中心与设置
定位:
- 建设 `/me`、个人资料、偏好、通知、AI 使用偏好和账户操作。
- Account Settings 是用户偏好层,不是项目协作层或权限核心重构。
默认写范围:
- `frontend/src/features/account-settings/`(建议新建)
- `frontend/src/features/pmflow-os/pages/AccountPage.tsx`
- `frontend/src/features/pmflow-os/components/AccountControls.tsx`
- `frontend/src/api/accountSettings.ts`(如需要)
- `backend/app/api/account_settings_api/`(如需要)
- Account Settings 相关测试
默认禁止:
- 不改 Project Memory / ChangeSet / Execution Bridge。
- 不改 Space 聚合。
- 不改 OAuth/JWT/auth core;如必须改,另开安全 Packet。
- 不改共享 router / nav,除非由 integration owner 串行处理。
### 4.4.3 P0 公共壳冻结结果
截至 2026-04-26,P0 对当前共享壳的冻结结论如下。后续 `main-flow-phase-d-execution / space-v1-workbench / account-settings-v1` 必须按此边界开工。
#### Route 归属
| 路由 | 当前实现 | 归属 lane | 后续规则 |
| --- | --- | --- | --- |
| `/space` | 已存在,`PersonalSpaceStandalone` -> `frontend/src/pages/PersonalSpacePage.tsx` -> `frontend/src/features/personal-space/` | Space | Space lane 可改页面域;不得在本 lane 改 router,除非通过 Shell owner |
| `/project-launch` | 已存在,`ProjectLaunchStandalone` -> `frontend/src/pages/ProjectLaunchPage.tsx` -> `frontend/src/features/project-launch/` | Project Launch / Shell owned route | 非本批三线程主任务;后续只作为 Space 和 Main Flow 的入口/跳转消费 |
| `/pmflow-os` | 已存在,alias 到 `CommandCenterStandalone`,支持 `?projectId=<id>` 真实项目上下文 | Main Flow | Main Flow lane 消费;route alias 归 Shell owner |
| `/command-center` | 已存在,standalone 与 AuthGuard children 双入口均存在 | Main Flow | 当前作为免登录产品预览壳和项目指挥台入口;后续是否收敛双入口由 Shell owner 单独处理 |
| `/change-review` | 已存在,移动底导“待确认”指向此路由 | Main Flow | Space 只能聚合摘要并跳转,不直接写 Change Review 状态 |
| `/execution-bridge` | 已存在于 AuthGuard children | Main Flow | Phase D 真实接入由 Main Flow lane 负责 |
| `/release-growth` | 已存在于 AuthGuard children | Main Flow | Phase E 再推进,不进入本批 Space / Account scope |
| `/me` | 已存在,standalone 与 AuthGuard children 双入口均存在,页面来自 `frontend/src/features/pmflow-os/pages/AccountPage.tsx` | Account Settings | Account lane 可改 AccountPage/AccountControls;route 归 Shell owner |
| `/settings` | 当前未实现 | Account Settings reserved | 不在 P0 临时新增;由 `account-settings-v1` 提出需要后,Shell owner 串行加 route |
#### Provider 与共享状态
- `frontend/src/main.tsx` 当前全局挂载 `QueryClientProvider -> PMFlowOsProvider -> ToastProvider -> RouterProvider`。
- `PMFlowOsProvider` 当前是全局 provider,但业务所有权归 `Main Flow / PMFlow OS`。
- Space 和 Account Settings 可读取稳定公开 hook/API,但禁止直接改 `frontend/src/features/pmflow-os/store.tsx` 或依赖其内部 mutation 细节。
- 如果 Space 需要“待确认 / AI 正在推进 / 最近项目”摘要,优先新增 `frontend/src/api/space.ts` 与只读后端聚合接口,不能从 PMFlow OS store 内部反向拼。
- 如果 Account Settings 需要用户偏好,优先新增 `frontend/src/api/accountSettings.ts` 与独立后端接口,不能把个人偏好塞进 PMFlow OS truth store。
#### 导航与移动底部栏
- `frontend/src/features/pmflow-os/components/MobileBottomNav.tsx` 是正式应用壳唯一移动底部导航实现。
- 当前五项固定为:`空间 -> /space`、`指挥台 -> /command-center`、`待确认 -> /change-review`、`动态 -> /command-center`、`我的 -> /me`。
- Space / Main Flow / Account 三个模块线程不得各自改底部导航。任何导航项新增、重命名、跳转变更,都必须交给 Shell owner。
- 当前 `动态` 暂时回到 `/command-center`,属于保留占位;后续如实现 `/activity` 或动态页,必须单独开 Shell / Integration Packet。
#### 下一批开工条件
- `main-flow-phase-d-execution` 可以直接开工,前提是不改 router、MobileBottomNav、PMFlowOsFrame 的导航归属。
- `space-v1-workbench` 可以直接开工,前提是只改 `personal-space` owned files 和可选 `space.ts / space_api`,不碰 PMFlow OS store。
- `account-settings-v1` 可以直接开工,前提是不新增 `/settings` route;如确需 `/settings`,先把 route 需求写入 integration notes,再由 Shell owner 添加。
### 4.5 V1 Productized Loop 默认并行切片
V1 主链并行开发默认按 lane 切分:
- `Contract Lane`:API / Schema / DB migration / 核心对象合同,只允许单线程拥有。
- `Backend Lane`:service + route + tests,必须依赖 Contract Lane。
- `Frontend Lane`:`frontend/src/api/` + React Query / store 接入,必须依赖稳定 API 合同。
- `UI Lane`:页面展示、状态、交互、响应式,只能改功能域内组件,不能改 API 合同。
- `Docs/Test Lane`:回归补充、文档同步、验证矩阵,可以和非共享代码并行,但最终由 integration owner 统一收口。
默认合并顺序:
1. Contract / migration
2. Backend service / API
3. Frontend API / store
4. UI / page
5. Docs / test / integration
### 4.6 Phase C2 并行试点拆包
当前下一阶段 `Phase C2:ChangeSet commit 入库` 默认拆成四个 Packet:
- `C2-contract`
- Lane:`Contract Lane`
- 目标:定义 commit API、写入规则、高风险 approval gate、响应合同和失败语义。
- 写范围:PMFlow OS 产品合同、API 合同、schema 草案或对应设计文档。
- 退出条件:后端和前端实现线程不需要再自行决定 API shape。
- `C2-backend`
- Lane:`Backend Lane`
- 目标:实现 ChangeSet commit service、route、transaction、权限边界和后端测试。
- 依赖:`C2-contract`
- 写范围:`backend/app/api/pmflow_os_api/`、`backend/app/services/pmflow_change_review_service.py`、`backend/app/schemas/pmflow_os.py`、相关 tests;若需要 migration,必须回到 Contract Lane 串行处理。
- `C2-frontend`
- Lane:`Frontend Lane`
- 目标:接入 commit API,更新 `pmflow-os` store、Change Review 状态和错误/成功反馈。
- 依赖:`C2-contract`
- 写范围:`frontend/src/api/pmflowOs.ts`、`frontend/src/features/pmflow-os/store.tsx`、`ChangeReviewPage` 或 owned 组件测试。
- `C2-docs-verification`
- Lane:`Docs/Test Lane`
- 目标:同步产品推进台账、代码索引、API 合同、架构库存,并执行最终集成验证。
- 依赖:`C2-backend`、`C2-frontend`
- 写范围:文档和验证记录;共享文档由 integration owner 统一合并。
`C2-contract` 必须先完成;`C2-backend` 和 `C2-frontend` 只能在合同稳定后有限并行;最终必须由一个 integration owner 统一收口。
### 4.7 分支与 worktree 协议
并行开发默认使用独立分支和独立 worktree:
- 分支命名:`codex/<packet_id>`。
- 每个 Packet 必须记录启动时的 `base_ref`。
- 每个并行线程优先使用独立 git worktree,避免同一工作区文件互相覆盖。
- 合并前必须检查当前分支是否落后主集成分支。
- 合并前必须检查 `git diff --name-only`,确认没有写出 `write_scope`。
- 触碰共享高冲突文件时,必须交由 integration owner 合并。
### 4.8 Packet commit 协议
并行开发不是“每改一行就提交”,也不是“多个 Packet 混在一个长期分支里攒”。默认规则:
- 一个 Packet 对应一个短生命周期分支:`codex/<packet_id>`。
- Packet 完成、验证通过、文档同步完成后,必须形成至少一个可审查 commit。
- Codex 必须自行执行 commit gate 判定,不把“该不该提交”默认丢给用户判断。
- 复杂 Packet 可以在同一分支内做多个 checkpoint commit,但每个 commit 都必须是逻辑完整切片,不能提交半成品、失败验证或越界改动。
- 不允许把多个不同 Packet 的实现混进同一个 commit。
- 不允许在旧 Packet 分支上继续做新 Packet;新 Packet 必须从最新 integration base 或明确依赖分支重新开 `codex/<new_packet_id>`。
- 如果新 Packet 依赖尚未合并的 `Contract Lane`,优先等待合同分支合入;确需提前开发时,必须以该合同分支作为 `base_ref`,并在任务包里写明 `depends_on / merge_after`。
- integration owner 只合并通过 `Parallel Integration Gate` 的 Packet commit;未验证 commit 只能留在 Packet 分支内,不进入主集成分支。
- 每个 Packet 合并后,旧 Packet 分支只用于追溯,不再追加新业务改动。
commit gate 判定:
- `auto_commit`:满足全部条件时,Codex 应自行提交当前 Packet 分支。
- 当前改动全部在 `write_scope` 内。
- 没有混入用户或其它线程的未归属改动。
- 触碰共享高冲突文件时,当前线程就是该文件的 owner 或 integration owner。
- 必要验证已通过;若验证无法执行,原因和影响已经写入结果与任务包。
- 必要文档已同步。
- commit 内容只包含当前 Packet。
- `hold_no_commit`:满足任一条件时,Codex 不得提交,只能报告阻塞和证据。
- 验证失败且失败与本 Packet 相关。
- `git diff --name-only` 发现越界改动。
- 工作区混入无法归属的用户改动或其它线程改动。
- 发现 migration 多 head、合同不稳定、API shape 未定或依赖 Packet 未完成。
- 需要破坏性删除、重置、强推、覆盖、批量迁移等高风险操作。
- `ask_before_commit`:满足任一条件时,Codex 必须先说明事实并等用户拍板。
- 用户明确要求只改不提交。
- commit 需要包含共享高冲突文件,但当前线程不是 owner。
- 验证无法运行且该 Packet 风险较高。
- 需要把多个 Packet 的改动临时合在一个 commit 里。
- 需要提交历史遗留脏改动才能让当前 Packet 自洽。
推荐 commit 节奏:
1. `contract` Packet:合同文档、schema 草案或 migration 约束稳定后 commit。
2. `backend` Packet:后端实现和对应测试通过后 commit。
3. `frontend` Packet:API/store/UI 接入和对应前端验证通过后 commit。
4. `docs-verification` Packet:文档同步、最终验证记录和进度台账完成后 commit。
### 4.9 Parallel Integration Gate
每批并行开发结束后,integration owner 必须执行集成验收:
- `git diff --name-only` 检查每个 Packet 是否越界。
- 后端改动:`python -m py_compile` + 相关 `pytest`。
- 前端改动:`npm run typecheck` + `npm run build` + 相关 focused tests。
- migration 改动:`alembic heads` 必须单 head;必要时执行 `alembic upgrade head`。
- 文档:产品推进台账、代码索引、API 合同、架构库存同步完成。
- 若后端或 migration 改动已经落地,按项目规则执行热部署/重启;若不能执行,必须明确写阻塞原因。
## 5. 每次完成后的进度回写标准
后续 Codex 每完成一个 PMFlow 产品推进任务,必须自己更新进度,不需要用户额外提醒。
### 5.1 必须更新的地方
每次完成后至少更新:
1. 本文档 `## 8. 进度台账`
- 新增一条记录。
- 写清完成内容、影响范围、验证结果、下一步建议。
2. 如果新增/删除/重命名文件或入口:
- 更新 `CLAUDE.md`
- 更新 `docs/architecture/ARCHITECTURE_INVENTORY.md`
- 更新 `docs/architecture/CODE_REFERENCE_INDEX.md`
3. 如果新增/修改 API/Schema:
- 更新 `docs/architecture/CODE_REFERENCE_INDEX.md`
- 必要时更新 `docs/architecture/API_CONTRACTS.md`
4. 如果新增运行边界、禁止项或系统行为约束:
- 更新 `docs/architecture/RUNTIME_GUARDRAILS.md`
5. 如果改变产品战略或不可偏离项:
- 更新 `docs/PMFLOW_PRODUCT_BLUEPRINT.md`
- 更新 `USER.md`
### 5.2 进度台账记录格式
每条记录必须包含:
- 日期。
- Phase。
- 状态:`done / partial / blocked`。
- 完成内容。
- 涉及文件。
- 验证命令和结果。
- 未完成或风险。
- 下一步建议。
### 5.3 什么时候不用更新蓝图
普通实现、接 API、修 bug、补测试,不更新产品蓝图。
只有以下情况才更新蓝图:
- 用户改变产品定位。
- V1 范围改变。
- 团队方向改变。
- 新增/删除核心产品表面。
- 改变不可偏离项。
## 6. 新开线程接续标准
任何新 Codex 线程,如果用户要求继续 PMFlow 产品推进,必须先读:
1. `USER.md`
2. `docs/PMFLOW_PRODUCT_BLUEPRINT.md`
3. `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
4. `CLAUDE.md`
5. `docs/architecture/CODE_REFERENCE_INDEX.md`
然后再查当前目标相关代码。
新线程不得:
- 重新讨论 PMFlow 是否应该做对话驱动 OS。
- 重新建议变成传统项目管理工具。
- 重新发散大而全模块。
- 忽略 `## 8. 进度台账` 直接从头设计。
- 把本地原型当成真实后端闭环。
- 把已有后端 `ai_project_control / dev_sync / sstc model_control` 忽略后重造一套。
## 7. 当前下一步推荐任务
当前最建议下一步执行:
**Phase D.2:Execution Bridge 执行交接合同。**
原因:
- A3 已完成真实只读投影,Phase B 已完成真实 Project Launch 创建链。
- Phase C1 已把项目内消息、结构化候选、审查动作和证据链落到真实表。
- C2-contract 已锁定 commit API、原子提交规则、响应合同和失败语义。
- C2-backend 已按合同实现 atomic commit route/service/schema/tests,C2-frontend 已把真实模式写入接到 commit API。
- Phase D 已把 `ExecutionBridgePage` 切到 `execution-summary` 与 dev-sync 真实数据。
- 当前缺口是执行桥只读展示已经成立,但还不能把一个已确认任务推进到可追踪的真实执行交接;下一步应实现 `POST /pmflow-os/projects/{project_id}/execution-handoffs`,生成/复用 PromptPackage、绑定 task/repo/runtime,并创建 `handoff_created` progress event 起点。
### 7.1 下一批大模块并行建议
P0 公共壳冻结已完成,下一批可以进入 `Batch P1` 三模块并行;最终仍必须由 `Batch P2` integration owner 收口。
#### Batch P0:Shell / Route / Shared Contract Freeze
状态:`done`
冻结结论:
- 当前已存在 `/space`、`/project-launch`、`/pmflow-os`、`/command-center`、`/change-review`、`/execution-bridge`、`/release-growth`、`/me`。
- `/settings` 当前未实现,标记为 Account Settings reserved route;不得由业务模块线程顺手新增。
- 移动端底部导航已固定为 `空间 / 指挥台 / 待确认 / 动态 / 我的`,实现归 `Shell / Integration owner`。
- `frontend/src/main.tsx` 全局 provider 顺序已确认:`QueryClientProvider -> PMFlowOsProvider -> ToastProvider -> RouterProvider`;后续 provider 变更必须由 Shell owner 串行处理。
#### Batch P1:三模块并行
在 P0 完成后,可以同时开三个长期 lane 的首个 Packet。
##### Main Flow Packet:`main-flow-phase-d2-execution-handoff-contract`
目标:
- 继续执行 Phase D.2,把 Execution Bridge 从 execution dashboard 推进为 execution command bridge。
- 新增 `POST /pmflow-os/projects/{project_id}/execution-handoffs`,允许对已确认任务发起真实执行交接。
- 后端生成/复用 `PromptPackage`,记录 `runtime_target / repo_binding_id / task_id`,并创建 `ProgressEvent(event_type='handoff_created')`。
- 前端真实模式下“发起执行交接”调用真实 API,成功后 refetch `execution-summary / truth-state`;无 task/repo/prompt 时必须显示明确 warning 和下一步。
默认写范围:
- `frontend/src/features/pmflow-os/`
- `frontend/src/api/pmflowOs.ts`
- `backend/app/api/pmflow_os_api/`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/schemas/pmflow_os.py`
- 相关 tests
##### Space Packet:`space-v1-workbench`
目标:
- 把 `/space` 推进成个人工作面聚合页。
- 展示继续推进、待我确认、AI 正在推进、暂存想法、草案箱、最近项目。
- 优先只读聚合;点击项目进入 `/pmflow-os?projectId=...`,不直接写项目真相层。
默认写范围:
- `frontend/src/features/personal-space/`
- `frontend/src/pages/PersonalSpacePage.tsx`
- `frontend/src/api/space.ts`(如需要)
- `backend/app/api/space_api/`(如需要,只读聚合优先)
- Space 相关测试
##### Account Settings Packet:`account-settings-v1`
目标:
- 建设 `/me` 和个人设置首版。
- 覆盖个人资料、AI 偏好、通知偏好、账户操作和移动端 bottom sheet。
- 不改 OAuth/JWT/auth core,不改项目主链。
默认写范围:
- `frontend/src/features/account-settings/`(建议新建)
- `frontend/src/features/pmflow-os/pages/AccountPage.tsx`
- `frontend/src/features/pmflow-os/components/AccountControls.tsx`
- `frontend/src/api/accountSettings.ts`(如需要)
- `backend/app/api/account_settings_api/`(如需要)
- Account Settings 相关测试
#### Batch P2:Integration Owner 收口
目标:
- 检查三个 Packet 的 `git diff --name-only` 是否越界。
- 统一处理 router、bottom nav、shared docs、API index 的冲突。
- 跑后端/前端最小集成验证。
- 更新 `## 8. 进度台账`、`CODE_REFERENCE_INDEX.md`、`ARCHITECTURE_INVENTORY.md` 与必要的 `CLAUDE.md`。
## 8. 进度台账
### 2026-04-26 / team-review-p1-change-review-routing / done
完成内容:
- 在 `ProjectTruthState` 新增 `reviewerRouting(status, warningCode, summary, items)` 只读投影,从 open/pending ChangeSet、待审 item 风险、跨对象类型、`iteration_recommendation` evidence、项目成员与 `OWNER / REVIEWER` 角色生成建议审查人、来源、风险等级、优先级、审查原因、fallback role 和目标跳转 URL。
- `TeamLayerPage` 真实模式展示待审 ChangeSet reviewer routing:ready / empty / warning、来源(下一轮迭代 / AI 提取 / 手动)、风险等级、建议审查人或 fallback role、审查原因、待审 item 数、证据数,并跳转 `/change-review?projectId=<id>&changeSetId=<id>`。
- 保持监督式边界:不新增 route,不新增 migration,不做复杂权限系统,不自动 assign reviewer,不写 approval;缺成员、缺 `OWNER / REVIEWER` 角色或缺 evidence 时只显示 warning,不虚构 reviewer。
- 同步 `CLAUDE.md`、`CODE_REFERENCE_INDEX.md`、`ARCHITECTURE_INVENTORY.md` 与本台账。
涉及文件:
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/types.ts`
- `frontend/src/features/pmflow-os/pages/TeamLayerPage.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`22 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`11 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning(`ai-steward / sstc / charts / governance` chunk 环)。
- `docker compose restart backend` 已执行,`docker compose ps backend` 确认 `pmflow-backend` 恢复 `healthy`。
- `git diff --name-only` 已执行,diff 均在本 Packet write scope 内。
未完成或风险:
- 当前只是 reviewer routing 读模型与 TeamLayer 展示,不代表正式 reviewer assignment、权限审批流、通知或自动审查任务已接入。
- Role Inbox、Decision Desk、Team Feed 的完整真实数据模型仍是后续 Team lane 工作。
### 2026-04-26 / big-module-integration-p6 / done
完成内容:
- 收口 Iteration Loop P1、Space P5 与 Account P6 的并行成果,当前集成分支已包含 `ea8f9d0 feat(pmflow-os): draft changesets from iteration recommendations`、`5db6f71 feat(space): surface iteration draft attention`、`8cc0cd9 feat(account): map iteration review reminders`。
- 确认本轮没有修改 `frontend/src/router/index.tsx`、`frontend/src/features/pmflow-os/components/MobileBottomNav.tsx` 或新增 route/nav;现有 `/release-growth`、`/change-review`、`/space`、`/me` 入口继续承接本批成果。
- 共享文档边界已同步:Main Flow 负责 recommendation -> ChangeSet draft 写入口与 ReleaseGrowth 触发动作;Space 只读消费 recommendation draft 状态并跳转主流程;Account 只把 `iteration_recommendation / next_change_review` 映射到待确认提醒偏好,不接真实邮件、桌面推送或系统通知中心。
- P6 后,发布后反馈闭环已从“feedback -> recommendation 展示”推进到“recommendation -> 下一轮 ChangeSet draft -> Change Review accept/edit/defer”,仍保持不自动 commit、不写 Project Memory、不创建正式任务的监督式边界。
涉及文件:
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- 合并依赖分支带入的 Main Flow / Space / Account owned files
验证:
- `git diff --name-only` 已执行,最终待提交 diff 仅为 P6 integration 文档收口。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py backend/tests/test_account_settings_api.py -q` 通过:`23 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`9 passed`。
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`10 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning(`ai-steward / sstc / charts / governance` chunk 环)。
- `docker compose restart backend` 已执行,`docker compose ps backend` 确认 `pmflow-backend` 恢复 `healthy`。
未完成或风险:
- P6 仍不执行真实发布、不接外部支付、不接真实邮件/桌面推送或系统通知中心。
- 下一轮可以继续做 recommendation draft 的质量分组、批量生成策略或 Team/Reviewer 审查,但必须保持 Change Review 人类确认边界。
### 2026-04-26 / account-p6-iteration-review-preference-consume / implemented
完成内容:
- 扩展 `frontend/src/api/accountSettings.ts` 的 post-release 偏好合同,新增 `next_change_review` 事件,并把 `iteration_recommendation / next_change_review` 的 surface 收敛到 `change_review`。
- `pendingConfirmation` 偏好控制 iteration recommendation 与下一轮 ChangeSet 待审的页面内提醒;偏好关闭只静默提醒,不隐藏 ChangeSet、recommendation 或证据。
- 本轮只做 Account Settings API/helper 与测试,不改 ReleaseGrowthPage、Space、PMFlow OS store、router、auth core,不接真实邮件/桌面推送。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/accountSettings.test.ts`
验证:
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`10 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Main Flow / Space 只消费该 helper 语义,不把偏好当业务权限;待确认对象仍由 Change Review 真源控制。
### 2026-04-26 / space-p5-iteration-draft-attention / implemented
完成内容:
- 在 `frontend/src/api/space.ts` 将发布后反馈关注继续扩展到 iteration draft attention:只读识别 `releaseSignals.recommendations[*].changeSetCreated / changeSetId` 和待审 ChangeSet 关系。
- `/space` 桌面端和移动端能把“下一轮待确认变更 / 已生成 ChangeSet draft”的关注项展示出来;项目动作跳 `/change-review?projectId=<id>&changeSetId=<id>` 或 `/release-growth?projectId=<id>`。
- 本轮不生成 recommendation、不创建 ChangeSet、不写 ChangeSet 状态、不写 Project Memory、不执行发布或外部支付。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 在 P6 integration 中通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run typecheck` 在 P6 integration 中通过。
- `cd frontend && npm run build` 在 P6 integration 中通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Space P5 只消费主流程结果,不负责 recommendation -> ChangeSet draft 写入;后续字段调整仍由 Space lane 只读适配。
### 2026-04-26 / big-module-integration-p5 / done
完成内容:
- 收口 Release Feedback P1、Space P4 与 Account P5 的并行成果,当前集成分支已包含 `1d213ba feat(pmflow-os): ingest release feedback signals`、`7025459 feat(space): surface post-release feedback attention`、`66ec4c7 feat(account): define post-release notification preferences`。
- 确认本轮没有修改 `frontend/src/router/index.tsx`、`frontend/src/features/pmflow-os/components/MobileBottomNav.tsx` 或新增 route/nav;现有 `/release-growth`、`/space`、`/me` 入口继续承接本批成果。
- 共享文档边界已同步:Main Flow 负责 `release-feedback-ingests`、`execution-summary.releaseSignals` 与 ReleaseGrowth 真实信号展示;Space 只读消费 `releaseSignals` 派生“发布后反馈关注”并跳转主流程;Account 只提供 post-release 通知偏好 helper,不接真实邮件、桌面推送或系统通知中心。
- P5 后,Release/Growth 已从“发布前门禁 + 验证记录”推进到“发布后 feedback / revenue / iteration recommendation 信号读模型雏形”;下一步应优先把 iteration recommendation 进入 ChangeSet draft,而不是扩新页面。
涉及文件:
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- 合并依赖分支带入的 Main Flow / Space / Account owned files
验证:
- `git diff --name-only` 已执行,最终待提交 diff 仅为 P5 integration 文档收口。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py backend/tests/test_account_settings_api.py -q` 通过:`22 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`8 passed`。
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`10 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning(`ai-steward / sstc / charts / governance` chunk 环)。
- `docker compose restart backend` 已执行,`docker compose ps backend` 确认 `pmflow-backend` 恢复 `healthy`。
未完成或风险:
- P5 仍不执行真实发布、不接外部支付、不接真实邮件/桌面推送或系统通知中心。
- `IterationRecommendation` 当前只作为发布后建议底座展示;进入 ChangeSet draft 需后续 Main Flow packet 单独处理。
### 2026-04-26 / account-p5-feedback-notification-preference-contract / implemented
完成内容:
- 在 `frontend/src/api/accountSettings.ts` 新增 `AccountPostReleaseNotificationEvent` 与 `getPostReleaseNotificationPreference(settings, event)`,覆盖 `feedback_received / revenue_signal / compliance_blocked / iteration_recommendation`。
- feedback、revenue、compliance 事件映射到 `releaseGate` 偏好;iteration recommendation 映射到 `pendingConfirmation` 偏好。
- helper 返回 `spaceReadable / showInAppReminder / desktopPreference / emailDigestPreference / evidencePolicy / reminderPolicy / mutedDetail`,明确偏好只控制页面内提醒表达,不隐藏业务证据。
- 本轮只做 Account Settings API/helper 与测试,不改 ReleaseGrowthPage、Space、PMFlow OS store、router、auth core,不接真实邮件/桌面推送。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/accountSettings.test.ts`
验证:
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`10 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Main Flow / Space 尚未消费该 post-release helper;本阶段只冻结偏好合同。
- `desktopPreference / emailDigestPreference` 仍只是偏好记录,不代表真实系统级桌面通知、邮件通知或通知中心已接入。
### 2026-04-26 / space-p4-feedback-attention-readmodel / implemented
完成内容:
- 在 `frontend/src/api/space.ts` 新增 `feedbackAttention` 只读聚合,从 PMFlow OS `execution-summary.releaseSignals` 派生发布后 feedback、revenue、ROI、compliance 与 iteration recommendation 关注项。
- `/space` 桌面端和移动端新增“发布后反馈关注”区块;项目主动作仍只跳 `/release-growth?projectId=<id>`。
- 发布后信号缺失时显示明确空态,不使用 mock feedback、mock revenue 或默认成功结果冒充真实运营信号。
- 本轮不创建 feedback ingest、不写 RevenueEvent、不写 ComplianceCheckRun、不写 ProgressEvent、不写 ChangeSet、不执行发布或外部支付。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 在 P5 integration 中通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run typecheck` 在 P5 integration 中通过。
- `cd frontend && npm run build` 在 P5 integration 中通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Space P4 只消费发布后信号读模型,不负责信号创建或下一轮建议落 ChangeSet。
- 如果后续 PMFlow OS 暴露独立 `releaseSignals` 明细页或独立 recommendation 合同,Space 仍应只读切换字段并保持跳转主流程。
### 2026-04-26 / release-feedback-p1-feedback-ingest-readmodel / implemented
完成内容:
- 在 PMFlow OS 后端新增轻量写入口 `POST /pmflow-os/projects/{project_id}/release-feedback-ingests`,复用现有 `AIProjectControlService.ingest_feedback` 与 `FeedbackIngest / IterationRecommendation` 模型,不新增 migration。
- `GET /pmflow-os/projects/{project_id}/execution-summary` 新增 `releaseSignals` 投影,聚合真实发布后 `feedback / revenueEvents / recommendations`,并显式返回 `releaseGateStatus / latestValidationRunId / changeSetCreated=false` 关系信息。
- `ReleaseGrowthPage` 真实模式新增“发布后反馈信号”区域和“摄取发布后反馈”表单;无信号时展示明确 empty/warning,不用 mock 成功数据补位。
- 前端 `PMFlowOsProvider` 新增 `createReleaseFeedbackIngest` 动作,真实模式调用 PMFlow OS API 并 refetch truth-state / execution-summary;demo 模式仍只在显式 `?demo=1` 下走本地演示 mutation。
- 本阶段只沉淀下一轮 iteration recommendation 所需数据,不自动创建 ChangeSet,不触发真实发布,不接外部支付,不接邮件/桌面推送。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ReleaseGrowthPage.tsx`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `CLAUDE.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`18 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`2 passed / 8 passed`。
- `cd frontend && npm run typecheck` 未通过:当前独立 worktree 没有被 `.gitignore` 忽略的 `frontend/src/lib/*` 本地 helper 文件,导致全仓 `@/lib/api`、`@/lib/utils`、`@/lib/datetime`、`@/lib/display`、`@/lib/rbac` 等 alias 解析失败;这些文件不在本 Packet write scope,未越界补入。
- `cd frontend && npm run build` 同样停在上述 `frontend/src/lib/*` 缺失的 TypeScript 解析错误,未进入 Vite build。
未完成或风险:
- 本阶段只接入 feedback ingest 与 releaseSignals 读模型;RevenueEvent / ComplianceCheckRun 已可被后续扩展继续纳入更完整发布后运营读模型。
- iteration recommendation 目前作为建议底座展示,不自动生成 ChangeSet;下一轮如果要从 recommendation 进入待确认中心,需要单独开 Main Flow packet。
- 全量前端 typecheck/build 需在包含 `frontend/src/lib/*` helper 的集成环境或由 Shell / Integration owner 修正该 ignored 文件边界后重新验证。
### 2026-04-26 / iteration-loop-p1-recommendation-to-changeset-draft / implemented
完成内容:
- 新增 `POST /pmflow-os/projects/{project_id}/iteration-recommendations/{recommendation_id}/change-set-drafts`,复用项目成员/OWNER/REVIEWER 权限边界和统一 `{code,message,data}` 包络。
- 后端从真实 `IterationRecommendation` 生成 open `PMFlowChangeSet`、pending_review `PMFlowChangeItem` 和 `PMFlowEvidenceLink(source_type='iteration_recommendation')`;item 类型限定在 `Requirement / Task / Risk / Decision`,不自动 commit、不写 Project Memory、不创建正式 Task。
- recommendation 的 `recommendation_summary` 会记录 `changeSetId / changeSetCreated / changeSetCreatedAt`,重复调用复用既有 draft 并返回 `iteration_recommendation_changeset_reused` warning。
- `execution-summary.releaseSignals` 会把 recommendation 的 `changeSetCreated / changeSetId` 和 relationship 聚合状态投影给前端,nextActions 从“只展示建议”推进为“生成下一轮待确认 ChangeSet draft”。
- `ReleaseGrowthPage` 在真实 recommendation 卡片上新增“生成下一轮待确认变更”动作,成功后通过 store refetch truth-state / execution-summary,使 Change Review 能继续 accept / edit / defer。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ReleaseGrowthPage.tsx`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `CLAUDE.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`19 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`2 files / 9 tests passed`。
- `cd frontend && npm run typecheck` 未通过:当前独立 worktree 没有被 `.gitignore` 忽略的 `frontend/src/lib/*` 本地 helper 文件,导致全仓 `@/lib/api`、`@/lib/utils`、`@/lib/datetime`、`@/lib/display`、`@/lib/rbac` 等 alias 解析失败;这些文件不在本 Packet write scope,未越界补入。
- `cd frontend && npm run build` 同样停在上述 `frontend/src/lib/*` 缺失的 TypeScript 解析错误,未进入 Vite build。
边界:
- 本阶段只把 release feedback recommendation 转入 Change Review 待确认中心;不执行部署、不触发外部支付/推送、不自动写 Project Memory、不自动创建正式任务。
- Space 仍只读消费 `releaseSignals` 并跳转主流程;Account Settings 只提供偏好 helper,不参与 PMFlow OS 写入。
### 2026-04-26 / big-module-integration-p4 / done
完成内容:
- 收口 Release Validation P1、Space P3、Account P3 与 Release/Growth P2 的并行成果,当前集成分支已包含 `875b929 feat(pmflow-os): record release validation runs`、`b9b4b5a feat(space): surface release validation attention`、`fe7807b feat(account): define release notification consumption`、`32af422 feat(pmflow-os): respect release notification preferences`。
- 确认本轮只做共享文档收口和依赖分支合并,没有修改 `frontend/src/router/index.tsx`、`frontend/src/features/pmflow-os/components/MobileBottomNav.tsx` 或新增 route/nav;现有 `/release-growth`、`/space`、`/me` 入口足够承接本批成果。
- 共享文档冲突已按 lane 边界合并:Main Flow 负责 release gate、release validation run 和 ReleaseGrowth 偏好消费;Space 只读消费 `truth-state.releases / execution-summary.releaseGate` 并跳转主流程;Account 只提供通知偏好 helper,不接真实邮件、桌面推送或通知中心。
- `CODE_REFERENCE_INDEX.md`、`ARCHITECTURE_INVENTORY.md` 与 `CLAUDE.md` 已同步到 P4 后的当前合同,明确 ReleaseGrowthPage 可创建 validation run、消费 Account notification preference,但不执行部署命令、不隐藏真实证据和审计状态。
涉及文件:
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- 合并依赖分支带入的 Main Flow / Space / Account owned files
验证:
- `git diff --name-only` 已执行,最终待提交 diff 仅为 P4 integration 文档收口。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py backend/tests/test_account_settings_api.py -q` 通过:`21 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`6 passed`。
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`9 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning(`ai-steward / sstc / charts / governance` chunk 环)。
- `docker compose restart backend` 已执行,`docker compose ps backend` 确认 `pmflow-backend` 恢复 `healthy`。
未完成或风险:
- P4 仍不接真实发布部署、邮件、桌面推送或系统通知中心;这些必须后续单独开 Packet。
- 本轮未做路由/导航变更;如后续新增 `/settings` 或发布验证独立入口,必须继续由 Shell / Integration owner 串行处理。
### 2026-04-26 / release-growth-p2-notification-preference-consume / implemented
完成内容:
- `ReleaseGrowthPage` 真实模式读取 Account Settings 通知偏好,通过 `shouldShowAccountNotification(settings, "releaseGate")` 控制发布门禁强调提醒,通过 `shouldShowAccountNotification(settings, "failureAlert")` 控制失败强调提醒。
- `releaseGate` 偏好关闭时,页面不展示“发布门禁提醒”强调卡,也降低缺证据 / 阻塞门禁视觉强调;底层 `releaseGate` 状态、执行证据、阻塞原因、下一步动作和发布验证记录仍完整展示。
- `failureAlert` 偏好关闭时,失败 evidence 与阻塞原因仍可见,但不展示额外醒目的“失败提醒”卡,也不把阻塞原因渲染成额外告警态。
- 本阶段只消费本地页面内提醒偏好,不接邮件、桌面推送或通知中心;不修改 Account Settings 合同、PMFlow OS store、后端发布验证 API、router、Space 或 Account 页面。
- `store.api.test.tsx` 补充 ReleaseGrowth 偏好开启 / 关闭两条路径,覆盖提醒展示、静默展示和 release evidence 仍可见。
涉及文件:
- `frontend/src/features/pmflow-os/pages/ReleaseGrowthPage.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`2 passed / 6 passed`。
- `cd frontend && npm run typecheck` 未通过:当前前端树缺失整组共享 `src/lib/*` 模块(例如 `@/lib/api`、`@/lib/utils`、`@/lib/datetime`、`@/lib/display`、`@/lib/rbac`),影响全仓大量既有文件和 forbidden `router/index.tsx`;本 Packet 未越界修复。
- `cd frontend && npm run build` 同样停在上述共享 `src/lib/*` 缺失的 TypeScript 解析错误,未进入 Vite build。
未完成或风险:
- 本阶段不隐藏业务真相,只控制提醒表达强度;发布证据、审计状态和 validation run 仍以 PMFlow OS 真实读侧为准。
- 全量前端 typecheck/build 需由 Shell / Integration owner 或共享前端基础模块 owner 先恢复 `frontend/src/lib/*` 后再重新验证。
### 2026-04-26 / release-validation-p1-real-run-records / implemented
完成内容:
- 新增 `POST /pmflow-os/projects/{project_id}/release-validation-runs`,复用 PMFlow OS 项目成员/OWNER/REVIEWER 权限边界和统一 `{code,message,data}` 返回包络。
- 复用现有 `ReleaseValidationRun` 模型,不新增 migration;从当前 `execution-summary.releaseGate` 固化 `status / evidence / blockingReasons / nextActions / createdBy / createdAt / humanDecision`。
- ready evidence + `enter_release_candidate` 生成 `ready` run;needs confirmation evidence 生成 `needs_confirmation` run;failed / blocked evidence 或 `keep_blocked` 生成 `blocked` run。
- 无 execution evidence 或 `releaseGate.status=empty` 时返回 `release_validation_evidence_empty`,不创建成功 run,也不使用 mock validation。
- `execution-summary.releaseGate.latestValidationRun` 返回最新发布验证记录,`ReleaseGrowthPage` 真实模式新增“发布验证记录”区域和“生成发布验证记录 / 记录保持阻塞”动作;页面仍不执行真实部署。
- `frontend/src/api/pmflowOs.ts` 改为 PMFlow OS API 层自包含 `/api` fetch 包络解析,避免当前工作树缺失共享 `@/lib/api` 时影响 PMFlow OS focused tests;不改全局 API client。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ReleaseGrowthPage.tsx`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`17 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`4 passed`。
- `cd frontend && npm run typecheck` 未通过:当时前端树缺失整组共享 `src/lib/*` 模块(例如 `@/lib/api`、`@/lib/utils`、`@/lib/datetime`、`@/lib/display`、`@/lib/rbac`),影响全仓大量既有文件和 forbidden `router/index.tsx`;本 Packet 未越界修复。
- `cd frontend && npm run build` 同样停在上述共享 `src/lib/*` 缺失的 TypeScript 解析错误,未进入 Vite build。
未完成或风险:
- 本阶段只创建发布验证记录和人工确认快照,不执行部署命令、不写外部系统。
- 全量前端 typecheck/build 需由 Shell / Integration owner 在整合最新主线后重新验证。
### 2026-04-26 / account-p3-release-notification-consumption-contract / implemented
完成内容:
- 在 `frontend/src/api/accountSettings.ts` 新增 `AccountReleaseNotificationEvent` 与 `getReleaseGateNotificationPreference(settings, event)` 轻量合同。
- Release/Growth 后续页面可按事件类型消费偏好:`release_gate_blocked / release_gate_ready / release_validation_blocked / release_validation_needs_confirmation` 映射到 `releaseGate`,`failed_event` 映射到 `failureAlert`。
- helper 明确返回 `inAppEnabled / desktopPreference / emailDigestPreference`,以及 `notificationKey / surface / reason`,用于后续 Main Flow 页面决定页面内提醒展示或静默。
- 本轮只做 Account Settings API/helper 与测试,不改 `ReleaseGrowthPage`、PMFlow OS store、router、auth core,不新增后端字段,不接入真实邮件/桌面推送。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/accountSettings.test.ts`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`9 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Main Flow 尚未在 `ReleaseGrowthPage` 消费该 helper;后续应由 Main Flow lane 读取账号设置后按 release gate / release validation / failed event 类型调用。
- `desktopPreference / emailDigestPreference` 仍只是偏好记录,不代表真实系统级桌面通知、邮件通知或通知中心已接入。
### 2026-04-26 / space-p3-validation-run-attention / implemented
完成内容:
- 在 `frontend/src/api/space.ts` 将 `releaseAttention` 从单纯 release gate 关注升级为 `truth-state.releases` 发布验证投影 + `execution-summary.releaseGate` 的只读聚合。
- `/space` 桌面端和移动端“发布关注”区块现在优先显示“发布验证阻塞 / 发布验证待确认”;没有发布验证投影时才回落显示“发布候选 / 发布门禁阻塞”。
- 发布关注项只展示来源标签、验证/门禁状态、检查项摘要、阻塞原因和更新时间;点击只跳转 `/release-growth?projectId=<id>`。
- 发布验证缺失时显示“暂无发布验证记录”空态,不使用 mock 或默认成功结果冒充真实验证。
- 本轮不创建 validation run、不写 ProgressEvent、不写 ReleaseValidationRun、不新增后端接口、不执行发布命令。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Space P3 只消费 release validation 投影,不负责创建/更新 release validation run;真实运行记录仍由 Release/Growth lane 维护。
- 当前 Space 侧使用 `truth-state.releases` 的状态和 gateItems 表达验证结果;若后续 PMFlow OS 暴露独立 `validationRuns` 合同,需要由 Space lane 再切换到更精确字段。
### 2026-04-26 / big-module-integration-p3 / done
完成内容:
- 收口 Release/Growth P1、Space P2 与 Account P2 的并行成果,确认三条 lane 均已形成独立提交后再进入集成验证。
- Release/Growth P1 已形成 `e90adbc feat(pmflow-os): gate releases on execution evidence`,将 `execution-summary.releaseGate` 接入 `ReleaseGrowthPage`,从 branch、commit、PR、test、failed evidence 推导 `ready / blocked / needs_confirmation / empty` 发布门禁状态。
- Space P2 已形成 `9ba9876 feat(space): surface release attention read model`,只读消费 `execution-summary.releaseGate` 并在 `/space` 展示发布关注项,动作只跳 `/release-growth?projectId=<id>`。
- Account P2 已形成 `5a86007 feat(account): map notification preferences to surfaces`,把通知偏好映射到待确认、Execution Bridge、Release/Growth 和失败提醒四类页面内提醒消费模型,不接入真实邮件/桌面推送。
- 本轮未修改 router、MobileBottomNav 或 PMFlow OS frame;现有 `/release-growth`、`/space`、`/me` 入口已足够承接本批成果。
- 同步 `CLAUDE.md`、`CODE_REFERENCE_INDEX.md`、`ARCHITECTURE_INVENTORY.md` 与本交付台账,确认 Main Flow 产出发布门禁判断、Space 只读聚合、Account 只影响本地 UI 提醒消费。
涉及文件:
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py backend/tests/test_account_settings_api.py -q` 通过。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过。
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Release/Growth P1 仍只做发布门禁判断,不执行真实部署、不写 release validation run。
- Space 暂存想法真实只读聚合后端合同仍未实现。
- Account P2 只控制页面内提醒消费模型,不代表系统级桌面通知、邮件通知或通知中心已接入。
- 本轮未执行热部署/重启;当前环境是本地开发工作区。部署环境要生效,需要按实际栈执行 backend restart/reload。
下一步建议:
- 进入 `release-validation-p1-real-run-records`:把当前 release gate 判断推进为真实 release validation run 记录,保留“不执行真实部署”的边界,先沉淀发布前证据链和人工确认结果。
### 2026-04-26 / release-growth-p1-execution-evidence-gate / implemented
完成内容:
- 在 `ExecutionSummaryProjection` 中新增 `releaseGate` 投影,从 `ProgressEvent` 的 branch、commit、PR、test、failed / blocked 证据推导发布判断。
- `releaseGate.status` 覆盖 `ready / blocked / needs_confirmation / empty`:测试通过可进入发布候选,failed / test_failed / blocked 事件 fail-closed 阻塞发布,无 execution evidence 时返回明确 empty/warning。
- 扩展 execution progress event 合同,允许显式 `failed` event 回写。
- `ReleaseGrowthPage` 真实模式改为只消费 `execution-summary.releaseGate`、execution evidence、阻塞原因、下一步动作和 warning;不再展示静态“已发布/增长指标”mock 结果。
- 静态高保真发布/增长原型只保留在显式 `?demo=1` / `dataSource=demo` 模式。
- 本轮不执行发布命令、不做真实部署、不新增 migration。
涉及文件:
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/pages/ReleaseGrowthPage.tsx`
- `frontend/src/features/pmflow-os/pages/ExecutionBridgePage.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`14 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`4 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- ReleaseGrowth P1 只生成发布判断和下一步动作,不触发真实部署、不写 release validation run。
- 增长反馈、收入、ROI 和 compliance 的真实发布后反馈循环仍待后续 Packet 接入。
### 2026-04-26 / space-p2-release-attention-readmodel / implemented
完成内容:
- 在 `frontend/src/api/space.ts` 新增 `releaseAttention` 只读聚合,从已有项目摘要、`truth-state` 与 `execution-summary.releaseGate` 派生个人空间发布关注项。
- `/space` 桌面端和移动端新增“发布关注”区块,显示测试失败、PR 未合并、发布门禁阻塞、发布候选或需要人工确认的项目。
- 发布关注项只展示 release gate 状态、阻塞原因、证据标签和更新时间;点击只跳转 `/release-growth?projectId=<id>`。
- 本轮不写 Project Memory、不写 ChangeSet、不写 ProgressEvent、不新增后端接口、不执行发布命令。
- 暂存想法仍保持真实 empty/warning,不使用 mock 冒充。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router v7 future flag warning。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- Space P2 依赖 Main Flow `release-growth-p1-execution-evidence-gate` 的 `execution-summary.releaseGate` 合同;最终合并需确保该合同先进入 integration base。
- 本轮只做个人空间 read model,不做发布验证运行、真实部署、增长反馈或发布后指标聚合。
### 2026-04-26 / big-module-integration-p2 / done
完成内容:
- 收口 Main Flow D.3、Space P1 与 Account P1 的并行成果,并将 Space / Account lane 代码先分别形成独立 commit,避免 forbidden lane 文件混入 integration commit。
- Main Flow D.3 已形成 `a7008bb feat(pmflow-os): add execution progress writeback`,负责把 branch、commit、PR、test progress event 回写到 execution-summary。
- Space P1 已形成 `6c0f6da feat(space): route workbench execution items`,执行中 / AI 正在推进项只跳转 `/execution-bridge?projectId=<id>`,不写 execution event。
- Account P1 已形成 `95892d2 feat(account): add account settings sync contract`,新增 `account_settings_api`、schema、service 与测试,不改 OAuth/JWT/auth core。
- Shell / Integration 串行补上 `backend/app/api/router.py` 的 `account_settings_api` 核心路由挂载,避免前端 `/api/account-settings/me` 在真实环境 404。
- 同步 `CODE_REFERENCE_INDEX.md`、`ARCHITECTURE_INVENTORY.md` 与本交付台账,确认 Space 只读、Account 独立偏好合同、Main Flow 执行回写三条边界。
涉及文件:
- `backend/app/api/router.py`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/router.py backend/app/api/account_settings_api/__init__.py backend/app/schemas/account_settings.py backend/app/services/account_settings_service.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_account_settings_api.py -q` 通过:`4 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过。
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`2 passed`;仍有既有 React Router future flag warning。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`5 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
未完成或风险:
- 本轮未执行热部署/重启;当前环境是本地开发工作区。部署环境要生效,需要按实际栈执行 backend restart/reload。
- Account P1 当前复用 `integrations` 表保存偏好包,后续如要独立偏好表,必须另开 migration Packet。
- Space 暂存想法真实只读聚合后端合同仍未实现,当前仍明确展示 empty/warning。
下一步建议:
- Release/Growth P1 已由 `e90adbc feat(pmflow-os): gate releases on execution evidence` 完成,后续应进入真实 release validation run 记录。
### 2026-04-26 / space-p1-real-workbench-dashboard / implemented
完成内容:
- 将 `/space` 继续收敛为真实个人工作台 read model:继续推进、待确认、执行中、最近项目、草案、暂存想法均来自 `frontend/src/api/space.ts` 的只读聚合,不写主流程状态。
- 继续推进项目卡片主动作保持 `/pmflow-os?projectId=<id>`;待确认项保持 `/change-review?projectId=<id>&changeSetId=<id>`;执行中 / AI 正在推进项改为 `/execution-bridge?projectId=<id>`。
- 执行中仍只消费 PMFlow OS `execution-summary`、`recentProgressEvents`、`activeDevTasks` 与 `loopStage` 摘要,不直接写 execution event 或触发执行动作。
- 暂存想法后端合同仍未接入,继续返回空数组并展示明确 warning,不使用 mock/demo 数据冒充真实状态。
- 补充 Space focused 测试,锁定六个工作台区块和三类主流程导航 URL。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍提示既有 manual chunk circular warning,但构建成功。
剩余缺口:
- 暂存想法真实只读聚合后端合同尚未实现;当前 Space 明确暴露为空态和 warning,不使用演示数据兜底。
### 2026-04-26 / main-flow-p1-execution-handoff-consume / done
完成内容:
- 在 D.2 的 `handoff_created` 起点上继续补齐执行交接消费闭环,新增 `POST /pmflow-os/projects/{project_id}/execution-handoffs/{prompt_package_id}/consume`。
- 后端校验项目成员权限、项目边界与 `PromptPackage(package_kind='execution_handoff')` 边界;消费动作只记录运行端领取,不执行本机命令、不写宿主机配置。
- `PMFlowOSProjectionService.consume_execution_handoff` 将 `PromptPackage.package_payload.latest_handoff` 更新为 `handoff_state=consumed`,并写入 `ProgressEvent(event_type='handoff_consumed', derived_task_status='coding')`。
- `execution-summary` 会因最新 `handoff_consumed` 事件把执行状态投影为 `coding`,前端执行桥可显示“运行端领取确认”。
- 前端 `ExecutionBridgePage` 在真实模式新增“标记为已领取”动作,调用 `consumePMFlowExecutionHandoff` 后 refetch `truth-state / execution-summary`;demo 模式仍只走本地演示推进。
- 修复 D.2 中 active `PromptPackage.package_payload` 嵌套 JSONB 更新可能未被 SQLAlchemy 标脏的问题,显式使用 `flag_modified`。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ExecutionBridgePage.tsx`
- `CLAUDE.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`10 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
- `cd frontend && npm run test -- src/features/pmflow-os/store.api.test.tsx` 通过:`3 passed`。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`4 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过。
未完成或风险:
- 本轮仍不执行真实命令;Codex / Local Bridge / GitHub agent 的 branch、commit、PR、test 回写仍属于下一步 D.3。
- 本轮新增后端运行时代码但未执行热部署/重启;当前环境是本地开发工作区,未连接实际部署服务。部署环境需要按实际栈执行 backend restart/reload。
下一步建议:
- 进入 D.3:补 Dev Sync 写回闭环,把运行端执行结果回写为 branch/commit/PR/test progress event,并投影回 `execution-summary / truth-state`。
### 2026-04-26 / big-module-integration-p1 / done
完成内容:
- 作为 `Shell / Integration owner` 收口 Batch P1 三条 lane:Main Flow D.2、Space V1 Workbench Hardening、Account Settings V1。
- 已确认当前分支为 `codex/main-flow-phase-d2-execution-handoff-contract`,Main Flow D.2 已落提交 `f95bd15 feat(pmflow-os): add execution handoff contract`,本轮不重写 D.2,只验证其与 Space / Account dirty worktree 的组合。
- 已检查 tracked diff 与 untracked files,当前脏文件均落在本次集成范围:`AGENTS.md / CLAUDE.md / TASK_BRIEF_TEMPLATE.md / ARCHITECTURE_INVENTORY.md / personal-space / account-settings / accountSettings.ts / space.ts / AccountPage.tsx`。
- Space 改动符合 P0 边界:`frontend/src/api/space.ts` 只读聚合项目摘要、PMFlow OS `truth-state / execution-summary`,待确认项只跳转 `/change-review`,不直接写 Project Memory、ChangeSet 状态或 Execution Bridge event。
- Account Settings 改动符合 P0 边界:`/me` 由 `AccountSettingsPanel` 承接个人资料、AI 偏好和通知偏好;当时首版只做浏览器本机持久化,不改 OAuth/JWT/auth core、router、MobileBottomNav、PMFlow OS store 或项目主链,后续已由 `account-p1-preferences-backend-contract` 补后端同步合同。
- P0 文档残留已收口:`AGENTS.md / CLAUDE.md / TASK_BRIEF_TEMPLATE.md` 的大模块 lane、integration owner、共享文件锁与 Packet 模板规则可纳入 integration commit;`ARCHITECTURE_INVENTORY.md` 修正旧的 Space 只能消费 mock data / 禁止接后端描述,改为当前只读聚合合同。
- `CODE_REFERENCE_INDEX.md` 已确认包含 Space API、Account Settings API、PMFlow OS D.2 execution handoff API 索引;`CLAUDE.md` 已确认不再保留旧的“commit 未实现”描述。
涉及文件:
- `AGENTS.md`
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/TASK_BRIEF_TEMPLATE.md`
- `frontend/src/api/space.ts`
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
- `frontend/src/features/personal-space/components/SpaceChrome.tsx`
- `frontend/src/features/account-settings/AccountSettingsPanel.tsx`
- `frontend/src/features/account-settings/accountSettings.test.ts`
- `frontend/src/features/pmflow-os/pages/AccountPage.tsx`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过:`1 passed`。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`3 passed`。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过:`4 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍输出既有 manual chunk circular warning(`ai-steward / sstc / charts / governance`),未阻断构建。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`9 passed`;仍有既有 `backend/app/schemas/recipe.py` Pydantic V2 class-based config deprecation warning。
未完成或风险:
- 本 integration packet 未新增或修改后端运行时代码、Schema 或 migration;本轮未执行热部署/重启。当前验证发生在本地开发工作区,未连接实际部署服务;若要让 Main Flow D.2 的后端提交在部署环境生效,需要在对应部署机执行 `docker compose restart backend`、`scripts/docker_stack.sh restart|dev-restart` 或等价发布流程。
- Space 的 `savedIdeas` 后端只读聚合合同仍未实现;当前 UI 明确展示 empty/warning,不使用 mock 数据冒充真实内容。
- Account Settings V1 当时仍是前端合同 + 本机持久化;后续已由 `account-p1-preferences-backend-contract` 独立新增 `account_settings_api` 合同,当前全局 router 挂载仍需 Shell / Integration owner 串行处理。
下一步建议:
- 进入 D.3:补 Dev Sync 写回闭环,把 Codex / Local Bridge / GitHub agent 的 branch、commit、PR、test progress event 回写到 `execution-summary / truth-state`。
### 2026-04-26 / Space V1 Workbench Hardening / implemented
完成内容:
- 将 `/space` 收敛为只读个人工作面聚合入口,继续覆盖 `继续推进 / 待我确认 / AI 正在推进 / 暂存想法 / 草案箱 / 最近项目`,不写 Project Memory、ChangeSet 状态或 Execution Bridge event。
- `frontend/src/api/space.ts` 作为 Space read model wrapper,仅消费项目摘要、PMFlow OS `truth-state` 与 `execution-summary`;项目主动作仍进入 `/pmflow-os?projectId=<id>`。
- 待确认项只读取 ChangeSet / approvals 摘要,点击进入稳定主流程 `/change-review?projectId=<id>&changeSetId=<id>`,不直接执行 accept/edit/defer/commit。
- 暂存想法合同已显式建模为 `savedIdeas`;当前后端只读聚合未接入时返回空数组并展示 warning,禁止用 mock/demo 数据冒充真实想法。
- 移动端继续使用 Space 独立单手路径,补齐最近项目区块,不把桌面多栏布局压缩到手机。
- 补充 `PersonalSpacePage.test.tsx` focused 回归,锁定六个 Space 区块与“暂存想法未接入不冒充真实数据”的空态。
涉及文件:
- `frontend/src/api/space.ts`
- `frontend/src/features/personal-space/PersonalSpacePage.tsx`
- `frontend/src/features/personal-space/PersonalSpacePage.test.tsx`
- `frontend/src/features/personal-space/components/SpaceChrome.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/personal-space/PersonalSpacePage.test.tsx` 通过。
- `cd frontend && npm run typecheck` 未通过,阻塞来自 Main Flow 越界文件 `frontend/src/features/pmflow-os/pages/ExecutionBridgePage.tsx:21` 的既有 `import type` 语法错误,本 Space 包不跨线修。
- `cd frontend && npm run build` 未通过,同样阻塞于 `frontend/src/features/pmflow-os/pages/ExecutionBridgePage.tsx:21`,未进入 Vite build 阶段。
剩余缺口:
- 暂存想法真实只读聚合后端合同尚未实现;当前 Space 明确暴露为空态和 warning,不使用演示数据兜底。
### 2026-04-26 / Account P2 Notification Preference Consumption / implemented
完成内容:
- `frontend/src/api/accountSettings.ts` 新增通知偏好消费模型,将 `pendingConfirmation / executionWriteback / releaseGate / failureAlert` 映射到 `待确认中心 / Execution Bridge / Release Growth / 全局失败提醒` 四类页面内提醒。
- 新增 `shouldShowAccountNotification` 与 `getAccountNotificationConsumption`,用于本地 UI 判断页面提醒显示或静默;不接入真实邮件、桌面推送或系统级通知中心。
- 修正通知偏好合并逻辑:旧本机缓存或后端返回缺字段时,按默认偏好逐项补齐,避免浅合并导致 `desktop/emailDigest` 丢失。
- `AccountSettingsPanel` 在通知偏好区域展示“页面内提醒消费说明”,明确哪些开关会影响待确认、执行回写、发布门禁和失败提醒,也明确桌面/邮件仅记录偏好、不代表系统级推送已接入。
- 测试覆盖通知偏好读取、保存、消费模型和 fallback。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/AccountSettingsPanel.tsx`
- `frontend/src/features/account-settings/accountSettings.test.ts`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`7 passed`。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍输出既有 manual chunk circular warning,未阻断构建。
未完成或风险:
- 本轮只在 Account Settings 合同和本地 UI 消费层落地通知偏好,不修改 PMFlow OS truth store、router、JWT/OAuth/auth core,也不新增后端表。
- 由于本包 write scope 不包含 `ExecutionBridgePage / ReleaseGrowthPage / ChangeReviewPage`,本轮没有跨页直接接入这些页面;后续如要让各页面读取该 helper,应单独开对应 Main Flow/Integration packet。
### 2026-04-26 / Account P1 Preferences Backend Contract / implemented
完成内容:
- 新增 `backend/app/api/account_settings_api/`,建立 `GET /account-settings/me` 与 `PUT /account-settings/me` 合同,统一返回 `{code,message,data}`。
- 新增 `backend/app/schemas/account_settings.py`,锁定个人资料、默认语言、AI 回答深度、证据显示偏好、待确认/执行回写/发布门禁/失败提醒通知偏好合同。
- 新增 `backend/app/services/account_settings_service.py`,当前复用既有 `integrations` 表以 `account_settings_preferences` 类型按 `tenant_id + user_id` 持久化账号偏好;未新增表,因此未触发 Alembic migration。
- `frontend/src/api/accountSettings.ts` 改为有 token 时优先账号同步;后端不可用或未登录时明确回落本机暂存。
- Shell / Integration 已将 `account_settings_api` 挂入 `backend/app/api/router.py` 的核心路由组,真实环境可通过 `/api/account-settings/me` 访问。
- `/me` 保存状态继续区分 `已保存到当前账号 / 仅本机暂存 / 保存失败`,不假装云端成功。
- 本 Packet 不改 OAuth/JWT/auth core,不改 `/settings` route,不改 PMFlow OS store,不做组织权限、账单、安全中心、设备管理或团队空间。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/AccountSettingsPanel.tsx`
- `frontend/src/features/account-settings/accountSettings.test.ts`
- `backend/app/api/router.py`
- `backend/app/api/account_settings_api/__init__.py`
- `backend/app/schemas/account_settings.py`
- `backend/app/services/account_settings_service.py`
- `backend/tests/test_account_settings_api.py`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `cd backend && /Users/guojing/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/bin/python3 -m pytest tests/test_account_settings_api.py` 通过:`4 passed`。
- `cd frontend && npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`5 passed`。
未完成或风险:
- 本轮已由 Shell / Integration owner 串行 include `account_settings_api`;后续新增账号设置子能力仍不得塞入 OAuth/JWT/auth core。
- 当前复用 `integrations` 表承接 P1 合同,避免越界新增 model/migration;后续如果需要独立偏好表,再开 migration Packet。
### 2026-04-26 / Account Settings V1 / implemented
完成内容:
- 新增 `frontend/src/api/accountSettings.ts`,定义个人资料、默认语言、AI 回答深度、证据展示偏好和通知偏好前端合同;首版用浏览器本地持久化承接设置保存,不写 PMFlow OS truth store。
- 新增 `frontend/src/features/account-settings/AccountSettingsPanel.tsx`,承接 `/me` 桌面设置页与移动端分组列表 + bottom sheet。
- 将 `/me` 的 `AccountPage.tsx` 改为薄入口,继续复用 `AccountControls.tsx` 的退出登录 bottom sheet,不改 router、MobileBottomNav、PMFlow OS store 或 OAuth/JWT/auth core。
- 通知偏好已覆盖 `待确认 / 执行回写 / 发布门禁 / 失败提醒`,每类支持总开关、桌面提醒和邮件摘要。
- 保存状态已收口为 `仅本机暂存 / 已保存到当前账号 / 保存失败` 三态;当前 V1 只做本机暂存,不假装云端账号保存。
- 补充 `frontend/src/features/account-settings/accountSettings.test.ts`,锁定默认设置和持久化行为。
涉及文件:
- `frontend/src/api/accountSettings.ts`
- `frontend/src/features/account-settings/AccountSettingsPanel.tsx`
- `frontend/src/features/account-settings/accountSettings.test.ts`
- `frontend/src/features/pmflow-os/pages/AccountPage.tsx`
- `CLAUDE.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `npm run test -- src/features/account-settings/accountSettings.test.ts` 通过:`3 passed`。
- `npm run typecheck` 通过。
- `npm run build` 通过;Vite 仍输出既有 manual chunk circular warning,未阻断构建。
- Playwright 本地浏览器检查通过:`http://localhost:5186/me` 桌面与 390px 移动视口均可渲染,移动端通知偏好 bottom sheet 可打开。
未完成或风险:
- Account Settings V1 当时是前端合同 + 本地持久化;后续已由 `account-p1-preferences-backend-contract` 独立新增 `backend/app/api/account_settings_api/` 同步合同,仍不能塞入 auth core 或 PMFlow OS truth store。
### 2026-04-26 / P0 Shell Module Boundaries / done
完成内容:
- 核对当前公共壳真实落点:`frontend/src/router/index.tsx`、`frontend/src/main.tsx`、`MobileBottomNav.tsx`、`PMFlowOsFrame.tsx`。
- 冻结大模块 route 归属:`/space` 归 Space,`/project-launch` 作为启动层入口,`/pmflow-os / /command-center / /change-review / /execution-bridge / /release-growth` 归 Main Flow,`/me` 归 Account Settings。
- 明确 `/settings` 当前未实现,仅作为 Account Settings reserved route;后续如需新增,必须由 Shell / Integration owner 串行处理。
- 冻结全局 provider 归属:`QueryClientProvider -> PMFlowOsProvider -> ToastProvider -> RouterProvider`,Space / Account 不得直接改 PMFlow OS store 内部 mutation。
- 冻结移动端底部导航归属:唯一实现为 `MobileBottomNav.tsx`,固定 `空间 / 指挥台 / 待确认 / 动态 / 我的`;其中 `动态` 仍是 `/command-center` 占位,后续要做 `/activity` 必须单独开 Shell Packet。
- 同步修正 `ARCHITECTURE_INVENTORY.md` 中 C1/C2 commit 的旧描述,明确 C2 backend/frontend commit 已完成。
涉及文件:
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `CLAUDE.md`
验证:
- `git diff --name-only` 已确认本轮只改文档与约束文件,未改前端共享壳代码。
- 本轮未修改前端代码,因此未运行 `npm run typecheck`。
未完成或风险:
- `/settings` 尚未实现;`account-settings-v1` 如需要该入口,必须先把 route 需求交给 Shell / Integration owner。
- `动态` 底部导航仍指向 `/command-center`,后续如做动态页需独立 Packet。
下一步建议:
- 并行启动 `main-flow-phase-d-execution`、`space-v1-workbench`、`account-settings-v1`;三个 Packet 均不得改 router/nav/provider/shared docs,最终由 integration owner 收口。
### 2026-04-26 / Phase D.2 - Execution Handoff Contract / done
完成内容:
- 新增 `POST /pmflow-os/projects/{project_id}/execution-handoffs` 后端入口,复用 PMFlow OS 项目成员/OWNER/REVIEWER 权限边界。
- `PMFlowOSProjectionService.create_execution_handoff` 校验 task/project/tenant 边界,校验可选 active repo binding;无 repo 时允许创建 handoff draft 并保留 repo warning。
- 对任务复用 active `PromptPackage`;没有 active package 时,从真实 `Project / Task / Project Memory / RepoBinding` 生成 deterministic `PromptPackage(package_kind='execution_handoff')`,不使用 demo 文案。
- 创建 `ProgressEvent(event_type='handoff_created', source='pmflow_os')` 作为执行起点,payload 记录 `runtime_target / prompt_package_id / repo_binding_id / boundary`。
- 前端 `ExecutionBridgePage` 在真实模式展示“发起执行交接”按钮,调用 `createPMFlowExecutionHandoff` 后 refetch `truth-state / execution-summary`;demo 模式仍只走本地推进。
- 无 active task、无 repo、无 prompt package 时继续显示明确 empty/warning 和下一步,不回退假数据。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ExecutionBridgePage.tsx`
- `frontend/src/features/pmflow-os/components/ExecutionBridgeCards.tsx`
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m py_compile backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_os_projection_service.py backend/app/schemas/pmflow_os.py` 通过。
- `PYTHONPATH=backend /opt/homebrew/bin/python3.11 -m pytest backend/tests/test_pmflow_os_projection_api.py -q` 通过:`9 passed`。
- `cd frontend && npm run test -- src/features/pmflow-os` 通过。
- `cd frontend && npm run typecheck` 通过。
- `cd frontend && npm run build` 通过;Vite 仍输出既有 manual chunk circular warning,未阻断构建。
未完成或风险:
- D.2 只创建 handoff 合同、PromptPackage 与 progress event 起点,不直接执行本机命令;真实命令执行仍必须通过 Local Bridge、Codex、GitHub agent 或兼容 MCP host。
- 当前未新增 migration,沿用既有 `PromptPackage / RepoBinding / ProgressEvent`。
下一步建议:
- 进入 D.3:补 Dev Sync 写回闭环,把 Codex/Local Bridge/GitHub agent 的执行结果回写为 branch/commit/PR/test progress event,并把任务状态/证据链投影回 `truth-state`。
### 2026-04-26 / Big Module Parallel Governance / done
完成内容:
- 将大模块并行治理写入产品推进标准:允许 `Main Flow / Space / Account Settings` 作为长期模块 lane 并行,但实际执行仍必须拆成带 `write_scope` 的短生命周期 Packet。
- 明确 `Shell / Integration owner` 负责共享路由、导航、Provider、共享 API base、共享文档和合并顺序。
- 定义当前四条 lane:`Shell / Integration`、`Main Flow / PMFlow OS 主流程`、`Space / 个人空间入口`、`Account Settings / 个人中心与设置`。
- 明确每条 lane 的默认写范围、默认禁止范围和跨模块交互边界。
- 更新下一批推荐任务:先执行 `P0-shell-module-boundaries`,再并行推进 `main-flow-phase-d-execution / space-v1-workbench / account-settings-v1`,最后由 integration owner 收口。
涉及文件:
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/TASK_BRIEF_TEMPLATE.md`
- `AGENTS.md`
- `CLAUDE.md`
验证:
- 文档静态检查完成;本轮只更新治理文档和任务模板,未改代码、API、Schema 或 migration,未运行编译/单测。
未完成或风险:
- 该记录是大模块治理规则落盘;具体公共壳真实路由和 provider 核对已由后续 `P0 Shell Module Boundaries` 完成。
下一步建议:
- 后续按 P0 冻结结果同时分派 `main-flow-phase-d-execution`、`space-v1-workbench`、`account-settings-v1` 三个大模块 Packet。
### 2026-04-26 / Phase C2 Frontend - ChangeSet Commit Wiring / done
完成内容:
- 在 `frontend/src/api/pmflowOs.ts` 增加 `commitPMFlowChangeSet`,调用 `POST /pmflow-os/change-sets/{change_set_id}/commit`,默认 `mode=atomic`。
- 扩展 PMFlow OS 前端类型,允许后端投影返回 `ChangeSet.status=committed/partially_committed` 与 `ChangeItem.status=committed/skipped`。
- 将 `PMFlowOsProvider.promoteAcceptedToGraph` 的真实模式接到后端 commit API,commit 后 refetch `truth-state`;demo 模式继续使用本地 mutation。
- 将 `ChangeReviewPage` 的真实模式主按钮从“下一阶段开放”改为“确认写入项目记忆”,不再用前端本地状态冒充正式写入。
- 补充 API 模式 store 测试,确认 `promoteAcceptedToGraph("11")` 会调用 `commitPMFlowChangeSet("11", { mode: "atomic", ... })`,且不会本地写入 `requirements`。
涉及文件:
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/types.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ChangeReviewPage.tsx`
- `frontend/src/features/pmflow-os/components/ProjectStructuredLoop.tsx`
- `frontend/src/features/pmflow-os/components/chrome.tsx`
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `npm run test -- src/features/pmflow-os/store.api.test.tsx` 通过:`3 passed`。
- `npm run test -- src/features/pmflow-os` 通过:`4 passed`。
- `npm run typecheck` 通过。
- `npm run build` 通过;Vite 仍输出既有 manual chunk circular warning,未阻断构建。
未完成或风险:
- 前端真实 commit 依赖后端已完成审查状态;若仍存在 `pending_review` item,后端会按合同显式返回 `changeset_not_reviewed`。
- Release / ModelDecision / MetricSignal commit 仍按 C2 合同暂缓或 fail-closed。
- 当前为本地开发工作区验证,未执行部署环境热重启。
下一步建议:
- 执行 Phase D:把 `ExecutionBridgePage` 切到 `GET /pmflow-os/projects/{project_id}/execution-summary` 与 dev-sync 真实数据,继续保留 demo fallback。
### 2026-04-26 / Phase C2 Backend - ChangeSet Atomic Commit / done
完成内容:
- 新增 `POST /pmflow-os/change-sets/{change_set_id}/commit` 后端入口,复用项目成员/OWNER/REVIEWER 权限边界,统一响应包络。
- 在 `PMFlowChangeReviewService` 实现 atomic commit:只处理 `accepted / edited` 项,默认提交全部 eligible items;存在未审项时阻断全量 commit;任一写入失败则回滚整个事务。
- 将 `Requirement / Decision / Risk` 写入 `truth_nodes`,将 `Task` 写入 `truth_nodes(node_type='task') + tasks`,并为 truth node/task 写入 `semantic_facts` seed。
- 补齐高风险 approval gate:`risk_level=high` 必须存在同 item 的 approved/edited approval 与 evidence,否则返回 `409 high_risk_approval_required` 且不写正式对象。
- 将 `PMFlowChangeSet / PMFlowChangeItem` 序列化扩展到 `committed / partially_committed / skipped` 状态,避免 commit 后投影被误映射为 deferred。
- 将 `backend/app/api/__init__.py` 改为轻量包入口,避免 focused API 测试导入单个模块时拉起 Feishu/MCP 等可选依赖。
涉及文件:
- `backend/app/api/__init__.py`
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_change_review_service.py`
- `backend/tests/test_pmflow_change_review_api.py`
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `/opt/homebrew/bin/python3.11 -m py_compile backend/app/api/__init__.py backend/app/api/pmflow_os_api/__init__.py backend/app/services/pmflow_change_review_service.py backend/app/schemas/pmflow_os.py backend/tests/test_pmflow_change_review_api.py` 通过。
- `/opt/homebrew/bin/python3.11 -m pytest tests/test_pmflow_change_review_api.py -q` 通过:`6 passed`。
- `/opt/homebrew/bin/python3.11 -m pytest tests/test_pmflow_change_review_api.py tests/test_pmflow_os_projection_api.py tests/test_pmflow_launch_api.py -q` 通过:`18 passed`。
未完成或风险:
- C2 V1 暂不支持 `ModelDecision / MetricSignal` commit;按合同必须 fail-closed。
- 本地仍有未提交删除痕迹,未纳入本次提交。
- 当前为本地开发工作区验证,未执行部署环境热重启。
下一步建议:
- 已执行 `C2-frontend`;下一步进入 Phase D Execution Bridge 真实数据接入。
### 2026-04-26 / G0 Freeze + C2 Contract / done
完成内容:
- 将当前非删除工作区成果直接 checkpoint 到 `master`,形成 `b52428f docs: codify PMFlow product delivery governance` 与 `e04ea4d chore: checkpoint current PMFlow workspace` 两个提交;删除痕迹未提交,避免未确认地固化旧截图、表格、tunnel 脚本和临时文件删除。
- 收口 Phase C2 commit 合同:`POST /pmflow-os/change-sets/{change_set_id}/commit` 的请求体、权限、原子提交模式、响应结构、错误码、高风险 approval gate、C2 V1 objectType 白名单和 ProjectTruthState 投影规则。
- 明确 C2 V1 默认 `mode=atomic`,任一 eligible item 写入失败时整个 commit 回滚,禁止半写入 Project Memory。
- 明确 C2 必须实现 `Requirement / Decision / Task / Risk`;`Release` 可选;`ModelDecision / MetricSignal` 暂缓并必须 fail-closed。
涉及文件:
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/architecture/API_CONTRACTS.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- `git status --short --branch` 已确认 checkpoint 后仅剩未提交删除痕迹。
- `git diff --cached --name-status` 阶段检查未发现删除项被纳入 checkpoint。
- 本轮 C2-contract 只改合同文档,未新增代码、Schema 或 migration,未运行编译/单测。
未完成或风险:
- 工作区仍有未提交删除痕迹,需用户单独确认是否删除或恢复。
- C2 后端 route/service/schema 与前端 API/store 尚未实现。
下一步建议:
- 执行 `C2-backend`:实现 atomic ChangeSet commit service、route、权限、事务、高风险 gate 与后端测试。
- 合同稳定后并行执行 `C2-frontend`:接入 commit API,替换真实模式下的 demo-only `promoteAcceptedToGraph`。
### 2026-04-26 / Parallel Delivery Governance / done
完成内容:
- 新增 Codex 并行推进协议,明确并行单位必须是带 `read_scope / write_scope / forbidden_paths / shared_files / base_ref / merge_after` 的 Packet。
- 建立 V1 Productized Loop 默认并行 lane:`Contract / Backend / Frontend / UI / Docs-Test`,并固定合同、后端、前端、UI、文档集成的合并顺序。
- 将下一阶段 Phase C2 拆成 `C2-contract / C2-backend / C2-frontend / C2-docs-verification` 四个可分派 Packet,明确依赖和写范围。
- 新增分支、worktree、Packet commit 与 commit gate 协议:并行线程默认使用 `codex/<packet_id>` 分支、记录 `base_ref`、优先独立 worktree;Packet 完成后由 Codex 自行判定 `auto_commit / hold_no_commit / ask_before_commit`,通过验证后形成可审查 commit,新 Packet 从最新 integration base 或明确依赖分支重新开分支。
- 新增 `Parallel Integration Gate`,要求 integration owner 检查越界 diff、后端/前端/migration 验证、文档同步和热部署说明。
涉及文件:
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `docs/architecture/TASK_BRIEF_TEMPLATE.md`
- `AGENTS.md`
- `CLAUDE.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- 文档静态检查通过:新增协议覆盖并行前置条件、Packet 模板、write scope / forbidden paths、共享文件锁、branch / worktree / base ref、Packet commit、commit gate、merge order、integration gate。
- 本轮只改治理文档,未新增代码、API、Schema 或 migration,未运行编译/单测。
未完成或风险:
- 当前仓库仍是大面积脏工作区;正式启动多线程并行前,需要先冻结当前改动归属,避免历史脏状态被误判为新冲突。
下一步建议:
- 以 `C2-contract` 作为第一条并行治理试点 Packet,先锁定 ChangeSet commit 合同,再分派后端和前端线程。
### 2026-04-25 / Phase A - PMFlow OS Product Contract / done
完成内容:
- 新增 PMFlow OS 产品合同,明确 `ProjectTruthState / Thread / Message / ChangeSet / ChangeItem / Evidence / Approval / Requirement / Decision / Task / Risk / ModelDecision / TestRun / Release / MetricSignal / ExecutionContext / TeamFeed` 的前后端映射。
- 明确复用边界:正式项目对象优先复用 `truth_nodes / tasks / semantic_facts`,AI 应用控制面复用 `ai_project_control` 与 SSTC model_control,执行桥复用 `dev_sync / prompt_packages / progress_events`。
- 明确建议新增但本轮不建表的 PMFlow OS 专属合同对象:`pmflow_threads / pmflow_thread_messages / pmflow_change_sets / pmflow_change_items / pmflow_approvals / pmflow_evidence_links`。
- 定义 PMFlow OS API 草案:`truth-state / messages / extractions / change-set detail / accept / edit / defer / commit / execution-summary`。
- 明确 `accept/edit/defer` 只改变审查状态,`commit` 才写入 `truth_nodes / tasks / semantic_facts` 等正式对象。
涉及文件:
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `CLAUDE.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
验证:
- 静态检查引用路径与核心对象完成。
- 本轮只改文档,未新增代码、API、Schema 或 migration,未运行编译/单测。
未完成或风险:
- API 尚未实现,数据库 migration 尚未创建。
- `truth_nodes.node_type` 的历史值需要在后续 projection 实现时做白名单映射。
- `ChangeSet / Approval / EvidenceLink / Thread` 仍需后续实现真实表与服务。
下一步建议:
- 执行 A3 最小真实读路径:新增只读 `pmflow_os_api` projection,先实现 `GET /pmflow-os/projects/{project_id}/truth-state` 与 `GET /pmflow-os/projects/{project_id}/execution-summary`。
### 2026-04-25 / A3 - PMFlow OS 最小真实读路径 / done
完成内容:
- 新增只读后端入口 `backend/app/api/pmflow_os_api/`,注册 `GET /pmflow-os/projects/{project_id}/truth-state` 与 `GET /pmflow-os/projects/{project_id}/execution-summary`,统一返回 `{code,message,data}`。
- 新增 `backend/app/services/pmflow_os_projection_service.py` 与 `backend/app/schemas/pmflow_os.py`,把 `ProjectTruthState` 投影接到真实后端对象:`Requirement / Decision / Risk / Release` 来自 `truth_nodes`,`Task` 来自 `tasks`,`Project Memory` 来自 `truth_nodes + semantic_facts`,`ExecutionContext` 来自 `dev-sync summary + prompt_packages + progress_events + repo/task code link`。
- `Thread / ChangeSet / ChangeItem / Approval / EvidenceLink` 本轮没有稳定表,不用 mock 冒充;接口返回空集合并通过 `projectionWarnings` 明确说明。
- 新增前端 API `frontend/src/api/pmflowOs.ts`,封装 `getPMFlowTruthState(projectId)` 与 `getPMFlowExecutionSummary(projectId)`。
- `frontend/src/features/pmflow-os/store.tsx` 现支持 `?projectId=<id>` 通过 React Query 读取真实 `truth-state`;只有显式 `?demo=1` 或 `?dataSource=demo` 才启用本地 mock 演示动作。真实 API 失败时显示错误/空态,不静默 fallback 成 mock 成功。
- `ProjectMemoryPage` 在真实模式下展示后端 `projectMemory.truthNodeFacts / semanticFacts`,不再把前端 mock 当作项目记忆来源。
涉及文件:
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/app/api/router.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/components/PMFlowOsFrame.tsx`
- `frontend/src/features/pmflow-os/pages/CommandCenterPage.tsx`
- `frontend/src/features/pmflow-os/pages/ProjectMemoryPage.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `CLAUDE.md`
验证:
- 静态路径检查完成。
- 后端:`python -m py_compile`(Python 3.12 runtime)通过。
- 后端:`pytest tests/test_pmflow_os_projection_api.py -q` 通过,覆盖空项目 truth-state、Project Memory projection、tasks projection、execution-summary 空态、tenant/project 权限边界。
- 后端 router import smoke:`from app.api.router import api_router` 通过。
- 前端:`npm run typecheck` 通过。
- 前端:`npm run build` 通过。
剩余缺口:
- 本轮不新增 migration,因此 `Thread / ChangeSet / ChangeItem / Approval / EvidenceLink` 仍为空集合或 warning;后续 Phase C 再补真实表与 mutation。
- `WorkGraph / ExecutionBridge / ReleaseGrowth` 仍有部分静态展示区,A3 只保证 truth store 与 Project Memory 真实读取入口,不做 UI 重画和完整页面数据替换。
- 后端代码已改,但当前是在本地开发工作区执行验证,未连接运行中的部署服务;热部署/重启需要在实际部署环境执行。
### 2026-04-25 / Phase B - Project Launch 真实创建链 / done
完成内容:
- 新增 Phase B 专用启动链表 migration `backend/alembic/versions/20260425_add_pmflow_launch_tables.py`,只创建 `pmflow_launch_drafts / pmflow_threads / pmflow_thread_messages`;本轮未创建 `pmflow_change_sets / pmflow_change_items / pmflow_approvals / pmflow_evidence_links`。
- 新增后端启动链入口 `backend/app/api/pmflow_launch_api/`,注册 `POST /pmflow-launch/drafts` 与 `POST /pmflow-launch/drafts/{draft_id}/confirm`,统一返回 `{code,message,data}`。
- 新增 `backend/app/services/pmflow_launch_service.py` 与 `backend/app/schemas/pmflow_launch.py`:草案生成调用 `llm_service.generate_structured_object(function_name="pmflow_launch_draft_v1")` 并显式传 `routing_meta`;结构化失败返回明确错误或 warnings,不用模板句冒充成功。
- confirm 在同一事务内锁定草案并创建 `Project / UserProject / PMFlowThread / PMFlowThreadMessage / truth_nodes / tasks / semantic_facts seed / OperationLog`,随后更新草案 `status=confirmed` 与 `confirmed_project_id`;重复 confirm 幂等返回同一 `project_id`,不重复写正式对象。
- `truth_nodes.content` 与任务 payload 写入 `launch_draft_id / thread_id / thread_message_id / source=pmflow_launch_confirmed_draft / confidence / evidence`,确保初始 Project Memory 与 Task 能追溯到启动草案和首条用户输入。
- A3 `truth-state` projection 已更新为优先读取 `pmflow_threads` 默认启动线程与 `pmflow_thread_messages`,Project Memory 仍只来自 `truth_nodes + semantic_facts`,不从 launch draft 直接拼。
- 新增前端 API `frontend/src/api/pmflowLaunch.ts`,封装 `createPMFlowLaunchDraft` 与 `confirmPMFlowLaunchDraft`。
- `frontend/src/features/project-launch/useProjectLaunchState.ts` 默认走真实 API;只有显式 `?demo=1` 或 `?dataSource=demo` 才启用本地演示状态机。draft/confirm 失败进入明确失败态,不静默跳 mock 成功态。
- 新增 `/pmflow-os` route alias,创建成功后使用后端返回的 `/pmflow-os?projectId=<id>` 进入 A3 真实读路径。
涉及文件:
- `backend/alembic/versions/20260425_add_pmflow_launch_tables.py`
- `backend/app/models/pmflow_launch.py`
- `backend/app/api/pmflow_launch_api/__init__.py`
- `backend/app/services/pmflow_launch_service.py`
- `backend/app/schemas/pmflow_launch.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/app/config/ai_prompts_catalog/part_scenes_06.py`
- `backend/app/services/llm_service/shared_part_01.py`
- `backend/tests/test_pmflow_launch_api.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowLaunch.ts`
- `frontend/src/features/project-launch/useProjectLaunchState.ts`
- `frontend/src/features/project-launch/useProjectLaunchState.test.ts`
- `frontend/src/router/index.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `CLAUDE.md`
验证:
- 后端:`python -m py_compile` 新增后端模块、migration、router、prompt 聚合文件通过。
- 后端:`pytest tests/test_pmflow_launch_api.py tests/test_pmflow_os_projection_api.py -q` 通过,覆盖 draft 成功、结构化字段缺失、warnings、confirm 创建 Project/thread/message/truth_nodes/tasks、truth-state 回读、幂等、过期/跨 tenant/跨 user、rollback。
- Alembic:`alembic upgrade head` 在本地开发 PostgreSQL 成功从 `20260421_finalize_v1_productization` 升级到 `20260425_add_pmflow_launch_tables`。
- 前端:`npm run test -- src/features/project-launch/useProjectLaunchState.test.ts` 通过,覆盖真实 draft API、draft 失败、confirm 成功、confirm 失败不进成功态、显式 demo 分支。
- 前端:`npm run typecheck` 通过。
- 前端:`npm run build` 通过。
剩余缺口:
- Phase B 只覆盖首次 Project Launch 创建链;项目内后续 ChangeSet / ChangeItem / Approval / EvidenceLink 审查系统仍留给 Phase C。
- 初始 `semantic_facts` seed 仅写用户确认后的 project-level facts;完整异步抽取和治理仍复用既有 semantic facts 管线。
### 2026-04-26 / Phase C1 - PMFlow Change Review 数据底座与审查状态机 / done
完成内容:
- 新增 C1 review 表 migration `backend/alembic/versions/20260426_add_pmflow_change_review_tables.py`,只创建 `pmflow_change_sets / pmflow_change_items / pmflow_approvals / pmflow_evidence_links`;未新增 commit 或 Phase C2 表。
- 新增模型 `backend/app/models/pmflow_change_review.py`,所有表包含 `tenant_id`,并按 `tenant_id + project_id` 查询;`ChangeItem` 归属 `ChangeSet`,`Approval` 记录 `accept / edit / defer` 的 before/after,`EvidenceLink` 可引用 thread message。
- 新增服务 `backend/app/services/pmflow_change_review_service.py`,实现项目内消息、`proposed_items` extraction、ChangeSet detail、accept/edit/defer 审查状态机;老项目无真实线程时仅允许 `default` 或 `thread-project-{project_id}` 懒创建默认线程。
- 在 `backend/app/api/pmflow_os_api/` 扩展 `/pmflow-os` API:`POST /projects/{project_id}/threads/{thread_id}/messages`、`POST /projects/{project_id}/extractions`、`GET /projects/{project_id}/change-sets/{change_set_id}`、`POST /change-items/{change_item_id}/accept|edit|defer`,统一响应包络。
- `PMFlowOSProjectionService` 已投影 `changeSets / changeItems / evidence / approvals`,`activeChangeSetId` 取最近 open ChangeSet,`loopStage` 映射为 `command_idle / extraction_ready / review_open`;Project Memory 仍只来自 `truth_nodes + semantic_facts`。
- 前端 `frontend/src/api/pmflowOs.ts` 增加 Change Review API wrapper;`frontend/src/features/pmflow-os/store.tsx` 真实模式调用后端 message/extraction/accept/edit/defer,并在成功后 refetch truth-state。真实模式不再本地 promote accepted item,也不假装写入项目记忆;demo 模式仍需显式 `?demo=1` 或 `?dataSource=demo`。
涉及文件:
- `backend/alembic/versions/20260426_add_pmflow_change_review_tables.py`
- `backend/app/models/pmflow_change_review.py`
- `backend/app/services/pmflow_change_review_service.py`
- `backend/app/api/pmflow_os_api/__init__.py`
- `backend/app/schemas/pmflow_os.py`
- `backend/app/services/pmflow_os_projection_service.py`
- `backend/tests/test_pmflow_change_review_api.py`
- `backend/tests/test_pmflow_os_projection_api.py`
- `frontend/src/api/pmflowOs.ts`
- `frontend/src/features/pmflow-os/store.tsx`
- `frontend/src/features/pmflow-os/store.api.test.tsx`
- `frontend/src/features/pmflow-os/pages/ChangeReviewPage.tsx`
- `frontend/src/features/pmflow-os/components/ProjectStructuredLoop.tsx`
- `docs/architecture/CODE_REFERENCE_INDEX.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
- `docs/architecture/PMFLOW_OS_PRODUCT_CONTRACT.md`
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `CLAUDE.md`
验证:
- 后端:`python -m py_compile` 新增后端模型、service、schema、router、migration 通过。
- 后端:`pytest tests/test_pmflow_change_review_api.py tests/test_pmflow_os_projection_api.py tests/test_pmflow_launch_api.py -q` 通过,覆盖 message 懒创建线程、extraction、change items、evidence link、detail、accept/edit/defer、reviewed 自动推进、权限边界、truth-state 投影,以及 accepted/edited 不进入 Project Memory。
- Alembic:`alembic heads` 返回 `20260426_add_pmflow_change_review_tables (head)`;`alembic upgrade head` 在本地开发 PostgreSQL 成功从 `20260425_add_pmflow_launch_tables` 升级到 `20260426_add_pmflow_change_review_tables`。
- 前端:`npm run test -- src/features/pmflow-os` 通过。
- 前端:`npm run typecheck` 通过。
- 前端:`npm run build` 通过;Vite 仍提示既有循环 chunk warning,但构建成功。
剩余缺口:
- C1 不实现 `/commit`,不写 `truth_nodes / tasks / semantic_facts`;accepted/edited 仅代表审查状态,不代表 confirmed Project Memory。
- `POST /extractions` 本轮只接收 `proposed_items`,不默认调用 LLM 结构化提取;AI extraction 主链留给后续阶段。
- 高风险 `risk_level=high` 本轮只记录风险等级和 approval,commit gate 留给 C2。
下一步建议:
- 执行 Phase C2:实现 ChangeSet commit,把 `accepted / edited` ChangeItem 按对象类型写入正式 `truth_nodes / tasks / semantic_facts`,并补齐高风险 approval gate 与部分失败回滚/明细返回。
### 2026-04-24 / Product Blueprint / done
完成内容:
- 整理并落盘 PMFlow 产品蓝图真源。
- 明确 PMFlow 是“对话驱动的 AI 产品执行操作系统”。
- 明确 `solo-first, team-ready`、项目真相层、ChangeSet 待确认、Execution Bridge、人机混编团队等不可偏离项。
涉及文件:
- `docs/PMFLOW_PRODUCT_BLUEPRINT.md`
- `USER.md`
- `CLAUDE.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- 文档新增与引用检查完成。
- 无代码改动,未运行编译/测试。
下一步:
- 执行 Phase A:PMFlow OS 产品合同收口。
### 2026-04-24 / Delivery Standard / done
完成内容:
- 建立 PMFlow 产品推进执行标准。
- 记录当前推进状态、下一阶段方向、Phase A-F 推进顺序、单次任务范围标准和完成后进度回写标准。
- 明确新开线程必须先读蓝图、执行标准和代码索引,避免重做或漏做。
涉及文件:
- `docs/PMFLOW_PRODUCT_DELIVERY_STANDARD.md`
- `USER.md`
- `CLAUDE.md`
- `docs/architecture/ARCHITECTURE_INVENTORY.md`
验证:
- 文档新增与引用检查完成。
- 无代码改动,未运行编译/测试。
下一步:
- 从 A1 对象合同映射开始,把前端 `pmflow-os/types.ts` 与后端现有对象逐一对齐。