Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions roadmap/M0-foundations.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,13 @@ No rendering, no physics, no networking yet — `laige-core` only.
`PASS_REGULAR_EXPRESSION` under `WILL_FAIL` (verified on CMake 4.4.3),
so content cannot be asserted with CTest properties.
- **Verify:** (verified locally 2026-09-10, GCC 16.2.1 + Clang 22.1.8;
pushed as `785af81` — the `ci.yml` (8-job) run, including the new
`include-lint` job, is pending observation from this environment
(private repo, no CI API token); the `ci-pull.yml` job will run on
the next PR):
pushed as `785af81`; CI observed 2026-09-10 via the GitHub API —
the `ci.yml` (8-job) run on push `741c163` (run 34518244428) is
green, including the new `include-lint` job, whose job log shows
the live report: `count: 1 (budget: 10, PRD §11)` and `OK — 2
source file(s) scanned, 1 allowed internal include edge(s)`; the
`ci-pull.yml` include-lint job is exercised by this step's own PR —
the observation is appended in the closing record commit):
(a) an illegal include fails the lint — a future `laige-render` header
stub plus a `laige-core` file including it → `R1`, exit 1; the same
stub from `laige-sim` → `R2` (upward); a `src/` module including
Expand Down
2 changes: 1 addition & 1 deletion roadmap/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ One line per completed (or split/renumbered) step.
| 2026-09-10 | M0-DEP-01 | — | `deps.lock` (repo root) + configure-time verification in `cmake/laige-deps-lock.cmake` (deterministic tree SHA-256; fails loudly on mismatch, missing tree, unlisted `deps/` dir, or malformed lock); vendored GoogleTest v1.18.0 (`deps/googletest`, 252 files, commit `063de7e9…`, BSD-3-Clause) wired into tests only (`gtest_main`, `BUILD_GMOCK`/`INSTALL_GTEST` off, no-exceptions/no-rtti flags match engine test TUs); `laige-core_tests` converted to the first GTest suite; ADR 0004 written; fresh+shared+ASan+Clang trees verified warning-free with `ctest` 1/1, tampered vendored file fails the configure |
| 2026-09-10 | M0-CI-01 | `7ec98b9` | CI matrix `.github/workflows/ci.yml` (all 5 P0 jobs on push to `master` + `workflow_dispatch`: linux-gcc, linux-clang, windows-msvc, macos-arm64, macos-intel) and `ci-pull.yml` (one P0 OS per PR, selected by `ci:linux`/`ci:windows`/`ci:macos` labels, default Linux — PRD §14 cadence); each job = canonical configure→build→ctest with `timeout-minutes: 10`; fixes landed in the same step: `.gitattributes` (`deps/** -text`) for byte-exact LF vendored checkouts (Windows CRLF broke the tree-hash lock), `_MSVC_LANG` for the C++20 self-check on MSVC, MSVC `/EH` conflict resolution (strip platform-default `/EHsc`; gtest rewritten to its documented no-exception set `/EHs-c- -D_HAS_EXCEPTIONS=0`), and `_HAS_EXCEPTIONS=0` in the engine policy for the MS STL (C4530 under `/WX`); verified: full matrix green after pushing `a90191c..7ec98b9` |
| 2026-09-10 | M0-CI-02 | `6573a64` | Sanitizer CI lanes `linux-asan` (LAIGE_ASAN=ON: ASan+UBSan, reports fatal via `-fno-sanitize-recover=all` + `ASAN_OPTIONS` abort/halt) and `linux-tsan` (LAIGE_TSAN=ON, per-test `TSAN_OPTIONS=halt_on_error=1`) in `ci.yml` (merge, all 7 jobs) and `ci-pull.yml` (PRs under the default-Linux P0 condition); sanitizer reports archived as artifacts (`linux-asan-reports`/`linux-tsan-reports`) on every run, green or red; the first CI run rejected the workflow file because step-level `permissions:` is not a valid schema — fixed in `f75ed0d` by moving `actions: write` to job scope (with `continue-on-error: true` uploads in `ci-pull.yml` for fork-PR read-only tokens); Verify cycle on CI: scratch OOB read (`6331a40`) failed `linux-asan` with the UBSan "index 16 out of bounds for type int[4]" report (archived) while `linux-tsan` and the other five jobs stayed green; scratch removed in `25b57b9`; full 7-job matrix green |
| 2026-09-10 | M0-CI-03 | — | `tools/laige-include-lint` (Python 3 stdlib): parses `#include` edges of `src/**`, enforces R1 (laige-core includes nothing internal), R2 (arrows only downward in the PRD §10.1 stack, via the target's public include root — CPP-010), R3 (vendored deps only from their `deps.lock` `owner` — new required lock field, validated by `cmake/laige-deps-lock.cmake`; angle-bracket vendored header paths caught via a vendored-header map), R4 (engine code includes only `src/**`/`deps/**`); reports the vendored-dependency list and fails above the PRD §11 budget of 10; `include-lint` CI job in `ci-pull.yml` (every PR, label-independent) and `ci.yml` (every merge, now 8 jobs); CTest coverage in `tests/tools` (4 fixture trees + real-tree check, expected failures asserted via generated `cmake -P` scripts because CTest inverts `PASS_REGULAR_EXPRESSION` under `WILL_FAIL`); local Verify: illegal `laige-core → laige-render` stub include fails with R1, all rule directions exercised, dep count prints (1/10), `ctest` 6/6 on g++/shared/ASan/Clang trees; pushed as `785af81` — `ci.yml` (8-job) run pending observation, `ci-pull.yml` job runs on the next PR |
| 2026-09-10 | M0-CI-03 | — | `tools/laige-include-lint` (Python 3 stdlib): parses `#include` edges of `src/**`, enforces R1 (laige-core includes nothing internal), R2 (arrows only downward in the PRD §10.1 stack, via the target's public include root — CPP-010), R3 (vendored deps only from their `deps.lock` `owner` — new required lock field, validated by `cmake/laige-deps-lock.cmake`; angle-bracket vendored header paths caught via a vendored-header map), R4 (engine code includes only `src/**`/`deps/**`); reports the vendored-dependency list and fails above the PRD §11 budget of 10; `include-lint` CI job in `ci-pull.yml` (every PR, label-independent) and `ci.yml` (every merge, now 8 jobs); CTest coverage in `tests/tools` (4 fixture trees + real-tree check, expected failures asserted via generated `cmake -P` scripts because CTest inverts `PASS_REGULAR_EXPRESSION` under `WILL_FAIL`); local Verify: illegal `laige-core → laige-render` stub include fails with R1, all rule directions exercised, dep count prints (1/10), `ctest` 6/6 on g++/shared/ASan/Clang trees; pushed as `785af81` — CI observed via the GitHub API: `ci.yml` (8-job) run 34518244428 on `741c163` green, `include-lint` job log shows the live report (`count: 1 (budget: 10, PRD §11)`, `OK`); `ci-pull.yml` job exercised by this step's closing PR (observation appended in the record commit) |

---

Expand Down
Loading