Skip to content

ci: add pinned devcontainer + CI running the 220-check suite#2

Merged
InauguralPhysicist merged 1 commit into
mainfrom
ci/devcontainer-pinned-suite
Jun 29, 2026
Merged

ci: add pinned devcontainer + CI running the 220-check suite#2
InauguralPhysicist merged 1 commit into
mainfrom
ci/devcontainer-pinned-suite

Conversation

@InauguralPhysicist

Copy link
Copy Markdown
Contributor

EigenRegex had a 220-check suite but no CI — pushes (including today's O(n²)→O(n) search fix) were gated only by local runs. This adds the standard eigs-consumer pattern (same as dynamics/liferaft/tidelog), closing the most-exposed gap in the ecosystem CI sweep.

  • .devcontainer/Dockerfile builds EigenScript from source at a pinned tag (EIGS_REF=v0.21.0) onto PATH — the tag is the runtime pin. The same image backs Codespaces and CI, so "green locally" and "green in CI" can't drift.
  • .github/workflows/test.yml runs the suite inside that image via devcontainers/ci on push + PR to main.
  • tests/run.sh is the gate: runs every tests/test_s*.eigs (incl. smoke) and exits non-zero on any FAIL or crash. The per-stage .eigs files print OK/FAIL but exit 0 on their own, so this wrapper is what turns them into a CI gate. Excludes bench_search.eigs (manual timing bench).

Verified locally against v0.21.0: 220 checks pass (rc=0); the runner returns rc=1 when a test fails (negative-tested). CLAUDE.md toolchain/run sections updated (were stale — v0.14.2 + a defunct binary path).

This PR is also the first run of the new CI itself.

🤖 Generated with Claude Code

EigenRegex had a 220-check suite but no CI — pushes (including the recent
O(n^2)->O(n) search fix) were gated only by local runs. Adds the standard
eigs-consumer pattern, matching dynamics/liferaft/tidelog:

- .devcontainer/Dockerfile builds EigenScript from source at a pinned tag
  (EIGS_REF=v0.21.0) onto PATH — the tag IS the runtime pin. Same image backs
  Codespaces and CI, so they can't drift.
- .github/workflows/test.yml runs the suite inside that image via
  devcontainers/ci on push + PR to main.
- tests/run.sh is the gate: runs every tests/test_s*.eigs (incl. smoke) and
  exits non-zero on any FAIL or crash — the per-stage .eigs files print
  OK/FAIL but exit 0 on their own, so this wrapper is what makes them a gate.
  Excludes bench_search.eigs (a manual timing bench).

Verified locally against v0.21.0: 220 checks pass (rc=0); the runner returns
rc=1 when a test fails. CLAUDE.md toolchain/run sections updated (were stale:
v0.14.2 + a defunct binary path).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@InauguralPhysicist InauguralPhysicist merged commit 418049a into main Jun 29, 2026
1 check passed
@InauguralPhysicist InauguralPhysicist deleted the ci/devcontainer-pinned-suite branch June 29, 2026 03:50
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