# FreeCAD 1.2 Web 执行索引 > 本文件只回答“现在做什么、依赖是什么、完成后去哪”。技术背景见 > [`FREECAD_WEB_MIGRATION_ANALYSIS.md`](FREECAD_WEB_MIGRATION_ANALYSIS.md),当前现场见 > [`FREECAD_WEB_PROGRESS.md`](FREECAD_WEB_PROGRESS.md),单任务上下文见 > [`../tasks/`](../tasks/)。 > 上下文预算、状态账本和恢复协议见 [`FREECAD_WEB_CONTEXT_PROTOCOL.md`](FREECAD_WEB_CONTEXT_PROTOCOL.md)。 ## 执行规则 - 当前采用 `feature-first-deferred-validation`:实现队列以用户功能 command 和 runtime issue 为单位,13,385/13,386 Python 源符号仅作追踪索引,不再逐条 gate。完整说明见 [`../WEB_IMPLEMENTATION_FIRST_STRATEGY.md`](../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`](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`](../tasks/INDEX.md#p2-参数化核心) | | P3 功能对标 | 源码驱动的工作台/对象/格式矩阵 | completed | [`P3`](../tasks/INDEX.md#p3-功能对标) | | P4 Python 生态 | 受限 Python Worker、Facade、插件合同 | completed | [`P4`](../tasks/INDEX.md#p4-python-生态) | | P5 发布质量 | 性能、兼容、恢复、许可证、发布包 | completed | [`P5`](../tasks/INDEX.md#p5-发布质量) | | P6 功能扩展 | 32 个工作台按模块、动作和边界逐步 Web 化 | planned | [`P6`](../tasks/p6/INDEX.md) | ## 队列 共享任务状态在这里维护;P6 模块和动作原子卡状态在分层索引中维护,避免把数百行复制进总计划。每行链接到只包含该任务上下文的任务卡。 | 顺序 | 编号 | 类型 | 前置 | 状态 | 任务卡 | |---:|---|---|---|---|---| | 1 | FW-P2-003A-I | probe | FW-P2-002C | completed | [Sketcher 类型注册](../tasks/FW-P2-003A-I.md) | | 2 | FW-P2-003A-G | contract | FW-P2-003A-I | completed | [创建草图几何](../tasks/FW-P2-003A-G.md) | | 3 | FW-P2-003A-C | contract | FW-P2-003A-G | completed | [添加一个约束](../tasks/FW-P2-003A-C.md) | | 4 | FW-P2-003A-X | gate | FW-P2-003A-C | completed | [P2.4 出口](../tasks/FW-P2-003A-X.md) | | 5 | FW-P3-001A-W | probe | FW-P2-003A-X | completed | [枚举工作台](../tasks/FW-P3-001A-W.md) | | 6 | FW-P3-001A-O | probe | FW-P3-001A-W | completed | [枚举对象类型](../tasks/FW-P3-001A-O.md) | | 7 | FW-P3-001A-F | probe | FW-P3-001A-O | completed | [枚举格式与 API](../tasks/FW-P3-001A-F.md) | | 8 | FW-P3-001B | contract | FW-P3-001A-W + FW-P3-001A-O + FW-P3-001A-F | completed | [生成对标矩阵](../tasks/FW-P3-001B.md) | | 9 | FW-P3-001G | gate | FW-P3-001B | completed | [P3 出口](../tasks/FW-P3-001G.md) | | 10 | FW-P4-001-R | contract | FW-P3-001G | completed | [Python runtime 启动](../tasks/FW-P4-001-R.md) | | 11 | FW-P4-002-F | contract | FW-P4-001-R | completed | [Python Facade API](../tasks/FW-P4-002-F.md) | | 12 | FW-P4-003-S | contract | FW-P4-002-F | completed | [脚本隔离](../tasks/FW-P4-003-S.md) | | 13 | FW-P4-004-W | contract | FW-P4-003-S | completed | [工作台静态注册](../tasks/FW-P4-004-W.md) | | 14 | FW-P4-005-P | contract | FW-P4-004-W | completed | [插件包格式](../tasks/FW-P4-005-P.md) | | 15 | FW-P4-006-G | gate | FW-P4-005-P | completed | [P4 出口](../tasks/FW-P4-006-G.md) | | 16 | FW-P5-001A-F | contract | FW-P4-006-G | completed | [锁定性能样例与测量环境](../tasks/FW-P5-001A-F.md) | | 17 | FW-P5-001A-D | contract | FW-P5-001A-F | completed | [桌面性能回放](../tasks/FW-P5-001A-D.md) | | 18 | FW-P5-001A-M | contract | FW-P5-001A-D | completed | [移动性能回放](../tasks/FW-P5-001A-M.md) | | 19 | FW-P5-001A-R | contract | FW-P5-001A-M | completed | [性能预算报告](../tasks/FW-P5-001A-R.md) | | 20 | FW-P5-002A-M | contract | FW-P5-001A-R | completed | [锁定浏览器支持矩阵](../tasks/FW-P5-002A-M.md) | | 21 | FW-P5-002A-D | contract | FW-P5-002A-M | completed | [桌面浏览器回放](../tasks/FW-P5-002A-D.md) | | 22 | FW-P5-002A-MO | contract | FW-P5-002A-D | completed | [移动浏览器回放](../tasks/FW-P5-002A-MO.md) | | 23 | FW-P5-002A-R | contract | FW-P5-002A-MO | completed | [浏览器兼容报告](../tasks/FW-P5-002A-R.md) | | 24 | FW-P5-003A-I | contract | FW-P5-002A-R | completed | [建立可注入中断点](../tasks/FW-P5-003A-I.md) | | 25 | FW-P5-003A-B | contract | FW-P5-003A-I | completed | [覆盖保存边界中断](../tasks/FW-P5-003A-B.md) | | 26 | FW-P5-003A-V | contract | FW-P5-003A-B | completed | [验证恢复与文件完整性](../tasks/FW-P5-003A-V.md) | | 27 | FW-P5-003A-R | contract | FW-P5-003A-V | completed | [断电恢复报告](../tasks/FW-P5-003A-R.md) | | 28 | FW-P5-004A-E | probe | FW-P5-003A-R | completed | [收集依赖许可证证据](../tasks/FW-P5-004A-E.md) | | 29 | FW-P5-004A-C | probe | FW-P5-004A-E | completed | [建立产物到依赖映射](../tasks/FW-P5-004A-C.md) | | 30 | FW-P5-004A-N | contract | FW-P5-004A-C | completed | [生成许可证通知](../tasks/FW-P5-004A-N.md) | | 31 | FW-P5-005A-P | contract | FW-P5-004A-N | completed | [组装离线发布目录](../tasks/FW-P5-005A-P.md) | | 32 | FW-P5-005A-S | contract | FW-P5-005A-P | completed | [校验离线静态完整性](../tasks/FW-P5-005A-S.md) | | 33 | FW-P5-005A-F | contract | FW-P5-005A-S | completed | [执行离线功能回放](../tasks/FW-P5-005A-F.md) | | 34 | FW-P5-005A-R | contract | FW-P5-005A-F | completed | [离线包可重建报告](../tasks/FW-P5-005A-R.md) | | 35 | FW-P5-006A-S | contract | FW-P5-005A-R | completed | [验证成功升级路径](../tasks/FW-P5-006A-S.md) | | 36 | FW-P5-006A-I | contract | FW-P5-006A-S | completed | [验证版本不兼容回滚](../tasks/FW-P5-006A-I.md) | | 37 | FW-P5-006A-C | contract | FW-P5-006A-I | completed | [验证损坏包回滚](../tasks/FW-P5-006A-C.md) | | 38 | FW-P5-006A-R | contract | FW-P5-006A-C | completed | [升级回滚报告](../tasks/FW-P5-006A-R.md) | | 39 | FW-P5-007-G | gate | FW-P5-006A-R | completed | [P5 发布出口](../tasks/FW-P5-007-G.md) | | 40 | FW-P6-000 | probe | FW-P5-007-G | completed | [锁定 P6 基线](../tasks/FW-P6-000.md) | | 41 | FW-P6-001 | contract | FW-P6-000 | completed | [模块加载与类型注册](../tasks/FW-P6-001.md) | | 42 | FW-P6-002 | contract | FW-P6-001 | completed | [Worker/Facade envelope](../tasks/FW-P6-002.md) | | 43 | FW-P6-003 | contract | FW-P6-002 | completed | [Chrome 回放 harness](../tasks/FW-P6-003.md) | ## 领取方式 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` 维护。