Skip to content
Merged
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
32 changes: 26 additions & 6 deletions .github/workflows/mir.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,21 @@ name: mir-jit
# from-source SuiteSparse build. The KLU-gated codegen tests (sparse Jacobian)
# skip cleanly on a KLU-off core.
#
# On Windows the default cc+dlopen codegen path is not the story — a bare
# Windows box is the case with no C compiler, which is exactly why MIR exists
# (#3) — so the cc-baseline tests (marked needs_cc: cc/clang/gcc) skip there and
# test_mir_equivalence's compiler-free MIR-vs-ExprTk check is the end-to-end
# Windows verification. On Linux/macOS cc is present, so cc-vs-MIR bit-identity
# is asserted too.
# Why Windows is in the matrix: a bare Windows box is the case with no C
# compiler, which is exactly why MIR exists (#3).
#
# The GitHub `windows-latest` *runner* is not that box, though. It ships MinGW
# gcc on PATH, so `_CC = which("cc") or which("clang") or which("gcc")` resolves
# and the `needs_cc` cc-baseline tests do NOT skip there — measured, 0 skipped on
# every leg. All four legs therefore assert the strong property, cc-vs-MIR
# bit-identity on the same generated source, not just the compiler-free
# MIR-vs-ExprTk comparison. (An earlier version of this comment claimed the
# cc-baseline tests skip on Windows and that MIR-vs-ExprTk was the whole of the
# Windows verification. Both were wrong, and they understated the coverage.)
#
# The consequence worth remembering: this job does not exercise the
# no-compiler-at-all path that motivates MIR. If that path needs guarding, it
# needs a leg with the compilers taken off PATH, not this one.
#
# The three Functional analytic-sensitivity files (#66's ∂f/∂p, #67's fused J·yS,
# #68's clock-conditional laws) are in the list below, but their end-to-end half
Expand All @@ -41,6 +50,16 @@ name: mir-jit
# the quarantine removes itself: fixing #85 turns them XPASS and this job red
# until the markers come out. They are the coverage that found #85, and #67's
# first attempt at this list is what surfaced it.
#
# The Michaelis-Menten file (#55's MM stage) needs no such marker, and the reason
# is worth stating rather than rediscovering: #85 fires on
# bngsim_codegen_output_sens, which generate_output_sens_from_model only emits
# when the model has at least one *function*. The MM fixtures declare none, so
# the symbol is absent even with emit_output_sens forced on, and their
# Simulator-with-sensitivity_params cases compile here. c2mir already handles the
# arithmetic: mm_tqssa.net goes through test_mir_equivalence and
# test_codegen_jacobian on this job today, and the MM sensitivity block is the
# same closed form as the Jacobian block, from the same builder.

on:
workflow_dispatch:
Expand Down Expand Up @@ -133,6 +152,7 @@ jobs:
python/tests/test_codegen_functional_dfdp.py \
python/tests/test_codegen_functional_sens_rhs.py \
python/tests/test_codegen_switch_condition_sens.py \
python/tests/test_codegen_mm_sens.py \
python/tests/test_codegen_determinism.py \
-rA --tb=short ${{ github.event.inputs.pytest_args }} \
2>&1 | tee mir-${{ matrix.os }}.log
Expand Down
Loading