chore: checkpoint web Blender migration source, tools and docs
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

Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
mes123456
2026-11-10 11:18:01 +08:00
parent 122142c26c
commit f3e21c6b98
6887 changed files with 257154 additions and 12294 deletions

View File

@@ -18,14 +18,15 @@ assert.equal(sha256(read(index.source.path)), index.source.sha256);
assert.equal(sha256(catalogBytes), index.catalog.sha256);
assert.equal(index.taskCount, plan.tasks.length);
const ready = plan.tasks.filter((task) => task.ready === true);
assert.equal(ready.length, 1);
assert.equal(index.activeTask, ready[0].id);
const terminal = ready.length === 0 && plan.tasks.length > 0 && plan.tasks.every((task) => task.ready !== true && task.status === "done");
assert.ok(terminal || ready.length === 1);
assert.equal(index.activeTask, terminal ? null : ready[0].id);
const lines = catalogBytes.toString("utf8").trimEnd().split("\n").filter(Boolean).map((line) => JSON.parse(line));
assert.equal(lines.length, plan.tasks.length);
assert.equal(lines.filter((task) => task.state === "active").length, 1);
assert.equal(lines.find((task) => task.state === "active")?.id, index.activeTask);
assert.equal(lines.filter((task) => task.state === "active").length, terminal ? 0 : 1);
assert.equal(lines.find((task) => task.state === "active")?.id ?? null, index.activeTask);
for (const task of plan.tasks.filter((candidate) => candidate.ready || candidate.status === "done")) {
assert.ok(index.entries[task.id], `${task.id} must have an index entry`);
assert.ok(fs.existsSync(path.join(root, task.card)), `${task.id} card must exist before activation`);
}
process.stdout.write(`v2-task-index-ok tasks=${index.taskCount} active=${index.activeTask} catalog=${index.catalog.path}\n`);
process.stdout.write(`v2-task-index-ok tasks=${index.taskCount} active=${index.activeTask ?? "NONE"} catalog=${index.catalog.path}\n`);