8.9 KiB
8.9 KiB
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 |
领取方式
- 读取当前任务卡和它列出的直接前置证据。
- 只执行该卡中的命令;需要新命令时先写回任务卡。
- 通过后更新任务卡、队列状态和进度文件,再领取下一行。
- 中断时只需保存任务卡中的恢复点,不重读历史归档。
历史执行计划:../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 维护。