Skip to content

Wire vendor_exprtk --check into CI; re-pin BNGsim expr layer to public lanl/bngsim (#11) - #22

Merged
wshlavacek merged 1 commit into
mainfrom
feature/issue-11-vendor-check-ci
Jul 11, 2026
Merged

Wire vendor_exprtk --check into CI; re-pin BNGsim expr layer to public lanl/bngsim (#11)#22
wshlavacek merged 1 commit into
mainfrom
feature/issue-11-vendor-check-ci

Conversation

@wshlavacek

Copy link
Copy Markdown
Collaborator

Closes #11.

Context

The blocker in #11 — "unblocks when PyBNF-Private goes public" — is now resolved, but not the way the issue anticipated. PyBNF-Private was retired, and BNGsim was republished standalone at the public lanl/bngsim as a fresh repo (50 commits, "Initial public release" 2026-07-04). The old private history was not migrated, so the vendored pin (wshlavacek/PyBNF-Private@1a1d49da, on a bngsim/ subdir) points at a commit that does not exist publicly. A --check --bngsim-repo step against lanl/bngsim with the old pin would fail on a missing git object.

So wiring a working source drift-check required re-pinning to a live public commit first.

Changes

Re-pin to lanl/bngsim@5ce19a4 (third_party/bngsim_expr/VENDOR{,.json}, scripts/vendor_exprtk.py)

  • exprtk.hpp and expr_compat.hpp were byte-identical upstream — untouched.
  • expression.hpp/expression.cpp advanced upstream and were refreshed to match the new pin: they gain a tgamma builtin (SBML factorial) and a referenced_variable_addresses accessor (BNGsim forward-sensitivity, GH #212). Neither is used by RuleMonkey; the remainder is clang-format only.
  • Provenance now cites the public remote and drops the stale bngsim subdir (repo_subdir: ".").

New CI job vendor_check (.github/workflows/ci.yml)

  • Clones lanl/bngsim (public, no credential) with fetch-depth: 0 so the pinned commit stays reachable after HEAD advances, then runs scripts/vendor_exprtk.py --check --bngsim-repo bngsim. Drift fails the build (ODR hazard). Independent, build-free, stdlib-only Python.

Patch bump 3.6.0 → 3.6.1 + CHANGELOG.

Verification

  • vendor_exprtk.py --check and --check --bngsim-repo both green against the new pin.
  • Build clean; 26/26 unit tests pass.
  • Full feature-coverage parity suite: 80 PASS / 0 FAIL at --reps 5 — the file refresh is a behavioral no-op for RM.
  • pre-commit clean (vendored files correctly excluded from formatters via the top-level exclude: '^third_party/').

…ift-check (#11)

The ExprTk swap (#6) vendored four files from BNGsim under third_party/,
pinned by third_party/bngsim_expr/VENDOR{,.json}. That pin referenced a
commit on the retired private wshlavacek/PyBNF-Private monorepo, where
BNGsim lived under a bngsim/ subdir. BNGsim is now published standalone at
the public lanl/bngsim, whose history does not carry the old private
commit, so scripts/vendor_exprtk.py --check --bngsim-repo could never point
at a live public commit.

Re-pin to lanl/bngsim@5ce19a4:
- Two of the four files advanced upstream and were refreshed to match the
  new pin: expression.hpp/.cpp gain a tgamma builtin (SBML factorial) and a
  referenced_variable_addresses accessor (BNGsim forward-sensitivity, GH
  #212). Neither is used by RM; the rest is clang-format only. Behavioral
  no-op for RM, confirmed by the full 80-model feature-coverage suite
  (80 PASS / 0 FAIL at --reps 5) and the 26-test unit suite.
- vendor_exprtk.py records repo_subdir "." (lanl/bngsim is the repo root,
  not a bngsim/ subdir); VENDOR/VENDOR.json now cite the public remote.

Wire the guard into CI: a new vendor_check job clones lanl/bngsim (public,
no credential) with full history and runs the source drift-check, failing
the build on any skew between RM's standalone copy and BNGsim's expression
layer (an ODR hazard). This was the only thing blocked on BNGsim going
public; the private source repo would have needed a stored deploy key.

Patch bump 3.6.0 -> 3.6.1.
@wshlavacek
wshlavacek merged commit 10473a7 into main Jul 11, 2026
7 checks passed
@wshlavacek
wshlavacek deleted the feature/issue-11-vendor-check-ci branch July 11, 2026 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Wire vendor_exprtk.py --check into CI once PyBNF-Private is public

1 participant