Files
FreeCADWasmDev/docs/current/failure-patterns.json
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

151 lines
17 KiB
JSON
Raw 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.
{
"schema": "freecad-web-failure-patterns/v1",
"updatedAt": "2026-09-15T04:03:01.731484+00:00",
"patterns": [
{
"category": "other",
"occurrences": 2785,
"unresolved": 1762,
"prevention": "保留首错,先做最小复现和增量修复,不重复整批重试。",
"representativeCommand": "/bin/bash -lc \"cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && sed -n '1,260p' docs/current/task-state.json && sed -n '1,360p' docs/current/context-manifest.json && sed -n '1,360p' nextTask.md && sed -n '1,360p' docs/current/module-batch-manifest.json && sed -n '1,260p' docs/current/continuation-state.json\"",
"representativeError": "{ \"schema\": \"freecad-web-task-state/v1\", \"generated_at\": \"2026-09-03\", \"active_task\": \"FW-P6-FPA-Y\", \"default_status\": \"planned\", \"source_matrix\": \"docs/web-parity-matrix.json\", \"source_matrix_sha256\": \"fba71b1c3cb7b3e9172cce83a04aa9fc544651f146eb7879633512814614534b\", \"module_status\": { \"Assembly\": \"completed\", \"BIM\": \"completed\", \"CAM\": \"completed\", \"Cloud\": \"completed\", \"Draft\": \"completed\", \"Fem\": \"completed\", \"Help\": \"completed\", \"Import\": \"completed\", \"Inspection\": \"completed\", \"JtReader\": \"completed\", \"Material\": \"completed\", \"Measure\": \"completed\", \"Mesh\": \"completed\", \"MeshPart\": \"completed\", \"OpenSCAD\": \"completed\", \"Part\": \"completed\", \"PartDesign\": \"completed\", \"Plot\": \"comple...",
"lastSeenAt": "2026-09-15T04:03:01.221810+00:00"
},
{
"category": "inspection-scope",
"occurrences": 977,
"unresolved": 436,
"prevention": "使用 manifest-scoped fast_source_search 或显式当前文件;git diff/status 必须带 -- pathspec。",
"representativeCommand": "/bin/bash -lc 'git diff --stat && git diff --check && test -f web/tsconfig.json && npx --prefix web tsc --noEmit -p web/tsconfig.json'",
"representativeError": "SCHEDULER_GIT_SCOPE_REJECTED: git diff requires '-- <current-files...>' in implementation turns",
"lastSeenAt": "2026-09-15T04:03:00.486589+00:00"
},
{
"category": "path-or-artifact-missing",
"occurrences": 533,
"unresolved": 321,
"prevention": "使用绝对 workspace 路径,并将 build tree 归一到实际 bin/artifact 目录。",
"representativeCommand": "/bin/bash -lc \"cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && rg -n 'prepare_bim_probe_resources.py' /home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/WebAssembly/FreeCADCoreProbe/CMakeLists.txt /home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/CMakeLists.txt /home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/CMakeLists.txt\"",
"representativeError": "rg: /home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/CMakeLists.txt: No such file or directory (os error 2) /home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/WebAssembly/FreeCADCoreProbe/CMakeLists.txt:976:# Staging is regenerated by tools/prepare_bim_probe_resources.py before builds.",
"lastSeenAt": "2026-09-15T00:23:42.874978+00:00"
},
{
"category": "runtime-timeout",
"occurrences": 276,
"unresolved": 130,
"prevention": "保留真实边界,只允许一次受控重试;后续按 evidence 去重。",
"representativeCommand": "/bin/bash -lc \"cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && timeout 120s bash -c 'while pgrep -f \\\"python3 - <<\\\" >/dev/null || pgrep -f \\\"node tools/replay_scheduler_failures_20260903.mjs\\\" >/dev/null; do sleep 5; done' && pgrep -af 'python3 - <<|replay_scheduler_failures_20260903' || true\"",
"representativeError": "",
"lastSeenAt": "2026-09-11T14:20:15.208712+00:00"
},
{
"category": "esm-cjs-worker",
"occurrences": 148,
"unresolved": 89,
"prevention": "将 pthread worker staging 为 .worker.cjs,并通过 locateFile 指向 staging 文件。",
"representativeCommand": "/bin/bash -lc \"cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && timeout 60s node --input-type=module - <<'NODE' import fs from 'node:fs'; import path from 'node:path'; import {createRequire} from 'node:module'; import {pathToFileURL} from 'node:url'; const b=path.resolve('freecad-source/build-web/configure/bin'); globalThis.__dirname=b+path.sep; globalThis.require=createRequire(import.meta.url); const m=await import(pathToFileURL(path.join(b,'FreeCADWebBimRuntimeProbe.js'))); const k=awai...",
"representativeError": "BuildingPart.getShapes {\"ok\":false,\"cmd\":\"\",\"code\":\"native_error\",\"error\":\"unknown BIM native dispatch failure\"} file:///home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/configure/bin/FreeCADWebBimRuntimeProbe.js:9 function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}r...",
"lastSeenAt": "2026-09-11T10:21:12.292609+00:00"
},
{
"category": "build-command-failure",
"occurrences": 97,
"unresolved": 27,
"prevention": "先运行 link-closure preflight,使用当前模块主 probe 和 -j8;失败后只允许一次定点重试。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 tools/prepare_bim_probe_resources.py && cmake --build freecad-source/build-web/configure --target FreeCADWebBimRuntimeProbe -j8'",
"representativeError": "usage: prepare_bim_probe_resources.py [-h] --output OUTPUT prepare_bim_probe_resources.py: error: the following arguments are required: --output",
"lastSeenAt": "2026-09-14T23:36:32.881299+00:00"
},
{
"category": "gate-command-failure",
"occurrences": 67,
"unresolved": 51,
"prevention": "先运行当前批次预检并确认 gate 使用当前 manifest、正确 build/bin 路径和现有 artifact。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && node tools/run_p6_mesh_object_module_batch_gate.mjs /home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/configure/bin'",
"representativeError": "",
"lastSeenAt": "2026-09-09T04:20:02.334681+00:00"
},
{
"category": "wasm-memory",
"occurrences": 64,
"unresolved": 5,
"prevention": "缩小当前功能族批次,检查 initial memory 和单条 fixture 的资源释放。",
"representativeCommand": "/usr/bin/python3 tools/run_business_acceptance.py --reuse --module BIM --ids business-format:BIM:export:.obj business-format:BIM:import:.obj",
"representativeError": "--- extracted business diagnostics --- {\"reason\": \"bim.formatWorkflow: JSON import succeeds: {\\\"ok\\\":false,\\\"cmd\\\":\\\"bim.formatWorkflow\\\",\\\"code\\\":\\\"native_error\\\",\\\"error\\\":\\\"BIM geometry-value source execution failed: module 'importers' has no attribute 'load'\\\"}\\nbim.formatWorkflow: roundtrip restores both edited solids and placement: [{\\\"name\\\":\\\"Existing\\\",\\\"label\\\":\\\"Existing\\\",\\\"volume\\\":6,\\\"bounds\\\":[-30,0,0,-27,2,1]}]\\nbim.formatWorkflow: JSON import succeeds: {\\\"ok\\\":false,\\\"cmd\\\":\\\"bim.formatWorkflow\\\",\\\"code\\\":\\\"native_e\\n... output middle omitted; failure tail follows ...\\ns123456/FreeCADWasmDev/working/FreeCAD/tools/bim-recovery-business-cases.mjs:407:19)\\n at file:///home/m...",
"lastSeenAt": "2026-09-10T20:57:30.071657+00:00"
},
{
"category": "link-missing-library",
"occurrences": 58,
"unresolved": 14,
"prevention": "先运行 check_web_link_closure,补齐真实归档或移除无用可选依赖,再重链。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && EM_CONFIG=/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/emscripten-config.py EM_CACHE=/tmp/freecad-p6-emcache EM_FROZEN_CACHE= EMCC_CORES=8 cmake --build freecad-source/build-web/configure --target FreeCADWebAssemblyProbe -j8'",
"representativeError": "[1/1] Linking CXX executable bin/FreeCADWebAssemblyProbe.js FAILED: bin/FreeCADWebAssemblyProbe.js : && /usr/bin/em++ -Wall -Wextra -Wpedantic -Wno-write-strings -fdiagnostics-color -include/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/FCWebRangesCompat.h -Wno-undefined-var-template -g -O0 -DFC_DEBUG -O2 -g0 --no-entry -sWASM=1 -sMODULARIZE=1 -sEXPORT_ES6=1 -sEXPORT_NAME=FreeCADWebAssemblyProbe -sALLOW_MEMORY_GROWTH=1 -sINITIAL_MEMORY=33554432 -sENVIRONMENT=web,worker,node -sUSE_BZIP2=1 -sDISABLE_EXCEPTION_CATCHING=0 \"-sEXPORTED_RUNTIME_METHODS=['ccall']\" --embed-file=/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/python-pthread-install/lib/pyt...",
"lastSeenAt": "2026-09-12T15:57:37.484181+00:00"
},
{
"category": "gate-hardcoded-batch",
"occurrences": 37,
"unresolved": 21,
"prevention": "gate 必须读取当前 module-batch-manifest,不得硬编码 batchId/recordCount。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && PART_BATCH_MANIFEST=docs/p6/part-module-batch-42ec634ad97d472d26e94af1-replay.json timeout 180s node tools/run_p6_part_module_batch_gate.mjs freecad-source/build-web/configure/bin'",
"representativeError": "file:///home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/run_p6_part_module_batch_gate.mjs:22 if (batch.status !== \"ready\" || batch.selected?.module !== \"Part\" || ![\"tier-1-readonly\", \"tier-2-pure\", \"object-contract\"].includes(selectedTier) || typeof selectedFamily !== \"string\" || batch.records.length < 2 || batch.records.length > 32) throw new Error(\"unexpected Part module batch manifest\"); ^ Error: unexpected Part module batch manifest at file:///home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/run_p6_part_module_batch_gate.mjs:22:250 at ModuleJob.run (node:internal/modules/esm/module_job:439:25) at async node:internal/modules/esm/loader:643:26 at async asyncRunEntryPointWithESMLo...",
"lastSeenAt": "2026-09-15T00:49:55.003463+00:00"
},
{
"category": "node-module-missing",
"occurrences": 37,
"unresolved": 18,
"prevention": "先确认目标 runtime/wasm/worker artifact 存在,再运行 gate。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && timeout 120s node tools/run_p6_data_property_family_gate.mjs freecad-source/build-web/configure/bin'",
"representativeError": "node:internal/modules/esm/resolve:271 throw new ERR_MODULE_NOT_FOUND( ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/configure/bin/FreeCADWebDataPropertyFamilyProbe.js' imported from /home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/run_p6_data_property_family_gate.mjs at finalizeResolution (node:internal/modules/esm/resolve:271:11) at moduleResolve (node:internal/modules/esm/resolve:865:10) at defaultResolve (node:internal/modules/esm/resolve:992:11) at #cachedDefaultResolve (node:internal/modules/esm/loader:701:20) at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:721:38) at ModuleLoad...",
"lastSeenAt": "2026-09-11T13:54:21.501722+00:00"
},
{
"category": "orchestration-command-failure",
"occurrences": 23,
"unresolved": 17,
"prevention": "只执行当前状态机允许的增量入口,发现 checkpoint/context 失配先修复再领取任务。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 tools/rotate_web_task_context.py --reason completed --next-task FW-P6-FPA-Y && python3 tools/sync_web_task_state.py --active FW-P6-FPA-Y && python3 tools/prepare_web_task_context.py && python3 tools/validate_web_context.py'",
"representativeError": "wrote docs/current/task-state.json: 1097 tasks, active=FW-P6-FPA-Y CONTEXT PACKET READY: FW-P6-FPA-Y; 13859B/16384B, ~3464 tokens, 0 evidence files; manifest=/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/context/FW-P6-FPA-Y.json; summary=/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/FREECAD_WEB_CONTEXT_MIN.md - excluded: docs/tasks/p6/full-parity/FW-P6-FPA-Y.md (evidence exceeds per-file context cap) - excluded: docs/p6/full-parity-gate.json (evidence exceeds per-file context cap) - excluded: docs/p6/python-api-manifest.json (evidence exceeds per-file context cap) - excluded: docs/p6/full-parity-gate.md (evidence byte budget) - excluded: docs/tasks/p6/full-pari...",
"lastSeenAt": "2026-09-14T18:44:01.677375+00:00"
},
{
"category": "context-batch-stale",
"occurrences": 20,
"unresolved": 5,
"prevention": "先运行 continuation checker,再按当前 manifest 重建 context;不得直接运行 gate。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 tools/check_continuation_state.py && python3 tools/validate_web_context.py'",
"representativeError": "CONTINUATION_STATE_INVALID: continuation batchId does not match module batch manifest",
"lastSeenAt": "2026-09-04T16:22:53.043173+00:00"
},
{
"category": "target-alias",
"occurrences": 18,
"unresolved": 11,
"prevention": "使用当前模块主 probe;闭包预检可自动将 target 别名解析到实际目标。",
"representativeCommand": "/bin/bash -lc 'cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 tools/check_continuation_state.py && python3 tools/check_web_link_closure.py freecad-source/build-web/configure/bin FreeCADWebPartBoxProbe --json && test -f freecad-source/build-web/configure/bin/FreeCADWebPartBoxProbe.wasm && test -f freecad-source/build-web/configure/bin/FreeCADWebPartBoxProbe.js && echo ARTIFACTS_PRESENT'",
"representativeError": "CONTINUATION_STATE_READY: active=FW-P6-FPA-Y phase=IMPLEMENT_BATCH mustContinue=true noFinalBeforeTerminate=true RESUME_COMMAND: python3 tools/continue_web_task_cycle.py {\"schema\": \"freecad-web-link-preflight/v1\", \"buildDirectory\": \"/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/build-web/configure/bin\", \"target\": \"FreeCADWebPartBoxProbe\", \"errors\": [\"link rule not found for FreeCADWebPartBoxProbe\"], \"warnings\": []}",
"lastSeenAt": "2026-09-08T09:12:35.896643+00:00"
},
{
"category": "shell-syntax",
"occurrences": 9,
"unresolved": 3,
"prevention": "避免复杂内嵌 shell/Python 拼接,改用已有工具或独立脚本。",
"representativeCommand": "/bin/bash -lc \"cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 - <<'PY' import json, subprocess for key in ['3d7b87078eb7d59b5405']: cmd=json.load(open('docs/current/freecad-web-scheduler-failures.json'))['failures'][key]['command'] p=subprocess.run(cmd,shell=True,text=True,capture_output=True) print('key',key,'exit',p.returncode) print((p.stdout+'\\\\n'+p.stderr)[-2500:]) if p.returncode: raise SystemExit(p.returncode) PY\"",
"representativeError": "key 3d7b87078eb7d59b5405 exit 2 /bin/bash: line 1: warning: here-document at line 1 delimited by end-of-file (wanted `PY') /bin/bash: -c: line 1: syntax error near unexpected token `(' /bin/bash: -c: line 1: `cd /home/mes123456/FreeCADWasmDev/working/FreeCAD && python3 - <<'PY' import json, subprocess, sys from pathlib import Path sys.path.insert(0, 'tools') import run_freecad_web_scheduler as sched keys=['d8adbe1d57f5337d2df4','5edf8e1a9fdd7a075e31','eb0aa522833316439ddc','d9af1131d2221d88009b','285fefc5661260434679','1a736f486824f4769b89','490b7cb48eb8ac5615ec','da3dc21fe80f404d135f'] ledger=json.loads(Path('docs/current/freecad-web-scheduler-failures.json').read_text())['failures'] fai...",
"lastSeenAt": "2026-09-09T21:20:25.955072+00:00"
},
{
"category": "native-dispatch",
"occurrences": 3,
"unresolved": 1,
"prevention": "先单条 native dispatcher 探针定位,再修共享 fixture,不重复整批 gate。",
"representativeCommand": "/usr/bin/python3 tools/run_business_acceptance.py --reuse --module Points --ids Points:desktop:Points_Merge Points:desktop:Points_Structure Points:points.createRecompute Points:points.desktopBatch Points:points.saveReopen business-format:Points:export:.obj business-format:Points:import:.ply",
"representativeError": "--- extracted business diagnostics --- {\"reason\": \"business-format:Points:import:.ply: AssertionError [ERR_ASSERTION]: {\\\"schema\\\":\\\"freecad-web-facade/v1\\\",\\\"version\\\":1,\\\"kind\\\":\\\"error\\\",\\\"requestId\\\":\\\"ply-102\\\",\\\"error\\\":{\\\"code\\\":\\\"native_dispatch_failed\\\",\\\"message\\\":\\\"Points desktop native dispatch failed\\\"}}\\n\\n'error' !== 'result'\\n\\n at importPoints (file:///home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/points-business-cases.mjs:96:18)\\n at async file:///home/mes123456/FreeCADWasmDev/working/FreeCAD/tools/points-business-cases.mjs:151:32\", \"status\": \"acceptance_incomplete\", \"exitCode\": 1, \"remaining\": [\"business-format:Points:import:.ply\"], \"evidencePath\": \"docs/current/b...",
"lastSeenAt": "2026-09-09T20:22:32.639190+00:00"
}
]
}