Files
FreeCADWasmDev/docs/current/FREECAD_WEB_EXECUTION_PLAN.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

8.9 KiB
Raw Blame History

FreeCAD 1.2 Web 执行索引

本文件只回答“现在做什么、依赖是什么、完成后去哪”。技术背景见 FREECAD_WEB_MIGRATION_ANALYSIS.md,当前现场见 FREECAD_WEB_PROGRESS.md,单任务上下文见 ../tasks/。 上下文预算、状态账本和恢复协议见 FREECAD_WEB_CONTEXT_PROTOCOL.md。

执行规则

  • 当前采用 feature-first-deferred-validation:实现队列以用户功能 command 和 runtime issue 为单位,13,385/13,386 Python 源符号仅作追踪索引,不再逐条 gate。完整说明见 ../WEB_IMPLEMENTATION_FIRST_STRATEGY.md。
  • Web 工作台统一提供可编辑 {cmd,args} JSON 参数入口;已注册 Web command 通过独立 Worker/WASM 动态路由,源码盘点的 640 条桌面 Qt/Gui 命令按生成 registry 的剩余集合批量迁移为 React/Worker capability。具体数字不写死,使用中错误只重新打开受影响 capability。
  • 实现阶段只保留必要的增量构建和资源同步,不自动运行 focused/full/Chrome/性能验证;实现回执不得写成 validation pass。
  • 同时只能有一个 in_progress 任务;该任务内部按 module+tier+family 批量关闭多个 Full Parity unresolved records。
  • 铁律:浏览器测试只执行 Google Chrome;Firefox、WebKit、Safari 不执行、不纳入当前矩阵、不作为验收或阻断判定。历史记录仅供追溯。
  • 任务只关闭一个可观察合同,目标时长 15-90 分钟;合同内部以 4-32 条同 family 记录为一个功能批次,共享 native/Worker/Facade/证据链。
  • 前置列中的 + 表示所有列出的直接前置都必须完成;不得用里程碑名称替代证据。
  • 任务详情、命令、产物和恢复点写在独立任务卡,不在本索引重复。
  • 状态唯一事实源是 task-state.json;本索引只做导航投影。
  • 失败只新增针对首个错误的恢复任务;不跳过前置。
  • 只有 gate 可以把里程碑改为 completed。
  • 验证分层:实现批次只验证真实源码接线、native dispatcher schema、资源释放、重复/取消和最小 fixture;完整 API/对象/格式/Chrome/性能/安全 gate 在功能族或模块收口时集中执行,禁止每条记录重复全量验证。

里程碑

里程碑 出口 状态 任务入口
P0 基础闭包 依赖、核心归档、WASM 对象可复跑 completed 历史归档
P1 查看器 STEP、Worker、Three.js、OPFS、缓存回放 completed 历史归档
P2 参数化核心 Document、FCStd、事务、Sketcher 最小切片 completed P2
P3 功能对标 源码驱动的工作台/对象/格式矩阵 completed P3
P4 Python 生态 受限 Python Worker、Facade、插件合同 completed P4
P5 发布质量 性能、兼容、恢复、许可证、发布包 completed P5
P6 功能扩展 32 个工作台按模块、动作和边界逐步 Web 化 planned P6

队列

共享任务状态在这里维护;P6 模块和动作原子卡状态在分层索引中维护,避免把数百行复制进总计划。每行链接到只包含该任务上下文的任务卡。

