feat(web): add source-first Python autopilot and optimize provider waits
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled

This commit is contained in:
mes123456
2026-09-08 10:59:49 +08:00
parent a69e41457a
commit edcf0fef9a
29 changed files with 10149 additions and 412 deletions

View File

@@ -0,0 +1,60 @@
{
"schemaVersion": 1,
"operation": "PYTHON_UNATTENDED_SUPERVISOR_IMPLEMENTATION",
"observedOn": "2026-09-08",
"updatedAt": "2026-09-08 10:55",
"timezone": "Asia/Shanghai",
"queueTask": "WBV2-P1424-001",
"parentManifest": "tests/golden/WBV2-P1424-000/manifest.json",
"programImplemented": true,
"blenderMigrationComplete": false,
"queueAdvancedByThisChange": false,
"sourceInventory": {
"unitCount": 3802,
"verifiedUnits": 1025,
"unverifiedUnits": 2777,
"unitsWithInvalidEvidenceReferences": 902,
"sourceTreeSha256": "311791df5e2b96c31ee9cefd5ab0c9a8ded87309f1a814c3b92dec328a607d6a",
"boundUnitDelta": 0
},
"checks": [
{ "command": "python3 -m unittest discover -s my-tools -p test_wbv2_autopilot.py", "exitCode": 0, "passedTests": 33 },
{ "command": "npm --prefix web run test:context-governance", "exitCode": 0, "passedTests": 11 },
{ "command": "python3 -m py_compile my-tools/wbv2_autopilot.py my-tools/run_web_product_migration.py my-tools/show_blender_web_scheduler.py", "exitCode": 0 },
{ "command": "node tools/web/run-wbv2-scheduler.mjs --preflight-only", "exitCode": 2, "expected": true, "reason": "incomplete task has no implementation entrypoint; index termination is no longer false completion" },
{ "command": "bash -n my-tools/start_unattended.sh", "exitCode": 0 },
{ "command": "git diff --check", "exitCode": 0 }
],
"launchSnapshot": {
"historicalSnapshot": true,
"command": "python3 my-tools/run_web_product_migration.py start",
"exitCode": 0,
"pid": 2035708,
"childPid": 2035763,
"state": "implementing",
"activeJob": "SERVER-OPERATOR-HTTP-PROVIDER",
"statusCommand": "python3 my-tools/run_web_product_migration.py status",
"checkpoint": "tests/golden/WBV2/autopilot/state.json"
},
"artifacts": {
"supervisor": { "path": "my-tools/wbv2_autopilot.py", "sha256": "c1ef9f130fac5913480c4c5a73ddced87275b8f6956585d631cedf3beac79acb" },
"timing": { "path": "my-tools/wbv2_timing.py", "sha256": "3bdfd71ba16a28fda9fad0a3cc993a8c64aa93d9dcfc65c0ed581b4f507dfdfd" },
"policy": { "path": "my-tools/wbv2_autopilot_policy.json", "sha256": "430cfee026deaf3d72bb3417bc640ed0e4f37c1ad1860a947cc54b2dd4586dc7" },
"tests": { "path": "my-tools/test_wbv2_autopilot.py", "sha256": "5733cdc2041a0df94942d48f677249a008fae0e75c07b12d113ecfb16ceb3e9e" },
"testLog": { "path": "tests/golden/WBV2-P1424-001/autopilot-tests.log", "sha256": "fba75567456bcf394e2dbb73fbbd46b7c6b96268d804c7a7b60b3c0cbd12d1c3" },
"entrypoint": { "path": "my-tools/run_web_product_migration.py", "sha256": "310a740d4d76d2a0f330a9c9d1f5583d412a38894382aea69e4eeb53b163d828" },
"documentation": { "path": "my-tools/AUTOPILOT.md", "sha256": "c8888bcae987dfde1bbffc020d659e1c675ad800655725aede7b11c9545fdd94" },
"performance": { "path": "tests/golden/WBV2-P1424-001/performance-optimization-report.json", "sha256": "6cccd401292d4f0f008a4716aa5f222ae0c55e716aee23fe34bfd21acbe6896f" }
},
"limits": {
"workerAndCheckTimeoutSeconds": 1800,
"modelStartTimeoutSeconds": 60,
"modelIdleTimeoutSeconds": 180,
"providerFailureBudget": 4,
"attemptsPerWorkflow": 3,
"reportedTokensPerRun": 500000,
"buildJobs": 8,
"runtime": "Chromium only",
"liveDeployment": "not performed by implementation workers"
}
}

