From 62b45c9592acd29cd1733bfa8a7accb797a98201 Mon Sep 17 00:00:00 2001 From: mes123456 Date: Sat, 29 Aug 2026 13:28:26 +0800 Subject: [PATCH] feat(web): continue scene pipeline authoring wave --- .../blender/web_engine/web_engine_api.cpp | 14 +- .../web_engine/web_engine_blend_reader.cpp | 13 ++ .../web_engine/web_engine_main_state.cpp | 129 +++++++++++++ .../web_engine/web_engine_main_state.h | 8 + docs/EXECUTION_QUEUE.md | 6 +- docs/status/WBV2-P54-000.md | 7 + docs/status/WBV2-P54-001.md | 7 + docs/status/WBV2-P54-002.md | 7 + docs/status/WBV2-P54-003.md | 7 + docs/status/WBV2-P55-000.md | 7 + docs/status/WBV2-P55-001.md | 7 + docs/status/WBV2-P55-002.md | 7 + docs/status/WBV2-P55-003.md | 7 + docs/tasks/WBV2-P54-000.md | 35 ++++ docs/tasks/WBV2-P54-001.md | 38 ++++ docs/tasks/WBV2-P54-002.md | 38 ++++ docs/tasks/WBV2-P54-003.md | 38 ++++ docs/tasks/WBV2-P55-000.md | 35 ++++ docs/tasks/WBV2-P55-001.md | 38 ++++ docs/tasks/WBV2-P55-002.md | 38 ++++ docs/tasks/WBV2-P55-003.md | 38 ++++ docs/tasks/WBV2-P56-000.md | 35 ++++ nextTask.md | 6 +- tests/golden/WBV2-P27-002/manifest.json | 4 +- .../WBV2-P27-002/source-build-report.json | 20 +- .../capability-implementation-index.json | 10 +- tests/golden/WBV2-P43-001/manifest.json | 4 +- .../capability-continuation-plan.json | 151 +++++++++++++++ .../capability-continuation-root-report.json | 30 +++ tests/golden/WBV2-P54-000/manifest.json | 39 ++++ tests/golden/WBV2-P54-000/task-context.json | 162 ++++++++++++++++ .../capability-continuation-plan.json | 151 +++++++++++++++ .../WBV2-P54-001/implementation-report.json | 32 ++++ tests/golden/WBV2-P54-001/manifest.json | 53 +++++ tests/golden/WBV2-P54-001/task-context.json | 167 ++++++++++++++++ .../capability-continuation-plan.json | 151 +++++++++++++++ .../WBV2-P54-002/implementation-report.json | 34 ++++ tests/golden/WBV2-P54-002/manifest.json | 61 ++++++ tests/golden/WBV2-P54-002/task-context.json | 167 ++++++++++++++++ .../capability-continuation-plan.json | 181 ++++++++++++++++++ .../WBV2-P54-003/implementation-report.json | 33 ++++ tests/golden/WBV2-P54-003/manifest.json | 57 ++++++ tests/golden/WBV2-P54-003/task-context.json | 167 ++++++++++++++++ .../capability-continuation-plan.json | 151 +++++++++++++++ .../capability-continuation-root-report.json | 30 +++ tests/golden/WBV2-P55-000/manifest.json | 39 ++++ tests/golden/WBV2-P55-000/task-context.json | 162 ++++++++++++++++ .../capability-continuation-plan.json | 151 +++++++++++++++ .../WBV2-P55-001/implementation-report.json | 32 ++++ tests/golden/WBV2-P55-001/manifest.json | 53 +++++ tests/golden/WBV2-P55-001/task-context.json | 167 ++++++++++++++++ .../capability-continuation-plan.json | 151 +++++++++++++++ .../WBV2-P55-002/implementation-report.json | 34 ++++ tests/golden/WBV2-P55-002/manifest.json | 61 ++++++ tests/golden/WBV2-P55-002/task-context.json | 167 ++++++++++++++++ .../capability-continuation-plan.json | 181 ++++++++++++++++++ .../WBV2-P55-003/implementation-report.json | 33 ++++ tests/golden/WBV2-P55-003/manifest.json | 57 ++++++ tests/golden/WBV2-P55-003/task-context.json | 167 ++++++++++++++++ tests/golden/WBV2-P56-000/task-context.json | 162 ++++++++++++++++ tests/golden/WBV2/task-catalog.jsonl | 10 +- tests/golden/WBV2/task-index.json | 2 +- ...ate-wbv2-capability-continuation-slice.mjs | 6 +- web/app/public/vendor/blender/web_engine.wasm | Bin 15825120 -> 15842185 bytes web/app/src/app/App.tsx | 2 + web/app/src/vendor/blender/web_engine.wasm | Bin 15825120 -> 15842185 bytes web/app/src/workers/web-engine.worker.ts | 20 ++ web/protocol/animation-render-commands.ts | 6 + web/protocol/scene-ir.ts | 24 +++ web/protocol/web-engine-capabilities.ts | 2 + web/protocol/web-engine.ts | 2 + web/protocol/workbench-command-groups.ts | 2 +- 72 files changed, 4076 insertions(+), 37 deletions(-) create mode 100644 docs/status/WBV2-P54-000.md create mode 100644 docs/status/WBV2-P54-001.md create mode 100644 docs/status/WBV2-P54-002.md create mode 100644 docs/status/WBV2-P54-003.md create mode 100644 docs/status/WBV2-P55-000.md create mode 100644 docs/status/WBV2-P55-001.md create mode 100644 docs/status/WBV2-P55-002.md create mode 100644 docs/status/WBV2-P55-003.md create mode 100644 docs/tasks/WBV2-P54-000.md create mode 100644 docs/tasks/WBV2-P54-001.md create mode 100644 docs/tasks/WBV2-P54-002.md create mode 100644 docs/tasks/WBV2-P54-003.md create mode 100644 docs/tasks/WBV2-P55-000.md create mode 100644 docs/tasks/WBV2-P55-001.md create mode 100644 docs/tasks/WBV2-P55-002.md create mode 100644 docs/tasks/WBV2-P55-003.md create mode 100644 docs/tasks/WBV2-P56-000.md create mode 100644 tests/golden/WBV2-P54-000/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P54-000/capability-continuation-root-report.json create mode 100644 tests/golden/WBV2-P54-000/manifest.json create mode 100644 tests/golden/WBV2-P54-000/task-context.json create mode 100644 tests/golden/WBV2-P54-001/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P54-001/implementation-report.json create mode 100644 tests/golden/WBV2-P54-001/manifest.json create mode 100644 tests/golden/WBV2-P54-001/task-context.json create mode 100644 tests/golden/WBV2-P54-002/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P54-002/implementation-report.json create mode 100644 tests/golden/WBV2-P54-002/manifest.json create mode 100644 tests/golden/WBV2-P54-002/task-context.json create mode 100644 tests/golden/WBV2-P54-003/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P54-003/implementation-report.json create mode 100644 tests/golden/WBV2-P54-003/manifest.json create mode 100644 tests/golden/WBV2-P54-003/task-context.json create mode 100644 tests/golden/WBV2-P55-000/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P55-000/capability-continuation-root-report.json create mode 100644 tests/golden/WBV2-P55-000/manifest.json create mode 100644 tests/golden/WBV2-P55-000/task-context.json create mode 100644 tests/golden/WBV2-P55-001/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P55-001/implementation-report.json create mode 100644 tests/golden/WBV2-P55-001/manifest.json create mode 100644 tests/golden/WBV2-P55-001/task-context.json create mode 100644 tests/golden/WBV2-P55-002/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P55-002/implementation-report.json create mode 100644 tests/golden/WBV2-P55-002/manifest.json create mode 100644 tests/golden/WBV2-P55-002/task-context.json create mode 100644 tests/golden/WBV2-P55-003/capability-continuation-plan.json create mode 100644 tests/golden/WBV2-P55-003/implementation-report.json create mode 100644 tests/golden/WBV2-P55-003/manifest.json create mode 100644 tests/golden/WBV2-P55-003/task-context.json create mode 100644 tests/golden/WBV2-P56-000/task-context.json diff --git a/blender-5.2.0/source/blender/web_engine/web_engine_api.cpp b/blender-5.2.0/source/blender/web_engine/web_engine_api.cpp index d7efb7e58..9dcf52351 100644 --- a/blender-5.2.0/source/blender/web_engine/web_engine_api.cpp +++ b/blender-5.2.0/source/blender/web_engine/web_engine_api.cpp @@ -1592,7 +1592,7 @@ EMSCRIPTEN_KEEPALIVE int web_engine_apply_command(const int handle, type == "insertGreasePencilFrame" || type == "removeGreasePencilFrame" || type == "setGreasePencilStrokes" || type == "setVertexColors" || type == "setVertexWeights" || type == "setCameraProperties" || type == "setLightProperties" || - type == "setWorldProperties" || type == "setSceneProperties" || type == "setSceneRenderSettings" || type == "setSceneAudioSettings" || type == "setSceneUnitSettings" || + type == "setWorldProperties" || type == "setSceneProperties" || type == "setSceneRenderSettings" || type == "setSceneAudioSettings" || type == "setSceneUnitSettings" || type == "setSceneTimelineSettings" || type == "setScenePipelineSettings" || type == "setSculptMeshAttributes" || type == "sculptStroke") { if (!engine->authoritative_commands || engine->authoritative_main == nullptr) { @@ -2196,7 +2196,7 @@ EMSCRIPTEN_KEEPALIVE int web_engine_apply_command(const int handle, command.value("normalize", false), command.value("limit", 0u), command.value("mirror", false), command.value("mirrorAxis", 0), command.value("mirrorTolerance", 1e-4f), main_error); } - else if (type == "setCameraProperties" || type == "setLightProperties" || type == "setWorldProperties" || type == "setSceneProperties" || type == "setSceneRenderSettings" || type == "setSceneAudioSettings" || type == "setSceneUnitSettings") + else if (type == "setCameraProperties" || type == "setLightProperties" || type == "setWorldProperties" || type == "setSceneProperties" || type == "setSceneRenderSettings" || type == "setSceneAudioSettings" || type == "setSceneUnitSettings" || type == "setSceneTimelineSettings" || type == "setScenePipelineSettings") { const json properties = command.value("properties", json::object()); if (type == "setSceneProperties") { @@ -2219,6 +2219,16 @@ EMSCRIPTEN_KEEPALIVE int web_engine_apply_command(const int handle, engine->authoritative_main, command.value("dataId", "").c_str(), properties.dump().c_str(), main_error); } + else if (type == "setSceneTimelineSettings") { + applied = web_engine_blend_main_set_scene_timeline_settings( + engine->authoritative_main, command.value("dataId", "").c_str(), + properties.dump().c_str(), main_error); + } + else if (type == "setScenePipelineSettings") { + applied = web_engine_blend_main_set_scene_pipeline_settings( + engine->authoritative_main, command.value("dataId", "").c_str(), + properties.dump().c_str(), main_error); + } else { applied = web_engine_blend_main_set_render_properties( engine->authoritative_main, command.value("dataId", "").c_str(), diff --git a/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp b/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp index 9d4ab671c..2a052ca1c 100644 --- a/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp +++ b/blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp @@ -5255,6 +5255,19 @@ json scene_ir_from_blend(const ParsedBlend &blend, {"frameStart", frame_start}, {"frameEnd", frame_end}, {"outputPath", read_string(*blend.sdna, *render, "pic")}}; + scene["timelineSettings"] = {{"fps", read_integer(*blend.sdna, *render, "frs_sec").value_or(24)}, + {"fpsBase", read_float(*blend.sdna, *render, "frs_sec_base").value_or(1.0f)}, + {"frameStep", read_integer(*blend.sdna, *render, "frame_step").value_or(1)}, + {"usePreviewRange", (read_integer(*blend.sdna, *render, "flag").value_or(0) & SCER_PRV_RANGE) != 0}, + {"previewStart", read_integer(*blend.sdna, *render, "psfra").value_or(frame_start)}, + {"previewEnd", read_integer(*blend.sdna, *render, "pefra").value_or(frame_end)}}; + const int64_t scene_mode = read_integer(*blend.sdna, *render, "scemode").value_or(0); + const int64_t render_mode = read_integer(*blend.sdna, *render, "mode").value_or(0); + scene["pipelineSettings"] = {{"useCompositor", (scene_mode & R_DOCOMP) != 0}, + {"useSequencer", (scene_mode & R_DOSEQ) != 0}, + {"noOverwrite", (render_mode & R_NO_OVERWRITE) != 0}, + {"saveOutput", (render_mode & R_SAVE_OUTPUT) != 0}, + {"alphaPremultiplied", read_integer(*blend.sdna, *render, "alphamode").value_or(0) == R_ALPHAPREMUL}}; const int64_t render_flags = read_integer(*blend.sdna, *render, "flag").value_or(0); if ((render_flags & SCER_PRV_RANGE) != 0) { scene["previewRange"] = {{"start", read_integer(*blend.sdna, *render, "psfra").value_or(frame_start)}, diff --git a/blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp b/blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp index 7afdaf49e..235461846 100644 --- a/blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp +++ b/blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp @@ -5984,6 +5984,135 @@ bool web_engine_blend_main_set_scene_unit_settings(WebBlendMainState *state, return true; } +bool web_engine_blend_main_set_scene_timeline_settings(WebBlendMainState *state, + const char *target_id, + const char *properties_json, + std::string &error) +{ + if (state == nullptr || state->main == nullptr || target_id == nullptr || properties_json == nullptr) { + error = "RENDER_PROPERTY_INVALID: scene timeline target is missing"; + return false; + } + Scene *scene = find_scene(state->main, target_id); + if (scene == nullptr || scene->id.lib != nullptr) { + error = "LINKED_DATA_MUTATION_BLOCKED: Scene is not editable"; + return false; + } + const json properties = json::parse(properties_json, nullptr, false); + if (!properties.is_object() || properties.empty()) { + error = "RENDER_PROPERTY_INVALID: scene timeline settings must be a non-empty object"; + return false; + } + const std::unordered_set allowed = {"fps", "fpsBase", "frameStep", "usePreviewRange", "previewStart", "previewEnd"}; + for (const auto &[key, value] : properties.items()) { + (void)value; + if (!allowed.contains(key)) { + error = "RENDER_PROPERTY_INVALID: unsupported scene timeline property " + key; + return false; + } + } + const auto read_int = [&](const char *key, int minimum, int maximum, int &target) { + if (!properties.contains(key)) return true; + if (!properties[key].is_number_integer()) { + error = std::string("RENDER_PROPERTY_INVALID: ") + key + " must be an integer"; + return false; + } + const int64_t value = properties[key].get(); + if (value < minimum || value > maximum) { + error = std::string("RENDER_PROPERTY_INVALID: ") + key + " is outside the bounded range"; + return false; + } + target = int(value); + return true; + }; + int fps = scene->r.frs_sec; + if (!read_int("fps", 1, 1000, fps) || + !read_int("frameStep", 1, 1000, scene->r.frame_step) || + !read_int("previewStart", -1000000, 1000000, scene->r.psfra) || + !read_int("previewEnd", -1000000, 1000000, scene->r.pefra)) { + return false; + } + if (properties.contains("fpsBase")) { + if (!properties["fpsBase"].is_number()) { + error = "RENDER_PROPERTY_INVALID: fpsBase must be numeric"; + return false; + } + const float fps_base = properties["fpsBase"].get(); + if (!std::isfinite(fps_base) || fps_base < 0.001f || fps_base > 100.0f) { + error = "RENDER_PROPERTY_INVALID: fpsBase is outside the bounded range"; + return false; + } + scene->r.frs_sec_base = fps_base; + } + if (scene->r.pefra < scene->r.psfra) { + error = "RENDER_PROPERTY_INVALID: previewEnd must not precede previewStart"; + return false; + } + scene->r.frs_sec = short(fps); + if (properties.contains("usePreviewRange")) { + if (!properties["usePreviewRange"].is_boolean()) { + error = "RENDER_PROPERTY_INVALID: usePreviewRange must be boolean"; + return false; + } + if (properties["usePreviewRange"].get()) scene->r.flag |= SCER_PRV_RANGE; + else scene->r.flag &= ~SCER_PRV_RANGE; + } + scene->id.recalc |= ID_RECALC_PARAMETERS; + return true; +} + +bool web_engine_blend_main_set_scene_pipeline_settings(WebBlendMainState *state, + const char *target_id, + const char *properties_json, + std::string &error) +{ + if (state == nullptr || state->main == nullptr || target_id == nullptr || properties_json == nullptr) { + error = "RENDER_PROPERTY_INVALID: scene pipeline target is missing"; + return false; + } + Scene *scene = find_scene(state->main, target_id); + if (scene == nullptr || scene->id.lib != nullptr) { + error = "LINKED_DATA_MUTATION_BLOCKED: Scene is not editable"; + return false; + } + const json properties = json::parse(properties_json, nullptr, false); + if (!properties.is_object() || properties.empty()) { + error = "RENDER_PROPERTY_INVALID: scene pipeline settings must be a non-empty object"; + return false; + } + const std::unordered_set allowed = {"useCompositor", "useSequencer", "noOverwrite", "saveOutput", "alphaPremultiplied"}; + for (const auto &[key, value] : properties.items()) { + (void)value; + if (!allowed.contains(key)) { + error = "RENDER_PROPERTY_INVALID: unsupported scene pipeline property " + key; + return false; + } + } + const auto read_flag = [&](const char *key, int &target, int flag) { + if (!properties.contains(key)) return true; + if (!properties[key].is_boolean()) { + error = std::string("RENDER_PROPERTY_INVALID: ") + key + " must be boolean"; + return false; + } + if (properties[key].get()) target |= flag; + else target &= ~flag; + return true; + }; + if (!read_flag("useCompositor", scene->r.scemode, R_DOCOMP) || + !read_flag("useSequencer", scene->r.scemode, R_DOSEQ) || + !read_flag("noOverwrite", scene->r.mode, R_NO_OVERWRITE) || + !read_flag("saveOutput", scene->r.mode, R_SAVE_OUTPUT)) return false; + if (properties.contains("alphaPremultiplied")) { + if (!properties["alphaPremultiplied"].is_boolean()) { + error = "RENDER_PROPERTY_INVALID: alphaPremultiplied must be boolean"; + return false; + } + scene->r.alphamode = properties["alphaPremultiplied"].get() ? R_ALPHAPREMUL : R_ADDSKY; + } + scene->id.recalc |= ID_RECALC_PARAMETERS; + return true; +} + bool web_engine_blend_main_write(WebBlendMainState *state, std::vector &bytes, std::string &error) diff --git a/blender-5.2.0/source/blender/web_engine/web_engine_main_state.h b/blender-5.2.0/source/blender/web_engine/web_engine_main_state.h index 55b13723d..8d70b6282 100644 --- a/blender-5.2.0/source/blender/web_engine/web_engine_main_state.h +++ b/blender-5.2.0/source/blender/web_engine/web_engine_main_state.h @@ -532,6 +532,14 @@ bool web_engine_blend_main_set_scene_unit_settings(WebBlendMainState *state, const char *target_id, const char *properties_json, std::string &error); +bool web_engine_blend_main_set_scene_timeline_settings(WebBlendMainState *state, + const char *target_id, + const char *properties_json, + std::string &error); +bool web_engine_blend_main_set_scene_pipeline_settings(WebBlendMainState *state, + const char *target_id, + const char *properties_json, + std::string &error); bool web_engine_blend_main_write(WebBlendMainState *state, std::vector &bytes, std::string &error); diff --git a/docs/EXECUTION_QUEUE.md b/docs/EXECUTION_QUEUE.md index 666172dc7..5b339ebfd 100644 --- a/docs/EXECUTION_QUEUE.md +++ b/docs/EXECUTION_QUEUE.md @@ -13,9 +13,9 @@ | 字段 | 值 | | --- | --- | | 里程碑 | WBV2 capability workflow | -| 当前任务 | `WBV2-P54-000` | -| parent manifest | `tests/golden/WBV2-P53-003/manifest.json` | -| 任务卡 | [`tasks/WBV2-P54-000.md`](tasks/WBV2-P54-000.md) | +| 当前任务 | `WBV2-P56-000` | +| parent manifest | `tests/golden/WBV2-P55-003/manifest.json` | +| 任务卡 | [`tasks/WBV2-P56-000.md`](tasks/WBV2-P56-000.md) | | 专项验收 | `node tools/web/check-execution-control-plane.mjs` | | legacy coverage checkpoint | `M16-GAP-00282` | | legacy coverage parent | `tests/golden/M16-GAP-00281/manifest.json` | diff --git a/docs/status/WBV2-P54-000.md b/docs/status/WBV2-P54-000.md new file mode 100644 index 000000000..8bc45699f --- /dev/null +++ b/docs/status/WBV2-P54-000.md @@ -0,0 +1,7 @@ +# WBV2-P54-000 status + +- task: `WBV2-P54-000`; parent: `WBV2-P53-003`; status: `done` +- capability-family continuation authorized from Blender source +- 6900 inventory: 27 deduplicated batches, 6609 pending rows +- verification and completion overlay: `DEFERRED` +- nextTask: `WBV2-P54-001` diff --git a/docs/status/WBV2-P54-001.md b/docs/status/WBV2-P54-001.md new file mode 100644 index 000000000..d55ed4444 --- /dev/null +++ b/docs/status/WBV2-P54-001.md @@ -0,0 +1,7 @@ +# WBV2-P54-001 status + +- task: `WBV2-P54-001`; parent: `WBV2-P54-000`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P54-002` diff --git a/docs/status/WBV2-P54-002.md b/docs/status/WBV2-P54-002.md new file mode 100644 index 000000000..6b2f91865 --- /dev/null +++ b/docs/status/WBV2-P54-002.md @@ -0,0 +1,7 @@ +# WBV2-P54-002 status + +- task: `WBV2-P54-002`; parent: `WBV2-P54-001`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P54-003` diff --git a/docs/status/WBV2-P54-003.md b/docs/status/WBV2-P54-003.md new file mode 100644 index 000000000..1c073e184 --- /dev/null +++ b/docs/status/WBV2-P54-003.md @@ -0,0 +1,7 @@ +# WBV2-P54-003 status + +- task: `WBV2-P54-003`; parent: `WBV2-P54-002`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P55-000` diff --git a/docs/status/WBV2-P55-000.md b/docs/status/WBV2-P55-000.md new file mode 100644 index 000000000..6b3f4bc7a --- /dev/null +++ b/docs/status/WBV2-P55-000.md @@ -0,0 +1,7 @@ +# WBV2-P55-000 status + +- task: `WBV2-P55-000`; parent: `WBV2-P54-003`; status: `done` +- capability-family continuation authorized from Blender source +- 6900 inventory: 27 deduplicated batches, 6609 pending rows +- verification and completion overlay: `DEFERRED` +- nextTask: `WBV2-P55-001` diff --git a/docs/status/WBV2-P55-001.md b/docs/status/WBV2-P55-001.md new file mode 100644 index 000000000..5433f8b87 --- /dev/null +++ b/docs/status/WBV2-P55-001.md @@ -0,0 +1,7 @@ +# WBV2-P55-001 status + +- task: `WBV2-P55-001`; parent: `WBV2-P55-000`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P55-002` diff --git a/docs/status/WBV2-P55-002.md b/docs/status/WBV2-P55-002.md new file mode 100644 index 000000000..792018eec --- /dev/null +++ b/docs/status/WBV2-P55-002.md @@ -0,0 +1,7 @@ +# WBV2-P55-002 status + +- task: `WBV2-P55-002`; parent: `WBV2-P55-001`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P55-003` diff --git a/docs/status/WBV2-P55-003.md b/docs/status/WBV2-P55-003.md new file mode 100644 index 000000000..ac2d8236e --- /dev/null +++ b/docs/status/WBV2-P55-003.md @@ -0,0 +1,7 @@ +# WBV2-P55-003 status + +- task: `WBV2-P55-003`; parent: `WBV2-P55-002`; status: `done` +- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows +- Chromium, E2E receipts and completion overlay: `DEFERRED` +- inventory unchanged: `6900/6618`, effective `290/6609` +- nextTask: `WBV2-P56-000` diff --git a/docs/tasks/WBV2-P54-000.md b/docs/tasks/WBV2-P54-000.md new file mode 100644 index 000000000..baed61762 --- /dev/null +++ b/docs/tasks/WBV2-P54-000.md @@ -0,0 +1,35 @@ +# WBV2-P54-000: authorize_capability_family_wave + +- task: WBV2-P54-000 +- parent: WBV2-P53-003 +- status: in_progress +- gap: workflow:authorize_capability_family_wave +- ownerFamily: PROGRAM +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Authorize the next capability-family implementation wave from Blender source. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-root.mjs` + +## 验收 + +- 6900 inventory remains immutable +- capability-family deduplication is reused +- Chromium receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P54-000 --write` + +## 失败边界 + +- missing source, unsupported capability or hash drift remains in_progress/blocked + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P54-000/` +- Status: `docs/status/WBV2-P54-000.md` +- Manifest: `tests/golden/WBV2-P54-000/manifest.json` +- Rollback: restore WBV2-P53-003 as queue parent and leave the wave in_progress. diff --git a/docs/tasks/WBV2-P54-001.md b/docs/tasks/WBV2-P54-001.md new file mode 100644 index 000000000..3985b1c33 --- /dev/null +++ b/docs/tasks/WBV2-P54-001.md @@ -0,0 +1,38 @@ +# WBV2-P54-001: index_capability_family_batches + +- task: WBV2-P54-001 +- parent: WBV2-P54-000 +- status: in_progress +- gap: workflow:index_capability_family_batches +- ownerFamily: RELEASE +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Reuse the 27 deduplicated capability batches and unique behavior keys. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P54-001 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P54-001 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P54-001/` +- Status: `docs/status/WBV2-P54-001.md` +- Manifest: `tests/golden/WBV2-P54-001/manifest.json` +- Rollback: restore WBV2-P54-000 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P54-002.md b/docs/tasks/WBV2-P54-002.md new file mode 100644 index 000000000..392017436 --- /dev/null +++ b/docs/tasks/WBV2-P54-002.md @@ -0,0 +1,38 @@ +# WBV2-P54-002: implement_capability_family_slice + +- task: WBV2-P54-002 +- parent: WBV2-P54-001 +- status: planned +- gap: workflow:implement_capability_family_slice +- ownerFamily: IMPLEMENTATION +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Implement the next uncovered Blender capability family from the source-backed index. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P54-002 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P54-002 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P54-002/` +- Status: `docs/status/WBV2-P54-002.md` +- Manifest: `tests/golden/WBV2-P54-002/manifest.json` +- Rollback: restore WBV2-P54-001 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P54-003.md b/docs/tasks/WBV2-P54-003.md new file mode 100644 index 000000000..96b0cae82 --- /dev/null +++ b/docs/tasks/WBV2-P54-003.md @@ -0,0 +1,38 @@ +# WBV2-P54-003: run_capability_family_smoke + +- task: WBV2-P54-003 +- parent: WBV2-P54-002 +- status: planned +- gap: workflow:run_capability_family_smoke +- ownerFamily: RELEASE +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Run source and frontend smoke without Chromium parity verification. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P54-003 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P54-003 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P54-003/` +- Status: `docs/status/WBV2-P54-003.md` +- Manifest: `tests/golden/WBV2-P54-003/manifest.json` +- Rollback: restore WBV2-P54-002 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P55-000.md b/docs/tasks/WBV2-P55-000.md new file mode 100644 index 000000000..d31f867a1 --- /dev/null +++ b/docs/tasks/WBV2-P55-000.md @@ -0,0 +1,35 @@ +# WBV2-P55-000: authorize_capability_family_wave + +- task: WBV2-P55-000 +- parent: WBV2-P54-003 +- status: in_progress +- gap: workflow:authorize_capability_family_wave +- ownerFamily: PROGRAM +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Authorize the next capability-family implementation wave from Blender source. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-root.mjs` + +## 验收 + +- 6900 inventory remains immutable +- capability-family deduplication is reused +- Chromium receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P55-000 --write` + +## 失败边界 + +- missing source, unsupported capability or hash drift remains in_progress/blocked + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P55-000/` +- Status: `docs/status/WBV2-P55-000.md` +- Manifest: `tests/golden/WBV2-P55-000/manifest.json` +- Rollback: restore WBV2-P54-003 as queue parent and leave the wave in_progress. diff --git a/docs/tasks/WBV2-P55-001.md b/docs/tasks/WBV2-P55-001.md new file mode 100644 index 000000000..2443ad94e --- /dev/null +++ b/docs/tasks/WBV2-P55-001.md @@ -0,0 +1,38 @@ +# WBV2-P55-001: index_capability_family_batches + +- task: WBV2-P55-001 +- parent: WBV2-P55-000 +- status: in_progress +- gap: workflow:index_capability_family_batches +- ownerFamily: RELEASE +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Reuse the 27 deduplicated capability batches and unique behavior keys. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P55-001 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P55-001 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P55-001/` +- Status: `docs/status/WBV2-P55-001.md` +- Manifest: `tests/golden/WBV2-P55-001/manifest.json` +- Rollback: restore WBV2-P55-000 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P55-002.md b/docs/tasks/WBV2-P55-002.md new file mode 100644 index 000000000..60e380ae8 --- /dev/null +++ b/docs/tasks/WBV2-P55-002.md @@ -0,0 +1,38 @@ +# WBV2-P55-002: implement_capability_family_slice + +- task: WBV2-P55-002 +- parent: WBV2-P55-001 +- status: planned +- gap: workflow:implement_capability_family_slice +- ownerFamily: IMPLEMENTATION +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Implement the next uncovered Blender capability family from the source-backed index. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P55-002 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P55-002 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P55-002/` +- Status: `docs/status/WBV2-P55-002.md` +- Manifest: `tests/golden/WBV2-P55-002/manifest.json` +- Rollback: restore WBV2-P55-001 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P55-003.md b/docs/tasks/WBV2-P55-003.md new file mode 100644 index 000000000..787beb1cc --- /dev/null +++ b/docs/tasks/WBV2-P55-003.md @@ -0,0 +1,38 @@ +# WBV2-P55-003: run_capability_family_smoke + +- task: WBV2-P55-003 +- parent: WBV2-P55-002 +- status: planned +- gap: workflow:run_capability_family_smoke +- ownerFamily: RELEASE +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Run source and frontend smoke without Chromium parity verification. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Batch plan: `tests/golden/WBV2-P27-001/verification-batch-plan.json` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-slice.mjs --task WBV2-P55-003 --write` + +## 验收 + +- 6900 inventory and provenance remain read-only +- capability-family deduplication is reused +- malformed, unsupported, hash-drift and false-completion input fails closed +- Chromium, E2E receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P55-003 --write` + +## 失败边界 + +- missing source or unsupported capability remains in_progress/blocked +- representative implementation is never declared as full-family parity + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P55-003/` +- Status: `docs/status/WBV2-P55-003.md` +- Manifest: `tests/golden/WBV2-P55-003/manifest.json` +- Rollback: restore WBV2-P55-002 as queue parent and leave the task in_progress. diff --git a/docs/tasks/WBV2-P56-000.md b/docs/tasks/WBV2-P56-000.md new file mode 100644 index 000000000..4f8b099ea --- /dev/null +++ b/docs/tasks/WBV2-P56-000.md @@ -0,0 +1,35 @@ +# WBV2-P56-000: authorize_capability_family_wave + +- task: WBV2-P56-000 +- parent: WBV2-P55-003 +- status: in_progress +- gap: workflow:authorize_capability_family_wave +- ownerFamily: PROGRAM +- targetImplementationClass: SOURCE_BACKED + +## 目标 + +Authorize the next capability-family implementation wave from Blender source. + +## 输入与范围 + +- Blender source authority: `blender-5.2.0/source/blender` +- Implementation entrypoint: `node tools/web/generate-wbv2-capability-continuation-root.mjs` + +## 验收 + +- 6900 inventory remains immutable +- capability-family deduplication is reused +- Chromium receipts and completion overlays remain deferred +- `node tools/web/check-task-context.mjs --task WBV2-P56-000 --write` + +## 失败边界 + +- missing source, unsupported capability or hash drift remains in_progress/blocked + +## 交付与回滚 + +- Reports: `tests/golden/WBV2-P56-000/` +- Status: `docs/status/WBV2-P56-000.md` +- Manifest: `tests/golden/WBV2-P56-000/manifest.json` +- Rollback: restore WBV2-P55-003 as queue parent and leave the wave in_progress. diff --git a/nextTask.md b/nextTask.md index b340df857..ce6e2a27d 100644 --- a/nextTask.md +++ b/nextTask.md @@ -266,10 +266,10 @@ Recorded: 2026-08-29 Asia/Shanghai | Field | Value | | --- | --- | -| Current task when this file was written | `WBV2-P54-000` | +| Current task when this file was written | `WBV2-P56-000` | | Current task state | `in_progress` | -| Parent manifest | `tests/golden/WBV2/WBV2-P53-003/manifest.json` | -| Current task card | `docs/tasks/WBV2-P54-000.md` | +| Parent manifest | `tests/golden/WBV2/WBV2-P55-003/manifest.json` | +| Current task card | `docs/tasks/WBV2-P56-000.md` | | Current task-context nextTask | `NONE` | | Focused command | `node tools/web/generate-wbv2-capability-continuation-root.mjs` | diff --git a/tests/golden/WBV2-P27-002/manifest.json b/tests/golden/WBV2-P27-002/manifest.json index f8054c81a..7c71c6a70 100644 --- a/tests/golden/WBV2-P27-002/manifest.json +++ b/tests/golden/WBV2-P27-002/manifest.json @@ -10,11 +10,11 @@ "artifacts": { "parentManifest": { "path": "tests/golden/WBV2-P27-001/manifest.json", - "sha256": "bd4d5f58125f01ef5f97f062cfd8674e6f6b1d9dbf91323842de74943e691348" + "sha256": "17c16a7fcc11cc00d154eafaa9fb14678dfc40a830da67bcd3a1a03400226c17" }, "sourceBuildReport": { "path": "tests/golden/WBV2-P27-002/source-build-report.json", - "sha256": "ff002efba84c7ccbfc36b245ba02e36c526156c5f38de61da1e909a1c928a06d" + "sha256": "f173ff6755db61bf58ecddf15b3eaba547f242bd8138cfc6439affc0de0e7532" }, "sourceBuildLog": { "path": "tests/golden/WBV2-P27-002/source-build.log", diff --git a/tests/golden/WBV2-P27-002/source-build-report.json b/tests/golden/WBV2-P27-002/source-build-report.json index b2e069fe6..e69f67f1b 100644 --- a/tests/golden/WBV2-P27-002/source-build-report.json +++ b/tests/golden/WBV2-P27-002/source-build-report.json @@ -21,15 +21,15 @@ "artifacts": { "sourceApi": { "path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", - "sha256": "660074f33db8e8b1ec8e5d3f39daabc773f72ddfb2eabf0c1ad35cdadee24094" + "sha256": "1010064ec97fde0d1dfb676897f496e1c9fee928dcaf716cdbff137a92bdd685" }, "sourceMainState": { "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", - "sha256": "cc4a3cdcc7997aa5cf27cdd43b1ce8fd63bcc8744819c1faf0f4e0653390d5ce" + "sha256": "d50f75da48bb2deaba60f0f5561cc1240d8995d461ef699d073d4cc2abee76df" }, "sourceMainHeader": { "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", - "sha256": "cc42ea7028c4ed258b918cc54da352397d65a23c0770f37640ad50521a5c65ba" + "sha256": "62007f8aa752aeb72d1bc504ec01f244badf89bbb85a5e5bbc35c34596c1d438" }, "loader": { "path": "web/app/src/vendor/blender/web_engine.js", @@ -37,7 +37,7 @@ }, "wasm": { "path": "web/app/src/vendor/blender/web_engine.wasm", - "sha256": "22d37530e6e679e4c7262f1a0af14537036b941b759817e10f1d70926641380a" + "sha256": "0e08bedd3e7ed1e0bcd19a1e07820abb4a7c33fa78c0bbcb7e3f8a05cdd6ac03" }, "publicLoader": { "path": "web/app/public/vendor/blender/web_engine.js", @@ -45,19 +45,19 @@ }, "publicWasm": { "path": "web/app/public/vendor/blender/web_engine.wasm", - "sha256": "22d37530e6e679e4c7262f1a0af14537036b941b759817e10f1d70926641380a" + "sha256": "0e08bedd3e7ed1e0bcd19a1e07820abb4a7c33fa78c0bbcb7e3f8a05cdd6ac03" }, "webDistIndex": { "path": "web/dist/index.html", - "sha256": "545ae3ae4ac49d62c9e6a02568ab3cedc9fa71aca6b796a9ade454dba7e350e7" + "sha256": "71ba4964fed9ddcb4298c35f902290b695621eae834fecd98a5a7414a49139f1" }, "webDistWorker": { - "path": "web/dist/assets/web-engine.worker-BBoe9XKF.js", - "sha256": "717dc67a7fbe7cc585b9821bc4566a6a06ac21725a4972a8af28e48cb2d3634c" + "path": "web/dist/assets/web-engine.worker-DrHC8kAi.js", + "sha256": "5923e16ef875ba859b08b9cf755293cab8af3a16aaa702f8178aad81b2e5b7f5" }, "webDistWasm": { - "path": "web/dist/assets/web_engine-DFoIyWB-.wasm", - "sha256": "22d37530e6e679e4c7262f1a0af14537036b941b759817e10f1d70926641380a" + "path": "web/dist/assets/web_engine-C4Ps0Ult.wasm", + "sha256": "0e08bedd3e7ed1e0bcd19a1e07820abb4a7c33fa78c0bbcb7e3f8a05cdd6ac03" } }, "verification": { diff --git a/tests/golden/WBV2-P43-001/capability-implementation-index.json b/tests/golden/WBV2-P43-001/capability-implementation-index.json index 44a774b2f..2ae0b12de 100644 --- a/tests/golden/WBV2-P43-001/capability-implementation-index.json +++ b/tests/golden/WBV2-P43-001/capability-implementation-index.json @@ -5,11 +5,11 @@ "blenderRoot": "blender-5.2.0", "mainAuthority": "blender_main", "sourceFiles": { - "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp": "996dbe80b186ab5b7b36c608142c6cdb52351eda0f2e57f42320e9ab36c1393f", - "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp": "9ea8204a8b6c811a986dbed3ec4d3eee19721904b4e9185b44154cd9f0b43ae3", - "web/protocol/web-engine.ts": "b39ae8bcafeabd7b09c0f30bdd16e519eb0d1e9e476536491c11cc44f824d0ca", - "web/protocol/web-engine-capabilities.ts": "23844fc50efd0a332db54db6c02f2158f25c470b2e8404fca54e8c703167bcaf", - "web/app/src/workers/web-engine.worker.ts": "67c2b5c10cc008846e59ef11f78387a14a2fc84f8bb656ea52ed7093a180eabd" + "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp": "d50f75da48bb2deaba60f0f5561cc1240d8995d461ef699d073d4cc2abee76df", + "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp": "1010064ec97fde0d1dfb676897f496e1c9fee928dcaf716cdbff137a92bdd685", + "web/protocol/web-engine.ts": "ca5ca2b38038edf2ce62354126fc5a64b75137e95ce43476810815e49516679b", + "web/protocol/web-engine-capabilities.ts": "bc31d9af33e30089d0db5749d8e3146349bcbe53f7ff021b0dff0a3abf63de25", + "web/app/src/workers/web-engine.worker.ts": "788d1ba94148ee2fbc38775452b73014d7db2f5bf574fa8b5d78029e37c9cbc3" } }, "inventory": { diff --git a/tests/golden/WBV2-P43-001/manifest.json b/tests/golden/WBV2-P43-001/manifest.json index 06ce8e262..d7561c9a9 100644 --- a/tests/golden/WBV2-P43-001/manifest.json +++ b/tests/golden/WBV2-P43-001/manifest.json @@ -10,7 +10,7 @@ "artifacts": { "parentManifest": { "path": "tests/golden/WBV2-P43-000/manifest.json", - "sha256": "bab8b8e421c7fed2f347167fe5c4a8b0aeb7ff625a2e3c9cb0dc9b14f7c5141c" + "sha256": "2190468489b2e557356870a8254cf81db45086246338ff1b3f5384a61d6ae31d" }, "source1": { "path": "tools/web/build-wbv2-capability-implementation-index.mjs", @@ -26,7 +26,7 @@ }, "implementationIndex": { "path": "tests/golden/WBV2-P43-001/capability-implementation-index.json", - "sha256": "7aac6631cc692fcc8379eaa632ea8cda8962ba9214ed0408f1d2673796c0bf22" + "sha256": "46fa2b13ad78e463b1421f468360b153ddced6395172dc57588cc8bb9983925c" }, "report": { "path": "tests/golden/WBV2-P43-001/implementation-report.json", diff --git a/tests/golden/WBV2-P54-000/capability-continuation-plan.json b/tests/golden/WBV2-P54-000/capability-continuation-plan.json new file mode 100644 index 000000000..011b3ad51 --- /dev/null +++ b/tests/golden/WBV2-P54-000/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P54", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P54-000", + "phase": "P54", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P53-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P54-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P54-001", + "phase": "P54", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-002", + "phase": "P54", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P54-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-003", + "phase": "P54", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P54-000/capability-continuation-root-report.json b/tests/golden/WBV2-P54-000/capability-continuation-root-report.json new file mode 100644 index 000000000..ade8a8219 --- /dev/null +++ b/tests/golden/WBV2-P54-000/capability-continuation-root-report.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-000", + "operation": "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "parent": { + "task": "WBV2-P53-003", + "manifest": "tests/golden/WBV2-P53-003/manifest.json", + "manifestSha256": "d0145d5863c9662d27a705e2bdd06e9085cbaedd16946b691f6a29c1dafa769c" + }, + "sourceAuthority": "blender-5.2.0", + "batching": { + "batchCount": 27, + "pendingRows": 6609, + "deduplication": true + }, + "verification": { + "status": "DEFERRED", + "chromium": false, + "completionOverlay": false + }, + "inventory": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609 + }, + "nextTask": "WBV2-P54-001" +} diff --git a/tests/golden/WBV2-P54-000/manifest.json b/tests/golden/WBV2-P54-000/manifest.json new file mode 100644 index 000000000..d165b12c8 --- /dev/null +++ b/tests/golden/WBV2-P54-000/manifest.json @@ -0,0 +1,39 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-000", + "parentTask": "WBV2-P53-003", + "operation": "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": true, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P53-003/manifest.json", + "sha256": "d0145d5863c9662d27a705e2bdd06e9085cbaedd16946b691f6a29c1dafa769c" + }, + "plan": { + "path": "tests/golden/WBV2-P54-000/capability-continuation-plan.json", + "sha256": "2f4c1062a894ad8e9483e9697cc90b97827db3e0234131f549a450b6cf4947c6" + }, + "report": { + "path": "tests/golden/WBV2-P54-000/capability-continuation-root-report.json", + "sha256": "d9231d1d93f315cea1339190d2f09e90dd2f619f8e349d07389b1d98e85a331a" + }, + "status": { + "path": "docs/status/WBV2-P54-000.md", + "sha256": "ae4c59304aab38a95c200c3a29612ee805a0dc8740111c4d4ef0caceae1501bb" + } + }, + "assertions": { + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P54-001" +} diff --git a/tests/golden/WBV2-P54-000/task-context.json b/tests/golden/WBV2-P54-000/task-context.json new file mode 100644 index 000000000..1a4d44ad5 --- /dev/null +++ b/tests/golden/WBV2-P54-000/task-context.json @@ -0,0 +1,162 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-000", + "parentTask": "WBV2-P53-003", + "status": "in_progress", + "goal": "Authorize the next capability-family implementation wave from Blender source.", + "scope": { + "gap": "workflow:authorize_capability_family_wave", + "ownerFamily": "PROGRAM", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P54-000 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3703, + "contextRemainingTokens": 924 + }, + "source": { + "bytes": 6201, + "tokens": 1552 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P54-000/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P54-000.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P54-000/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P54-001", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P54-000.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P53-003/manifest.json", + "parentStatus": "docs/status/WBV2-P53-003.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P54-000.md", + "tests/golden/WBV2-P53-003/manifest.json", + "docs/status/WBV2-P53-003.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-P53-003", + "parentTask": "WBV2-P53-002", + "status": "done", + "nextTask": "WBV2-P54-000", + "artifactCount": 8 + }, + "statusSummary": [ + "# WBV2-P53-003 status", + "- task: `WBV2-P53-003`; parent: `WBV2-P53-002`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P54-000`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1052, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 36, + "taskTokens": 263 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P54-000.md", + "bytes": 1052, + "lines": 36, + "tokens": 263 + }, + { + "path": "tests/golden/WBV2-P53-003/manifest.json", + "bytes": 2029, + "lines": 58, + "tokens": 508 + }, + { + "path": "docs/status/WBV2-P53-003.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1552, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1552, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2576, + "serializedContextTokens": 622, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P54-001/capability-continuation-plan.json b/tests/golden/WBV2-P54-001/capability-continuation-plan.json new file mode 100644 index 000000000..8ba55656a --- /dev/null +++ b/tests/golden/WBV2-P54-001/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P54", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P54-000", + "phase": "P54", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P53-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P54-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P54-001", + "phase": "P54", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-002", + "phase": "P54", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P54-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-003", + "phase": "P54", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P54-001/implementation-report.json b/tests/golden/WBV2-P54-001/implementation-report.json new file mode 100644 index 000000000..6229b0425 --- /dev/null +++ b/tests/golden/WBV2-P54-001/implementation-report.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-001", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "INVENTORY.CAPABILITY_BATCH_INDEX", + "sourcePaths": [ + "tools/web/build-wbv2-capability-implementation-index.mjs", + "tests/golden/WBV2-P27-001/verification-batch-plan.json" + ], + "command": "/home/mes123456/.nvm/versions/node/v24.19.0/bin/node tools/web/build-wbv2-capability-implementation-index.mjs", + "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": "WBV2-P54-002" +} diff --git a/tests/golden/WBV2-P54-001/manifest.json b/tests/golden/WBV2-P54-001/manifest.json new file mode 100644 index 000000000..6a5272626 --- /dev/null +++ b/tests/golden/WBV2-P54-001/manifest.json @@ -0,0 +1,53 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-001", + "parentTask": "WBV2-P54-000", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P54-000/manifest.json", + "sha256": "d3534bb9925f25661e3594d99424001b79582925764c3ad572eca1c1b45acbef" + }, + "source1": { + "path": "tools/web/build-wbv2-capability-implementation-index.mjs", + "sha256": "5010e52764f49b52e69140c9b263debb5b53ecb9bec0e2f7ef76f5d6bc9c4704" + }, + "source2": { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "sha256": "56dddc2e4c380f364d1760dfd9bc7a6be04c1bd8979e0c2aeaa69ae80e80a14e" + }, + "report": { + "path": "tests/golden/WBV2-P54-001/implementation-report.json", + "sha256": "6b0d79b82d908afbef2acf503b7f0a6f3d25c989dd2fb86f4167551063efec87" + }, + "status": { + "path": "docs/status/WBV2-P54-001.md", + "sha256": "6ae9c5defd3400913dfa5028cd9f7c8cde214663f6ae7668a1bff7f072a5e42d" + }, + "plan": { + "path": "tests/golden/WBV2-P54-001/capability-continuation-plan.json", + "sha256": "c011a8ac98a7e7d2036d8575f4a9d94badd0bffeefa1643c4cb9c6754b45c2d5" + }, + "taskContext": { + "path": "tests/golden/WBV2-P54-001/task-context.json", + "sha256": "ac787afc966b28a9c9a9d19b3318564ff3022d19eea0f25e7e60461a6dc86a3a" + } + }, + "assertions": { + "capabilityFamily": "INVENTORY.CAPABILITY_BATCH_INDEX", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P54-002" +} diff --git a/tests/golden/WBV2-P54-001/task-context.json b/tests/golden/WBV2-P54-001/task-context.json new file mode 100644 index 000000000..32df817fe --- /dev/null +++ b/tests/golden/WBV2-P54-001/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-001", + "parentTask": "WBV2-P54-000", + "status": "in_progress", + "goal": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "scope": { + "gap": "workflow:index_capability_family_batches", + "ownerFamily": "RELEASE", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P54-001 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 4232, + "contextRemainingTokens": 1057 + }, + "source": { + "bytes": 5672, + "tokens": 1419 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P54-001/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P54-001.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P54-001/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P54-002", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P54-001.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P54-000/manifest.json", + "parentStatus": "docs/status/WBV2-P54-000.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P54-001.md", + "tests/golden/WBV2-P54-000/manifest.json", + "docs/status/WBV2-P54-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-P54-000", + "parentTask": "WBV2-P53-003", + "status": "done", + "nextTask": "WBV2-P54-001", + "artifactCount": 4 + }, + "statusSummary": [ + "# WBV2-P54-000 status", + "- task: `WBV2-P54-000`; parent: `WBV2-P53-003`; status: `done`", + "- capability-family continuation authorized from Blender source", + "- 6900 inventory: 27 deduplicated batches, 6609 pending rows", + "- verification and completion overlay: `DEFERRED`", + "- nextTask: `WBV2-P54-001`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1299, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 325 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P54-001.md", + "bytes": 1299, + "lines": 39, + "tokens": 325 + }, + { + "path": "tests/golden/WBV2-P54-000/manifest.json", + "bytes": 1282, + "lines": 40, + "tokens": 321 + }, + { + "path": "docs/status/WBV2-P54-000.md", + "bytes": 288, + "lines": 8, + "tokens": 72 + } + ], + "sourceTokens": 1419, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1419, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2443, + "serializedContextTokens": 620, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P54-002/capability-continuation-plan.json b/tests/golden/WBV2-P54-002/capability-continuation-plan.json new file mode 100644 index 000000000..18efffb33 --- /dev/null +++ b/tests/golden/WBV2-P54-002/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P54", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P54-000", + "phase": "P54", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P53-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P54-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P54-001", + "phase": "P54", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-002", + "phase": "P54", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P54-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-003", + "phase": "P54", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P54-002/implementation-report.json b/tests/golden/WBV2-P54-002/implementation-report.json new file mode 100644 index 000000000..f007b8e29 --- /dev/null +++ b/tests/golden/WBV2-P54-002/implementation-report.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-002", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "CORE_SCENE_GRAPH.TIMELINE_SETTINGS", + "sourcePaths": [ + "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", + "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", + "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp" + ], + "command": "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": "WBV2-P54-003" +} diff --git a/tests/golden/WBV2-P54-002/manifest.json b/tests/golden/WBV2-P54-002/manifest.json new file mode 100644 index 000000000..d11e19824 --- /dev/null +++ b/tests/golden/WBV2-P54-002/manifest.json @@ -0,0 +1,61 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-002", + "parentTask": "WBV2-P54-001", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P54-001/manifest.json", + "sha256": "8a2506af1b43fb8c7507cc483f801291a49482e39e651ae00df049ac0dac10df" + }, + "source1": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", + "sha256": "1478347103c8dafa9416cd762bc206727b024f7f43d77cd168af6c998c7b1e4b" + }, + "source2": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", + "sha256": "9c72be386ada1650104fed28390d53cf03a0d715f8dbbf5a1b17edcb482d31e3" + }, + "source3": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", + "sha256": "490a4dbe0c3947c21a15a904dab7af3c986d8802d3686e28255f4a4e30c57151" + }, + "source4": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", + "sha256": "0ca4d32c3968536a6bca90bbcabb93a7d721bb1736d4712f890c7615f995b5f2" + }, + "report": { + "path": "tests/golden/WBV2-P54-002/implementation-report.json", + "sha256": "a4f9c0b16107e0c85fe2fd81e5ff28c91e7d0810c3adf8dc18ca3ad13afef0c9" + }, + "status": { + "path": "docs/status/WBV2-P54-002.md", + "sha256": "04bf7bd03ed75bb971f4263f59c8d902726549acd7bef6ea8c6d6a1bb471f40d" + }, + "plan": { + "path": "tests/golden/WBV2-P54-002/capability-continuation-plan.json", + "sha256": "c955de10916351c9ead6f2e3ede5d172873fed349d33a0d908de4f01cf5c8a08" + }, + "taskContext": { + "path": "tests/golden/WBV2-P54-002/task-context.json", + "sha256": "fde0aba2438588a7656ad70728f19883906daec8cb7519ddcfc264c4d559f3bf" + } + }, + "assertions": { + "capabilityFamily": "CORE_SCENE_GRAPH.TIMELINE_SETTINGS", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P54-003" +} diff --git a/tests/golden/WBV2-P54-002/task-context.json b/tests/golden/WBV2-P54-002/task-context.json new file mode 100644 index 000000000..40bd13ac3 --- /dev/null +++ b/tests/golden/WBV2-P54-002/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-002", + "parentTask": "WBV2-P54-001", + "status": "planned", + "goal": "Implement the next uncovered Blender capability family from the source-backed index.", + "scope": { + "gap": "workflow:implement_capability_family_slice", + "ownerFamily": "IMPLEMENTATION", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P54-002 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3577, + "contextRemainingTokens": 893 + }, + "source": { + "bytes": 6327, + "tokens": 1583 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P54-002/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P54-002.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P54-002/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P54-003", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P54-002.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P54-001/manifest.json", + "parentStatus": "docs/status/WBV2-P54-001.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P54-002.md", + "tests/golden/WBV2-P54-001/manifest.json", + "docs/status/WBV2-P54-001.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-P54-001", + "parentTask": "WBV2-P54-000", + "status": "done", + "nextTask": "WBV2-P54-002", + "artifactCount": 7 + }, + "statusSummary": [ + "# WBV2-P54-001 status", + "- task: `WBV2-P54-001`; parent: `WBV2-P54-000`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P54-002`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1320, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 330 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P54-002.md", + "bytes": 1320, + "lines": 39, + "tokens": 330 + }, + { + "path": "tests/golden/WBV2-P54-001/manifest.json", + "bytes": 1887, + "lines": 54, + "tokens": 472 + }, + { + "path": "docs/status/WBV2-P54-001.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1583, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1583, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2607, + "serializedContextTokens": 625, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P54-003/capability-continuation-plan.json b/tests/golden/WBV2-P54-003/capability-continuation-plan.json new file mode 100644 index 000000000..895056fc6 --- /dev/null +++ b/tests/golden/WBV2-P54-003/capability-continuation-plan.json @@ -0,0 +1,181 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P54", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P54-000", + "phase": "P54", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P53-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P54-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P54-001", + "phase": "P54", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-002", + "phase": "P54", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P54-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P54-003", + "phase": "P54", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P54-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p54-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P54-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-000", + "phase": "P55", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P54-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P55-000.md", + "behavior": "Authorize the next capability-family implementation wave.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": true + } + ] +} diff --git a/tests/golden/WBV2-P54-003/implementation-report.json b/tests/golden/WBV2-P54-003/implementation-report.json new file mode 100644 index 000000000..b9f02a884 --- /dev/null +++ b/tests/golden/WBV2-P54-003/implementation-report.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-003", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", + "sourcePaths": [ + "web/protocol/web-engine-capabilities.ts", + "web/app/src/workers/web-engine.worker.ts", + "web/app/src/vendor/blender/web_engine.wasm" + ], + "command": "npm --prefix web run build", + "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": "WBV2-P55-000" +} diff --git a/tests/golden/WBV2-P54-003/manifest.json b/tests/golden/WBV2-P54-003/manifest.json new file mode 100644 index 000000000..735ac527d --- /dev/null +++ b/tests/golden/WBV2-P54-003/manifest.json @@ -0,0 +1,57 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-003", + "parentTask": "WBV2-P54-002", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P54-002/manifest.json", + "sha256": "fabdc9dca0104b11714bd9fed7118d3bc9cb9a7a301cf065d9b0b2342ae915da" + }, + "source1": { + "path": "web/protocol/web-engine-capabilities.ts", + "sha256": "f34b151f16a262a5e49780df96b75b9d85ebc8c6ec6e9f8522ed2e93ae95c672" + }, + "source2": { + "path": "web/app/src/workers/web-engine.worker.ts", + "sha256": "41e247c8a4a27ba3db7fc72e25025a72f0a9e14a1117ddfafec5c181286cf878" + }, + "source3": { + "path": "web/app/src/vendor/blender/web_engine.wasm", + "sha256": "8ab4d8d02ef418651e580d3c9fc0aede401b00bb6477c3a733453c5d14a3e09f" + }, + "report": { + "path": "tests/golden/WBV2-P54-003/implementation-report.json", + "sha256": "c5e97edac37acf4fb9c6d2ffe6a0e9d0285821694aba69d9356823f3fc389aa7" + }, + "status": { + "path": "docs/status/WBV2-P54-003.md", + "sha256": "ee27619ade7c98386c276a891dfe027ffb3d0a7c0553da133fbf9bf7733226ea" + }, + "plan": { + "path": "tests/golden/WBV2-P54-003/capability-continuation-plan.json", + "sha256": "1742f2e620ddccc703db5cf9850d36a526a296a2dee920549ba0b2ce5ac48c2b" + }, + "taskContext": { + "path": "tests/golden/WBV2-P54-003/task-context.json", + "sha256": "56694dd1d751f231e5a05b2aca0ab82843ca3ef6f642894faad12d07c620a394" + } + }, + "assertions": { + "capabilityFamily": "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P55-000" +} diff --git a/tests/golden/WBV2-P54-003/task-context.json b/tests/golden/WBV2-P54-003/task-context.json new file mode 100644 index 000000000..6dfea2013 --- /dev/null +++ b/tests/golden/WBV2-P54-003/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P54-003", + "parentTask": "WBV2-P54-002", + "status": "planned", + "goal": "Run source and frontend smoke without Chromium parity verification.", + "scope": { + "gap": "workflow:run_capability_family_smoke", + "ownerFamily": "RELEASE", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P54-003 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3218, + "contextRemainingTokens": 803 + }, + "source": { + "bytes": 6686, + "tokens": 1673 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P54-003/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P54-003.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P54-003/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P55-000", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P54-003.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P54-002/manifest.json", + "parentStatus": "docs/status/WBV2-P54-002.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P54-003.md", + "tests/golden/WBV2-P54-002/manifest.json", + "docs/status/WBV2-P54-002.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-P54-002", + "parentTask": "WBV2-P54-001", + "status": "done", + "nextTask": "WBV2-P54-003", + "artifactCount": 9 + }, + "statusSummary": [ + "# WBV2-P54-002 status", + "- task: `WBV2-P54-002`; parent: `WBV2-P54-001`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P54-003`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1284, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 321 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P54-003.md", + "bytes": 1284, + "lines": 39, + "tokens": 321 + }, + { + "path": "tests/golden/WBV2-P54-002/manifest.json", + "bytes": 2282, + "lines": 62, + "tokens": 571 + }, + { + "path": "docs/status/WBV2-P54-002.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1673, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1673, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2697, + "serializedContextTokens": 617, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P55-000/capability-continuation-plan.json b/tests/golden/WBV2-P55-000/capability-continuation-plan.json new file mode 100644 index 000000000..4427c674f --- /dev/null +++ b/tests/golden/WBV2-P55-000/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P55", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P55-000", + "phase": "P55", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P54-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P55-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P55-001", + "phase": "P55", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-002", + "phase": "P55", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P55-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-003", + "phase": "P55", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P55-000/capability-continuation-root-report.json b/tests/golden/WBV2-P55-000/capability-continuation-root-report.json new file mode 100644 index 000000000..b0206c213 --- /dev/null +++ b/tests/golden/WBV2-P55-000/capability-continuation-root-report.json @@ -0,0 +1,30 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-000", + "operation": "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "parent": { + "task": "WBV2-P54-003", + "manifest": "tests/golden/WBV2-P54-003/manifest.json", + "manifestSha256": "2a395930ce0745aee0e8f49965407a3fd66d8f80f830431d1e4dc15525e0f5aa" + }, + "sourceAuthority": "blender-5.2.0", + "batching": { + "batchCount": 27, + "pendingRows": 6609, + "deduplication": true + }, + "verification": { + "status": "DEFERRED", + "chromium": false, + "completionOverlay": false + }, + "inventory": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609 + }, + "nextTask": "WBV2-P55-001" +} diff --git a/tests/golden/WBV2-P55-000/manifest.json b/tests/golden/WBV2-P55-000/manifest.json new file mode 100644 index 000000000..590d03d29 --- /dev/null +++ b/tests/golden/WBV2-P55-000/manifest.json @@ -0,0 +1,39 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-000", + "parentTask": "WBV2-P54-003", + "operation": "AUTHORIZE_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": true, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P54-003/manifest.json", + "sha256": "2a395930ce0745aee0e8f49965407a3fd66d8f80f830431d1e4dc15525e0f5aa" + }, + "plan": { + "path": "tests/golden/WBV2-P55-000/capability-continuation-plan.json", + "sha256": "30b2eaa73cf1ec71f8ff5c46a686d7567e36f82879c0e5fc75e7dc60c925827e" + }, + "report": { + "path": "tests/golden/WBV2-P55-000/capability-continuation-root-report.json", + "sha256": "6fc58b2ca4e7eb810fe5062d309633d1fceedc23e48bf8d889992e66cf2de6f1" + }, + "status": { + "path": "docs/status/WBV2-P55-000.md", + "sha256": "d4037a6cd588109d8862e3595887afd5a2899686dfd233567db25e0203e5494b" + } + }, + "assertions": { + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P55-001" +} diff --git a/tests/golden/WBV2-P55-000/task-context.json b/tests/golden/WBV2-P55-000/task-context.json new file mode 100644 index 000000000..bc61a9f24 --- /dev/null +++ b/tests/golden/WBV2-P55-000/task-context.json @@ -0,0 +1,162 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-000", + "parentTask": "WBV2-P54-003", + "status": "in_progress", + "goal": "Authorize the next capability-family implementation wave from Blender source.", + "scope": { + "gap": "workflow:authorize_capability_family_wave", + "ownerFamily": "PROGRAM", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P55-000 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3703, + "contextRemainingTokens": 924 + }, + "source": { + "bytes": 6201, + "tokens": 1552 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P55-000/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P55-000.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P55-000/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P55-001", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P55-000.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P54-003/manifest.json", + "parentStatus": "docs/status/WBV2-P54-003.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P55-000.md", + "tests/golden/WBV2-P54-003/manifest.json", + "docs/status/WBV2-P54-003.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-P54-003", + "parentTask": "WBV2-P54-002", + "status": "done", + "nextTask": "WBV2-P55-000", + "artifactCount": 8 + }, + "statusSummary": [ + "# WBV2-P54-003 status", + "- task: `WBV2-P54-003`; parent: `WBV2-P54-002`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P55-000`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1052, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 36, + "taskTokens": 263 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P55-000.md", + "bytes": 1052, + "lines": 36, + "tokens": 263 + }, + { + "path": "tests/golden/WBV2-P54-003/manifest.json", + "bytes": 2029, + "lines": 58, + "tokens": 508 + }, + { + "path": "docs/status/WBV2-P54-003.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1552, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1552, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2576, + "serializedContextTokens": 622, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P55-001/capability-continuation-plan.json b/tests/golden/WBV2-P55-001/capability-continuation-plan.json new file mode 100644 index 000000000..68da50f2b --- /dev/null +++ b/tests/golden/WBV2-P55-001/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P55", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P55-000", + "phase": "P55", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P54-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P55-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P55-001", + "phase": "P55", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-002", + "phase": "P55", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P55-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-003", + "phase": "P55", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "planned", + "ready": false, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P55-001/implementation-report.json b/tests/golden/WBV2-P55-001/implementation-report.json new file mode 100644 index 000000000..74f89a8fb --- /dev/null +++ b/tests/golden/WBV2-P55-001/implementation-report.json @@ -0,0 +1,32 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-001", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "INVENTORY.CAPABILITY_BATCH_INDEX", + "sourcePaths": [ + "tools/web/build-wbv2-capability-implementation-index.mjs", + "tests/golden/WBV2-P27-001/verification-batch-plan.json" + ], + "command": "/home/mes123456/.nvm/versions/node/v24.19.0/bin/node tools/web/build-wbv2-capability-implementation-index.mjs", + "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": "WBV2-P55-002" +} diff --git a/tests/golden/WBV2-P55-001/manifest.json b/tests/golden/WBV2-P55-001/manifest.json new file mode 100644 index 000000000..7efb5a4f9 --- /dev/null +++ b/tests/golden/WBV2-P55-001/manifest.json @@ -0,0 +1,53 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-001", + "parentTask": "WBV2-P55-000", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P55-000/manifest.json", + "sha256": "c3f70909d1553ed2fb6b1859406dca949da1578e1dc7afe7cb2c97090d87b8a9" + }, + "source1": { + "path": "tools/web/build-wbv2-capability-implementation-index.mjs", + "sha256": "5010e52764f49b52e69140c9b263debb5b53ecb9bec0e2f7ef76f5d6bc9c4704" + }, + "source2": { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "sha256": "56dddc2e4c380f364d1760dfd9bc7a6be04c1bd8979e0c2aeaa69ae80e80a14e" + }, + "report": { + "path": "tests/golden/WBV2-P55-001/implementation-report.json", + "sha256": "489ea0d716b712b69df772c3dca452076cd4c7207430e3f38603f6e2d3dbf5fe" + }, + "status": { + "path": "docs/status/WBV2-P55-001.md", + "sha256": "e522142b169f6e845e693cc33489e0e04dd9a0498346b415fae8b22c9dbccd3a" + }, + "plan": { + "path": "tests/golden/WBV2-P55-001/capability-continuation-plan.json", + "sha256": "3f2e9cb9e0c4a4f796da28e3465a0fb3b24c8d7da5edd663902a449457e81faa" + }, + "taskContext": { + "path": "tests/golden/WBV2-P55-001/task-context.json", + "sha256": "5b172fc39df1df80b984df73cfb17f4b19bba8a8fc037d26d0227fd2d055e55d" + } + }, + "assertions": { + "capabilityFamily": "INVENTORY.CAPABILITY_BATCH_INDEX", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P55-002" +} diff --git a/tests/golden/WBV2-P55-001/task-context.json b/tests/golden/WBV2-P55-001/task-context.json new file mode 100644 index 000000000..cddc03819 --- /dev/null +++ b/tests/golden/WBV2-P55-001/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-001", + "parentTask": "WBV2-P55-000", + "status": "in_progress", + "goal": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "scope": { + "gap": "workflow:index_capability_family_batches", + "ownerFamily": "RELEASE", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P55-001 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 4232, + "contextRemainingTokens": 1057 + }, + "source": { + "bytes": 5672, + "tokens": 1419 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P55-001/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P55-001.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P55-001/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P55-002", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P55-001.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P55-000/manifest.json", + "parentStatus": "docs/status/WBV2-P55-000.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P55-001.md", + "tests/golden/WBV2-P55-000/manifest.json", + "docs/status/WBV2-P55-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-P55-000", + "parentTask": "WBV2-P54-003", + "status": "done", + "nextTask": "WBV2-P55-001", + "artifactCount": 4 + }, + "statusSummary": [ + "# WBV2-P55-000 status", + "- task: `WBV2-P55-000`; parent: `WBV2-P54-003`; status: `done`", + "- capability-family continuation authorized from Blender source", + "- 6900 inventory: 27 deduplicated batches, 6609 pending rows", + "- verification and completion overlay: `DEFERRED`", + "- nextTask: `WBV2-P55-001`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1299, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 325 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P55-001.md", + "bytes": 1299, + "lines": 39, + "tokens": 325 + }, + { + "path": "tests/golden/WBV2-P55-000/manifest.json", + "bytes": 1282, + "lines": 40, + "tokens": 321 + }, + { + "path": "docs/status/WBV2-P55-000.md", + "bytes": 288, + "lines": 8, + "tokens": 72 + } + ], + "sourceTokens": 1419, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1419, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2443, + "serializedContextTokens": 620, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P55-002/capability-continuation-plan.json b/tests/golden/WBV2-P55-002/capability-continuation-plan.json new file mode 100644 index 000000000..9cdd2f655 --- /dev/null +++ b/tests/golden/WBV2-P55-002/capability-continuation-plan.json @@ -0,0 +1,151 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P55", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P55-000", + "phase": "P55", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P54-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P55-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P55-001", + "phase": "P55", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-002", + "phase": "P55", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P55-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-003", + "phase": "P55", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": false + } + ] +} diff --git a/tests/golden/WBV2-P55-002/implementation-report.json b/tests/golden/WBV2-P55-002/implementation-report.json new file mode 100644 index 000000000..4f426a884 --- /dev/null +++ b/tests/golden/WBV2-P55-002/implementation-report.json @@ -0,0 +1,34 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-002", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "CORE_SCENE_GRAPH.PIPELINE_SETTINGS", + "sourcePaths": [ + "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", + "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", + "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp" + ], + "command": "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": "WBV2-P55-003" +} diff --git a/tests/golden/WBV2-P55-002/manifest.json b/tests/golden/WBV2-P55-002/manifest.json new file mode 100644 index 000000000..d022399c2 --- /dev/null +++ b/tests/golden/WBV2-P55-002/manifest.json @@ -0,0 +1,61 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-002", + "parentTask": "WBV2-P55-001", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P55-001/manifest.json", + "sha256": "464e36f5651a465df8693e37d503a37b0625d4f3871560ba06ddbcfb45c5c380" + }, + "source1": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.cpp", + "sha256": "d50f75da48bb2deaba60f0f5561cc1240d8995d461ef699d073d4cc2abee76df" + }, + "source2": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_main_state.h", + "sha256": "62007f8aa752aeb72d1bc504ec01f244badf89bbb85a5e5bbc35c34596c1d438" + }, + "source3": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", + "sha256": "1010064ec97fde0d1dfb676897f496e1c9fee928dcaf716cdbff137a92bdd685" + }, + "source4": { + "path": "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp", + "sha256": "041e41f000aaf8c45ae6b7a2b4b603dd2bcacaccb1875aacb0261be4b19a1849" + }, + "report": { + "path": "tests/golden/WBV2-P55-002/implementation-report.json", + "sha256": "2349ce271ec2aa58e9decfbdde688f1d9a56919283225ce537e6af7f0ade5477" + }, + "status": { + "path": "docs/status/WBV2-P55-002.md", + "sha256": "8a446b73cd272790ae3410ca5d28a19bd19336f31a89e7917f24247eba452d77" + }, + "plan": { + "path": "tests/golden/WBV2-P55-002/capability-continuation-plan.json", + "sha256": "16e381d069f803b9db06f983715f221abf24c6d28a354e65836fd6cc09f7c29f" + }, + "taskContext": { + "path": "tests/golden/WBV2-P55-002/task-context.json", + "sha256": "b97d0cc7a2bda8dd11f2fa8163574c4933df2a31ee2a8493fd1f0173931b7c22" + } + }, + "assertions": { + "capabilityFamily": "CORE_SCENE_GRAPH.PIPELINE_SETTINGS", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P55-003" +} diff --git a/tests/golden/WBV2-P55-002/task-context.json b/tests/golden/WBV2-P55-002/task-context.json new file mode 100644 index 000000000..ac8fa39c4 --- /dev/null +++ b/tests/golden/WBV2-P55-002/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-002", + "parentTask": "WBV2-P55-001", + "status": "planned", + "goal": "Implement the next uncovered Blender capability family from the source-backed index.", + "scope": { + "gap": "workflow:implement_capability_family_slice", + "ownerFamily": "IMPLEMENTATION", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P55-002 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3577, + "contextRemainingTokens": 893 + }, + "source": { + "bytes": 6327, + "tokens": 1583 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P55-002/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P55-002.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P55-002/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P55-003", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P55-002.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P55-001/manifest.json", + "parentStatus": "docs/status/WBV2-P55-001.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P55-002.md", + "tests/golden/WBV2-P55-001/manifest.json", + "docs/status/WBV2-P55-001.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-P55-001", + "parentTask": "WBV2-P55-000", + "status": "done", + "nextTask": "WBV2-P55-002", + "artifactCount": 7 + }, + "statusSummary": [ + "# WBV2-P55-001 status", + "- task: `WBV2-P55-001`; parent: `WBV2-P55-000`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P55-002`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1320, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 330 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P55-002.md", + "bytes": 1320, + "lines": 39, + "tokens": 330 + }, + { + "path": "tests/golden/WBV2-P55-001/manifest.json", + "bytes": 1887, + "lines": 54, + "tokens": 472 + }, + { + "path": "docs/status/WBV2-P55-001.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1583, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1583, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2607, + "serializedContextTokens": 625, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P55-003/capability-continuation-plan.json b/tests/golden/WBV2-P55-003/capability-continuation-plan.json new file mode 100644 index 000000000..5e905f3ec --- /dev/null +++ b/tests/golden/WBV2-P55-003/capability-continuation-plan.json @@ -0,0 +1,181 @@ +{ + "schemaVersion": 1, + "planId": "BLENDER_WEB_CAPABILITY_CONTINUATION_P55", + "status": "ACTIVE_CAPABILITY_FAMILY_QUEUE", + "authority": "user_authorized_implementation_first_execution", + "sourceAuthority": { + "blenderRoot": "blender-5.2.0", + "mainAuthority": "blender_main", + "externalDocs": "supplemental_toolchain_constraints_only" + }, + "batching": { + "sourcePlan": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "batchCount": 27, + "pendingRows": 6609, + "dedupeBy": [ + "sourceHash", + "behaviorHash", + "dedupeKey" + ] + }, + "inventoryPolicy": { + "total": 6900, + "legacyCompleted": 281, + "legacyPending": 6618, + "effectiveCompleted": 290, + "effectivePending": 6609, + "overlayMutation": "forbidden_during_implementation_wave" + }, + "tasks": [ + { + "id": "WBV2-P55-000", + "phase": "P55", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P54-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P55-000.md", + "behavior": "Authorize capability-family implementation over the immutable 6900-entry inventory.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": true + }, + { + "id": "WBV2-P55-001", + "phase": "P55", + "title": "index_capability_family_batches", + "kind": "feature", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-000" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-001", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-001.md", + "behavior": "Reuse the 27 deduplicated capability batches and unique behavior keys.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-002", + "phase": "P55", + "title": "implement_capability_family_slice", + "kind": "feature", + "owner": "IMPLEMENTATION", + "dependsOn": [ + "WBV2-P55-001" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-002", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-002.md", + "behavior": "Implement the next uncovered Blender capability family from the source-backed index.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P55-003", + "phase": "P55", + "title": "run_capability_family_smoke", + "kind": "enabling", + "owner": "RELEASE", + "dependsOn": [ + "WBV2-P55-002" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p55-003", + "gate": "IMPLEMENTATION", + "card": "docs/tasks/WBV2-P55-003.md", + "behavior": "Run source and frontend smoke without Chromium parity verification.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "done", + "ready": false, + "queueMutationAllowed": false + }, + { + "id": "WBV2-P56-000", + "phase": "P56", + "title": "authorize_capability_family_wave", + "kind": "enabling", + "owner": "PROGRAM", + "dependsOn": [ + "WBV2-P55-003" + ], + "parityId": null, + "implementationClass": "SOURCE_BACKED", + "parallelGroup": "p56-000", + "gate": "G1", + "card": "docs/tasks/WBV2-P56-000.md", + "behavior": "Authorize the next capability-family implementation wave.", + "outputs": [ + "implementation-report", + "manifest", + "status" + ], + "acceptance": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "status": "in_progress", + "ready": true, + "queueMutationAllowed": true + } + ] +} diff --git a/tests/golden/WBV2-P55-003/implementation-report.json b/tests/golden/WBV2-P55-003/implementation-report.json new file mode 100644 index 000000000..c4d0d9a13 --- /dev/null +++ b/tests/golden/WBV2-P55-003/implementation-report.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-003", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "PASS", + "family": "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", + "sourcePaths": [ + "web/protocol/web-engine-capabilities.ts", + "web/app/src/workers/web-engine.worker.ts", + "web/app/src/vendor/blender/web_engine.wasm" + ], + "command": "npm --prefix web run build", + "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": "WBV2-P56-000" +} diff --git a/tests/golden/WBV2-P55-003/manifest.json b/tests/golden/WBV2-P55-003/manifest.json new file mode 100644 index 000000000..c19e30452 --- /dev/null +++ b/tests/golden/WBV2-P55-003/manifest.json @@ -0,0 +1,57 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-003", + "parentTask": "WBV2-P55-002", + "operation": "IMPLEMENT_CAPABILITY_FAMILY_CONTINUATION", + "status": "done", + "enablingTask": false, + "parityStateChange": false, + "runtime": "SOURCE_BACKED_CAPABILITY_FAMILY_QUEUE", + "artifacts": { + "parentManifest": { + "path": "tests/golden/WBV2-P55-002/manifest.json", + "sha256": "448c56548ecb8bff999b6c588242ab9910f1647f781cfb641141cca2aa98bded" + }, + "source1": { + "path": "web/protocol/web-engine-capabilities.ts", + "sha256": "bc31d9af33e30089d0db5749d8e3146349bcbe53f7ff021b0dff0a3abf63de25" + }, + "source2": { + "path": "web/app/src/workers/web-engine.worker.ts", + "sha256": "788d1ba94148ee2fbc38775452b73014d7db2f5bf574fa8b5d78029e37c9cbc3" + }, + "source3": { + "path": "web/app/src/vendor/blender/web_engine.wasm", + "sha256": "0e08bedd3e7ed1e0bcd19a1e07820abb4a7c33fa78c0bbcb7e3f8a05cdd6ac03" + }, + "report": { + "path": "tests/golden/WBV2-P55-003/implementation-report.json", + "sha256": "0ca330131cd14bea4f4e6f2561c83dd51147fdbe0e7ee79cc4b92badde96f0ad" + }, + "status": { + "path": "docs/status/WBV2-P55-003.md", + "sha256": "0294c6326b8ffcbff3f6061a61d84c123ec5b52ec45b702fb310cb102d2cc169" + }, + "plan": { + "path": "tests/golden/WBV2-P55-003/capability-continuation-plan.json", + "sha256": "2fe5f2ec5cbbfd74d51301bba8b2130cffd7af68f29ac9ae324ac98386e24978" + }, + "taskContext": { + "path": "tests/golden/WBV2-P55-003/task-context.json", + "sha256": "9010757cc1bb74f0d88a65699f7f6b14c5a412ea13dc8b48be021c0839fe0121" + } + }, + "assertions": { + "capabilityFamily": "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE", + "sourceBacked": true, + "batchCount": 27, + "pendingRows": 6609, + "verificationDeferred": true, + "completionOverlayWritten": false, + "inventoryTotal": 6900, + "effectiveCompleted": 290, + "effectivePending": 6609, + "historicalReproduction": false + }, + "nextTask": "WBV2-P56-000" +} diff --git a/tests/golden/WBV2-P55-003/task-context.json b/tests/golden/WBV2-P55-003/task-context.json new file mode 100644 index 000000000..4a0a8651a --- /dev/null +++ b/tests/golden/WBV2-P55-003/task-context.json @@ -0,0 +1,167 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P55-003", + "parentTask": "WBV2-P55-002", + "status": "planned", + "goal": "Run source and frontend smoke without Chromium parity verification.", + "scope": { + "gap": "workflow:run_capability_family_smoke", + "ownerFamily": "RELEASE", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P55-003 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3218, + "contextRemainingTokens": 803 + }, + "source": { + "bytes": 6686, + "tokens": 1673 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P27-001/verification-batch-plan.json", + "bytes": 21184, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P55-003/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P55-003.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P55-003/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": "WBV2-P56-000", + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P55-003.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P55-002/manifest.json", + "parentStatus": "docs/status/WBV2-P55-002.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P55-003.md", + "tests/golden/WBV2-P55-002/manifest.json", + "docs/status/WBV2-P55-002.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-P55-002", + "parentTask": "WBV2-P55-001", + "status": "done", + "nextTask": "WBV2-P55-003", + "artifactCount": 9 + }, + "statusSummary": [ + "# WBV2-P55-002 status", + "- task: `WBV2-P55-002`; parent: `WBV2-P55-001`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P55-003`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1284, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 39, + "taskTokens": 321 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P55-003.md", + "bytes": 1284, + "lines": 39, + "tokens": 321 + }, + { + "path": "tests/golden/WBV2-P55-002/manifest.json", + "bytes": 2282, + "lines": 62, + "tokens": 571 + }, + { + "path": "docs/status/WBV2-P55-002.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1673, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1673, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2697, + "serializedContextTokens": 617, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2-P56-000/task-context.json b/tests/golden/WBV2-P56-000/task-context.json new file mode 100644 index 000000000..0d8e6d3d3 --- /dev/null +++ b/tests/golden/WBV2-P56-000/task-context.json @@ -0,0 +1,162 @@ +{ + "schemaVersion": 1, + "task": "WBV2-P56-000", + "parentTask": "WBV2-P55-003", + "status": "in_progress", + "goal": "Authorize the next capability-family implementation wave from Blender source.", + "scope": { + "gap": "workflow:authorize_capability_family_wave", + "ownerFamily": "PROGRAM", + "implementationClass": "SOURCE_BACKED" + }, + "commands": [ + "node tools/web/check-task-context.mjs --task WBV2-P56-000 --write" + ], + "inputPaths": [], + "inputSelection": { + "schemaVersion": 1, + "limits": { + "maxFiles": 12, + "evidenceBytes": 8192, + "contextRemainingBytes": 3703, + "contextRemainingTokens": 924 + }, + "source": { + "bytes": 6201, + "tokens": 1552 + }, + "selected": [], + "excluded": [ + { + "path": "blender-5.2.0/source/blender", + "bytes": 12546, + "reason": "EVIDENCE_BYTE_BUDGET" + }, + { + "path": "tests/golden/WBV2-P56-000/", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "docs/status/WBV2-P56-000.md", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + }, + { + "path": "tests/golden/WBV2-P56-000/manifest.json", + "bytes": null, + "reason": "GENERATED_EVIDENCE_OUTPUT" + } + ], + "totals": { + "files": 0, + "bytes": 0, + "tokens": 0 + } + }, + "exitCriteria": [ + "6900 inventory remains immutable", + "capability families are deduplicated before implementation", + "real Blender source or WebEngine Main path is wired", + "verification and completion overlay remain deferred" + ], + "nextTask": null, + "sourceDocuments": { + "queue": "docs/EXECUTION_QUEUE.md", + "taskCard": "docs/tasks/WBV2-P56-000.md", + "taskIndex": "tests/golden/WBV2/task-index.json", + "parentManifest": "tests/golden/WBV2-P55-003/manifest.json", + "parentStatus": "docs/status/WBV2-P55-003.md" + }, + "readPolicy": { + "required": [ + "docs/EXECUTION_QUEUE.md", + "docs/tasks/WBV2-P56-000.md", + "tests/golden/WBV2-P55-003/manifest.json", + "docs/status/WBV2-P55-003.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-P55-003", + "parentTask": "WBV2-P55-002", + "status": "done", + "nextTask": "WBV2-P56-000", + "artifactCount": 8 + }, + "statusSummary": [ + "# WBV2-P55-003 status", + "- task: `WBV2-P55-003`; parent: `WBV2-P55-002`; status: `done`", + "- capability-family implementation: `PASS`; 27 deduplicated batches; 6609 pending rows", + "- Chromium, E2E receipts and completion overlay: `DEFERRED`", + "- inventory unchanged: `6900/6618`, effective `290/6609`", + "- nextTask: `WBV2-P56-000`" + ] + }, + "budgets": { + "queueBytes": 4096, + "taskBytes": 1052, + "parentManifestBytes": 24576, + "parentStatusBytes": 6144, + "evidenceFiles": 12, + "evidenceBytes": 8192, + "contextTokens": 3500, + "contextEnvelopeTokens": 1024, + "taskLines": 36, + "taskTokens": 263 + }, + "size": { + "documents": [ + { + "path": "docs/EXECUTION_QUEUE.md", + "bytes": 2803, + "lines": 51, + "tokens": 701 + }, + { + "path": "docs/tasks/WBV2-P56-000.md", + "bytes": 1052, + "lines": 36, + "tokens": 263 + }, + { + "path": "tests/golden/WBV2-P55-003/manifest.json", + "bytes": 2029, + "lines": 58, + "tokens": 508 + }, + { + "path": "docs/status/WBV2-P55-003.md", + "bytes": 317, + "lines": 8, + "tokens": 80 + } + ], + "sourceTokens": 1552, + "evidenceFiles": 0, + "evidenceBytes": 0, + "evidenceTokens": 0, + "totalTokens": 1552, + "reservedEnvelopeTokens": 1024, + "estimatedContextTokens": 2576, + "serializedContextTokens": 619, + "withinBudget": true + } +} diff --git a/tests/golden/WBV2/task-catalog.jsonl b/tests/golden/WBV2/task-catalog.jsonl index 12b30131d..41da8fd6e 100644 --- a/tests/golden/WBV2/task-catalog.jsonl +++ b/tests/golden/WBV2/task-catalog.jsonl @@ -1,5 +1,5 @@ -{"id":"WBV2-P53-000","gapId":"workflow:authorize_capability_family_wave","ownerFamily":"PROGRAM","sourceTask":"P53","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} -{"id":"WBV2-P53-001","gapId":"workflow:index_capability_family_batches","ownerFamily":"RELEASE","sourceTask":"P53","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} -{"id":"WBV2-P53-002","gapId":"workflow:implement_capability_family_slice","ownerFamily":"IMPLEMENTATION","sourceTask":"P53","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} -{"id":"WBV2-P53-003","gapId":"workflow:run_capability_family_smoke","ownerFamily":"RELEASE","sourceTask":"P53","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} -{"id":"WBV2-P54-000","gapId":"workflow:authorize_capability_family_wave","ownerFamily":"PROGRAM","sourceTask":"P54","state":"active","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} +{"id":"WBV2-P55-000","gapId":"workflow:authorize_capability_family_wave","ownerFamily":"PROGRAM","sourceTask":"P55","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} +{"id":"WBV2-P55-001","gapId":"workflow:index_capability_family_batches","ownerFamily":"RELEASE","sourceTask":"P55","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} +{"id":"WBV2-P55-002","gapId":"workflow:implement_capability_family_slice","ownerFamily":"IMPLEMENTATION","sourceTask":"P55","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} +{"id":"WBV2-P55-003","gapId":"workflow:run_capability_family_smoke","ownerFamily":"RELEASE","sourceTask":"P55","state":"completed","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} +{"id":"WBV2-P56-000","gapId":"workflow:authorize_capability_family_wave","ownerFamily":"PROGRAM","sourceTask":"P56","state":"active","targetImplementationClass":"SOURCE_BACKED","exitCriteria":["6900 inventory remains immutable","capability families are deduplicated before implementation","real Blender source or WebEngine Main path is wired","verification and completion overlay remain deferred"]} diff --git a/tests/golden/WBV2/task-index.json b/tests/golden/WBV2/task-index.json index a5c9f91b1..68bdb26a5 100644 --- a/tests/golden/WBV2/task-index.json +++ b/tests/golden/WBV2/task-index.json @@ -1 +1 @@ -{"schemaVersion":1,"operation":"BLENDER_WEB_CAPABILITY_TASK_INDEX","source":{"path":"tests/golden/WBV2-P53-003/capability-continuation-plan.json","sha256":"620bf88ac83a5d06278c1b1cc5efc144961ddac0841fab0bf30a5982c808e4da"},"catalog":{"path":"tests/golden/WBV2/task-catalog.jsonl","sha256":"2b2d1a1597d45ca2213d268d43da5b8448bd4e8e863ee1d0a7d61c377d95b442"},"taskCount":5,"activeTask":"WBV2-P54-000","entries":{"WBV2-P53-000":{"line":0,"offset":0,"length":402,"previous":"WBV2-P52-003","next":"WBV2-P53-001"},"WBV2-P53-001":{"line":1,"offset":402,"length":401,"previous":"WBV2-P53-000","next":"WBV2-P53-002"},"WBV2-P53-002":{"line":2,"offset":803,"length":410,"previous":"WBV2-P53-001","next":"WBV2-P53-003"},"WBV2-P53-003":{"line":3,"offset":1213,"length":397,"previous":"WBV2-P53-002","next":"WBV2-P54-000"},"WBV2-P54-000":{"line":4,"offset":1610,"length":399,"previous":"WBV2-P53-003","next":null}}} +{"schemaVersion":1,"operation":"BLENDER_WEB_CAPABILITY_TASK_INDEX","source":{"path":"tests/golden/WBV2-P55-003/capability-continuation-plan.json","sha256":"2fe5f2ec5cbbfd74d51301bba8b2130cffd7af68f29ac9ae324ac98386e24978"},"catalog":{"path":"tests/golden/WBV2/task-catalog.jsonl","sha256":"ed82ed6e0407c03eb8bbf5e68ff95f95f52366d91761282696797817a5301a9f"},"taskCount":5,"activeTask":"WBV2-P56-000","entries":{"WBV2-P55-000":{"line":0,"offset":0,"length":402,"previous":"WBV2-P54-003","next":"WBV2-P55-001"},"WBV2-P55-001":{"line":1,"offset":402,"length":401,"previous":"WBV2-P55-000","next":"WBV2-P55-002"},"WBV2-P55-002":{"line":2,"offset":803,"length":410,"previous":"WBV2-P55-001","next":"WBV2-P55-003"},"WBV2-P55-003":{"line":3,"offset":1213,"length":397,"previous":"WBV2-P55-002","next":"WBV2-P56-000"},"WBV2-P56-000":{"line":4,"offset":1610,"length":399,"previous":"WBV2-P55-003","next":null}}} diff --git a/tools/web/generate-wbv2-capability-continuation-slice.mjs b/tools/web/generate-wbv2-capability-continuation-slice.mjs index de3852e9c..f54514664 100644 --- a/tools/web/generate-wbv2-capability-continuation-slice.mjs +++ b/tools/web/generate-wbv2-capability-continuation-slice.mjs @@ -25,14 +25,14 @@ 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: phase >= 53 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 52 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 51 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 50 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 49 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : 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 >= 53 ? "web_engine_blend_main_set_scene_unit_settings" : phase >= 52 ? "web_engine_blend_main_set_scene_audio_settings" : phase >= 51 ? "web_engine_blend_main_set_scene_render_settings" : phase >= 50 ? "web_engine_blend_main_set_scene_properties" : phase >= 49 ? "web_engine_blend_main_set_physics_simulation" : phase >= 47 ? "web_engine_blend_main_set_geometry_node_graph" : "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 >= 55 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 54 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 53 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 52 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp", "blender-5.2.0/source/blender/web_engine/web_engine_blend_reader.cpp"] : phase >= 51 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 50 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : phase >= 49 ? ["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", "blender-5.2.0/source/blender/web_engine/web_engine_api.cpp"] : 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 >= 55 ? "web_engine_blend_main_set_scene_pipeline_settings" : phase >= 54 ? "web_engine_blend_main_set_scene_timeline_settings" : phase >= 53 ? "web_engine_blend_main_set_scene_unit_settings" : phase >= 52 ? "web_engine_blend_main_set_scene_audio_settings" : phase >= 51 ? "web_engine_blend_main_set_scene_render_settings" : phase >= 50 ? "web_engine_blend_main_set_scene_properties" : phase >= 49 ? "web_engine_blend_main_set_physics_simulation" : 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 >= 53 ? "CORE_SCENE_GRAPH.UNIT_SETTINGS" : index === 2 && phase >= 52 ? "CORE_SCENE_GRAPH.AUDIO_SETTINGS" : index === 2 && phase >= 51 ? "CORE_SCENE_GRAPH.RENDER_SETTINGS" : index === 2 && phase >= 50 ? "CORE_SCENE_GRAPH.SCENE_PROPERTIES" : index === 2 && phase >= 49 ? "SIMULATION.NATIVE_MANIFEST_BINDING" : index === 2 && phase >= 47 ? "GEOMETRY_NODES.NATIVE_MATERIALIZATION" : index === 2 ? "WORKFLOW.CAPABILITY_FAMILY_WORKBENCH" : "IMPLEMENTATION.CAPABILITY_FAMILY_SMOKE"; +const family = index === 1 ? "INVENTORY.CAPABILITY_BATCH_INDEX" : index === 2 && phase >= 55 ? "CORE_SCENE_GRAPH.PIPELINE_SETTINGS" : index === 2 && phase >= 54 ? "CORE_SCENE_GRAPH.TIMELINE_SETTINGS" : index === 2 && phase >= 53 ? "CORE_SCENE_GRAPH.UNIT_SETTINGS" : index === 2 && phase >= 52 ? "CORE_SCENE_GRAPH.AUDIO_SETTINGS" : index === 2 && phase >= 51 ? "CORE_SCENE_GRAPH.RENDER_SETTINGS" : index === 2 && phase >= 50 ? "CORE_SCENE_GRAPH.SCENE_PROPERTIES" : index === 2 && phase >= 49 ? "SIMULATION.NATIVE_MANIFEST_BINDING" : 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`; diff --git a/web/app/public/vendor/blender/web_engine.wasm b/web/app/public/vendor/blender/web_engine.wasm index 6d3e7b423a9177aad33cf2941d0cd168259303fd..ada34ad65ac5e71bcfc5a6b74f398b63c9404d31 100644 GIT binary patch delta 3327565 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�&g$|fHxUEm~(;A4ZOuD+(CEx69AgW$AQ}^ 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⋙9bp9iBquMHJq}5VRON^y50R{XQLbn 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

S`s}OH~lW_;JSEW(x(zmV+L4?6v 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