顺序 编号 类型 前置 状态 任务卡
1 FW-P2-003A-I probe FW-P2-002C completed Sketcher 类型注册
2 FW-P2-003A-G contract FW-P2-003A-I completed 创建草图几何
3 FW-P2-003A-C contract FW-P2-003A-G completed 添加一个约束
4 FW-P2-003A-X gate FW-P2-003A-C completed P2.4 出口
5 FW-P3-001A-W probe FW-P2-003A-X completed 枚举工作台
6 FW-P3-001A-O probe FW-P3-001A-W completed 枚举对象类型
7 FW-P3-001A-F probe FW-P3-001A-O completed 枚举格式与 API
8 FW-P3-001B contract FW-P3-001A-W + FW-P3-001A-O + FW-P3-001A-F completed 生成对标矩阵
9 FW-P3-001G gate FW-P3-001B completed P3 出口
10 FW-P4-001-R contract FW-P3-001G completed Python runtime 启动
11 FW-P4-002-F contract FW-P4-001-R completed Python Facade API
12 FW-P4-003-S contract FW-P4-002-F completed 脚本隔离
13 FW-P4-004-W contract FW-P4-003-S completed 工作台静态注册
14 FW-P4-005-P contract FW-P4-004-W completed 插件包格式
15 FW-P4-006-G gate FW-P4-005-P completed P4 出口
16 FW-P5-001A-F contract FW-P4-006-G completed 锁定性能样例与测量环境
17 FW-P5-001A-D contract FW-P5-001A-F completed 桌面性能回放
18 FW-P5-001A-M contract FW-P5-001A-D completed 移动性能回放
19 FW-P5-001A-R contract FW-P5-001A-M completed 性能预算报告
20 FW-P5-002A-M contract FW-P5-001A-R completed 锁定浏览器支持矩阵
21 FW-P5-002A-D contract FW-P5-002A-M completed 桌面浏览器回放
22 FW-P5-002A-MO contract FW-P5-002A-D completed 移动浏览器回放
23 FW-P5-002A-R contract FW-P5-002A-MO completed 浏览器兼容报告
24 FW-P5-003A-I contract FW-P5-002A-R completed 建立可注入中断点
25 FW-P5-003A-B contract FW-P5-003A-I completed 覆盖保存边界中断
26 FW-P5-003A-V contract FW-P5-003A-B completed 验证恢复与文件完整性
27 FW-P5-003A-R contract FW-P5-003A-V completed 断电恢复报告
28 FW-P5-004A-E probe FW-P5-003A-R completed 收集依赖许可证证据
29 FW-P5-004A-C probe FW-P5-004A-E completed 建立产物到依赖映射
30 FW-P5-004A-N contract FW-P5-004A-C completed 生成许可证通知
31 FW-P5-005A-P contract FW-P5-004A-N completed 组装离线发布目录
32 FW-P5-005A-S contract FW-P5-005A-P completed 校验离线静态完整性
33 FW-P5-005A-F contract FW-P5-005A-S completed 执行离线功能回放
34 FW-P5-005A-R contract FW-P5-005A-F completed 离线包可重建报告
35 FW-P5-006A-S contract FW-P5-005A-R completed 验证成功升级路径
36 FW-P5-006A-I contract FW-P5-006A-S completed 验证版本不兼容回滚
37 FW-P5-006A-C contract FW-P5-006A-I completed 验证损坏包回滚
38 FW-P5-006A-R contract FW-P5-006A-C completed 升级回滚报告
39 FW-P5-007-G gate FW-P5-006A-R completed P5 发布出口
40 FW-P6-000 probe FW-P5-007-G completed 锁定 P6 基线
41 FW-P6-001 contract FW-P6-000 completed 模块加载与类型注册
42 FW-P6-002 contract FW-P6-001 completed Worker/Facade envelope
43 FW-P6-003 contract FW-P6-002 completed Chrome 回放 harness

领取方式

  1. 读取当前任务卡和它列出的直接前置证据。
  2. 只执行该卡中的命令;需要新命令时先写回任务卡。
  3. 通过后更新任务卡、队列状态和进度文件,再领取下一行。
  4. 中断时只需保存任务卡中的恢复点,不重读历史归档。

历史执行计划:../archive/FREECAD_WEB_EXECUTION_PLAN.md;已拆分旧卡:../archive/tasks/。

P6 领取规则:先顺序完成 FW-P6-000 至 FW-P6-003,再领取一个工作台包的活动卡;活动卡通过 prepare_full_parity_module_batch.py 按功能模块批量处理多个记录,不按单 API 停顿。纯函数/只读批次默认 24 条,对象契约默认 16 条,最多 32 条;工作台子队列和动作级卡按 p6/INDEX.md 维护。