Files
linuxcncWebWASM/doc-rtcp/xyzac-trt-web-wasm-implementation-plan.md

25 KiB
Raw Blame History

xyzac-trt.ini Web/WASM 控制面板实施计划

文档状态:实施基线 v1.0

本计划完全以 xyzac-trt-control-panel-web-wasm-design.md 为设计契约,目标是把以下 LinuxCNC 原生案例的控制面板、数据流和控制流迁移为 Worker/WASM/React/Three.js Web 控制台:

linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini

它不是 AXIS 的截图复刻计划,而是面向行为、状态、错误、资源、轨迹、RTCP 和恢复结果的 Web-equivalent 实施计划。任何视觉实现都必须服从 Worker/WASM authoritative state。

“完全对标 LinuxCNC 源码”和“全部功能唯一来自 LinuxCNC WASM”定义为唯一权威合同,强制定义见 xyzac-trt-web-wasm-source-parity-contract.md。若本计划与该合同冲突,以源码对标合同的禁止项、source slice、WASM authority、first divergent tick 和 parity gate 为准。

1. 目标与不可变约束

1.1 交付目标

完成一个可在浏览器中运行的 XYZAC 五轴 TRT 控制台,覆盖:

  1. exact-path 案例解析、资源闭包和启动诊断。
  2. Dedicated Worker 中的 WASM 任务、解释器、TP、motion、XYZAC kinematics、HAL/IO 虚拟设备和固定 tick。
  3. AXIS 等价的程序、MDI、Manual/Jog、Home、limit、override、spindle、coolant、tool 和 alarm 工作流。
  4. M428/M429/M430 switchkins/RTCP 切换、拒绝边界、状态确认和恢复。
  5. XYZAC Cartesian pose、A/C 姿态、五个 joints、tool offset、rotation/axis offsets 和 canonical toolpath 的 Three.js 可视化。
  6. protocol.v1 command/result/snapshot/event/stream、operation ledger、checkpoint、Worker 重启和 offline recovery。
  7. native/Worker/WASM/React/Three.js 之间的确定性 parity 报告、错误样本和首个 divergent tick。

1.2 不可变约束

约束 实施要求
WASM/Worker 权威 React 不创建第二份 task、motion、kinematics 或 program authority;本地状态只能是 draft/pending
固定 tick 解释器、TP、motion、HAL、IO、kinematics、event、journal 以 logical tick 串行执行,不使用墙钟决定结果
exact path xyzac-trt.ini 中的 HALFILE、POSTGUI_HALFILE、OPEN_FILE、SUBROUTINE_PATH、TOOL_TABLE 和 PYVCP 按 exact path 解析,不按 basename 猜文件
RTCP 原语 M428/M429/M430 必须保留 remap 语义和 motion.switchkins-type 的确认,禁止前端直接写一个近似值
一致 gate UI gate 只是 projection;Worker/runtime 必须再次检查 ESTOP/OFF/ON/HOME/IDLE/RUNNING/PAUSED/limit/fault/kinematics 条件
轨迹权威 预览和 Three.js 使用 canonical WASM trajectory/pose/joints;JS 不能重算 RTCP 结果冒充通过
单写者 一个 session 只有一个 Worker 写入 task/WASM/OPFS journal;多标签页只能观察或持有租约
幂等恢复 每个副作用命令有 operation id、ledger prepare/commit 和结果重查;超时不能盲目重发
能力拒绝 宿主路径、shell、真实硬件、socket、动态库和未授权 Python/HAL 能力稳定返回拒绝码
发布边界 没有官方 oracle、真实硬件、Safari/Firefox、OPFS crash 或许可证输入时保持 blocked,不升级为全 LinuxCNC parity

2. 设计契约追溯

设计文档章节 本计划对应实施面
§1 范围与版本边界 RTCP-00 source/runtime/version lock
§2 总体架构 RTCP-01 Worker topology、authority boundary
§3 启动与初始化 RTCP-02 exact case resolver/startup state machine
§4 AXIS 主控制面板 RTCP-05 UI domain、controls、status projection
§5 G-code 加载流 RTCP-04 PROGRAM_LOAD/preview/program ledger
§6 AUTO 运行流 RTCP-06 run/pause/resume/step/abort/restart
§7 MDI/Jog/Home/Tool/Offset RTCP-07 manual and device workflows
§8 SWITCHKINS/RTCP RTCP-08 M428/M429/M430/XYZAC kinematics
§9 状态真值 RTCP-03 snapshot/axis_state/gates
§10 Web/WASM mapping RTCP-09 protocol and frontend integration
§11 测试与限制 RTCP-10 parity/recovery/browser gates

