Skip to content

Add Elixir and OTP CI coverage and stabilize distributed tests - #5

Merged
jeregrine merged 2 commits into
mainfrom
add-ci-matrix
Sep 11, 2026
Merged

Add Elixir and OTP CI coverage and stabilize distributed tests#5
jeregrine merged 2 commits into
mainfrom
add-ci-matrix

Conversation

@jeregrine

@jeregrine jeregrine commented Sep 9, 2026

Copy link
Copy Markdown
Member

Problem

Group needs CI coverage across supported Elixir/OTP versions without running soak campaigns or benchmarks on every PR. Its local examples also need module-level concurrency without racing VM-global tracing, and distributed failures need durable diagnostics.

Fix

  • Run latest-stable formatting/compiler/local checks first, followed by the six-runtime matrix and the complete upstream mix test gate, including properties, chaos and the pure Jepsen checker. Enforce warnings as errors and install Java 21 for the checker.
  • Add nightly/manual/release campaigns with varied seeds and scheduler counts. Preserve upstream protocol mutation and live-checker qualification, then distribute the full six-profile Jepsen soak across independent jobs without reducing its twenty five-minute histories per profile.
  • Add a separate baseline/candidate performance workflow using pinned Benchee and the distributed load/recovery benchmarks.
  • Split local examples into independently scheduled subsystem modules while keeping global-tracing tests serial. Start distribution lazily, bound correctness peer schedulers, and retain fresh peers per scenario.
  • Synchronize partition setup and cleanup, acknowledge monitor installation, avoid cross-VM node-name collisions, and retain seeds, histories, topology, configuration, bounded shard state and queue/buffer diagnostics before peer teardown.

Supporting information

  • Rebased onto the anti-entropy changes in main. All upstream local and distributed tests are retained. Superseded timestamp-conflict probes were removed in favor of upstream protocol qualification, and mutation selectors were realigned with their intended regressions.
  • The matrix covers Elixir 1.19 / OTP 26–28, Elixir 1.20 / OTP 27–28, and the latest-stable pair. Actions are current SHA-pinned releases with read-only repository permissions.
  • PR failure artifacts and campaign reports are retained for 14 days; performance reports for 30 days. Only main pushes trigger CI, avoiding duplicate branch/PR matrices.
  • Publishing a release reruns qualification but is not automatically gated. Manually run the workflows on the candidate ref and review performance against the previous release before publishing. A runtime-version matrix does not establish mixed Group-version wire compatibility.
  • Lane budgets, prerequisites, replay commands and limitations are documented in test/README.md.

@jeregrine
jeregrine merged commit 39b5c4e into main Sep 11, 2026
7 checks passed
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