Skip to content

ci: on-demand TLA+ model check workflow + fast profile - #58

Open
jghoman wants to merge 1 commit into
mainfrom
jakob/tla-ci
Open

ci: on-demand TLA+ model check workflow + fast profile#58
jghoman wants to merge 1 commit into
mainfrom
jakob/tla-ci

Conversation

@jghoman

@jghoman jghoman commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

What

GitHub Actions workflow for the TLA+ spec check — deliberately not a default PR gate (the full model is ~85M distinct states: ~18 min on 12 local perf cores, 60–90 min on a standard 4-vCPU runner):

trigger profile
workflow_dispatch full (default; fast selectable)
PR touching tla/** fast, automatic, non-required
nightly cron on main full (spec/code drift catch)

Viaduck.fast.cfg is the new smoke profile: MaxOps 3, ~3M distinct states, 55s locally, all 7 invariants — validated green before this PR. The full Viaduck.cfg stays authoritative for spec changes; the two files are identical except MaxOps (noted in the header comment). just tlc-fast mirrors it locally.

Mechanics: tla2tools.jar pinned (v1.7.4) + cached, temurin 21, -workers auto, log uploaded as an artifact with the state-count/verdict lines in the step summary — the "did anyone actually run TLC?" review question becomes a link.

Cost

Standard runner private-repo minutes: fast ≈ pennies, full ≈ $0.50–0.75/run. If the full run's wall time ever matters, runs-on can point at a larger runner (16-core ≈ 15–20 min, ~$1.30/run) — left on ubuntu-latest until someone cares.

Not a default PR gate — the full model is ~85M distinct states (~18 min
on 12 perf cores, 60-90 min on a standard runner):

- workflow_dispatch (full by default, fast selectable) — the receipt
  for spec changes
- pull_request touching tla/**: fast profile automatically (~3M
  states, minutes) as a non-required smoke signal
- nightly full run on main for spec/code drift

Viaduck.fast.cfg = MaxOps 3 (~28x smaller; 55s locally, all 7
invariants). tla2tools pinned + cached; log uploaded as artifact with
a step summary. just tlc-fast mirrors the profile locally.
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.

1 participant