Skip to content

Commit 37af0fd

Browse files
committed
docs: update plan.md/NEXT.md with SYS-W3-06/W14-41 and session recap
Adds 2 new [PROPOSED] plan.md tasks from tonight's modeling-workflow conversation (not started, no implementation without confirmation): - SYS-W3-06: a primitive-type metadata registry (name/tessellation- clamp/MCB-enum-bound), replacing ~4 duplicated switch/magic-number sites -- found while researching how many places a new primitive type touches (~25 sites, 8 subsystems), motivated by a real past bug documented in ObjectTypeName.hpp's own header comment. - SYS-W14-41: Import OBJ/GLB dialogs use a raw text-buffer path field with no native file-picker, unlike the material-texture Browse flow elsewhere in the editor. Appends a NEXT.md session-log entry recapping the SYS-W8-08 misdiagnosis correction (it was CNA, not sharp-runtime; fixed via a confirmed CNA pin bump, verified on real CI), the new SYS-W8-09 finding (a CNA-internal build failure only reproducible on the GitHub Actions runner), and the plan_consistency regex false-positive fix.
1 parent 6a91866 commit 37af0fd

2 files changed

Lines changed: 93 additions & 0 deletions

File tree

NEXT.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,3 +611,63 @@ runs MinGW-cross-compiled console/test binaries fine in this sandbox; only
611611
the full GUI editor hits the documented `SIGSYS` block. This was the key
612612
technique that let 2 of tonight's Windows-only bugs (items 2-3 above) get
613613
*real* verification instead of source-level reasoning alone.
614+
615+
## Session log (2026-07-27, continued): SYS-W8-08 was CNA, not sharp-runtime; SYS-W8-09 found; 2 external-review corrections
616+
617+
An external review of the work above caught 2 real documentation errors
618+
(not code errors): `SYS-W11-09`'s `editor-sanitizer` CI job claimed to use
619+
`gcc`/`g++` "matching" the plain editor job, but `git log -S` showed it had
620+
used `clang`/`clang++` since its very first commit — the claim was never
621+
actually applied. Fixed for real (switched to `gcc-14`/`g++-14`, confirmed
622+
on the next CI run: configure now succeeds with zero Clang/CNA
623+
incompatibility). Also fixed this file's own "Current priorities" section,
624+
which had gone stale mid-session (still said "no Wine"/"awaiting Windows
625+
run" long after both were resolved) while only this "Session log" kept
626+
getting updated — downgraded `SYS-W11-09` from the incorrectly-implied
627+
"done" to `[IN_PROGRESS]` in `plan.md` to match reality.
628+
629+
Investigating `SYS-W8-08` further (the `ShaderEffect` API mismatch) found
630+
the ORIGINAL diagnosis wrong: `ShaderEffect` lives in **CNA**
631+
(`cna/include/Microsoft/Xna/Framework/Graphics/ShaderEffect.hpp`), not
632+
`sharp-runtime`. The CI-pinned CNA commit (`d0c21ee6`) genuinely lacked the
633+
4 methods mesh-craft's source calls, AND turned out to not even be an
634+
ancestor of CNA's current `develop` branch (its history was rewritten after
635+
being recorded here) — it predated CNA's own Task 1079 commit
636+
(`b08c7aa8`, 2026-07-16) that added them. **User confirmed bumping the
637+
CI-pinned CNA revision** to CNA's current `develop` tip
638+
(`ac3aaaeb2a5ba27dbd9e22e782c7041e6e40947c`) before it was made, given it
639+
reverses a deliberate AUD-057 pinning decision. Verified locally first
640+
(full editor rebuild, 176 of 180 tests passed, same 4 already-known
641+
Blender/`numpy` failures), then confirmed on real CI: the `ShaderEffect`
642+
error is completely gone from both `Editor (EASYGL) ASan+UBSan` and
643+
`Editor (VULKAN)`. `SYS-W8-08` is genuinely `[DONE]` now.
644+
645+
That same CI run surfaced a **third**, different CNA-internal build
646+
failure, only on the sanitizer job: `cna/include/CNA/Internal/Xnb/
647+
DecimalDateTimeContentTypeReaders.hpp:32` calls
648+
`ContentReader::ReadDecimal()`, rejected by the runner's compiler. Tried
649+
hard to reproduce locally before filing this as `SYS-W8-09` `[BLOCKED]`: an
650+
isolated single-file compile, a full `CNA` target rebuild under the exact
651+
same flags, and a ccache-cleared from-scratch rebuild all succeeded
652+
cleanly in this sandbox — looks like a GCC-version-sensitive difference
653+
between this sandbox and the GitHub Actions runner, not a straightforward
654+
missing-method bug. `Editor (VULKAN)`/`Editor (EASYGL)` (non-sanitizer)
655+
are unaffected — they still fail earlier on `SYS-W8-07`'s unrelated
656+
`chdir()` issue.
657+
658+
Also fixed a `plan_consistency` CTest failure (`test/validate_plan_
659+
consistency.py`'s ctest-count check): 3 legitimate partial-pass sentences
660+
in this file (e.g. "115 of 118, 3 known failures", written at the time as
661+
an N/N-style ratio) tripped a regex meant to catch stale "fully green N/N"
662+
claims. Reworded to "X of Y tests passed"
663+
phrasing — no content change, just avoids the false positive.
664+
665+
Separately, a conversation about editor modeling workflow (how to add a
666+
roof or a fence) turned up 2 real, evidenced gaps, filed as `[PROPOSED]`
667+
in `plan.md` (not started, no implementation without the usual
668+
confirmation): `SYS-W3-06` (a primitive-type metadata registry — adding
669+
one new primitive today touches ~25 sites across 8 subsystems, and
670+
`ObjectTypeName.hpp`'s own header comment documents a real past bug from
671+
this exact scatter) and `SYS-W14-41` (the Import OBJ/GLB dialogs have a
672+
raw text-buffer path field, no native file-picker, unlike the
673+
material-texture Browse flow elsewhere in the editor).

plan.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,39 @@ report and defer rather than fix).
607607
header), not a regression; left unbuilt per this task's explicit
608608
mc3togltf/mc3tomcb-out-of-scope instruction. Zero real test regressions.
609609

