Files
linuxcncWebWASM/coverage/full-linuxcnc-simulation-gap-audit.report.json

804 lines
30 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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": "来源/许可证/下载/迁移/回滚交付闭合"
}
]
}
}