@@ -58,18 +58,14 @@ architecture, distribution, or measurable performance work. `P3` is polish.
5858The user authorized this queue on 2026-07-26. Work proceeds one task at a
5959time; re-evaluate scope and blockers before starting each item.
6060
61- 1 . ** SYS-W11-06** ` P2 ` — standalone Windows qualification. ** In progress:**
62- the release-readiness changes are published on ` develop ` ; await the first
63- native ` windows-2022 ` CI CTest/artifact run before accepting the release
64- gate. ** Amended acceptance (2026-07-26 review):** a green in-tree CTest run
65- alone does not prove the two published ` .exe ` files are a usable
66- standalone artifact. Before DONE, additionally: copy or download the
67- staged artifact into a clean directory outside all build trees and outside
68- ` PATH ` ; run both executables with ` --version ` from there; perform one
69- MC3→MCB and one MC3→GLB conversion and verify the fixed fixture SHA-256;
70- confirm every third-party runtime DLL the two executables need (the root
71- ` CMakeLists.txt ` allows Manifold/tinyobjloader as shared runtime libraries)
72- is staged alongside them.
61+ This queue is currently empty: the standalone-Windows-qualification task that
62+ occupied it is done (see the "Active roadmap" section below for its full
63+ verification evidence). Every other tracked item is ` [BLOCKED] ` (external
64+ dependency, sibling-repository owner coordination, or a user decision) or
65+ ` [DEFERRED] ` (intentional) — including 2 real third-party bugs found while
66+ verifying the Editor CI jobs this same pass, deliberately not fixed here
67+ (sibling repository, outside this session's authorized scope; user chose to
68+ report and defer rather than fix).
7369
7470---
7571
@@ -283,19 +279,45 @@ time; re-evaluate scope and blockers before starting each item.
283279 smoke plus MC3/MCB and CLI round trips; the installed glTF CLI resolves its
284280 bundled Manifold runtime through ` $ORIGIN/../lib ` .
285281
286- - ** SYS-W11-06** ` [IN_PROGRESS ] ` ` P2 ` — Qualify standalone MC3/MCB/tooling builds and
282+ - ** SYS-W11-06** ` [DONE ] ` ` P2 ` — Qualify standalone MC3/MCB/tooling builds and
287283 tests on a current Windows runner, independent of CNA editor backend
288- blockers. The new ` windows-2022 ` CI job configures, builds, and CTests all
289- four standalone components, verifies a fixed MC3→MCB/GLB SHA-256 fixture,
290- then publishes the two Windows CLI executables. Local MinGW 14 cross builds
291- compiled the standalone targets, and their CTest registrations correctly
292- use the configured emulator. This also exposed and fixed all four
293- narrow-string uses of ` path::native() ` in confinement checks;
294- ` generic_string() ` now works on Windows-wide paths. The local sandbox blocks
295- Wine itself with ` SIGSYS ` , so it cannot supply runtime evidence. The
296- release-readiness changes are now pushed to ` origin/develop ` ; await and
297- review the first GitHub Windows CTest/artifact run before marking this task
298- done.
284+ blockers. The ` windows-2022 ` CI job configures, builds, and CTests all four
285+ standalone components, verifies a fixed MC3→MCB/GLB SHA-256 fixture, then
286+ publishes the two Windows CLI executables. This also exposed and fixed all
287+ four narrow-string uses of ` path::native() ` in confinement checks;
288+ ` generic_string() ` now works on Windows-wide paths.
289+ ** Amended acceptance criteria (2026-07-26 review) verified for real,
290+ 2026-07-27** , against the actual artifact published by the first fully
291+ green ` windows-2022 ` run — not just an in-tree CTest pass. Correction to
292+ this file's own prior belief: ** Wine is not blocked in this sandbox** for
293+ plain console/test binaries (only the full GUI editor hits ` SIGSYS ` ), so
294+ this was verified directly rather than deferred:
295+ - Downloaded ` meshcraft-cli-windows ` via ` gh run download ` , extracted into
296+ a scratch directory outside every build tree and outside ` PATH ` .
297+ - ` sha256sum ` on all 4 manifest entries matches ` SHA256SUMS.txt ` exactly
298+ (the manifest itself uses bare filenames rather than the ` tool/tool.exe `
299+ subpaths the archive actually has — a cosmetic manifest nit, not a hash
300+ mismatch).
301+ - Both ` mc3tomcb.exe --version ` /` mc3togltf.exe --version ` succeed under
302+ Wine with ` PATH ` forced to ` /usr/bin:/bin ` only (no build-tree fallback
303+ possible).
304+ - A real MC3→MCB and MC3→GLB conversion of ` test/house.mc3.xml ` from the
305+ extracted binaries reproduced the exact existing fixture hashes
306+ (` 4157f107e277a4... ` /` 0ef25953c8bce5... ` ) byte-for-byte.
307+ - ** First download attempt (pre-existing artifact) failed outright** :
308+ ` mc3togltf.exe ` wouldn't even start (` STATUS_DLL_NOT_FOUND ` under the
309+ same Wine repro) — the published artifact had zero DLLs bundled, but
310+ ` mc3togltf.exe ` dynamically linked Manifold, tinyxml2, and the MinGW
311+ runtime itself. Root-caused and fixed by statically linking the entire
312+ standalone-Windows build (` -DBUILD_SHARED_LIBS=OFF ` +
313+ ` -static -static-libgcc -static-libstdc++ ` in ` ci.yml ` 's shared
314+ configure step) rather than trying to enumerate and stage every DLL —
315+ re-verified after the fix with the same repro, now passing every check
316+ above with zero DLL dependencies at all. See ` NEXT.md ` for the full
317+ diagnostic trail and a CMake gotcha this surfaced
318+ (` $<TARGET_RUNTIME_DLLS:...> ` expanding to nothing broke the existing
319+ DLL-copy POST_BUILD command outright; fixed with the documented
320+ ` $<IF:$<BOOL:...>,copy_if_different,true> ` workaround).
299321
300322- ** SYS-W11-07** ` [DEFERRED] ` ` P3 ` — Improve dependency reproducibility with
301323 immutable revisions or verified archives, third-party notice/SBOM, and an
@@ -342,19 +364,16 @@ time; re-evaluate scope and blockers before starting each item.
342364 build (` mc3tomcb/build ` , ` mc3togltf/build ` ); all pass, and the pre-existing
343365 3 Blender/` numpy ` failures in ` mc3togltf ` 's standalone suite are unrelated
344366 (same environment gap as ` SYS-W9-06 ` /` SYS-W1-08 ` 's writeups).
345- ** Windows remains partial, honestly:** added a "Stage release manifest and
346- notices" step to the ` windows-2022 ` CI job (SHA-256 manifest + notices
347- bundled into the uploaded artifact, same shape as the Linux archive) —
348- this is a safe, additive change with no dependency on the DLL-staging gap.
349- Deliberately did NOT attempt to fix ` mc3togltf.exe ` 's
350- ` STATUS_DLL_NOT_FOUND ` failure (confirmed present even for the in-tree
351- ctest run, not just a downloaded artifact) as part of this task: that is
352- one of the 6 general CI-red regressions from tonight's survey, explicitly
353- left for a separate pass per the user's standing instruction, and this
354- task's own manifest-generation work does not depend on it being fixed
355- first. Native Windows clean-room extraction/` --version ` /conversion
356- remains unverified in this sandbox (no Wine) — same limitation as
357- ` SYS-W11-06 ` .
367+ Added a "Stage release manifest and notices" step to the ` windows-2022 ` CI
368+ job (SHA-256 manifest + notices bundled into the uploaded artifact, same
369+ shape as the Linux archive). At the time this task was originally done,
370+ ` mc3togltf.exe ` 's ` STATUS_DLL_NOT_FOUND ` failure was deliberately left for
371+ a separate pass; ** that gap (and the Windows clean-room verification this
372+ task's own writeup called "unverified — no Wine") is now closed by
373+ ` SYS-W11-06 ` 's later evidence** — Wine does work in this sandbox for
374+ console binaries, and the underlying DLL problem is fixed by statically
375+ linking the standalone Windows build. See ` SYS-W11-06 ` for the full
376+ verification.
358377
359378- ** SYS-W11-09** ` [DONE] ` ` P1 ` — Added first-party editor sanitizer CI, and it
360379 immediately found a real bug, confirming the whole point of doing this.
@@ -603,8 +622,13 @@ time; re-evaluate scope and blockers before starting each item.
603622 regression from this change). The full root-project ` MeshCraft ` editor
604623 target, plus the registry/undo/obj-export-cleanup tests that exercise
605624 ` Mc3Document::saveToFile() ` /registry save paths transitively, also built
606- and passed. Native Windows overwrite qualification remains unverified in
607- this sandbox (no Wine); left for ` SYS-W11-06 ` 's own Windows CI evidence.
625+ and passed. ** Update (2026-07-27): native Windows overwrite qualification
626+ is no longer unverified** — Wine does run console binaries in this
627+ sandbox after all, and a real MinGW+Wine repro of ` mc3_atomic_write `
628+ passed cleanly (see ` SYS-W11-06 ` 's later evidence), plus this primitive's
629+ finalize-retry budget was separately widened after a real Windows CI run
630+ hit a slower-than-expected transient lock (unrelated Unicode-path bug,
631+ also fixed — see ` NEXT.md ` ).
608632 Editor-side direct-write config files (preferences/keybindings/macros/
609633 recent-files) were surveyed and found to have the same unprotected-
610634 direct-write shape, but are intentionally left out of this task's scope —
0 commit comments