feat(web): complete Blender route runtime execution
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
22
tests/golden/WBV2-P1424-000/manifest.json
Normal file
22
tests/golden/WBV2-P1424-000/manifest.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "WBV2-P1424-000",
|
||||
"operation": "AUTHORIZE_RUNTIME_CLOSURE",
|
||||
"status": "PASS",
|
||||
"pendingTaskCount": 3,
|
||||
"nextTask": "WBV2-P1424-001"
|
||||
}
|
||||
53077
tests/golden/WBV2-P1424-000/runtime-closure-plan.json
Normal file
53077
tests/golden/WBV2-P1424-000/runtime-closure-plan.json
Normal file
File diff suppressed because it is too large
Load Diff
40
tests/golden/WBV2-P1424-001/manifest.json
Normal file
40
tests/golden/WBV2-P1424-001/manifest.json
Normal 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
|
||||
}
|
||||
1060
tests/golden/WBV2-P1424-001/product-implementation-report.json
Normal file
1060
tests/golden/WBV2-P1424-001/product-implementation-report.json
Normal file
File diff suppressed because it is too large
Load Diff
188
tests/golden/WBV2-P1424-001/task-context.json
Normal file
188
tests/golden/WBV2-P1424-001/task-context.json
Normal 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
|
||||
}
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
@@ -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
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user