151 lines
17 KiB
JSON
151 lines
17 KiB
JSON
{
|
||
"schema": "freecad-web-failure-patterns/v1",
|
||
"updatedAt": "2026-09-18T09:18:55.748304+00:00",
|
||
"patterns": [
|
||
{
|
||
"category": "other",
|
||
"occurrences": 4222,
|
||
"unresolved": 2480,
|
||
"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-18T09:18:55.208756+00:00"
|
||
},
|
||
{
|
||
"category": "inspection-scope",
|
||
"occurrences": 1442,
|
||
"unresolved": 532,
|
||
"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-18T05:45:20.072277+00:00"
|
||
},
|
||
{
|
||
"category": "path-or-artifact-missing",
|
||
"occurrences": 714,
|
||
"unresolved": 423,
|
||
"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-18T04:29:01.960166+00:00"
|
||
},
|
||
{
|
||
"category": "runtime-timeout",
|
||
"occurrences": 307,
|
||
"unresolved": 141,
|
||
"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-18T01:00:21.032669+00:00"
|
||
},
|
||
{
|
||
"category": "gate-hardcoded-batch",
|
||
"occurrences": 236,
|
||
"unresolved": 166,
|
||
"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-18T05:45:21.311760+00:00"
|
||
},
|
||
{
|
||
"category": "esm-cjs-worker",
|
||
"occurrences": 158,
|
||
"unresolved": 94,
|
||
"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-18T03:37:57.844840+00:00"
|
||
},
|
||
{
|
||
"category": "build-command-failure",
|
||
"occurrences": 119,
|
||
"unresolved": 33,
|
||
"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-18T01:59:23.689084+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": "node-module-missing",
|
||
"occurrences": 61,
|
||
"unresolved": 27,
|
||
"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-18T01:07:25.780662+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": "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": 15,
|
||
"unresolved": 7,
|
||
"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-17T23:58:07.177227+00:00"
|
||
},
|
||
{
|
||
"category": "native-dispatch",
|
||
"occurrences": 7,
|
||
"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-17T13:53:47.674157+00:00"
|
||
}
|
||
]
|
||
}
|