25 KiB
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 控制台,覆盖:
- exact-path 案例解析、资源闭包和启动诊断。
- Dedicated Worker 中的 WASM 任务、解释器、TP、motion、XYZAC kinematics、HAL/IO 虚拟设备和固定 tick。
- AXIS 等价的程序、MDI、Manual/Jog、Home、limit、override、spindle、coolant、tool 和 alarm 工作流。
M428/M429/M430switchkins/RTCP 切换、拒绝边界、状态确认和恢复。- XYZAC Cartesian pose、A/C 姿态、五个 joints、tool offset、rotation/axis offsets 和 canonical toolpath 的 Three.js 可视化。
- protocol.v1 command/result/snapshot/event/stream、operation ledger、checkpoint、Worker 重启和 offline recovery。
- 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.inixyzac-trt.xmlswitchkins_postgui.haldemos/*.ngcremap_subs/*.ngcxyzac-trt-kins.c、trtfuncs.cxyzac-trt-gui.pycontext-lock.json
产物:
coverage/xyzac-trt-web-source-lock.report.jsonweb/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.mjsweb/worker/xyzac-scheduler.mjsweb/worker/xyzac-command-ledger.mjsweb/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_typeconfiguration.coordinates/joints/topologygates(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。
阶段拆分:
- K0:XYZAC 坐标/joint mapping、单位、limits、finite-value 校验。
- K1:identity type 0,forward/inverse identity golden。
- K2:TRT type 1,
trtKinematicsSetup、XYZAC forward/inverse、y-offset/z-offset、tool-offset。 - K3:userk type 2 capability boundary;无 userk 时稳定拒绝。
- K4:M428/M429/M430 remap 与
motion.switchkins-typehandshake。 - K5:helix_ac/helix_bc、姿态变化、G93/arc、奇异/限位/非有限值。
- 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.v1additive 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、数据流、控制流、错误、恢复和确定性要求。