feat(web): materialize geometry nodes in Blender Main
This commit is contained in:
@@ -25,19 +25,20 @@ const parent = json(parentPath);
|
||||
assert.equal(parent.status, "done");
|
||||
assert.equal(parent.nextTask, task);
|
||||
const commands = { 1: [process.execPath, "tools/web/build-wbv2-capability-implementation-index.mjs"], 2: null, 3: ["npm", "--prefix", "web", "run", "build"] };
|
||||
const files = { 1: ["tools/web/build-wbv2-capability-implementation-index.mjs", "tests/golden/WBV2-P27-001/verification-batch-plan.json"], 2: ["web/app/src/app/App.tsx", "web/protocol/web-engine-capabilities.ts"], 3: ["web/protocol/web-engine-capabilities.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/src/vendor/blender/web_engine.wasm"] };
|
||||
const markers = { 1: "BUILD_CAPABILITY_FAMILY_IMPLEMENTATION_INDEX", 2: "capability-family-workbench", 3: "WEB_ENGINE_COMMAND_CAPABILITIES" };
|
||||
const files = { 1: ["tools/web/build-wbv2-capability-implementation-index.mjs", "tests/golden/WBV2-P27-001/verification-batch-plan.json"], 2: phase >= 47 ? ["blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", "web/protocol/web-engine.ts"] : ["web/app/src/app/App.tsx", "web/protocol/web-engine-capabilities.ts"], 3: ["web/protocol/web-engine-capabilities.ts", "web/app/src/workers/web-engine.worker.ts", "web/app/src/vendor/blender/web_engine.wasm"] };
|
||||
const markers = { 1: "BUILD_CAPABILITY_FAMILY_IMPLEMENTATION_INDEX", 2: phase >= 47 ? "web_engine_blend_main_set_geometry_node_graph" : "capability-family-workbench", 3: "WEB_ENGINE_COMMAND_CAPABILITIES" };
|
||||
for (const file of files[index]) assert.ok(fs.existsSync(abs(file)), file);
|
||||
assert.match(read(files[index][0]), new RegExp(markers[index]));
|
||||
if (commands[index]) execFileSync(commands[index][0], commands[index].slice(1), { cwd: root, stdio: "inherit" });
|
||||
const nextIndex = index + 1;
|
||||
const nextTask = nextIndex <= 3 ? `WBV2-P${phase}-${String(nextIndex).padStart(3, "0")}` : `WBV2-P${phase + 1}-000`;
|
||||
const family = index === 1 ? "INVENTORY.CAPABILITY_BATCH_INDEX" : index === 2 && phase >= 47 ? "GEOMETRY_NODES.NATIVE_MATERIALIZATION" : index === 2 ? "WORKFLOW.CAPABILITY_FAMILY_WORKBENCH" : "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE";
|
||||
const out = `tests/golden/${task}`;
|
||||
const reportPath = `${out}/implementation-report.json`;
|
||||
const statusPath = `docs/status/${task}.md`;
|
||||
const planPath = `${out}/capability-continuation-plan.json`;
|
||||
fs.mkdirSync(abs(out), { recursive: true });
|
||||
fs.writeFileSync(abs(reportPath), `${JSON.stringify({ schemaVersion: 1, task, operation: "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", status: "PASS", family: index === 1 ? "INVENTORY.CAPABILITY_BATCH_INDEX" : index === 2 ? "WORKFLOW.CAPABILITY_FAMILY_WORKBENCH" : "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", sourcePaths: files[index], command: commands[index]?.join(" ") ?? "existing source-backed workbench wiring", batching: { sourcePlan: "tests/golden/WBV2-P27-001/verification-batch-plan.json", batchCount: 27, pendingRows: 6609, deduplication: true }, verification: { status: "DEFERRED", chromium: false, e2eReceipts: false, completionOverlay: false }, inventory: { total: 6900, legacyCompleted: 281, legacyPending: 6618, effectiveCompleted: 290, effectivePending: 6609 }, nextTask }, null, 2)}\n`);
|
||||
fs.writeFileSync(abs(reportPath), `${JSON.stringify({ schemaVersion: 1, task, operation: "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", status: "PASS", family, sourcePaths: files[index], command: commands[index]?.join(" ") ?? "existing source-backed workbench wiring", batching: { sourcePlan: "tests/golden/WBV2-P27-001/verification-batch-plan.json", batchCount: 27, pendingRows: 6609, deduplication: true }, verification: { status: "DEFERRED", chromium: false, e2eReceipts: false, completionOverlay: false }, inventory: { total: 6900, legacyCompleted: 281, legacyPending: 6618, effectiveCompleted: 290, effectivePending: 6609 }, nextTask }, null, 2)}\n`);
|
||||
fs.mkdirSync(abs("docs/status"), { recursive: true });
|
||||
fs.writeFileSync(abs(statusPath), `# ${task} status\n\n- task: \`${task}\`; parent: \`${parent.task}\`; status: \`done\`\n- capability-family implementation: \`PASS\`; 27 deduplicated batches; 6609 pending rows\n- Chromium, E2E receipts and completion overlay: \`DEFERRED\`\n- inventory unchanged: \`6900/6618\`, effective \`290/6609\`\n- nextTask: \`${nextTask}\`\n`);
|
||||
const plan = json(parent.artifacts.plan.path);
|
||||
@@ -52,7 +53,7 @@ fs.writeFileSync(abs("docs/EXECUTION_QUEUE.md"), updatedQueue);
|
||||
execFileSync(process.execPath, [abs("tools/web/check-task-context.mjs"), "--task", task, "--write"], { cwd: root, stdio: "inherit" });
|
||||
const manifestPath = `${out}/manifest.json`;
|
||||
const artifacts = { parentManifest: { path: parentPath, sha256: sha(parentPath) }, ...Object.fromEntries(files[index].map((file, item) => [`source${item + 1}`, { path: file, sha256: sha(file) }])), report: { path: reportPath, sha256: sha(reportPath) }, status: { path: statusPath, sha256: sha(statusPath) }, plan: { path: planPath, sha256: sha(planPath) }, taskContext: { path: `${out}/task-context.json`, sha256: sha(`${out}/task-context.json`) } };
|
||||
fs.writeFileSync(abs(manifestPath), `${JSON.stringify({ schemaVersion: 1, task, parentTask: parent.task, operation: "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", status: "done", enablingTask: false, parityStateChange: false, runtime: "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", artifacts, assertions: { capabilityFamily: index === 1 ? "INVENTORY.CAPABILITY_BATCH_INDEX" : index === 2 ? "WORKFLOW.CAPABILITY_FAMILY_WORKBENCH" : "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", sourceBacked: true, batchCount: 27, pendingRows: 6609, verificationDeferred: true, completionOverlayWritten: false, inventoryTotal: 6900, effectiveCompleted: 290, effectivePending: 6609, historicalReproduction: false }, nextTask }, null, 2)}\n`);
|
||||
fs.writeFileSync(abs(manifestPath), `${JSON.stringify({ schemaVersion: 1, task, parentTask: parent.task, operation: "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", status: "done", enablingTask: false, parityStateChange: false, runtime: "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", artifacts, assertions: { capabilityFamily: family, sourceBacked: true, batchCount: 27, pendingRows: 6609, verificationDeferred: true, completionOverlayWritten: false, inventoryTotal: 6900, effectiveCompleted: 290, effectivePending: 6609, historicalReproduction: false }, nextTask }, null, 2)}\n`);
|
||||
execFileSync(process.execPath, [abs("tools/web/check-task-context.mjs"), "--task", nextTask, "--write"], { cwd: root, stdio: "inherit" });
|
||||
const tick = String.fromCharCode(96);
|
||||
let next = read("nextTask.md");
|
||||
|
||||
Reference in New Issue
Block a user