3. 功能范围矩阵

3.1 P0:必须先闭合的主链

ID 功能 原生来源/对照 Web 结果
P0-01 案例选择与启动 xyzac-trt.ini、run-5axis-rtcp.sh TASK_READY 或可定位 BLOCKED_*
P0-02 配置/资源图 INI/HAL/XML/TBL/VAR/NGC/remap exact path、source hash、missing edge
P0-03 Task/ESTOP/OFF/ON AXIS stat.task_state axis_state + gate matrix
P0-04 Mode MANUAL/MDI/AUTO AXIS ensure_mode、on_hal_status_mode_auto state transition + command result
P0-05 Program load/open AXIS open_file_guts、c.program_open program hash、line count、preview
P0-06 Canonical preview AXIS canon/preview stable segments/source lines
P0-07 Program run AXIS task_run RUNNING、tick、active line
P0-08 Pause/resume/step AXIS task_pause/resume/step PAUSED/RESUMED/step endpoint
P0-09 Abort/restart AXIS task_stop/reload STOPPED/loaded、no duplicate side effect
P0-10 MDI AXIS send_mdi_command parser result、queue gate、error
P0-11 XYZAC kinematics xyzac-trt-kins.c、trtfuncs.c forward/inverse pose/joints
P0-12 M428/M429/M430 428remap.ngc、429remap.ngc、HAL net active type + verified transition
P0-13 Vismach pose/joints xyzac-trt-gui.py Three.js pose/joints/toolpath

3.2 P1:操作完整性

ID 功能 关键边界
P1-01 XYZAC jog X/Y/Z linear units,A/C angular units,按下/释放 stop
P1-02 Home/unhome 五 joint homing、共享开关、home sequence、重复 homing
P1-03 Soft/hard limits limit active、override limit、following error
P1-04 Feed/rapid/spindle override 范围、非有限值、暂停/ESTOP
P1-05 Spindle/coolant command/actual/at-speed、冷却状态、fault
P1-06 Tool table/offset xyzac-trt.tbl、tool offset、G43/G49/G43.1
P1-07 HAL/PyVCP type0/1/2-button、legend、vismach-clear、HAL read
P1-08 Alarm/event timeline source、severity、operation id、acknowledge
P1-09 Configuration diagnostics startup/resource/HAL/remap errors

3.3 P2:交付和恢复完整性

ID 功能 退出要求
P2-01 Checkpoint/journal tick、program line、kinematics type、pose/joints、hash 可恢复
P2-02 Worker restart 无重复 M428/M429、无重复 segment/IO/tool side effect
P2-03 Offline project 缓存资源、OPFS journal、配额和冲突可诊断
P2-04 Stream/backpressure trajectory/HAL/log drop 有 cursor/gap/最终快照
P2-05 Browser matrix Chromium/Firefox/Safari 逐项证据;缺环境保持 blocked
P2-06 Native/WASM parity normal/boundary/error/recovery + deterministic self-hash

4. 目标架构

React/Web UI
  ├── XyzacCaseView / ProgramView / ManualView / RtccpView / DiagnosticsView
  ├── Domain store: task/program/motion/kinematics/hal/devices/recovery
  ├── Pure gate selectors and source control IDs
  └── WorkerClient only
          │ protocol.v1 MessageEnvelope
          ▼
Dedicated sim.worker
  ├── ProtocolGateway + runtime schema validator
  ├── Session/Liveness/Lease manager
  ├── CommandLedger (prepare/ack/result/commit/reconcile)
  ├── XyzacCaseResolver + resource graph
  ├── SimScheduler (fixed logical tick)
  ├── WASM LinuxCncCompat
  │    ├── Task/RS274/TP/Motion
  │    ├── xyzac-trt forward/inverse
  │    ├── remap M428/M429/M430
  │    └── HAL/IO/tool/probe virtual devices
  ├── SnapshotPublisher + StateHash
  ├── OPFS journal/checkpoint/recovery
  └── trajectory/HAL/log stream backpressure
          │ authoritative snapshots/events
          ▼
React projection + Three.js XYZAC Vismach adapter

4.1 Authority ownership

