Skip to content

Commit 7c6a602

Browse files
committed
ci(proofs): restore full dogfood corpus CI without marketplace setup actions
taiki-e/install-action reproducibly triggers a startup_failure in this workflow's context (bisected: header + checkout + run steps start fine; adding the action fails before any job runs, even though mvp-smoke.yml uses the same pin on main). Switch all toolchain installs to plain run steps -- apt for Coq and Agda, curl tarballs for elan and just -- matching the idris2/chapel workflows, which use only actions/checkout plus run steps. Agda now installs via apt (agda + agda-stdlib), which reproduces the local verification environment exactly. just is installed from its release tarball. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent eac87fc commit 7c6a602

1 file changed

Lines changed: 84 additions & 4 deletions

File tree

.github/workflows/dogfood-proofs-ci.yml

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Gates the ECHIDNA dogfood proof corpus (proofs/{coq,lean,agda}) in CI.
3-
# (Bisecting a startup_failure: testing curl-installed just, no marketplace action.)
2+
# Gates the ECHIDNA dogfood proof corpus: every theorem under proofs/{coq,lean,agda}
3+
# must type-check. These proofs had no CI coverage before this workflow -- the other
4+
# proof workflows are path-filtered to meta-checker/** (agda-meta-checker) and
5+
# src/abi/** (idris2-abi-ci), and there was no Coq or Lean workflow at all, so
6+
# regressions in proofs/ landed silently.
7+
#
8+
# Toolchains are installed with plain `run:` steps (apt / curl tarballs, matching the
9+
# idris2 + chapel workflows) rather than marketplace setup actions: a third-party
10+
# setup action (taiki-e/install-action) reproducibly tripped a startup_failure in this
11+
# workflow's context, so this workflow uses only actions/checkout plus run steps.
12+
# `just` stays the single source of truth for the commands (RSR-H14) -- CI installs it
13+
# and calls the same recipes a developer runs locally.
414
name: Dogfood Proof Corpus
515

616
on:
@@ -32,6 +42,76 @@ jobs:
3242
steps:
3343
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3444

45+
- name: Install Coq
46+
run: |
47+
set -euo pipefail
48+
sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
49+
sudo apt-get install -y --fix-missing coq
50+
coqc --version
51+
52+
- name: Install just
53+
run: |
54+
set -euo pipefail
55+
curl -fsSL --retry 3 \
56+
"https://github.com/casey/just/releases/download/1.51.0/just-1.51.0-x86_64-unknown-linux-musl.tar.gz" \
57+
-o /tmp/just.tar.gz
58+
mkdir -p "$HOME/.local/bin"
59+
tar xzf /tmp/just.tar.gz -C "$HOME/.local/bin" just
60+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
61+
62+
- name: Type-check Coq corpus
63+
run: just proofs-coq
64+
65+
lean:
66+
name: Lean 4
67+
runs-on: ubuntu-latest
68+
steps:
69+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
70+
71+
- name: Install elan + Lean toolchain
72+
run: |
73+
set -euo pipefail
74+
# The toolchain version is pinned by proofs/lean/lean-toolchain; lake reads
75+
# it and fetches that exact Lean on first invocation.
76+
curl -fsSL --retry 3 \
77+
https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh \
78+
-o /tmp/elan-init.sh
79+
sh /tmp/elan-init.sh -y --default-toolchain none
80+
echo "$HOME/.elan/bin" >> "$GITHUB_PATH"
81+
82+
- name: Install just
83+
run: |
84+
set -euo pipefail
85+
curl -fsSL --retry 3 \
86+
"https://github.com/casey/just/releases/download/1.51.0/just-1.51.0-x86_64-unknown-linux-musl.tar.gz" \
87+
-o /tmp/just.tar.gz
88+
mkdir -p "$HOME/.local/bin"
89+
tar xzf /tmp/just.tar.gz -C "$HOME/.local/bin" just
90+
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
91+
92+
- name: Build Lean corpus
93+
run: just proofs-lean
94+
95+
agda:
96+
name: Agda
97+
runs-on: ubuntu-latest
98+
steps:
99+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
100+
101+
- name: Install Agda + standard library
102+
run: |
103+
set -euo pipefail
104+
sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
105+
sudo apt-get install -y --fix-missing agda agda-stdlib
106+
agda --version
107+
# Register the Ubuntu-packaged standard library so the corpus's
108+
# `depend: standard-library` resolves (the corpus .agda-lib is
109+
# auto-detected from proofs/agda when agda runs there).
110+
mkdir -p ~/.agda
111+
STDLIB="$(find /usr/share -name standard-library.agda-lib 2>/dev/null | head -1)"
112+
echo "$STDLIB" > ~/.agda/libraries
113+
echo "standard-library" > ~/.agda/defaults
114+
35115
- name: Install just
36116
run: |
37117
set -euo pipefail
@@ -42,5 +122,5 @@ jobs:
42122
tar xzf /tmp/just.tar.gz -C "$HOME/.local/bin" just
43123
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
44124
45-
- name: Smoke
46-
run: just --version
125+
- name: Type-check Agda corpus
126+
run: just proofs-agda

0 commit comments

Comments
 (0)