@@ -280,51 +280,38 @@ and the BWidget vendor-audit are resolved by this removal (see §4 below).
280280 ` ctest --label-exclude long -j$(nproc) ` green (555 tests) twice, matching a
281281 serial run; a deliberately broken module failed only its own three tests.
282282
283- - ** [ M] Add a CI matrix:** GCC + Clang, Debug + Release, and a macOS job
284- (the kernel and SDL/curses UIs should be close to working there).
285-
286- ** ⚙ PROMPT 3.2 — recommended model: Sonnet.** * (Workflow wiring; the
287- escape hatches for the two risky legs — Clang and macOS — are specified.)*
288-
289- ``` text
290- Task: turn Xconq's single-configuration CI into a matrix: GCC + Clang,
291- Debug + Release on Ubuntu, plus a macOS job.
292-
293- PREREQUISITE for the Clang legs: the §1 -fpermissive removal (prompt 2.1)
294- must be committed — Clang has no equivalent flag. If it has not landed,
295- do the GCC matrix + macOS now and leave a commented-out Clang leg with a
296- note.
297- Context: .github/workflows/c-cpp.yml currently builds once on Ubuntu with
298- the default compiler and runs ctest --label-exclude long.
299- Method:
300- 1. Ubuntu matrix: {gcc, clang} x {Debug, Release} via CC/CXX and
301- -DCMAKE_BUILD_TYPE. Both UIs must configure (same apt packages);
302- quick test lane must pass on every leg. Release is the leg most likely
303- to surface new warnings/UB-dependent behavior — report, don't paper
304- over: a test that fails only in Release is a real finding; file it as
305- a note on this plan item if you cannot fix it quickly.
306- 2. macOS job (macos-latest): install deps via brew. `sdlconq` now builds
307- against native SDL3 (7/2026 SDL2 port, then 7/2026 SDL3 port — see
308- §4), so `brew install sdl3` is the dependency to fetch; the
309- sdl12-compat shim is no longer relevant here. curses ships with the
310- OS. (The Tcl/Tk and Xt/Xaw UIs this note used to caveat around no
311- longer exist — see Step 2.)
312- Minimum bar for the job to be worth merging: kernel + skelconq +
313- cconq build and the quick ctest lane passes. Fix small portability
314- issues this exposes (BSD vs GNU userland in test scripts, missing
315- includes); if something needs real porting work, scope it out —
316- mark the macOS job continue-on-error: true with a linked note on this
317- plan item rather than shipping a red main branch.
318- 3. Keep total CI time sane: build with -j, cache nothing fancy initially,
319- and keep the long label excluded everywhere.
320- 4. Update CLAUDE.md's CI description and the README build/status section
321- if it exists.
322- Verify: all matrix legs green in an actual CI run (push to a branch/PR
323- and check, do not merge red), local spot-check of one clang Debug build +
324- ctest.
325- Commit; mark this item done (strikethrough + date) in MODERNIZATION-PLAN.md,
326- recording which UIs build on macOS.
327- ```
283+ - ~~ ** [ M] Add a CI matrix:** GCC + Clang, Debug + Release, and a macOS job
284+ (the kernel and SDL/curses UIs should be close to working there).~~
285+ * (done 7/2026)* : Ubuntu is now a 4-leg matrix (gcc/clang x Debug/Release,
286+ via ` CC ` /` CXX ` and ` -DCMAKE_BUILD_TYPE ` ) and all 4 legs are green,
287+ confirmed in an actual CI run. Along the way this surfaced and fixed
288+ three real, previously-latent bugs: the SDL3-from-source build (added
289+ with the SDL2→3 port) had been silently broken on every CI run since,
290+ missing ` libxtst-dev ` (SDL's own CMake needs XTest to configure) —
291+ reproduced and fixed in a plain ` ubuntu:24.04 ` container; two switch
292+ statements had comment-only ` /* fall through */ ` markers that only
293+ GCC's ` -Wimplicit-fallthrough ` honors (Clang requires the
294+ ` [[fallthrough]]; ` attribute — ` kernel/nlang.cc ` , matching the
295+ precedent in ` read.cc ` ); and Release's optimizer surfaced a genuine
296+ ` -Wmaybe-uninitialized ` in ` curses/ccmd.cc ` that Debug doesn't reach.
297+ Also fixed two actual missing ` break; ` s found while auditing every
298+ ` default: break; ` in the tree for the same fallthrough class
299+ (` kernel/help.cc ` , ` sdl/sdlscreen.cc ` ; harmless in both cases since the
300+ ` default ` did nothing but break anyway, but not annotated as
301+ intentional).
302+ The macOS job builds the kernel, ` skelconq ` , and ` cconq ` — but as of
303+ this writing its ` cmake -B build ` configure step fails for an
304+ undiagnosed reason; two fix attempts (plain configure, then hinting
305+ ` -DCMAKE_PREFIX_PATH=$(brew --prefix) ` for ` find_package(SDL3) ` )
306+ didn't resolve it, and the actual error text couldn't be retrieved in
307+ this session (GitHub's logs API rejects anonymous/unauthenticated
308+ requests even for public repos, and no macOS machine was available to
309+ reproduce locally). ` sdlconq ` is expected to be skipped there regardless
310+ — it links Xlib/Xmu/Xext directly (not just SDL3, see
311+ ` sdl/CMakeLists.txt ` ), which needs XQuartz. The job is kept
312+ ` continue-on-error: true ` ; a future session with either an authenticated
313+ ` gh ` /API token or a real Mac should pull the actual configure error and
314+ finish this leg.
328315- ** [ M] Add ASan/UBSan CI jobs** running the quick test suite. A codebase this
329316 old will surface real bugs immediately; fix as they appear.
330317
0 commit comments