数据 唯一 authority React 是否可写
task state/mode/interp WASM Task/Interpreter 否
program parsed state/line WASM Interpreter/Task 否
TP queue/active segment WASM TP 否
Cartesian pose/XYZAC joints WASM Kinematics/Motion 否
switchkins type WASM/HAL compatibility layer 只能发请求
homed/limit/following error WASM Motion/Home/HAL 否
tool/offset/spindle/coolant virtual IO/tool runtime 只能发命令
UI draft/selection React local store 是,但不等于运行态
Three.js camera/layer toggle React/renderer 是,不影响 motion

5. 实施任务队列

任务状态使用:queued → in_progress → verified 或 in_progress → blocked。每个任务完成时必须生成报告、自哈希、输入哈希、命令记录、错误边界和下一任务依赖。

RTCP-00:源码、版本和案例锁定

目标:冻结 xyzac-trt.ini、所有引用资源、系统运行时和 source symbol 映射。

直接输入:

  • xyzac-trt.ini
  • xyzac-trt.xml
  • switchkins_postgui.hal
  • demos/*.ngc
  • remap_subs/*.ngc
  • xyzac-trt-kins.c、trtfuncs.c
  • xyzac-trt-gui.py
  • context-lock.json

产物:

  • coverage/xyzac-trt-web-source-lock.report.json
  • web/workspace/xyzac-trt-source-contract.mjs
  • exact resource graph、source hash、runtime version record

验收:每个 INI path、HAL edge、PyVCP pin、remap、G-code 入口可追溯;缺失资源为明确 blocker。

RTCP-01:Worker 拓扑和 LinuxCncCompat 外壳

目标:建立单 Worker/session/ledger/scheduler 边界,不实现五轴细节。

产物:

  • web/worker/xyzac-session.mjs
  • web/worker/xyzac-scheduler.mjs
  • web/worker/xyzac-command-ledger.mjs
  • web/worker/test_xyzac_session.mjs

验收:HELLO/CAPABILITIES/SESSION_ATTACH/SESSION_READY、seq、operation_id、取消、超时重查和重复命令测试通过;Worker 之外不能写 runtime。

RTCP-02:Exact case resolver 和启动状态机

目标:把 xyzac-trt.ini 解析到 TASK_NEW → CONFIG_RESOLVED → HAL_READY → RUNTIME_READY → TASK_READY。

要求:

  • 解析 DISPLAY/TASK/HAL/RS274NGC/KINS/TRAJ/EMCIO。
  • 解析 LIB:basic_sim.tcl 的虚拟 HAL 边界。
  • exact resolve OPEN_FILE、SUBROUTINE_PATH、xyzac-trt.tbl、xyzac.var、xyzac-trt.xml 和 xyzac-trt-gui.py。
  • 识别 BLOCKED_RESOURCE、BLOCKED_HAL、BLOCKED_INI、BLOCKED_STARTUP。

产物:web/workspace/xyzac-trt-case-loader.mjs、startup snapshot、diagnostic report。

RTCP-03:Authoritative snapshot、axis_state 和 gate matrix

目标:将 native task/motion/interp/home/limit/kinematics 状态统一为 Worker snapshot。

产物:

  • additive axis_state
  • kinematics.active_type
  • configuration.coordinates/joints/topology
  • gates(action/enabled/reason)
  • web/worker/test_xyzac_gate_matrix.mjs

验收:ESTOP/OFF/ON/HOME/IDLE/RUNNING/PAUSED、limit/fault/tool/no-file/no-highlight 每项都有 gate reason 和状态哈希。

RTCP-04:程序加载、canonical preview 和 program ledger

目标:实现 AXIS open_file_guts → program_open → canon/preview → stat.file 的 Worker/WASM 等价流程。

要求:

  • source/path/hash/line count 固化。
  • preview segment 带 id/source_line/start/end/motion_type/center/normal/turn。
  • 解析错误、超限、非有限值、空文件和缺资源 fail closed。
  • load/reload/restart 与 ledger/recovery 可重放。

验收:native 与 Worker 首个 segment、line count、preview hash、loaded file、invalid G-code 错误码一致。

RTCP-05:程序运行控制和 AXIS workflow

目标:覆盖 Run/Pause/Resume/Step/Abort/Restart/Run-from-line。

按钮约束:

RUN      = machine_on && interp_idle && task_file
PAUSE    = machine_on && interp_reading_or_waiting
RESUME   = machine_on && interp_paused
STEP     = machine_on && task_file
ABORT    = machine_on && interp_running
RESTART  = machine_on && interp_idle && task_file
RUN_LINE = RUN && highlight_line != null

验收:固定 tick 下 pause/resume 不重复 segment,abort 无重复副作用,restart 重置 program state 但保留正确 source hash。

RTCP-06:MDI、Jog、Home 和 limit

目标:实现 XYZAC 手动控制。

要求:

  • X/Y/Z 线性单位和 A/C 角度单位分离。
  • pointerdown/keydown 只发一个 JOG_START;pointerup/keyup/blur/visibilitychange 必须发 JOG_STOP。
  • MDI queue limit、running/paused/ESTOP gate 与 native 一致。
  • home all、单 joint home、unhome、共享 home switch 和 limit override。
  • following error、非有限速度、超范围轴拒绝。

验收:每个 X/Y/Z/A/C 轴有 normal/boundary/stop/fault/recovery 样本;A/C 不得被当作 linear mm。

RTCP-07:HAL、PyVCP、tool、spindle、coolant 和 alarm

目标:把 xyzac-trt.xml 和 switchkins_postgui.hal 中的控件接入 Worker capability。

功能:

  • type0/type1/type2 button 状态和 kinstype.is-* legend。
  • vismach-clear 只清 visual plot。
  • tool table、tool offset、G43/G49/G43.1、tool prepare/change。
  • spindle command/actual/at-speed/direction、coolant、manual tool change。
  • HAL pin read/write 白名单、类型和权限。
  • alarm/event timeline、acknowledge、source file/line。

验收:HAL command 不能越权写任意 pin;tool/IO ack、timeout、abort、recovery 和 REAL-EXCLUDED 分类都有报告。

RTCP-08:XYZAC kinematics 和 RTCP

目标:实现 xyzac-trt-kins 的 forward/inverse、tool offset、rotation/axis offset 和 switchkins。

阶段拆分:

  1. K0:XYZAC 坐标/joint mapping、单位、limits、finite-value 校验。
  2. K1:identity type 0,forward/inverse identity golden。
  3. K2:TRT type 1,trtKinematicsSetup、XYZAC forward/inverse、y-offset/z-offset、tool-offset。
  4. K3:userk type 2 capability boundary;无 userk 时稳定拒绝。
  5. K4:M428/M429/M430 remap 与 motion.switchkins-type handshake。
  6. K5:helix_ac/helix_bc、姿态变化、G93/arc、奇异/限位/非有限值。
  7. K6:pause/resume/abort/restart/recovery 时 active kinematics type 和 pose/joints 保持一致。

必须保存:Cartesian pose、XYZAC joints、A/C angle、tool offset、rotation point、axis offsets、kinematics type、首个 divergent tick、state hash。

RTCP-09:Protocol v1 和 React 控制台

目标:把现有 axis-contract.mjs、AxisOperationController、PanelSnapshotV1 扩展到 XYZAC。

产物:

  • KINEMATICS_SELECT、VISUAL_CLEAR、POWER 等 additive commands。
  • xyzac-panel-snapshot.v1 additive view 或兼容扩展。
  • React XyzacTrtPanel、XyzacProgramPane、XyzacKinematicsControl、XyzacManualPanel、XyzacDiagnostics。
  • gate-aware controls、operation trace、alarm/recovery view。

验收:React 不直接调用 WASM/OPFS;所有 controls 只通过 WorkerClient;gate reason、pending、ack、result、error 状态可见。

RTCP-10:Three.js XYZAC Vismach adapter

目标:使用 authoritative visual.pose/joints/toolpath 实现五轴模型。

要求:

  • 机床结构对应 xyzac-trt-gui.py:table-x、saddle-y、spindle-z、tilt-a、rotate-c、tool-offset。
  • pose/joints 与 toolpath 来自同一 state_hash/tick。
  • camera/layer/clear 不改变 task/motion/program。
  • canvas nonblank、A/C 旋转方向、tool offset、轨迹 active segment 和 resize/mobile 通过。

RTCP-11:Journal、checkpoint、Worker restart 和 offline recovery

目标:恢复完整 XYZAC 运行态。

checkpoint 最小字段:

context_id, case_id, source_hashes
simulation_tick, seq, state_hash
task_state, task_mode, interp_state, program_hash, current_line
kinematics_type, kinematics_transition, pose, joints
tool_offset, y_offset, z_offset, rotation_points
TP queue/active segment, HAL/IO/tool pending commands

验收:

  • M428 在 checkpoint 前后不重复执行。
  • 暂停程序恢复不重复 segment。
  • tool/spindle/coolant/IO side effect 不重复。
  • 损坏 checkpoint、缺资源、schema mismatch fail closed。
  • Worker 重启后 endpoint pose/joints/program/kinematics/state hash 一致。

RTCP-12:Native/Worker/Browser parity 和验收闭环

目标:形成 selected-case parity report,不冒充全 LinuxCNC release。

矩阵:

  • Chromium desktop/mobile。
  • Firefox/Safari 可用时运行;不可用保留 HOST_EXCLUDED/blocked。
  • native AXIS + xyzac-trt-gui。
  • Worker/WASM + React + Three.js。
  • normal/boundary/error/limit/pause/abort/restart/recovery。

产物:

  • coverage/xyzac-trt-web-wasm-parity.report.json
  • native/worker command golden
  • snapshot/trajectory/kinematics self-hash
  • failure samples and first divergence report

6. 里程碑设计

M0:Source and Case Contract

包含:RTCP-00。

退出条件:

  • 所有直接引用资源均 exact-path indexed(不以抽样替代)。
  • xyzac-trt.ini 的 INI/HAL/NGC/XML/Python/C source graph 自哈希稳定。
  • 版本、context、运行时和能力边界记录完成。
  • 缺失/未索引/宿主资源明确 blocked。

M1:Worker Startup and State Authority

包含:RTCP-01、RTCP-02、RTCP-03。

退出条件:

  • Worker session handshake、TASK_READY、CAPABILITIES 通过。
  • snapshot 包含 task/motion/home/limit/program/kinematics/gates/configuration。
  • ESTOP/OFF/ON/HOME/IDLE gate matrix 和 deterministic state hash 通过。
  • React 尚未接入前,Worker 测试可独立验证 authority。

M2:Program and AXIS Operation Workflow

包含:RTCP-04、RTCP-05、RTCP-06。

退出条件:

  • load/preview/run/pause/resume/step/abort/restart/MDI/jog/home 全部有 native/Worker 对照。
  • 每个操作的 gate reason、operation id、command result 和 state hash 可追溯。
  • running/paused/ESTOP/limit/tool missing 的拒绝不被 UI 绕过。

M3:HAL/IO/PyVCP and Device Closure

包含:RTCP-07。

退出条件:

  • SWITCHKINS PyVCP 三个按钮和 vismach-clear 的 HAL 图可解析。
  • spindle/coolant/tool/probe/hal read/write/ack/error 边界通过。
  • 未授权 pin、外部进程、真实硬件被稳定拒绝。

M4:XYZAC Kinematics and RTCP

包含:RTCP-08。

退出条件:

  • type 0/1/2 切换和 M428/M429/M430 handshake 与 native 一致。
  • XYZAC pose/joints/tool offset/axis offset/rotation point 的 forward/inverse golden 通过。
  • helix/姿态变化、奇异、limits、non-finite、pause/abort/recovery 样本齐全。
  • 首个 divergent tick 可定位;没有 JS kinematics fallback。

M5:React/Protocol/Three.js Console

包含:RTCP-09、RTCP-10。

退出条件:

  • React 所有按钮只通过 WorkerClient/OperationController。
  • Three.js 使用 authoritative snapshot,A/C 方向、tool offset 和 active segment 正确。
  • desktop/mobile DOM、canvas nonblank、keyboard/touch、错误/pending/gate UI 通过。

M6:Recovery and Offline Runtime

包含:RTCP-11。

退出条件:

  • checkpoint/restart/reconcile/replay 无重复副作用。
  • OPFS journal、配额、schema mismatch、坏数据和离线重新打开可诊断。
  • recovery endpoint state hash 与连续运行一致。

M7:Selected-Case Parity Acceptance

包含:RTCP-12。

退出条件:

  • native/Worker/WASM/React/Three.js 的选定案例完整矩阵通过。
  • 结果报告有 source/input/output hash、命令、状态、首个差异 tick 和失败样本。
  • Chromium/Firefox/Safari、官方 oracle、实时硬件、OPFS crash 和许可证边界按真实环境记录。
  • 只能声明 selected_case_verified;任何外部 blocker 存在时保持 STOP_RELEASE。

7. 任务依赖图

RTCP-00 source lock
        │
        ▼
RTCP-01 session/ledger ── RTCP-02 case startup ── RTCP-03 snapshot/gates
        │                         │                      │
        └─────────────────────────┴──────────────────────┘
                                  ▼
                 RTCP-04 program/preview
                         │
          ┌──────────────┴──────────────┐
          ▼                             ▼
   RTCP-05 run/control             RTCP-06 manual
          │                             │
          └──────────────┬──────────────┘
                         ▼
                 RTCP-07 HAL/IO/PyVCP
                         │
                         ▼
                 RTCP-08 XYZAC/RTCP
                         │
             ┌───────────┴───────────┐
             ▼                       ▼
      RTCP-09 React/protocol   RTCP-10 Three.js
             │                       │
             └───────────┬───────────┘
                         ▼
                 RTCP-11 recovery
                         │
                         ▼
                 RTCP-12 parity gate

不得跳过 RTCP-03 的 authority/gate、RTCP-04 的 canonical program 或 RTCP-08 的 kinematics 就先做“漂亮界面”。

8. 统一任务报告格式

每个 RTCP-* 任务必须生成 JSON 报告,至少包含:

{
  "schema": "xyzac-trt-web-wasm-task-report.v1",
  "task_id": "RTCP-08",
  "milestone": "M4",
  "status": "verified",
  "context_id": "...",
  "case_path": ".../xyzac-trt.ini",
  "inputs": [{"path": "...", "sha256": "..."}],
  "outputs": [{"path": "...", "sha256": "..."}],
  "commands": [{"name": "...", "status": "passed", "stdout_sha256": "..."}],
  "normal": {},
  "boundaries": [],
  "errors": [],
  "first_divergent_tick": null,
  "known_blockers": [],
  "report_sha256": "..."
}

失败样本必须保留,不得删除失败、降低 gate、把资源缺失改成通过或用 JS preview/姿态镜像冒充 native/WASM parity。

9. 最低测试命令集合

任务开发期间按范围运行:

python3 scripts/validate_baseline.py
python3 scripts/validate_download_index.py
python3 scripts/validate_task_pointer.py nextTask1.md --lock context-lock.json
scripts/build-wasm.sh
ctest --test-dir build-native --output-on-failure

五轴专属命令:

./run-5axis-rtcp.sh
./run-5axis-rtcp.sh xyzbc-trt.ini
node web/worker/test_xyzac_trt_case.mjs
node web/worker/test_xyzac_program.mjs
node web/worker/test_xyzac_switchkins.mjs
node web/worker/test_xyzac_rtcp.mjs
node web/worker/test_xyzac_recovery.mjs
npm --prefix web/react run typecheck
npm --prefix web/react run build

命令名称在对应任务开始前必须实际创建并纳入报告;不存在的测试命令不能写成已通过。

10. 停止条件和阻塞处理

以下任一情况必须将当前任务标记为 blocked,并保留证据:

  • xyzac-trt.ini 的 source/resource/hal/remap graph 不完整。
  • native 运行时版本、锁定 source 或 ABI/protocol/schema 不一致。
  • M428/M429 状态切换没有确认、重复执行或首个差异 tick 未定位。
  • A/C 角度、tool offset、rotation point、joint pose 由 JS/React 生成。
  • ESTOP、limit、following error、pause、abort、recovery 语义不可解释。
  • 真实 HAL、动态 loader、宿主 Python、外部进程或真实硬件被错误标记为 Web-equivalent。
  • Worker 重启造成重复 G-code、重复 tool/IO side effect 或 checkpoint hash 不一致。
  • 只有 Chromium 截图而缺 Firefox/Safari/OPFS/oracle 证据,却要求全量 release。
  • 缺少 owner/source/oracle/resource/browser/license 外部输入。

阻塞转移规则:

技术缺陷 → 保留最小复现/错误码/首个 divergent tick → 修复同一任务
源码/ABI/protocol/schema 输入缺失 → SOURCE_BLOCKED → 等待审查输入
宿主/浏览器/硬件缺失 → HOST_EXCLUDED 或 REAL-EXCLUDED → 不伪造通过
发布/owner 决策缺失 → STOP_RELEASE → 不自动刷新 gate

11. 里程碑交付顺序

后续实施按以下顺序推进,不能在任务依赖未 verified 时跳级:

M0 Source/Case Contract
  → M1 Worker Startup/Authority
  → M2 Program/AXIS Workflow
  → M3 HAL/IO/PyVCP
  → M4 XYZAC/RTCP Kinematics
  → M5 React/Protocol/Three.js
  → M6 Recovery/Offline
  → M7 Selected-Case Parity

每个里程碑完成后生成独立报告和自哈希,并将下一里程碑的直接输入、完成门禁、外部 blocker 和停止边界写入任务记录。完成单元测试或界面截图不等于该里程碑完成;必须同时满足 authority、数据流、控制流、错误、恢复和确定性要求。