feat(web): complete Blender route runtime execution
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-07 00:12:32 +08:00
parent e2e81c7c00
commit e9bfef0c5a
35 changed files with 57527 additions and 75 deletions

View File

@@ -25,7 +25,7 @@
},
"status": {
"path": "docs/status/WBV2-P1423-001.md",
"sha256": "913a745b47569dd0ffce98be53533e6fab556bc7d3b0e3c785e07d184cd0496d"
"sha256": "9c3d0e2bb3084c37cedf6cca58a42fb81707621ad1b559ab59e51f719c23ca27"
},
"plan": {
"path": "tests/golden/WBV2-P1423-000/operator-route-implementation-plan.json",
@@ -36,5 +36,5 @@
"sha256": "e9e46f56f5538ad9865357aecbf92b475482691f1fb09ee4cf37149a1b6bc0cc"
}
},
"nextTask": null
"nextTask": "WBV2-P1424-000"
}

View File

@@ -0,0 +1,22 @@
{
"schemaVersion": 1,
"task": "WBV2-P1424-000",
"parentTask": "WBV2-P1423-001",
"operation": "AUTHORIZE_RUNTIME_CLOSURE",
"status": "done",
"nextTask": "WBV2-P1424-001",
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1423-001/manifest.json",
"sha256": "e4cb86e30ec3fe13a890b6497e99f8693ddba78f07d9c71b776d6c6af8e8a8b9"
},
"backlog": {
"path": "tests/golden/WBV2/web-product-backlog.json",
"sha256": "fe9361dfbb0cab8196c004cd044b69fb5cc10cacfb461312eae0f5497d6c4da0"
},
"plan": {
"path": "tests/golden/WBV2-P1424-000/runtime-closure-plan.json",
"sha256": "9d1bcc4b6b25b1926210893bcc767c16259bb4b132a49fd134e3397c7ff7ad53"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"schemaVersion": 1,
"task": "WBV2-P1424-000",
"operation": "AUTHORIZE_RUNTIME_CLOSURE",
"status": "PASS",
"pendingTaskCount": 3,
"nextTask": "WBV2-P1424-001"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"task": "WBV2-P1424-001",
"parentTask": "WBV2-P1424-000",
"operation": "WEB_PRODUCT_IMPLEMENTATION_COMPLETE",
"status": "done",
"implementationComplete": true,
"verificationDeferred": true,
"artifacts": {
"parentManifest": {
"path": "tests/golden/WBV2-P1424-000/manifest.json",
"sha256": "46a3ce65d56747da8684af422a1a94540612c767a6dcc42da7939930731399d5"
},
"backlog": {
"path": "tests/golden/WBV2/web-product-backlog.json",
"sha256": "fe9361dfbb0cab8196c004cd044b69fb5cc10cacfb461312eae0f5497d6c4da0"
},
"strategy": {
"path": "docs/WEB_PRODUCT_MIGRATION_STRATEGY.md",
"sha256": "b0086cf81a52c71b9efdd764c005d65de7fe48a8f013ce6405a76486bf2310e6"
},
"report": {
"path": "tests/golden/WBV2-P1424-001/product-implementation-report.json",
"sha256": "ec2c29e2cc26d573e821647d4864e9bda3da77d46dbde27959aea2a2dc78218d"
},
"status": {
"path": "docs/status/WBV2-P1424-001.md",
"sha256": "05f829a182784f0fecc94413c92460ac40875af9042a9739177a14a104550ab3"
},
"plan": {
"path": "tests/golden/WBV2-P1424-000/runtime-closure-plan.json",
"sha256": "9d1bcc4b6b25b1926210893bcc767c16259bb4b132a49fd134e3397c7ff7ad53"
},
"taskContext": {
"path": "tests/golden/WBV2-P1424-001/task-context.json",
"sha256": "397446b249988953596bd36444da908d9f4c70ea86426cc196e63c76507b94aa"
}
},
"nextTask": null
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,188 @@
{
"schemaVersion": 1,
"task": "WBV2-P1424-001",
"parentTask": "WBV2-P1424-000",
"status": "in_progress",
"goal": "Close the audited gap between classified feature routes and real browser/server execution.",
"scope": {
"gap": "workflow:complete server operator runtime closure",
"ownerFamily": "WEB_PRODUCT",
"implementationClass": "PRODUCT_WORKFLOW"
},
"commands": [
"node tools/web/print-task-context.mjs"
],
"inputPaths": [],
"inputMetadata": {
"docs/EXECUTION_QUEUE.md": {
"path": "docs/EXECUTION_QUEUE.md",
"exists": true,
"bytes": 4030,
"mtime_ns": "1788700490472279178",
"sha256": "4d5b719ec73e3b77c88ed07d0e990e754c1c20dbf592e19406ea63dc9e854571"
},
"docs/tasks/WBV2-P1424-001.md": {
"path": "docs/tasks/WBV2-P1424-001.md",
"exists": true,
"bytes": 1210,
"mtime_ns": "1788700490470545655",
"sha256": "7c174f4477a98dd322b3d0b65837e65a391c1e6add75cb9b078d0111cf411bd3"
},
"tests/golden/WBV2-P1424-000/manifest.json": {
"path": "tests/golden/WBV2-P1424-000/manifest.json",
"exists": true,
"bytes": 719,
"mtime_ns": "1788704564365870361",
"sha256": "46a3ce65d56747da8684af422a1a94540612c767a6dcc42da7939930731399d5"
},
"docs/status/WBV2-P1424-000.md": {
"path": "docs/status/WBV2-P1424-000.md",
"exists": true,
"bytes": 71,
"mtime_ns": "1788700490470609833",
"sha256": "47fa6e527c1392ebcfadee459ff1c69e42450a2f57b40d0330ef60bd92bafc05"
}
},
"inputSelection": {
"schemaVersion": 1,
"limits": {
"maxFiles": 12,
"evidenceBytes": 8192,
"contextRemainingBytes": 3874,
"contextRemainingTokens": 967
},
"source": {
"bytes": 6030,
"tokens": 1509
},
"selected": [],
"excluded": [
{
"path": "tests/golden/WBV2/web-product-backlog.json",
"bytes": 41232,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "web/app/src/capabilities/blender-feature-route-catalog.json",
"bytes": 1957003,
"reason": "EVIDENCE_BYTE_BUDGET"
},
{
"path": "tests/golden/WBV2/product-migration/*-result.json",
"bytes": null,
"reason": "MISSING_PATH"
},
{
"path": "tests/golden/WBV2-P1424-001/product-implementation-report.json",
"bytes": 44229,
"reason": "EVIDENCE_BYTE_BUDGET"
}
],
"totals": {
"files": 0,
"bytes": 0,
"tokens": 0
}
},
"exitCriteria": [
"focused command exits 0",
"report and manifest are hash-bound",
"failure path does not publish a late result"
],
"nextTask": null,
"sourceDocuments": {
"queue": "docs/EXECUTION_QUEUE.md",
"taskCard": "docs/tasks/WBV2-P1424-001.md",
"taskIndex": "tests/golden/WBV2/task-index.json",
"parentManifest": "tests/golden/WBV2-P1424-000/manifest.json",
"parentStatus": "docs/status/WBV2-P1424-000.md"
},
"readPolicy": {
"required": [
"docs/EXECUTION_QUEUE.md",
"docs/tasks/WBV2-P1424-001.md",
"tests/golden/WBV2-P1424-000/manifest.json",
"docs/status/WBV2-P1424-000.md"
],
"machineOnly": [
"tests/golden/WBV2/task-index.json",
"tests/golden/M15-03A/task-catalog.jsonl"
],
"optionalByNeed": [
"docs/WEB_BLENDER_MODELER_V1_SCOPE.md",
"任务卡列出的精确协议/生产路径",
"任务卡明确命名的长期计划小节"
],
"forbiddenByDefault": [
"完整 CURRENT_EXECUTION_PLAN.md",
"完整 PROJECT_STATUS_AND_NEXT_WORK.md",
"全部 docs/status/*.md",
"完整 parity/WBS 计划",
"README 历史和 test-results/"
]
},
"parent": {
"manifest": {
"schemaVersion": 1,
"task": "WBV2-P1424-000",
"parentTask": "WBV2-P1423-001",
"status": "done",
"nextTask": "WBV2-P1424-001",
"artifactCount": 3
},
"statusSummary": [
"# WBV2-P1424-000 status",
"- status: `done`",
"- nextTask: `WBV2-P1424-001`"
]
},
"budgets": {
"queueBytes": 4096,
"taskBytes": 1210,
"parentManifestBytes": 24576,
"parentStatusBytes": 6144,
"evidenceFiles": 12,
"evidenceBytes": 8192,
"contextTokens": 3500,
"contextEnvelopeTokens": 1024,
"taskLines": 36,
"taskTokens": 303
},
"size": {
"documents": [
{
"path": "docs/EXECUTION_QUEUE.md",
"bytes": 4030,
"lines": 58,
"tokens": 1008
},
{
"path": "docs/tasks/WBV2-P1424-001.md",
"bytes": 1210,
"lines": 36,
"tokens": 303
},
{
"path": "tests/golden/WBV2-P1424-000/manifest.json",
"bytes": 719,
"lines": 23,
"tokens": 180
},
{
"path": "docs/status/WBV2-P1424-000.md",
"bytes": 71,
"lines": 5,
"tokens": 18
}
],
"sourceTokens": 1509,
"evidenceFiles": 0,
"evidenceBytes": 0,
"evidenceTokens": 0,
"totalTokens": 1509,
"reservedEnvelopeTokens": 1024,
"estimatedContextTokens": 2533,
"serializedContextTokens": 598,
"withinBudget": true
}
}

View File

@@ -0,0 +1,15 @@
{
"schemaVersion": 1,
"task": "BROWSER-EQUIVALENT-RUNTIME",
"status": "implemented",
"changedFiles": [
"web/protocol/blender-operator.ts",
"web/app/src/app/App.tsx",
"web/app/src/capabilities/blender-feature-route-catalog.json",
"tools/web/generate-blender-feature-route-catalog.mjs",
"tools/web/check-blender-feature-route-catalog.mjs",
"tools/web/check-web-engine-command-registry.mjs",
"tests/golden/WBV2/product-migration/BROWSER-EQUIVALENT-RUNTIME-result.json"
],
"summary": "Attached explicit browser action groups to every BROWSER_EQUIVALENT route, dispatching OPEN/SAVE/WORKSPACE/SELECTION/VIEW/EDITOR groups through existing F3 browser workflows. Added invokeBrowserEquivalent and featureRouteRuntimeAudit protocol/runtime surfaces, regenerated the static catalog, and published registry checks proving WEB_MAIN registration, SERVER_NATIVE HTTP routing, and actionable browser groups while keeping behavioral evidence separate."
}

View File

@@ -0,0 +1,13 @@
{
"schemaVersion": 1,
"task": "SERVER-OPERATOR-HTTP-PROVIDER",
"status": "implemented",
"changedFiles": [
"web/protocol/server-operator-job.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/vite.config.ts",
"tools/web/server-operator-job-server.mjs",
"tools/web/server-operator-job.py"
],
"summary": "Replaced the QUEUED-only SERVER_NATIVE browser path with a bounded same-origin HTTP binary envelope provider, isolated Blender background execution, mutated .blend hashing/reopen, cancellation, and result reads."
}

View File

@@ -0,0 +1,15 @@
{
"schemaVersion": 1,
"task": "SERVER-OPERATOR-SCHEMA-PALETTE",
"status": "implemented",
"changedFiles": [
"web/protocol/server-operator-job.ts",
"web/protocol/blender-operator.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/app/App.tsx",
"tools/web/server-operator-job-server.mjs",
"tools/web/server-operator-job.py",
"tests/golden/WBV2/product-migration/SERVER-OPERATOR-SCHEMA-PALETTE-result.json"
],
"summary": "Loads SERVER_NATIVE operator RNA schemas from Blender on demand, caches schemas by Blender build, renders the existing typed F3 property form, and submits validated native server jobs with real blend output while blocking unsupported and context-bound properties."
}

View File

@@ -625,3 +625,5 @@
{"id":"WBV2-P1422-001","gapId":"workflow:complete full Web feature gap implementation","ownerFamily":"WEB_PRODUCT","sourceTask":"1422","state":"completed","targetImplementationClass":"PRODUCT_WORKFLOW"}
{"id":"WBV2-P1423-000","gapId":"workflow:authorize source-unit route completion","ownerFamily":"PROGRAM","sourceTask":"1423","state":"completed","targetImplementationClass":"QUEUE_ONLY"}
{"id":"WBV2-P1423-001","gapId":"workflow:complete source-unit route completion","ownerFamily":"WEB_PRODUCT","sourceTask":"1423","state":"completed","targetImplementationClass":"PRODUCT_WORKFLOW"}
{"id":"WBV2-P1424-000","gapId":"workflow:authorize server operator runtime closure","ownerFamily":"PROGRAM","sourceTask":"1424","state":"completed","targetImplementationClass":"QUEUE_ONLY"}
{"id":"WBV2-P1424-001","gapId":"workflow:complete server operator runtime closure","ownerFamily":"WEB_PRODUCT","sourceTask":"1424","state":"completed","targetImplementationClass":"PRODUCT_WORKFLOW"}

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +1,10 @@
{
"schemaVersion": 1,
"strategy": "implementation_first_route_complete",
"strategy": "implementation_first_runtime_closure",
"verificationPolicy": "deferred_until_user_reports",
"previousQueueTask": "WBV2-P1422-001",
"rootTask": "WBV2-P1423-000",
"queueTask": "WBV2-P1423-001",
"previousQueueTask": "WBV2-P1423-001",
"rootTask": "WBV2-P1424-000",
"queueTask": "WBV2-P1424-001",
"sourceInventory": {
"unitCount": 3745,
"role": "traceability_only",
@@ -24,7 +24,9 @@
"NATIVE-OPERATOR-BRIDGE",
"WEBUI-OPERATOR-PALETTE",
"OPERATOR-ROUTE-PALETTE",
"FEATURE-COVERAGE-DASHBOARD"
"FEATURE-COVERAGE-DASHBOARD",
"SERVER-OPERATOR-SCHEMA-PALETTE",
"BROWSER-EQUIVALENT-RUNTIME"
]
},
{
@@ -144,7 +146,8 @@
"RNA-DATABLOCK-REFLECTION",
"SERVER-OPERATOR-JOB",
"OPERATOR-MACRO-COMPOSER",
"RNA-REFLECTION-EXTENDED"
"RNA-REFLECTION-EXTENDED",
"SERVER-OPERATOR-HTTP-PROVIDER"
]
}
],
@@ -899,6 +902,79 @@
"resultPath": "tests/golden/WBV2/product-migration/FEATURE-COVERAGE-DASHBOARD-result.json",
"startedAt": "2026-09-06T12:39:33.154899+00:00",
"completedAt": "2026-09-06T12:46:33.773768+00:00"
},
{
"id": "SERVER-OPERATOR-HTTP-PROVIDER",
"module": "RUNTIME",
"title": "Connect server-native routes to an executable HTTP provider",
"commands": [
"submitServerOperatorJob",
"cancelServerOperatorJob",
"readServerOperatorResult"
],
"ownedPaths": [
"web/protocol/server-operator-job.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/app/App.tsx",
"web/app/vite.config.ts",
"tools/web/server-operator-job-server.mjs",
"tools/web/server-operator-job.py",
"tools/web/server-job-process.mjs"
],
"implementation": "Replace the QUEUED-only browser stub with a real same-origin/configurable HTTP provider. Save the current Main to .blend, submit a bounded binary envelope, execute Blender background in an isolated workspace, save and hash the mutated .blend, return it, reopen it in WebEngine, and support cancellation/result reads. Preserve source/build/property/request/result hash bindings and resource budgets.",
"attempts": 1,
"status": "implemented",
"resultPath": "tests/golden/WBV2/product-migration/SERVER-OPERATOR-HTTP-PROVIDER-result.json",
"startedAt": "2026-09-06T13:15:36.142605+00:00",
"completedAt": "2026-09-06T13:24:52.089622+00:00"
},
{
"id": "SERVER-OPERATOR-SCHEMA-PALETTE",
"module": "WORKSPACE",
"title": "Load native operator RNA schemas on demand in F3",
"commands": [
"describeServerOperator",
"invokeFeatureRoute"
],
"ownedPaths": [
"web/protocol/server-operator-job.ts",
"web/protocol/blender-operator.ts",
"web/app/src/engine-client/WebEngineClient.ts",
"web/app/src/app/App.tsx",
"tools/web/server-operator-job-server.mjs",
"tools/web/server-operator-job.py"
],
"implementation": "Query Blender background RNA metadata for a selected SERVER_NATIVE operator, cache the typed boolean/number/enum/string schema by Blender build, render the existing compact property form, and submit a real server job. Unsupported pointer/collection/context properties remain blocked.",
"attempts": 2,
"status": "implemented",
"resultPath": "tests/golden/WBV2/product-migration/SERVER-OPERATOR-SCHEMA-PALETTE-result.json",
"startedAt": "2026-09-06T13:39:53.596630+00:00",
"completedAt": "2026-09-06T13:45:09.069751+00:00"
},
{
"id": "BROWSER-EQUIVALENT-RUNTIME",
"module": "WORKSPACE",
"title": "Make browser-equivalent feature routes actionable",
"commands": [
"invokeBrowserEquivalent",
"featureRouteRuntimeAudit"
],
"ownedPaths": [
"web/protocol/blender-operator.ts",
"web/app/src/app/App.tsx",
"web/app/src/capabilities/blender-feature-route-catalog.json",
"tools/web/generate-blender-feature-route-catalog.mjs",
"tools/web/check-blender-feature-route-catalog.mjs",
"tools/web/check-web-engine-command-registry.mjs",
"docs/WEB_FULL_FEATURE_GAP_INVENTORY.md",
"my-tools/show_blender_web_scheduler.py"
],
"implementation": "Attach explicit browser action groups to BROWSER_EQUIVALENT routes and dispatch them to existing open/save/workspace/selection/view/editor workflows from F3. Publish a static runtime audit proving every WEB_MAIN command is registered, every SERVER_NATIVE entry has the HTTP route, and every BROWSER_EQUIVALENT entry has an actionable browser group; keep behavioral evidence separate.",
"attempts": 2,
"status": "implemented",
"resultPath": "tests/golden/WBV2/product-migration/BROWSER-EQUIVALENT-RUNTIME-result.json",
"startedAt": "2026-09-06T14:00:10.675657+00:00",
"completedAt": "2026-09-06T14:14:46.350071+00:00"
}
],
"gapInventory": "docs/WEB_FULL_FEATURE_GAP_INVENTORY.md",