Implement AXIS parity UI and execution baseline

This commit is contained in:
2026-08-23 07:28:37 +08:00
parent 1325504544
commit 06f96f85e5
463 changed files with 84893 additions and 692 deletions

View File

@@ -0,0 +1,803 @@
{
"audit_scope": {
"code_domains": [
"workspace",
"task",
"interpreter",
"TP/motion",
"kinematics",
"HAL/PLC/IO",
"Python/remap/VCP",
"recovery",
"Web/UI"
],
"p0_p8_task_count": 39,
"plan": "docs/linuxcnc-web-wasm-complete-simulation-plan.md",
"source_test_track": "S5-01..S5-08"
},
"boundaries": [
"verified module reports are not equivalent to full LinuxCNC behavior parity",
"official oracle, source/resource blockers and browser/OPFS blockers remain explicit",
"no ABI/protocol/schema/manifest changes are made by this audit"
],
"context_id": "linuxcnc-2.10.0-pre0-wasm-m1-py-c1",
"gap_ledger": [
{
"domain": "authoritative_runtime",
"evidence": [
"docs/linuxcnc-web-wasm-system-flow-and-execution-baseline.md",
"coverage/sim-task.report.json",
"coverage/linuxcnc-source-parity-s5.report.json"
],
"gap_id": "GAP-TASK-TICK-INTEGRATION",
"next_task": "S6-02",
"reason": "interpreter/TP/motion/kinematics/HAL/IO modules have isolated evidence, but the full authoritative sim_task fixed-tick chain is not yet proven against LinuxCNC source behavior",
"status": "OPEN"
},
{
"domain": "oracle",
"evidence": [
"coverage/native-oracle-closure.report.json",
"coverage/linuxcnc-source-parity-s5.report.json"
],
"gap_id": "GAP-OFFICIAL-NATIVE-ORACLE",
"next_task": "OWNER/CONTEXT INPUT REQUIRED",
"reason": "locked source lacks the official kinematics/recovery oracle and desktop native unit environment",
"status": "SOURCE_BLOCKED"
},
{
"domain": "configuration",
"evidence": [
"coverage/linuxcnc-source-config-s5.report.json",
"coverage/full-configuration-startup-matrix.report.json"
],
"gap_id": "GAP-CONFIG-RESOURCE-CLOSURE",
"next_task": "S6-03",
"reason": "981 resource rows and 208 configuration entries remain blocked by missing, unindexed or unregistered dependencies",
"status": "OPEN_BLOCKED"
},
{
"domain": "source_parity",
"evidence": [
"coverage/linuxcnc-source-parity-s5.report.json"
],
"gap_id": "GAP-SOURCE-ADAPTER-PENDING",
"next_task": "S6-04",
"reason": "G64/DO, full canonical logger, custom .comp, startup tool tables, ClassicLadder and motion-logger paths remain explicitly pending or excluded",
"status": "OPEN_BLOCKED"
},
{
"domain": "recovery_browser",
"evidence": [
"coverage/recovery-offline-fault-matrix.report.json",
"coverage/browser-matrix-closure.report.json"
],
"gap_id": "GAP-BROWSER-OPFS-CLOSURE",
"next_task": "S6-05",
"reason": "logical Worker recovery is verified, while browser OPFS crash, Safari/performance and physical browser oracle remain incomplete",
"status": "OPEN_BLOCKED"
}
],
"inputs": [
{
"bytes": 20277,
"path": "docs/linuxcnc-web-wasm-complete-simulation-plan.md",
"sha256": "b82611bc121a715ac17ce59d258547c7d202b309261ac0c27092ce17c662c08b",
"status": "present"
},
{
"bytes": 15650,
"path": "docs/linuxcnc-web-wasm-source-map.md",
"sha256": "cb407a32b95d0772564b262541c21eb556e02e5e36ade394a4498fc666e5a10a",
"status": "present"
},
{
"bytes": 7647,
"path": "context-lock.json",
"sha256": "bf6651f8d1803f2219d40e61f5e86dcf0821862d087eec2e19f99f593561353e",
"status": "present"
},
{
"bytes": 459392,
"path": "coverage/linuxcnc-source-test-s5.report.json",
"sha256": "5e8be188f808cc95de2d18b76a33814ac045fb0d42a0f6bf8dc23af3af0fc7a5",
"status": "present"
},
{
"bytes": 12170,
"path": "coverage/linuxcnc-source-test-execution-s5.report.json",
"sha256": "49f911fc8ecf6ceaee25be2dc42b2f1ea331e3f0ac1a480335ffdd69c086d21b",
"status": "present"
},
{
"bytes": 13338,
"path": "coverage/linuxcnc-source-unit-execution-s5.report.json",
"sha256": "d8a3cd57479d6000beea9ca7fe02ae70523c58a4999ca2e52625e83f8ed0e1c9",
"status": "present"
},
{
"bytes": 12698,
"path": "coverage/linuxcnc-source-interp-s5.report.json",
"sha256": "d68df986bbb6e730b8fc1499146954776f782d677095d675f7a5dda6378af77a",
"status": "present"
},
{
"bytes": 14049,
"path": "coverage/linuxcnc-source-hal-s5.report.json",
"sha256": "2e4c2b7ba2eb63951f2a22a97e2769b05525b5881e74e2dab008db126fd2093c",
"status": "present"
},
{
"bytes": 15823,
"path": "coverage/linuxcnc-source-io-s5.report.json",
"sha256": "098e471ef105e6c363f6e48ae180a5c7ea7a4f38417da8b4c2194d00fe0844f9",
"status": "present"
},
{
"bytes": 134124,
"path": "coverage/linuxcnc-source-config-s5.report.json",
"sha256": "baf06fbaf9d657253ca29fcee549b33bda61fb777a73c0ffb29170c9b0ae7c26",
"status": "present"
},
{
"bytes": 10820,
"path": "coverage/linuxcnc-source-parity-s5.report.json",
"sha256": "08e93248dbd0fac9722ed12336546d2f63e4b80b3a2eee755cbda7f91f55b1ff",
"status": "present"
}
],
"next_execution": {
"depends_on": [
"S6-01"
],
"direct_gaps": [
"GAP-TASK-TICK-INTEGRATION"
],
"required_evidence": [
"native/WASM/Worker task snapshot parity",
"first divergent tick or explicit blocked reason",
"pause/resume/abort/recovery endpoint"
],
"status": "queued",
"task_id": "S6-02",
"title": "integrate authoritative sim_task fixed tick across interpreter/TP/motion/kinematics/HAL/IO"
},
"report_sha256": "10853a2327f1467e098a2119fb2130b73fb072a6bd9cb8ce3ef9ece14eee9c56",
"schema": "full-linuxcnc-simulation-gap-audit.v1",
"source_test_summary": {
"all_verified": true,
"configuration_entries": 264,
"s5_parity_report_sha256": "08e93248dbd0fac9722ed12336546d2f63e4b80b3a2eee755cbda7f91f55b1ff",
"tasks": [
"S5-01",
"S5-02",
"S5-03",
"S5-04",
"S5-05",
"S5-06",
"S5-07",
"S5-08"
]
},
"status": "verified",
"task_id": "S6-01",
"task_ledger": {
"counts": {
"EVIDENCE_BLOCKED": 1,
"EVIDENCE_VERIFIED": 36,
"NO_DIRECT_REPORT": 2
},
"tasks": [
{
"acceptance": "baseline 可重建,缺输入 fail closed",
"depends_on": "无",
"evidence": null,
"evidence_state": "NO_DIRECT_REPORT",
"planned_outputs": "context/source baseline",
"task_id": "P0-01",
"title": "冻结来源、工具链、schema 和 source hash"
},
{
"acceptance": "无孤儿、重复、未知 ID",
"depends_on": "P0-01",
"evidence": null,
"evidence_state": "NO_DIRECT_REPORT",
"planned_outputs": "coverage graph/manifest",
"task_id": "P0-02",
"title": "建立 source→feature→task→test 图"
},
{
"acceptance": "版本 mismatch 和字段缺失拒绝",
"depends_on": "P0-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/sim-contract.report.json",
"schema": "sim-contract-report.v1",
"sha256": "6ce37e8e6ccd4152d456a69fd764e82ee12dbb7fa9c215712019fa048c27160f",
"status": "passed",
"task_id": "P0-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "schema + compatibility tests",
"task_id": "P0-03",
"title": "固定 ABI/protocol/snapshot/event/workspace 契约"
},
{
"acceptance": "state hash、状态机、错误码一致",
"depends_on": "P0-03",
"evidence": {
"implementation_status": "verified",
"path": "coverage/sim-task.report.json",
"schema": "sim-task-report.v1",
"sha256": "768f8dd6af9a3ccfaa6f62ce8e7c2ab6bcb4af77036d1098feb7d344b96091d1",
"status": "passed",
"task_id": "P1-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "Task state/native/WASM tests",
"task_id": "P1-01",
"title": "建立 `sim_task.v1` authoritative 状态对象"
},
{
"acceptance": "快速/1x/单步终点一致",
"depends_on": "P1-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/sim-scheduler.report.json",
"schema": "sim-scheduler-report.v1",
"sha256": "df5699b9cd4f15c3d6351ab172b21af579ffbec8fad90cee3d00043418581d36",
"status": "passed",
"task_id": "P1-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "scheduler + tick golden",
"task_id": "P1-02",
"title": "固定 `sim_step` 调度顺序和 tick budget"
},
{
"acceptance": "operation replay 不重复副作用",
"depends_on": "P1-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/sim-ledger.report.json",
"schema": "sim-ledger-report.v1",
"sha256": "724268cac1ee78a63c14c8660c24ebe55458051ba24200ed9bdbc303a2f5772c",
"status": "passed",
"task_id": "P1-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "ledger/replay tests",
"task_id": "P1-03",
"title": "接入 command ledger、幂等和 abort"
},
{
"acceptance": "当前行、模态、程序状态可观察",
"depends_on": "P1-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/sim-runner.report.json",
"schema": "sim-runner-report.v1",
"sha256": "e54c4bffcd25c60346bd5ad73a36393b1350dd5ba18f6bd4962b60851f3ba762",
"status": "passed",
"task_id": "P1-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "Worker/native/WASM report",
"task_id": "P1-04",
"title": "将现有 G-code/MDI runner 接入 Task snapshot"
},
{
"acceptance": "路径、编码、配额、事务错误稳定",
"depends_on": "P1-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/workspace-runtime.report.json",
"schema": "workspace-runtime-report.v1",
"sha256": "3ee78c0fa0fce5c1b1658a4d7b13a993c0bf053010c77d006d7d9a78a7bfb3b1",
"status": "passed",
"task_id": "P2-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "workspace runtime",
"task_id": "P2-01",
"title": "虚拟 POSIX/Workspace API"
},
{
"acceptance": "行号、循环、缺失资源可诊断",
"depends_on": "P2-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/ini-parser.report.json",
"schema": "ini-parser-report.v1",
"sha256": "1d542427354419bcd897c3f05dc3119aa81157abaa740edfb4a9b38e65103a3c",
"status": "passed",
"task_id": "P2-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "parser/resource graph",
"task_id": "P2-02",
"title": "INI/include/变量解析器"
},
{
"acceptance": "所有依赖可定位、不静默替换",
"depends_on": "P2-01",
"evidence": {
"implementation_status": "verified",
"path": "coverage/resource-resolver.report.json",
"schema": "resource-resolver-report.v1",
"sha256": "4e3830a05f43c2cb1c65b71d597e4d16264d2cc56972c1422f783ba85d4da78d",
"status": "passed",
"task_id": "P2-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "config resource graph",
"task_id": "P2-03",
"title": "HAL/工具表/参数/程序/Python/VCP/CLP resolver"
},
{
"acceptance": "入口只进入 READY 或 BLOCKED",
"depends_on": "P2-02/P2-03/P1-02",
"evidence": {
"implementation_status": "verified",
"path": "coverage/configuration-startup-runtime.report.json",
"schema": "configuration-startup-runtime-report.v1",
"sha256": "6990bf07dabb06c82e21dd022ff7ae149af8c51e42aa443d465a70c9fa315f59",
"status": "passed",
"task_id": "P2-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "startup resolver/233-entry report",
"task_id": "P2-04",
"title": "统一配置启动状态机"
},
{
"acceptance": "block、错误列和 modal hash 一致",
"depends_on": "P1-04",
"evidence": {
"implementation_status": null,
"path": "coverage/rs274-interpreter-closure.report.json",
"schema": "rs274-interpreter-closure-report.v1",
"sha256": "f89b09eb912bcca4f75cf0392b889e0051fcdc61b6b2f14663c72fca63b8f608",
"status": "verified",
"task_id": "S1-01A"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "native/WASM interpreter oracle",
"task_id": "P3-01",
"title": "rs274 grammar/modal/parameter 完整闭环"
},
{
"acceptance": "深度、预算、异常边界完整",
"depends_on": "P3-01/P5-02",
"evidence": {
"implementation_status": null,
"path": "coverage/o-word-runtime.report.json",
"schema": "o-word-runtime-report.v1",
"sha256": "c9b02d51f2ba5a1a1248ec75d52f15feac65d389dd60dda198ee1844d35b50de",
"status": "verified",
"task_id": "P3-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "interpreter golden",
"task_id": "P3-02",
"title": "O-word、子程序、循环、宏和过滤器"
},
{
"acceptance": "segment 顺序、速度和首差 tick",
"depends_on": "P1-02/P3-01",
"evidence": {
"implementation_status": null,
"path": "coverage/tp-blend.report.json",
"schema": "tp-blend-report.v1",
"sha256": "a4387c31f508297bdd28bd8eb432e9f9113cf505fb5aa711d158720b291df2f6",
"status": "verified",
"task_id": "P3-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "TP golden/diff report",
"task_id": "P3-03",
"title": "canonical queue、TP 前瞻、blend/exact-stop"
},
{
"acceptance": "run/pause/resume/step/abort 可恢复",
"depends_on": "P1-03/P3-01",
"evidence": {
"implementation_status": null,
"path": "coverage/task-program-state.report.json",
"schema": "task-program-state-report.v1",
"sha256": "6b22540591a974f8d648a70287412ecdefd9114b1f63095873154983d8d3d659",
"status": "verified",
"task_id": "P3-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "command golden",
"task_id": "P3-04",
"title": "Task mode、MDI、program state machine"
},
{
"acceptance": "轴/关节、estop、limit、home 一致",
"depends_on": "P3-03",
"evidence": {
"implementation_status": null,
"path": "coverage/motion-state.report.json",
"schema": "motion-state-report.v1",
"sha256": "20a48fbf735b184b5211be6d0487fcb1637060af91ddb59f43f7d82b689e9dd6",
"status": "verified",
"task_id": "P3-05"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "motion state/故障矩阵",
"task_id": "P3-05",
"title": "motion、jog、override、home、limits、following error"
},
{
"acceptance": "forward/inverse/branch/limits",
"depends_on": "P3-05",
"evidence": {
"implementation_status": null,
"path": "coverage/kinematics-base.report.json",
"schema": "kinematics-base-report.v1",
"sha256": "c836235f11bb0c1afebe4937c776de88cbeb2ac5e5081ac0784a97aa40c36809",
"status": "verified",
"task_id": "P3-06"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "registry + native/WASM tests",
"task_id": "P3-06",
"title": "kinematics registry 和 trivkins/gantry/CoreXY"
},
{
"acceptance": "singularity、非有限、缺 oracle 明确",
"depends_on": "P3-06",
"evidence": {
"implementation_status": null,
"path": "coverage/advanced-kinematics.report.json",
"schema": "advanced-kinematics-report.v1",
"sha256": "b4b649631b120f2a9f94648a7f9ee24386da9fa85224f1500e0e43784cfd8bdc",
"status": "verified",
"task_id": "P3-07"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "每族 report/golden",
"task_id": "P3-07",
"title": "5/6-axis、TRT、机器人、并联和 switch/user kins"
},
{
"acceptance": "顺序、类型、重复、未知组件 fail closed",
"depends_on": "P2-03/P1-02",
"evidence": {
"implementation_status": null,
"path": "coverage/hal-graph.report.json",
"schema": "hal-graph-report.v1",
"sha256": "2fe96f9b3ae0e6143be95c0a9378f40147eb2e2678c23de3d92f19cd8b6b0fc9",
"status": "verified",
"task_id": "P4-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "HAL graph/runtime",
"task_id": "P4-01",
"title": "HAL graph/twopass/pin/signal/thread/function"
},
{
"acceptance": "不动态加载、不访问宿主",
"depends_on": "P4-01",
"evidence": {
"implementation_status": null,
"path": "coverage/component-capability.report.json",
"schema": "component-capability-report.v1",
"sha256": "93a109d165c5b10a799aa8ef5fff1d5a03f50929ac3094bc73f6d4e3a1b2b949",
"status": "verified",
"task_id": "P4-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "component manifest/tests",
"task_id": "P4-02",
"title": "静态 `.comp` 组件和能力 manifest"
},
{
"acceptance": "scan 顺序、寄存器、故障可回放",
"depends_on": "P4-01",
"evidence": {
"implementation_status": null,
"path": "coverage/plc-runtime.report.json",
"schema": "plc-runtime-report.v1",
"sha256": "dcc892df8a3d9d194213af541b9003e9c58f39bdde4066ec5265bcb17f29bcf3",
"status": "verified",
"task_id": "P4-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "PLC runtime/report",
"task_id": "P4-03",
"title": "ClassicLadder/采样/触发/背压"
},
{
"acceptance": "延迟、故障、恢复、hash 一致",
"depends_on": "P4-01/P3-05",
"evidence": {
"implementation_status": null,
"path": "coverage/device-twin.report.json",
"schema": "device-twin-report.v1",
"sha256": "11a818854805b5b80e4de5dae6158b6e588010f2369afddf76597f9173902672",
"status": "verified",
"task_id": "P4-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "device model/fault matrix",
"task_id": "P4-04",
"title": "spindle/encoder/probe/limit/home/tool/coolant twin"
},
{
"acceptance": "ack 丢失和恢复不重复副作用",
"depends_on": "P4-04/P1-03",
"evidence": {
"implementation_status": null,
"path": "coverage/io-ack.report.json",
"schema": "io-ack-report.v1",
"sha256": "516de819b6875559139adccc1584534f8b6a92be198c5982ad295ea2b37aa538",
"status": "verified",
"task_id": "P4-05"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "IO Worker/native tests",
"task_id": "P4-05",
"title": "IO command/ack/timeout/estop/recover"
},
{
"acceptance": "资源和能力限制稳定",
"depends_on": "P2-01",
"evidence": {
"implementation_status": null,
"path": "coverage/python-runtime-closure.report.json",
"schema": "python-runtime-closure-report.v1",
"sha256": "f2e81ac33c971766f759e92aaba1a358a9bc37bd84b53e574d2295c07ac51d8f",
"status": "verified",
"task_id": "P5-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "runtime manifest/report",
"task_id": "P5-01",
"title": "Pyodide runtime、模块白名单和虚拟时钟"
},
{
"acceptance": "正常、异常、禁止能力",
"depends_on": "P5-01/P3-04",
"evidence": {
"implementation_status": null,
"path": "coverage/python-api.report.json",
"schema": "python-api-report.v1",
"sha256": "536b5901ce88101da7b91e63fa6ddd2fc404778b58c75ed2e22b02408b479f85",
"status": "verified",
"task_id": "P5-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "API compatibility tests",
"task_id": "P5-02",
"title": "Python linuxcnc/hal/INI/tool/parameter API"
},
{
"acceptance": "异常不破坏 Worker 核心",
"depends_on": "P5-02/P4-01",
"evidence": {
"implementation_status": null,
"path": "coverage/python-callbacks.report.json",
"schema": "python-callbacks-report.v1",
"sha256": "5001e9824ad34a024c1f2c0fe16fbdab9aa242ae4412ac0830f993954ff6b660",
"status": "verified",
"task_id": "P5-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "remap/VCP report",
"task_id": "P5-03",
"title": "remap/filter/VCP callback 和隔离"
},
{
"acceptance": "导入导出 round-trip",
"depends_on": "P1-02/P3-05/P4-05/P5-03",
"evidence": {
"implementation_status": null,
"path": "coverage/trace-export.report.json",
"schema": "trace-export-report.v1",
"sha256": "57e0d9a0a0a98907a73d25d01d19cfd525c4c2f4c33baf470b32f657b8ab7abb",
"status": "verified",
"task_id": "P6-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "schema/hash tests",
"task_id": "P6-01",
"title": "snapshot/event/trace 全状态导出"
},
{
"acceptance": "crash、半提交、确认丢失",
"depends_on": "P6-01/P1-03",
"evidence": {
"implementation_status": null,
"path": "coverage/reconciliation.report.json",
"schema": "reconciliation-report.v1",
"sha256": "e882196ab3ef32f7071fb6924db8a8f56aadeadd85e7602c20fdb1659ec21f7c",
"status": "verified",
"task_id": "P6-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "recovery matrix",
"task_id": "P6-02",
"title": "journal/checkpoint/operation reconciliation"
},
{
"acceptance": "离线、配额、版本迁移",
"depends_on": "P6-02/P2-01",
"evidence": {
"implementation_status": null,
"path": "coverage/offline-migration.report.json",
"schema": "offline-migration-report.v1",
"sha256": "bc931f4100f791347020842d0ed2bf9cdf449af2c97446320219b839ed9c70b1",
"status": "verified",
"task_id": "P6-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "browser recovery report",
"task_id": "P6-03",
"title": "OPFS/offline/migration/rollback"
},
{
"acceptance": "seq、schema、timeout、cancel",
"depends_on": "P1-03/P6-01",
"evidence": {
"implementation_status": null,
"path": "coverage/worker-protocol.report.json",
"schema": "worker-protocol-report.v1",
"sha256": "bf729cb4168f11613ff5629b1fb2ddc44e55655419ac74909839bb08cc693d61",
"status": "verified",
"task_id": "P7-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "protocol E2E",
"task_id": "P7-01",
"title": "Worker protocol/client、backpressure、cancel"
},
{
"acceptance": "真实 Worker,不用 mock",
"depends_on": "P3-04/P7-01",
"evidence": {
"implementation_status": null,
"path": "coverage/editor-workflow.report.json",
"schema": "editor-workflow-report.v1",
"sha256": "1e21b24b54123a830025c0f2bbfeac202d415e489c360521ee8c831767970241",
"status": "verified",
"task_id": "P7-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "browser E2E",
"task_id": "P7-02",
"title": "editor/diagnostic/MDI/run workflow"
},
{
"acceptance": "snapshot/event 单向消费",
"depends_on": "P4/P5/P7-01",
"evidence": {
"implementation_status": null,
"path": "coverage/authoritative-panels.report.json",
"schema": "authoritative-panels-report.v1",
"sha256": "8d12e32b2032ab248b743591b3cbad1e55bcd620dab1845f90d0e317fb58865f",
"status": "verified",
"task_id": "P7-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "UI tests",
"task_id": "P7-03",
"title": "state/HAL/IO/Python/PLC/alarm panels"
},
{
"acceptance": "非空、姿态和轨迹跟随 authoritative state",
"depends_on": "P3-05/P7-03",
"evidence": {
"implementation_status": null,
"path": "coverage/machine-view.report.json",
"schema": "machine-view-report.v1",
"sha256": "067ef64e9e20e27e46f675bdf1977c4950847e2f537196fcc6f391cd03214155",
"status": "verified",
"task_id": "P7-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "WebGL/canvas tests",
"task_id": "P7-04",
"title": "Three.js pose/joint/toolpath/stock view"
},
{
"acceptance": "恢复状态可操作、错误可定位",
"depends_on": "P6-03/P7-02",
"evidence": {
"implementation_status": null,
"path": "coverage/recovery-ux.report.json",
"schema": "recovery-ux-report.v1",
"sha256": "156aa7ab88172325922ee65479a1380dec01763ad8d784702fcff160e8bb2375",
"status": "verified",
"task_id": "P7-05"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "browser fault E2E",
"task_id": "P7-05",
"title": "recovery/offline/error/permission UX"
},
{
"acceptance": "同输入、同命令、首差 tick",
"depends_on": "P0-03/P3/P4",
"evidence": {
"implementation_status": null,
"path": "coverage/native-oracle-closure.report.json",
"schema": "native-oracle-closure-report.v1",
"sha256": "d001ce551dde7451efa113ec986f34d631c2ff9d14e7e9135377033ce1f1fb53",
"status": "verified",
"task_id": "P8-01"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "JSONL oracle",
"task_id": "P8-01",
"title": "native oracle runner 和 golden schema"
},
{
"acceptance": "每入口 READY 或诊断 BLOCKED",
"depends_on": "P2-04/P8-01",
"evidence": {
"implementation_status": null,
"path": "coverage/startup-matrix-closure.report.json",
"schema": "startup-matrix-closure-report.v1",
"sha256": "359ab4318841cbab7b6c3256b217df9a7aa4b4559d6cd026a22cbb88f23b260f",
"status": "verified",
"task_id": "P8-02"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "startup/diff matrix",
"task_id": "P8-02",
"title": "全量 sim entrypoint matrix"
},
{
"acceptance": "1x/fast/step/recover hash 一致",
"depends_on": "P8-02/P6",
"evidence": {
"implementation_status": null,
"path": "coverage/determinism.report.json",
"schema": "determinism-report.v1",
"sha256": "48ea763cfbea64314d9d97dc550a14a67ae4306e2c322d9be5e5a776c00995e6",
"status": "verified",
"task_id": "P8-03"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "determinism report",
"task_id": "P8-03",
"title": "三次重复和执行模式 determinism"
},
{
"acceptance": "P95/P99、配额、WebGL、离线",
"depends_on": "P7/P8-03",
"evidence": {
"implementation_status": null,
"path": "coverage/browser-matrix-closure.report.json",
"schema": "browser-matrix-closure-report.v1",
"sha256": "f191a6e5bc2ec2887cf8bbc29806bda16b16449a7524a08ff6fcd38ab2a20b99",
"status": "verified",
"task_id": "P8-04"
},
"evidence_state": "EVIDENCE_VERIFIED",
"planned_outputs": "perf/compat report",
"task_id": "P8-04",
"title": "browser/performance/memory/offline matrix"
},
{
"acceptance": "所有排除项和剩余 blocker 显式保留",
"depends_on": "P8-02/P8-04",
"evidence": {
"implementation_status": null,
"path": "coverage/release-closure.report.json",
"schema": "release-closure-report.v1",
"sha256": "229a7dc2caef03dc6b90507b5f692f2592e7928da6094c9040b02321cc50bd5c",
"status": "blocked",
"task_id": null
},
"evidence_state": "EVIDENCE_BLOCKED",
"planned_outputs": "release evidence",
"task_id": "P8-05",
"title": "来源/许可证/下载/迁移/回滚交付闭合"
}
]
}
}