610+
- **SYS-W3-06** `[PROPOSED]` `P2` — A single-source-of-truth "primitive
611+
descriptor" registry (display name, tessellation clamp, MCB enum-count
612+
bound) for each `ObjectType`/`PrimitiveType`, replacing today's ~4
613+
independently-duplicated switch/magic-number sites. Found 2026-07-27 while
614+
researching how much code a brand-new primitive type touches: adding one
615+
today requires edits across ~25 sites in 8 subsystems (enum/struct, XML/
616+
JSON/MCB parser+writer, 2 independent mesh tessellators — the exporter's
617+
`MeshBuilder.cpp` and the live-viewport's `SceneRenderer_Builders.cpp`
618+
CSG, 6+ editor-UI surfaces, and docs). This is not a hypothetical
619+
concern: `include/MeshCraft/Editor/ObjectTypeName.hpp`'s own header
620+
comment documents a real incident where two divergent copies of
621+
`objectTypeName()` both silently mishandled 5 primitive types (Torus,
622+
Capsule, Disk, Grid, IcoSphere), so macro record/replay silently turned a
623+
Torus into a Box. **Deliberately scoped:** a registry for the
624+
serialization-adjacent *metadata* (name/clamp/enum-bound) would eliminate
625+
that class of bug; it would NOT and should not try to unify the two
626+
independent mesh-tessellation implementations, which genuinely differ per
627+
rendering backend and would need a much larger, separately-justified
628+
refactor to merge. Not started — needs the usual per-task confirmation
629+
before implementation.
630+
631+
- **SYS-W14-41** `[PROPOSED]` `P3``MenuBar::drawFileImportObj`/
632+
`drawFileImportGlb` (`src/MeshCraft/Application/UI/MenuBar.cpp:651-656`)
633+
open a dialog with a plain ImGui text buffer for the file path
634+
(`importObjDialogBuf_`/`importGlbDialogBuf_`) — no native OS file-picker
635+
"Browse..." button, unlike the material-texture Browse flow elsewhere in
636+
the editor (AUD-era F9's native-dialog integration). OS-level drag-and-
637+
drop (`SDL_EVENT_DROP_FILE`) already works as the low-friction path; this
638+
task is only about the fallback dialog for when drag-drop isn't
639+
convenient (e.g. the file isn't visible in an open file-manager window).
640+
Low-risk, UI-only change — reuse the existing native-dialog helper rather
641+
than adding a new file-picker dependency. Not started.
642+
610643
### W9 — Undo and data-loss
611644

612645
- **SYS-W9-05** `[DONE]` `P2` — Automatic history and exact undo now retain

0 commit comments

Comments
 (0)