You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(chapel): Wave 2 — chapel-multilocale gate (-nl 2 via gasnet+smp, #87 option A) (#99)
Closes Wave 1 → Wave 2 transition for the optional Chapel mass-panic
harness. Adds the seventh strict gate to `chapel-ci.yml`, exercising
real multilocale execution by building Chapel 2.8.0 from source with
`CHPL_COMM=gasnet` + `CHPL_LAUNCHER=smp` and running `mass-panic
--numLocales=2` against the synthetic 2-repo corpus.
## What this closes
- `chapel-multilocale` job defined + wired into `chapel-ci-gate`
aggregator (now 7-of-7 instead of 6-of-6)
- Source-build path documented + cached (cold ~30-40 min, warm ~30s)
- `smp` launcher + `smp` GASNet substrate run two locales as
oversubscribed local processes on a single GH runner
## Toolchain choice — option A from #87
Owner picked the build-from-source path. Not option B (no upstream
`chapel-multilocale-2.8.0.deb`); not option C (no self-hosted runner
infra).
## Cache strategy
- `$CHPL_HOME = /opt/chapel-multilocale` cached via `actions/cache@v4`
- Key: `${runner.os}-chapel-multilocale-2.8.0-gasnet-smp-v1`
- Invalidate by bumping `CHAPEL_MULTILOCALE_CACHE_GEN` env var
- 7-day idle eviction (GitHub policy) — normal `chapel/**` activity
keeps it warm
## What this does NOT close (filed elsewhere or deferred)
- Ruleset `required_status_checks` bump — optional: the aggregator is
the only gate in the ruleset, and 7 ≤ 7 inside it is a no-op. Filed as a
doc note instead of a separate PR.
- ~50-repo benchmark for the "~5-15% slower" README claim — needs a
beefier or self-hosted runner to be meaningful (`-nl 2` on a 2-core
runner doesn't produce credible numbers). Tracked at #87 acceptance
bullet 3.
## Test plan
- [ ] First PR run will be cold-cache (~30-40 min build) — acceptable
one-time tax
- [ ] Subsequent runs hit cache; total job time ~3-5 min
- [ ] Two-locale e2e verifies system-image-*.json mentions both
repo-alpha and repo-beta (cross-locale aggregation)
- [ ] Aggregator gate reports 7 underlying job results; SKIP path still
passes immediately for non-chapel changes
* [x] `--scheduler=queue` — resumable dynamic work-pull scheduler for mass-panic. Atomic fetch-add work index shared across locales; per-run JSONL journal shards (`locale-<id>-<runId>.jsonl`) recording `{claim, done}` state per repo with full RepoResult payload on `done`; `--resume` replays every shard in the journal directory, reconstructs RepoResult records from prior runs, and skips those repos on the new run. ~5–15% slower than static on clean runs; a crash or Ctrl+C loses only the in-flight repo per locale. See `chapel/README.md` §Scheduling modes for the full spec.
0 commit comments