Skip to content

Commit 598487c

Browse files
fix(ci): version_check via env var — unblocks acl2/hol4 cron cells (#75) (#165)
## Summary - Both `Smoke-check` and `Stub-sentinel detection (#75)` steps in `.github/workflows/container-ci.yml` template `${{ matrix.version_check }}` directly inside outer single quotes (`-c '${{ matrix.version_check }}'`). - For acl2 and hol4, the matrix values contain literal single quotes (`echo '(acl2::quit)' | acl2 …` / `echo '(* quit *);' | hol …`), so the embedded `'` closes the outer string and bash dies with `syntax error near unexpected token '('` at runner-script line 2. `|| true` can't rescue it — the outer parse fails before any inner command runs. - Cron evidence: 6 consecutive `Container Build Verification` schedule runs (2026-05-03 → 2026-05-31) show acl2 + hol4 as failure; all other 6 cells pass. Defect introduced 2026-04-27 (a87fae1), inherited verbatim by #157 on 2026-05-31. - Fix: pass via `env: VERSION_CHECK:` and dereference with `-c "$VERSION_CHECK"`. Same shape for both steps. YAML still parses (`python3 -c "import yaml; yaml.safe_load(open(...))"` OK). Inline comment notes the trap so the next contributor can avoid re-introducing it. After this merges, the next scheduled run will reveal whether acl2/hol4 are running real binaries or graceful stubs — exactly the truth #157's stub-sentinel was meant to surface. If a stub is hiding, #75 stays open until the upstream pin is bumped; if the binaries are real, #75 closes. ## Test plan - [x] YAML safe-load passes locally - [ ] Trigger on schedule (next cron) — verify 8/8 cells reach the sentinel grep step - [ ] Confirm acl2 + hol4 either pass or fire the stub-sentinel error (no longer crash on shell-syntax) Refs #75, refs #157.
1 parent e1edebe commit 598487c

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

.github/workflows/container-ci.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,18 @@ jobs:
174174
run: |
175175
podman run --rm "${{ matrix.image }}" --version
176176
177+
# version_check is passed via env to avoid the YAML→outer-shell→inner-sh
178+
# single-quote nesting trap: for acl2 (`echo '(acl2::quit)' | acl2 …`) and
179+
# hol4 (`echo '(* quit *);' | hol …`), the inline `-c '${{ matrix.version_check }}'`
180+
# form lets the embedded `'` close the outer string and the bash parser
181+
# fails with "syntax error near unexpected token `('". Confirmed root-cause
182+
# of the persistent acl2/hol4 cron red since 2026-04-27 (a87fae12).
177183
- name: Smoke-check ${{ matrix.prover }} binary
184+
env:
185+
VERSION_CHECK: ${{ matrix.version_check }}
178186
run: |
179187
podman run --rm --entrypoint /bin/sh "${{ matrix.image }}" \
180-
-c '${{ matrix.version_check }}'
188+
-c "$VERSION_CHECK"
181189
182190
# #75: the per-prover version_check above uses `|| true` for several
183191
# backends because tools like metamath / hol4 / acl2 exit non-zero on
@@ -188,10 +196,12 @@ jobs:
188196
# output verbatim, and fails LOUDLY on any stub sentinel — turning the
189197
# silent degradation into a visible weekly red.
190198
- name: Stub-sentinel detection (#75)
199+
env:
200+
VERSION_CHECK: ${{ matrix.version_check }}
191201
run: |
192202
set +e
193203
OUTPUT=$(podman run --rm --entrypoint /bin/sh "${{ matrix.image }}" \
194-
-c '${{ matrix.version_check }}' 2>&1)
204+
-c "$VERSION_CHECK" 2>&1)
195205
echo "--- version_check output ---"
196206
echo "$OUTPUT"
197207
echo "--- end ---"

0 commit comments

Comments
 (0)