Skip to content

Merge pull request #1489 from celabshq/robin/secrets-relax-shift-bounds #3232

Merge pull request #1489 from celabshq/robin/secrets-relax-shift-bounds

Merge pull request #1489 from celabshq/robin/secrets-relax-shift-bounds #3232

Workflow file for this run

name: ML-DSA - hax
on:
merge_group:
push:
branches: ["dev", "main"]
pull_request:
branches: ["dev", "main"]
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
hax_ref:
description: "The hax revision you want this job to use"
required: false
type: string
env:
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# NOTE: This always runs, even if the `hax_ref` workflow input is provided.
# TODO: Move this reusable workflow to a standalone action
get-hax-ref:
uses: ./.github/workflows/get-hax-ref.yml
extract:
if: ${{ github.event_name != 'merge_group' }}
runs-on: ubuntu-latest
needs:
- get-hax-ref
steps:
- uses: actions/checkout@v6
- uses: hacspec/hax-actions@main
with:
hax_reference: ${{ github.event.inputs.hax_ref || needs.get-hax-ref.outputs.hax_ref }}
- name: 🏃 Extract ML-DSA crate
working-directory: libcrux-ml-dsa
run: ./hax.sh extract
- name: ↑ Upload F* extraction
uses: actions/upload-artifact@v7
with:
name: fstar-extractions
path: "**/proofs/fstar"
include-hidden-files: true
if-no-files-found: error
lax:
runs-on: ubuntu-latest
needs:
- get-hax-ref
- extract
if: ${{ github.event_name != 'merge_group' }}
steps:
- uses: actions/checkout@v6
- uses: hacspec/hax-actions@main
with:
hax_reference: ${{ github.event.inputs.hax_ref || needs.get-hax-ref.outputs.hax_ref }}
fstar: v2025.12.15
- uses: actions/download-artifact@v8
with:
name: fstar-extractions
path: .
- name: 🏃 Lax ML-DSA crate
working-directory: libcrux-ml-dsa
run: ./hax.sh prove --admit
prove:
runs-on: self-hosted
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
needs:
- get-hax-ref
- extract
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6
with:
repository: cryspen/hax
path: hax
ref: ${{ github.event.inputs.hax_ref || needs.get-hax-ref.outputs.hax_ref }}
- name: ⤵ Install hax
run: |
nix profile install ./hax
- name: ⤵ Install FStar
run: nix profile install github:FStarLang/FStar/v2025.10.06
- uses: actions/download-artifact@v8
with:
name: fstar-extractions
path: .
- name: 🏃 Prove ML-DSA crate
working-directory: libcrux-ml-dsa
run: ./hax.sh prove
mldsa-extract-hax-status:
if: ${{ always() }}
needs: [get-hax-ref, extract]
runs-on: ubuntu-latest
steps:
- name: Successful
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failing
if: ${{ (contains(needs.*.result, 'failure')) }}
run: exit 1
mldsa-lax-hax-status:
if: ${{ always() }}
needs: [get-hax-ref, lax]
runs-on: ubuntu-latest
steps:
- name: Successful
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failing
if: ${{ (contains(needs.*.result, 'failure')) }}
run: exit 1