Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
086e5a1
chore(protocol): record vrf upgrade artifacts
hmzakhalid Aug 28, 2026
3984c59
fix(protocol): compile secure bfv param selection [skip-doc-sync]
hmzakhalid Aug 28, 2026
e92aefd
feat(circuits): add secure small bfv verifiers
hmzakhalid Aug 28, 2026
a44da6a
feat: support multi-committee circuit artifacts
hmzakhalid Aug 28, 2026
db6f1a9
fix(crisp): align ballot preset with requests
hmzakhalid Aug 28, 2026
821cd99
chore: add generated BFV verifier variants
hmzakhalid Aug 28, 2026
9a5fa9a
chore(crisp): publish version 0.19.0
hmzakhalid Aug 28, 2026
7c3b251
chore: retrigger ci [skip-doc-sync]
hmzakhalid Aug 28, 2026
8ce3557
chore: sync CRISP client SDK lockfile
hmzakhalid Aug 28, 2026
a849f66
chore: simplify release circuit validation
hmzakhalid Aug 28, 2026
e842106
fix(crisp): harden secure parameter activation
hmzakhalid Aug 28, 2026
5badab9
fix(ci): keep committee gate dependency-free
hmzakhalid Aug 28, 2026
fc6d9d9
fix(ci): sync CRISP client workspace lock
hmzakhalid Aug 28, 2026
10143ff
fix(ci): defer circuit archive pin to release
hmzakhalid Aug 28, 2026
b3cde85
test(contracts): make request deadlines deterministic
hmzakhalid Aug 28, 2026
4f8e1a2
fix(crisp): preserve SDK worker path in Vite
hmzakhalid Aug 28, 2026
23391b9
test(contracts): anchor request timestamps
hmzakhalid Aug 28, 2026
f1f73b3
fix(circuits): validate complete release artifacts
hmzakhalid Aug 28, 2026
6c84189
test(crisp): isolate the application page
hmzakhalid Aug 28, 2026
5c92a08
fix(crisp): prebundle SDK poseidon dependency
hmzakhalid Aug 28, 2026
4914e48
fix(crypto): align secure BFV configuration
hmzakhalid Aug 29, 2026
50dd261
fix(release): gate publication on validated commits
hmzakhalid Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ concurrency:
cancel-in-progress: true

on:
workflow_call:
inputs:
release_candidate:
description: Run every CI job for the exact release candidate.
required: false
type: boolean
default: false
workflow_dispatch:
pull_request:
branches:
Expand Down Expand Up @@ -54,6 +61,7 @@ jobs:
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
if: ${{ !inputs.release_candidate }}
id: filter
with:
# Required for the '!' exclusions below. The default 'some' quantifier
Expand Down Expand Up @@ -124,7 +132,7 @@ jobs:
INTEGRATION="${{ steps.filter.outputs.integration_tests }}"
DOCKER="${{ steps.filter.outputs.docker }}"
CI="${{ steps.filter.outputs.ci }}"
FORCE="${{ github.event_name == 'workflow_dispatch' }}"
FORCE="${{ github.event_name == 'workflow_dispatch' || inputs.release_candidate }}"

any() { for v in "$@"; do [ "$v" = "true" ] && echo "true" && return; done; echo "false"; }

Expand Down Expand Up @@ -157,6 +165,9 @@ jobs:
echo "zk_prover_integration=$(any $FORCE $RUST $CIRCUITS $CI)" >> $GITHUB_OUTPUT
echo "build_interfold_cli=$(any $FORCE $RUST $CONTRACTS $CIRCUITS $INTEGRATION $TEMPLATES $CRISP $SDK $CI)" >> $GITHUB_OUTPUT

- name: Check release promotion safeguards
run: node --test scripts/release.test.mjs

rust_unit_tests:
needs: [detect_changes]
if: needs.detect_changes.outputs.rust_unit_tests == 'true'
Expand Down Expand Up @@ -1012,6 +1023,9 @@ jobs:
- name: Build circuits
run: pnpm build:circuits

- name: Test circuit artifact validation
run: pnpm test:circuit-tooling

# The generated verifier contracts must match the freshly built verification keys. A drift
# means the deployed verifier accepts a different circuit from the one in this tree.
#
Expand All @@ -1024,6 +1038,36 @@ jobs:
- name: Check generated verifiers are in sync
run: pnpm check:verifiers --no-compile

- name: Pull the complete circuit matrix
run: pnpm store:circuits pull

- name: Verify release circuit provenance
run: pnpm store:circuits verify-release

- name: Check every generated BFV verifier
run: |
while read -r preset committee
do
pnpm build:circuits \
--preset "$preset" \
--committee "$committee" \
--hydrate-bin-only \
--no-clean-targets
pnpm generate:verifiers \
--circuits dkg_aggregator,decryption_aggregator \
--preset "$preset" \
--committee "$committee" \
--check \
--no-compile
done <<'EOF'
insecure-512 micro
insecure-512 small
secure-8192 minimum
secure-8192 micro
secure-8192 small
insecure-512 minimum
EOF

# Asserted before the upload, so a step that consumes or clears a build output fails in the
# job that did it rather than in the job that needed it. Same list `zk_prover_e2e` checks.
- name: Verify recursive aggregation artifacts survived
Expand Down
Loading
Loading