View File

@@ -0,0 +1,21 @@
....{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "diff", "--name-only", "-z", "HEAD"], "cwd": ".", "phase": "git_diff", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/ffbfeed16e5a4a3e90ec5d90850e3a2e.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "diff", "--name-only", "-z", "HEAD"], "cwd": ".", "phase": "git_diff", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/ffbfeed16e5a4a3e90ec5d90850e3a2e.log", "exitCode": 0, "durationSeconds": 0.002486, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "7529b91ac69a737f5f0a199392966ea417fd1a690365e2d1ef9bf19df008979a", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "ls-files", "--others", "--exclude-standard", "-z"], "cwd": ".", "phase": "git_ls-files", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/5273e581d053477cba6c9780836eb952.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "ls-files", "--others", "--exclude-standard", "-z"], "cwd": ".", "phase": "git_ls-files", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/5273e581d053477cba6c9780836eb952.log", "exitCode": 0, "durationSeconds": 0.001814, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "1fc2ea0a9701bb979fde2750cccf75dd64902f090932bc6617d69532bf03ad05", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/35eef3bff75f46b5b1243731e96356c6.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/35eef3bff75f46b5b1243731e96356c6.log", "exitCode": 0, "durationSeconds": 0.001906, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "1fdd00ec61025cc7d1255f9b001245011b6d2afba27f91cc94fa578d4684c11c", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "branch", "--show-current"], "cwd": ".", "phase": "git_branch", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/c83a2294ac1f4387aa63f7fe4381485d.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "branch", "--show-current"], "cwd": ".", "phase": "git_branch", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/c83a2294ac1f4387aa63f7fe4381485d.log", "exitCode": 0, "durationSeconds": 0.001841, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "6403203dd5a0867eb14d104ee8a73730bd72dd9ad92e78d996a6dba0a5dcfc01", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/4d1296bf4b9240469c5f08036a2f10d8.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/4d1296bf4b9240469c5f08036a2f10d8.log", "exitCode": 0, "durationSeconds": 0.001801, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "1fdd00ec61025cc7d1255f9b001245011b6d2afba27f91cc94fa578d4684c11c", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "add", "-f", "--", "source.cpp"], "cwd": ".", "phase": "git_add", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/a85a3037de4e4423887db775e64c03cd.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "add", "-f", "--", "source.cpp"], "cwd": ".", "phase": "git_add", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/a85a3037de4e4423887db775e64c03cd.log", "exitCode": 0, "durationSeconds": 0.00186, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "commit", "--only", "-m", "feat(web): verified workflow WBV2-P42-001", "--", "source.cpp"], "cwd": ".", "phase": "git_commit", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/32b2d67b4286444790afce197b4652da.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "commit", "--only", "-m", "feat(web): verified workflow WBV2-P42-001", "--", "source.cpp"], "cwd": ".", "phase": "git_commit", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/32b2d67b4286444790afce197b4652da.log", "exitCode": 0, "durationSeconds": 0.004922, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "4a31687c5f083e9a80e973f3c90f27e979ad11c21ce645b45fbf77f105a5e39a", "finishedAt": "2026-09-08 10:54"}
{"time": "2026-09-08 10:54", "event": "process.started", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/f322aaa82f25411ea2e03697d042d681.log"}
{"time": "2026-09-08 10:54", "event": "process.finished", "argv": ["git", "rev-parse", "HEAD"], "cwd": ".", "phase": "git_rev-parse", "startedAt": "2026-09-08 10:54", "log": "tests/golden/WBV2/autopilot/git/f322aaa82f25411ea2e03697d042d681.log", "exitCode": 0, "durationSeconds": 0.001736, "interrupted": false, "timedOut": false, "logLimit": false, "providerAbort": null, "logSha256": "d5bbe3d9e19db362f6e234daf00ffde3e332d2bba64c421d7ff72300822ecc89", "finishedAt": "2026-09-08 10:54"}
.............................
----------------------------------------------------------------------
Ran 33 tests in 2.770s
OK

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

View File

@@ -0,0 +1,272 @@
{
"observedAt": "2026-09-08T01:24:58.634Z",
"origin": "https://49.232.250.35:58014",
"browser": "Chromium",
"steps": [
{
"name": "startup",
"status": "PASS",
"durationMs": 34167,
"detail": {
"title": "Blender 5.2.0 LTS - Web",
"secureContext": true,
"crossOriginIsolated": true,
"scripts": [
"https://49.232.250.35:58014/assets/index-DpqZcb_t.js"
]
}
},
{
"name": "open_fixture",
"status": "PASS",
"durationMs": 692,
"detail": {
"objects": 3,
"coverage": "Feature Routes\n3802/3802 source units classified\nMain 1755 · Server 1613 · Browser 434 · Unavailable 0\nRoute gaps 0 · Evidence 1025 verified / 2777 unverified"
}
},
{
"name": "add_cube",
"status": "PASS",
"durationMs": 391,
"detail": {
"objects": 4
}
},
{
"name": "undo_redo",
"status": "PASS",
"durationMs": 446,
"detail": {
"undoObjects": 3,
"redoObjects": 4
}
},
{
"name": "save_reopen",
"status": "PASS",
"durationMs": 1185,
"detail": {
"suggestedFilename": "blender-web.blend",
"byteLength": 205638,
"sha256": "29f7f3f90e04454b47c2bb715515bb41badfa87e4b73e73e95345d5517222f90",
"reopenedObjects": 4
}
},
{
"name": "duplicate_delete",
"status": "PASS",
"durationMs": 773,
"detail": {
"duplicatedObjects": 5,
"deletedObjects": 4
}
},
{
"name": "f3_local_operator_properties",
"status": "PASS",
"durationMs": 1121,
"detail": {
"form": "MESH_OT_primitive_cube_add\n执行",
"controls": 0
}
},
{
"name": "f3_server_operator_properties",
"status": "FAIL",
"durationMs": 1332,
"error": "{\"alert\":[\"SERVER_OPERATOR_HTTP_FAILED: 405\"],\"controls\":0}\n\n1 !== 0\n"
},
{
"name": "browser_equivalent_area_split",
"status": "FAIL",
"durationMs": 1492,
"error": "Area split switched workspace instead of splitting the active editor\n+ actual - expected\n\n+ 'Layout'\n- 'Modeling'\n"
},
{
"name": "workspace_surfaces",
"status": "PASS",
"durationMs": 2469,
"detail": {
"scope": "workspace presence only; not full functional verification",
"surfaces": [
{
"workspace": "Layout",
"editors": [
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Modeling",
"editors": [
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Sculpting",
"editors": [
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "UV Editing",
"editors": [
"Image Editor",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Texture Paint",
"editors": [
"Image Editor",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Shading",
"editors": [
"Image Editor",
"Shader Editor",
"File Browser",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Animation",
"editors": [
"3D Viewport",
"3D Viewport",
"Outliner",
"Properties",
"Dope Sheet"
]
},
{
"workspace": "Rendering",
"editors": [
"Render Result",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Compositing",
"editors": [
"Image Editor",
"Compositor",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Geometry Nodes",
"editors": [
"Geometry Nodes",
"Spreadsheet",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
{
"workspace": "Scripting",
"editors": [
"Text Editor",
"Python Console",
"Info",
"Outliner",
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
}
]
}
},
{
"name": "desktop_render",
"status": "PASS",
"durationMs": 131,
"detail": {
"canvases": [
{
"width": 1119,
"height": 713,
"rect": {
"x": 0,
"y": 58,
"width": 1119,
"height": 713,
"top": 58,
"right": 1119,
"bottom": 771,
"left": 0
}
}
],
"bodyWidth": 1440,
"viewportWidth": 1440,
"wasmResources": [
{
"url": "https://49.232.250.35:58014/vendor/blender/single/web_engine.wasm",
"duration": 135.66500002145767,
"transferSize": 369064
}
]
}
}
],
"errors": [],
"failedRequests": [],
"badResponses": [
{
"url": "https://49.232.250.35:58014/api/server-operator-job",
"status": 405
}
],
"areaSplitObservation": {
"before": {
"workspace": "Modeling",
"editors": [
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
},
"after": {
"workspace": "Layout",
"editors": [
"3D Viewport",
"Outliner",
"Properties",
"Timeline"
]
}
},
"finishedAt": "2026-09-08T01:25:42.978Z"
}

View File

@@ -0,0 +1,172 @@
{
"schemaVersion": 1,
"operation": "DEPLOYED_BLENDER_COMPLETION_AUDIT",
"observedAt": "2026-09-08T01:29:54.546Z",
"origin": "https://49.232.250.35:58014/",
"assessment": "Core online editing is functional; full desktop Blender migration is not complete or established by current evidence.",
"codeOrServerConfigurationChanged": false,
"productionDataModified": false,
"testMutationScope": "Fresh isolated Chromium context and repository-owned basic_scene.blend; no server operator submit job was executed.",
"newVerifiedInventoryUnits": 0,
"declaredImplementation": {
"modules": 16,
"implementedModules": 16,
"tasks": 34,
"implementedTasks": 34,
"verificationPolicy": "deferred_until_user_reports"
},
"inventory": {
"unitCount": 3802,
"sourceTreeSha256": "311791df5e2b96c31ee9cefd5ab0c9a8ded87309f1a814c3b92dec328a607d6a",
"routeCounts": {
"BROWSER_EQUIVALENT": 434,
"SERVER_NATIVE": 1613,
"WEB_MAIN": 1755
},
"behavioralEvidence": {
"status": "PARTIAL",
"verifiedUnits": 1025,
"unverifiedUnits": 2777,
"policy": "route classification does not replace exact behavioral evidence"
},
"recordedEvidencePercent": 26.96,
"byKind": {
"modifier-source": {
"total": 97,
"recordedVerified": 95,
"unverified": 2
},
"node": {
"total": 497,
"recordedVerified": 497,
"unverified": 0
},
"operator-macro": {
"total": 58,
"recordedVerified": 0,
"unverified": 58
},
"operator": {
"total": 2018,
"recordedVerified": 31,
"unverified": 1987
},
"rna-struct": {
"total": 979,
"recordedVerified": 306,
"unverified": 673
},
"web-command": {
"total": 153,
"recordedVerified": 96,
"unverified": 57
}
},
"sourceInventoryCheck": {
"command": "node tools/web/check-source-dynamic-inventory.mjs",
"exitCode": 0
},
"routeCatalogCheck": {
"command": "node tools/web/check-blender-feature-route-catalog.mjs",
"exitCode": 0
}
},
"deployment": {
"releaseId": "731af06aee6a2d2b61b902db9fd4b7bd5b04474e4689c48baf213fd5fcb3769f",
"wasmModuleManifestMatchesLocal": true,
"testedWasmSha256": "1c89a1fd0e00e30330d151cb9a42d9d54aabd5ed2c9ae45dd3b1961d9a0c75d5",
"deploymentCheck": {
"command": "node tools/web/check-deployed-web-blender.mjs",
"exitCode": 0,
"nativeObjectMutation": [
3,
4
],
"wasmRangeStatus": 206
},
"sshReadOnlyInspection": {
"service": "blender-web-58014.service",
"active": true,
"entrypoint": "/var/www/blender-web/current/tools/web/deployment-http-server.mjs",
"packagedRuntimeFiles": [
"deployment-http-server.mjs"
],
"observedPostStatus": 405,
"allowedMethods": [
"GET",
"HEAD"
],
"connectionClosed": true
}
},
"findings": [
{
"priority": "high",
"code": "SERVER_OPERATOR_PROVIDER_NOT_CONNECTED",
"endpoint": "/api/server-operator-job",
"evidence": "POST describe requests for mesh.primitive_cube_add and OBJECT_OT_modifier_apply returned 405; Chromium F3 showed SERVER_OPERATOR_HTTP_FAILED: 405.",
"impact": "The configured shared provider path blocks SERVER_NATIVE actions; catalog assigns 1613 units to this path. This does not mean 1613 distinct operations were individually tested.",
"sourceReference": "web/app/src/engine-client/WebEngineClient.ts:387"
},
{
"priority": "high",
"code": "BROWSER_ROUTE_SEMANTICS_INCOMPLETE",
"evidence": "From Modeling, SCREEN_OT_area_split switched to Layout and retained the same four editor areas.",
"impact": "Action-group classification does not implement each desktop operator. All 434 BROWSER_EQUIVALENT assignments require semantic acceptance; one mismatch was reproduced.",
"sourceReferences": [
"web/app/src/app/App.tsx:167",
"web/app/src/app/App.tsx:3534"
]
},
{
"priority": "high",
"code": "BEHAVIORAL_EVIDENCE_REFERENCE_DRIFT",
"evidence": "183/373 directly referenced artifacts have SHA-256 drift; 902/1025 recorded verified units are affected.",
"impact": "Recorded VERIFIED counts cannot be treated as current release acceptance. Matching references alone also do not establish full behavioral parity."
}
],
"limitations": [
"This is a focused production smoke test, not a full Blender operator/property/context matrix.",
"Workspace tabs were checked for presence only. Render quality, simulations, animation results, node evaluation, add-ons, Python compatibility, large-scene performance and context-specific editing were not exhaustively tested.",
"The local F3 cube form was present with zero typed property controls; its PASS result only establishes form presence.",
"Final screenshots after workspace switching are observations, not a stable-frame visual correctness assertion.",
"No queue, historical inventory, completion overlay, production source or server configuration was changed by this audit."
],
"artifacts": [
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/browser-area-split-result.png",
"byteLength": 187298,
"sha256": "0e31ca29f519c50a1f6c5a91d1c8436bbb56efcff108b093af4e77797e09bb50"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/chromium-report.json",
"byteLength": 6565,
"sha256": "867e63b65bef497593fefcd5884f0666752b3c59f0d4e18354d1b64d7cdeef94"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/desktop-final.png",
"byteLength": 111507,
"sha256": "9eac6d31197eb681e237503bcc20a046e26b73c64bd7e737892a4bf74bb2edca"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/desktop-open.png",
"byteLength": 178549,
"sha256": "0ecdceb9b8b04fc3eb4d9fb752ab7746b26e2d974520a78ba6b81b7e1456639c"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/evidence-integrity.json",
"byteLength": 246111,
"sha256": "4de65962c7e1a4ea93b04d200e62dc4a4ad986424bc6503e39dd007ab0143ecc"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/f3-server-result.png",
"byteLength": 180454,
"sha256": "600f61e19edef7bb476113fec5b75c09845ce42b60fcf97343fce21668920980"
},
{
"path": "tests/golden/WBV2-P1424-001/deployed-audit/roundtrip.blend",
"byteLength": 205638,
"sha256": "29f7f3f90e04454b47c2bb715515bb41badfa87e4b73e73e95345d5517222f90"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@@ -2,10 +2,11 @@
"schemaVersion": 1,
"task": "WBV2-P1424-001",
"parentTask": "WBV2-P1424-000",
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
"status": "done",
"operation": "WEB_PRODUCT_RUNTIME_CLOSURE_CHECKPOINT",
"status": "in_progress",
"implementationComplete": true,
"verificationDeferred": true,
"verificationDeferred": false,
"acceptanceComplete": false,
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1424-000/manifest.json",
@@ -25,7 +26,7 @@
},
"status": {
"path": "docs/status/WBV2-P1424-001.md",
"sha256": "570be0c64b5e05b534262b6932282f4b9984ca218e1e26719b8cacee39190cdc"
"sha256": "afdfe45e55c68a8c62956d5e075b522055b0fb8edefe37a480f830eabce2cf29"
},
"plan": {
"path": "tests/golden/WBV2-P1424-000/runtime-closure-plan.json",
@@ -33,7 +34,11 @@
},
"taskContext": {
"path": "tests/golden/WBV2-P1424-001/task-context.json",
"sha256": "f97153c590b294b8fa03dbd34c1bed8cd2808550aef549f6a37dfb7deb00ecb6"
"sha256": "77c7e929437b3588f05d62c3106d198fe4e326da85d230ee74c13ec0f050aa87"
},
"resumeReport": {
"path": "tests/golden/WBV2-P1424-001/resume-report.json",
"sha256": "9b96bfcc5ca87ab052b87c03cba0f146c21af2ce9a4e6b07edf164b97581e891"
}
},
"nextTask": null

View File

@@ -0,0 +1,201 @@
{
"schemaVersion": 1,
"operation": "AUTOPILOT_PERFORMANCE_OPTIMIZATION",
"observedAt": "2026-09-08 10:52",
"timezone": "Asia/Shanghai",
"labelPrecision": "minute",
"baseline": {
"schemaVersion": 1,
"observedAt": "2026-09-08 10:52",
"timezone": "Asia/Shanghai",
"labelPrecision": "minute",
"totalMeasuredMinutes": 14.1828,
"summary": [
{
"phase": "model_request",
"count": 2,
"seconds": 845.907,
"maxSeconds": 688.854,
"minutes": 14.0985,
"sharePercent": 99.41
},
{
"phase": "context_check",
"count": 4,
"seconds": 4.02,
"maxSeconds": 1.006,
"minutes": 0.067,
"sharePercent": 0.47
},
{
"phase": "git_ls-files",
"count": 1,
"seconds": 1.007,
"maxSeconds": 1.007,
"minutes": 0.0168,
"sharePercent": 0.12
},
{
"phase": "git_diff",
"count": 1,
"seconds": 0.029,
"maxSeconds": 0.029,
"minutes": 0.0005,
"sharePercent": 0.0
},
{
"phase": "git_rev-parse",
"count": 1,
"seconds": 0.002,
"maxSeconds": 0.002,
"minutes": 0.0,
"sharePercent": 0.0
}
],
"steps": [
{
"phase": "git_diff",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:10",
"seconds": 0.029,
"minutes": 0.0005,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/git/638a9273e10249f98ef046be57a81b32.log",
"providerAbort": null
},
{
"phase": "git_ls-files",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:10",
"seconds": 1.007,
"minutes": 0.0168,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/git/f4402401e72c4c958f487095a6561c1f.log",
"providerAbort": null
},
{
"phase": "git_rev-parse",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:10",
"seconds": 0.002,
"minutes": 0.0,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/git/b3a0220f89e34fe693cf6ddcddc331aa.log",
"providerAbort": null
},
{
"phase": "context_check",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:10",
"seconds": 1.006,
"minutes": 0.0168,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/preflight-0.log",
"providerAbort": null
},
{
"phase": "context_check",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:10",
"seconds": 1.004,
"minutes": 0.0167,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/preflight-1.log",
"providerAbort": null
},
{
"phase": "model_request",
"start": "2026-09-08 10:10",
"finish": "2026-09-08 10:21",
"seconds": 688.854,
"minutes": 11.4809,
"exitCode": 1,
"log": "tests/golden/WBV2/autopilot/runs/SERVER-OPERATOR-HTTP-PROVIDER-2b37d20fd07b/worker.jsonl",
"providerAbort": null
},
{
"phase": "context_check",
"start": "2026-09-08 10:21",
"finish": "2026-09-08 10:21",
"seconds": 1.005,
"minutes": 0.0167,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/preflight-0.log",
"providerAbort": null
},
{
"phase": "context_check",
"start": "2026-09-08 10:21",
"finish": "2026-09-08 10:21",
"seconds": 1.005,
"minutes": 0.0167,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/preflight-1.log",
"providerAbort": null
},
{
"phase": "model_request",
"start": "2026-09-08 10:21",
"finish": "2026-09-08 10:24",
"seconds": 157.053,
"minutes": 2.6176,
"exitCode": 0,
"log": "tests/golden/WBV2/autopilot/runs/SERVER-OPERATOR-HTTP-PROVIDER-4683ba870ac5/worker.jsonl",
"providerAbort": null
}
],
"workers": [],
"current": {},
"accounting": "Top-level measured spans only; worker item durations are nested and must not be added again. Legacy logs cannot recover per-event timing or unrecorded gaps."
},
"benchmark": {
"scope": "Same read-only context entrypoints: historical observed baseline versus three current samples per entrypoint; not whole-project throughput.",
"samples": [
{
"script": "check-task-context.mjs",
"seconds": 0.035114
},
{
"script": "check-task-context.mjs",
"seconds": 0.033912
},
{
"script": "check-task-context.mjs",
"seconds": 0.033473
},
{
"script": "check-context-governance.mjs",
"seconds": 0.065781
},
{
"script": "check-context-governance.mjs",
"seconds": 0.033451
},
{
"script": "check-context-governance.mjs",
"seconds": 0.065589
}
],
"baselineMedianMinutes": 0.01675,
"optimizedMedianMinutes": 0.000575,
"observedSpeedup": 29.12,
"observedReductionPercent": 96.57
},
"providerPolicy": {
"modelStartTimeoutSeconds": 60,
"modelIdleTimeoutSeconds": 180,
"providerBackoffSeconds": 30,
"providerMaxBackoffSeconds": 240,
"maxProviderFailures": 4
},
"sourcePolicy": {
"driver": "business_module_and_function_route",
"authority": "blender-5.2.0/source/blender",
"sourceFirst": true
},
"limitations": [
"Provider availability/account concurrency is external; these changes do not remove upstream limits.",
"No source capability completion or inventory increment is claimed.",
"Legacy JSONL lacks per-item timestamps; new runs record observed per-item intervals separately."
]
}

View File

@@ -0,0 +1,53 @@
# 无人值守执行耗时与优化
统计日期:2026-09-08。所有时间标签为北京时间,精确到分钟。
| 步骤 | 开始 | 结束 | 耗时(分钟) | 结果 |
| --- | --- | --- | ---: | --- |
| Git 基线准备 | 10:10 | 10:10 | 0.0173 | 完成 |
| 首轮上下文与治理检查 | 10:10 | 10:10 | 0.0335 | 通过 |
| 首次模型请求 | 10:10 | 10:21 | 11.4809 | 服务过载,退出 1,未执行代理操作 |
| 第二轮上下文与治理检查 | 10:21 | 10:21 | 0.0335 | 通过 |
| 第二次模型请求 | 10:21 | 10:24 | 2.6176 | 账号并发限制,维护暂停,未完成代理回合 |
| 代码修改、源码构建、Chromium 验收、交接 | 未开始 | 未开始 | 未产生样本 | 不计为完成 |
两次模型请求共占已测步骤耗时的 99.41%。旧日志没有逐事件时间戳,
未记录的重试和调度间隔不能伪造为已测步骤。主因是外部模型服务过载与
账号并发限制,尚无证据表明编译或浏览器测试是当前瓶颈。
## 已实施优化
- 新增分阶段计时和逐项事件观测,区分模型等待、读取、修改、命令、构建、
各类验收、证据哈希、重试退避和 Git 交接;嵌套耗时不重复累计。
- 没有代理操作时,明确过载或限流立即结束等待进程;无首次操作上限为
1 分钟。通过事件记录和源码哈希确认没有操作后才允许自动重试。
- 服务故障使用独立预算,按 0.5、1、2、最多 4 分钟退避,连续 4 次失败
停在 `provider_blocked`,不消耗功能实现尝试,不推进完成状态。
- 短命令等待进程结束,不再固定休眠 1 秒;心跳按配置间隔写入,重复证据
路径在单次指纹计算中只读取一次。
- 相同上下文检查的新样本中位耗时为 0.000575 分钟,旧样本为 0.016750
分钟,减少 96.57%,约 29.12 倍。此比较不是整个项目的吞吐量提升。
- 保持源码构建、类型检查、lint、Chromium、正负例、undo/redo、save/reopen
和确定性验收;没有通过减少功能验收来获得加速。
## 执行铁律
由功能模块业务与功能路由驱动移植,先检索用户提供的 Blender 源码和
相关资料,再解决 Web 实现问题。根 `AGENTS.md`、调度策略、代理契约和
验收记录均已绑定此规则,要求记录工作流、具体路由和原生源码文件。
验证:33 项监督程序回归测试、11 项上下文治理测试通过。本段新增源码
覆盖为 0;动态 inventory 为 3802 单元,账面已验证 1025、未验证 2777,
其中 902 个已验证单元的旧证据引用有漂移。sourceTreeSha256:
`311791df5e2b96c31ee9cefd5ab0c9a8ded87309f1a814c3b92dec328a607d6a`。
可复查命令:
```bash
python3 my-tools/run_web_product_migration.py timings
python3 my-tools/run_web_product_migration.py timings --json --write
python3 my-tools/benchmark_wbv2_autopilot.py
```
优化减少无效等待并改善调度开销,不能消除外部账号并发限制。移植任务
仍为 `WBV2-P1424-001`,完整行为验收未完成,队列没有推进。

View File

@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"task": "WBV2-P1424-001",
"parentTask": "WBV2-P1424-000",
"operation": "RUNTIME_CLOSURE_HANDOFF_RECONCILIATION",
"observedOn": "2026-09-08",
"status": "in_progress",
"acceptanceComplete": false,
"queueAdvanced": false,
"nextTask": null,
"implementation": {
"previousReport": "tests/golden/WBV2-P1424-001/product-implementation-report.json",
"reportedTasks": 34,
"reportedImplementedTasks": 34,
"reportedWorkflowModules": 16,
"newCapabilities": 0,
"productionCommandsReplayed": false
},
"sourceInventory": {
"manifestPath": "tests/golden/WBV2/dynamic-inventory-manifest.json",
"manifestSha256": "bf3e5de1ddc5569a19445a4ca88a5da32ce32b330082d42f8d17467d76d57ed2",
"basis": "existing source inventory reported by check-execution-control-plane; not regenerated in this reconciliation",
"unitCount": 3802,
"verifiedUnits": 1025,
"unverifiedUnits": 2777,
"sourceTreeSha256": "311791df5e2b96c31ee9cefd5ab0c9a8ded87309f1a814c3b92dec328a607d6a",
"boundUnitDelta": 0,
"previousImplementationReportUnitCount": 3745
},
"checks": [
{ "command": "node tools/web/print-task-context.mjs", "exitCode": 0 },
{ "command": "node tools/web/check-task-context.mjs", "exitCode": 0 },
{ "command": "npm --prefix web run test:task-context", "exitCode": 0, "passedTests": 6 },
{ "command": "npm --prefix web run test:context-governance", "exitCode": 0, "passedTests": 11 },
{ "command": "node tools/web/check-execution-control-plane.mjs", "exitCode": 0 },
{ "command": "node tools/web/check-task-index.mjs", "exitCode": 0 },
{ "command": "node tools/web/check-blender-next-task-plan.mjs", "exitCode": 1 },
{ "command": "node tools/web/run-wbv2-scheduler.mjs --preflight-only", "exitCode": 0, "output": "empty; no runtime acceptance evidence" },
{ "command": "node tools/web/check-task-context.mjs --task WBV2-P1424-001 --write", "exitCode": 0 },
{ "command": "git diff --check", "exitCode": 0 }
],
"repairedEvidence": {
"path": "tests/golden/WBV2-P1424-001/task-context.json",
"previousManifestSha256": "f97153c590b294b8fa03dbd34c1bed8cd2808550aef549f6a37dfb7deb00ecb6",
"regeneratedSha256": "77c7e929437b3588f05d62c3106d198fe4e326da85d230ee74c13ec0f050aa87",
"regenerationChangedBytes": false
},
"remainingBlockers": [
{
"code": "PLAN_ARTIFACT_HASH_DRIFT",
"command": "node tools/web/check-blender-next-task-plan.mjs",
"path": "web/package.json",
"expectedSha256": "40b7f14d4f568ae94bedde83e02115c127e0c714e5eb32a6a97b1e1084c4fa68",
"actualSha256": "b334ff7ab822bd9a9c6ad1302fdb6432648f26d1cf1dbfe86825c2cf1947387e",
"recovery": "Reconcile this gate through an authorized current evidence generator without rewriting historical inventory/provenance or reverting existing workspace changes."
},
{
"code": "RUNTIME_ACCEPTANCE_NOT_BOUND",
"evidence": "The implementation report defers verification; the three runtime result files contain implementation summaries but no behavioral receipts. The task card/context only declares print-task-context as its executable command.",
"missingBindings": [
"focused production and test entrypoints",
"Chromium SERVER_NATIVE mutated Main and F3 typed properties",
"browser-equivalent workflow execution",
"missing-provider, malformed-envelope, hash-mismatch, timeout, cancellation and context-only no-mutation cases",
"undo/redo, save/reopen, determinism and aggregate runtime receipts"
],
"recovery": "Bind the current runtime closure to executable source-backed entrypoints and focused acceptance receipts through repository task generators before declaring completion."
}
],
"historicalEvidenceModified": false,
"commitCreated": false,
"pushAttempted": false
}