# Codex 重启接续 — 2026-09-23 13:56 CST ## 暂停状态 用户要求“暂停一下 codex,准备接续文件”。已执行: ```sh systemctl --user stop freecad-web-acceptance.service ``` 暂停后确认:`freecad-web-acceptance.service` 为 `inactive/dead`,MainPID=0;没有留下 OpenSCAD ninja、Vite 或 scheduler 子进程。重启 Codex 后不要擅自恢复后台,等待用户要求继续;继续时只恢复这个原单一服务,不启动第二调度器。 工作区:`/home/mes123456/FreeCADWasmDev`;项目目录:`working/FreeCAD`。 ## 主线铁律 - 唯一主线:桌面 FreeCAD UI → Web FreeCAD UI 和功能完全对标,覆盖菜单、工具栏、任务/控制面板、属性页、对话框、右键菜单、状态反馈和完整操作者流程。 - 按共享工作台、原生文档所有者和构建目标集中处理同类问题,不拆孤立按钮;复用已有 task、facade、owner、原生产物。 - 只做源码接线、样式、原生调用和必要增量构建;不运行测试、烟测、浏览器、截图、独立类型检查、验收或证据复核。状态使用 `implemented_unvalidated`;构建成功不是业务完成。 - 原生构建固定 `-j8`;前端使用 `python3 tools/build_web_frontend.py`,该 helper 已包含 `web/.freecad-web-frontend-build.lock`,避免调度器与前台同时清理/写入 `web/dist`。 - 不把空队列、查缺结果、心跳、烟测 68/68、路由标记或构建成功当全部主线完成。所有共享台账用 `tools/policy_io.py` 原子写入。 - 不改动正在执行的包,不重复已完成源码/构建;出现冷却或无任务时沿源码游标轮转,保存下一确切文件和行号。 ## 暂停前实际状态 最后运行 `./当前执行情况 --details` 的结果: - 查询约 2026-09-23 13:56 CST;调度已停止,第 10807 轮。 - 停止前第 10807 轮为 Import 源码查缺,不验证;当时没有待完成具体任务,也没有排队任务。 - 最后阶段说明:读取 Import 保存的源码索引和接续游标,只写 discovery JSON,不构建、不验证。 - 最后命令读取 Import 的 `ImportExportPreferencesTask`、`ReadShapeCompoundMode`、`VisibleImportDialog`、`ExpandCompound`、`UseLinkGroup`、`ImportHidden`、`ReduceObjects`、`ShowProgress`、`KeepPlacement`、`exportHidden` 等入口;该查缺回合在暂停时尚未写出新的结果文件。 - 最新已完成查缺文件:`docs/current/operator-gap-discovery/run-000312.json`(OpenSCAD);该文件记录的 OpenSCAD printVerbose residual 已被实现并登记,不能重做。 - 状态文件:`docs/current/freecad-web-scheduler-status.json`;最后 live log:`docs/current/continuation-runs/cycle-010807.log`。 ## 最近完成且必须复用 ### OpenSCAD 第 10806 轮已完成并登记:`operator-gap-openscad-preferences-runtime-bridge`,状态 `implemented_unvalidated`。`importCSG` 在 `open/insert/processcsg` 边界刷新 `printVerbose`,Add/Refresh 路径也显式刷新;原生目标 `FreeCADWebOpenSCADRuntimeProbe` 已用 `ninja ... -j8` 增量构建,前端 helper 已交付。记录保留在 `docs/current/operator-gap-openscad-preferences-runtime-bridge-implementation.json`。不要重建或重复实现。 ### Start `docs/current/start-first-start-general-settings-20260923/README.md`: - `start-preferences.tsx` 新增 `readStartGeneral`、`saveStartGeneral`、`FirstStartGeneralSettings`、`applyStartTheme`;Language、UserSchema(Int)、NavigationStyle、Theme 复用现有参数 owner。 - `start-launch-panel.tsx` 首次启动面板挂载共享 General settings;Done 等待设置读取完成,设置写入时显示 busy/error。 - 前端构建退出 0,最后一次约 1.64s;未运行验证。 - 仓库暂无独立 Web locale loader,语言参数持久化和刷新事件已接通,但静态 shell 即时翻译仍是明确限制;不要把这项描述成已实现完整本地化。 ### 共享工具栏/Tux - `docs/current/desktop-ui-toolbar-preferences-repair-20260923/README.md`:PersistentToolbars root Enabled 与 User FCParam 共同快照、OPFS、广播、失败回滚、重试和焦点恢复。 - `docs/current/desktop-ui-toolbar-visibility-20260923/README.md`:工具栏右键/Toolbars 显隐、`BaseApp/MainWindow/Toolbars` Bool 保存、键盘菜单、隐藏宿主、共享锁。 - `web/src/toolbar-preferences.ts`、`persistent-toolbar-workspace.tsx`、`toolbar-visibility-menu.tsx` 已完成范围状态为 implemented_unvalidated。 ### Part UI 包 `operator-gap-ui-part-menu-toolbar-family` 仍为 `open`,但已完成的范围必须复用: - 菜单层级、工具栏、桌面 SVG、键盘/Esc/焦点在 `docs/current/desktop-ui-part-entry-repair-20260923/README.md`。 - 网格转换、采样、附着、Part DocumentProbe 框选和同文档 New Sketch 已实现;New Sketch 的记录为 `sketch-delivery.md`。 - 当前真正剩余:PartDesign/其他 owner 的 `sketcherCommand` 路由、跨 owner 框选、未追溯的快捷键元数据。源码读取阻塞已修复,接续说明在 `source-access-recovery.md`、`owner-routing-blocker.md`。 - 不要依据旧 continuation.md 中“尚未挂载 task / New Sketch 未接线”的历史文字重复施工。 ## 工具/执行问题修复 - `tools/read_implementation_source.py` 允许确认包命名源码的一跳直接前端 import 依赖,仍保留 packet、窗口数、总字节、单窗口和指纹预算;用于解决 Part 跨 owner 读取被错误拒绝的问题。记录:`docs/current/desktop-ui-part-entry-repair-20260923/source-access-recovery.md`。 - `tools/prepare_implementation_business_batch.py` 的 sourceAccess 文案已同步该规则;无须重启后台以加载到下一轮,恢复服务后自然读取。 - `tools/build_web_frontend.py` 现在用 `web/.freecad-web-frontend-build.lock` 串行化共享 `web/dist` 写入;等待超过 1800 秒返回 124,不反复重启。 - 上下文 413 修复仍有效:scheduler session token limit 24000、prompt byte limit 16000,超限保存有界接续,不重复发送超大请求。记录:`docs/current/context-budget-recovery-20260923/README.md`。 ## 恢复后的第一步 1. 读取本文件、`docs/WEB_BUSINESS_MIGRATION_RULES.md`、`docs/current/execution-policy.json`。 2. 确认服务仍为 inactive;用户明确要求继续后,运行 `systemctl --user start freecad-web-acceptance.service`,只恢复原服务。 3. 运行 `./当前执行情况 --details`,读取新的 live cycle;不要把旧的 10806 OpenSCAD 或 13:47 快照当当前状态。 4. 读取当前 `cycle-*.log` 和新的 Import discovery JSON。若 Import 产生具体 gap,先登记/执行整组包;若为空,沿其 `nextCursor` 轮转,不宣称完成。 5. 对任何现有 open key,优先使用其 `continuationNotes`、`lastExecutionCheckpoint` 和记录路径;不重复已完成构建。原生修改才构建受影响目标 `-j8`;前端相关组只调用一次锁定 helper。 6. 每轮继续保持不验证。汇报格式:处理模块 | 对标项 | 源码落点 | 路由入口 | OCCT 边界 | 状态 | 结论。 ## 暂停前台账结论 当前没有已登记的具体 open 任务,但这只是调度队列快照;桌面 UI → Web UI 和功能完全对标**尚未完成**。不要用空队列或 68/68 烟测记录改变完成定义。