Skip to content
Merged
Changes from all commits
Commits
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
21 changes: 15 additions & 6 deletions .github/workflows/ambiguity-prove.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,10 @@ on:
timeout:
# Each search phase gets this in full: the abstract proof runs under
# its own deadline, and the concretization search that may follow
# starts a fresh one. Budget the job for twice the value chosen, on
# top of checkout, Devbox, the opam bootstrap and the build — 30m is
# the largest offered, so the 60-minute job cap holds.
# starts a fresh one, so an ordinary proof can spend twice the value
# chosen. A survey exits before concretization and spends it once.
# The long options exist for surveys, which cannot stop at the first
# divergence; 30m is already generous for an ordinary proof.
description: Timeout per search phase
required: true
default: 15m
Expand All @@ -52,6 +53,8 @@ on:
- 5m
- 15m
- 30m
- 1h
- 3h
survey:
# Diagnostic rather than verdict: instead of stopping at the first
# divergence, walk the whole abstract space and count how many distinct
Expand Down Expand Up @@ -83,13 +86,19 @@ jobs:
prove:
name: Prove level ${{ inputs.level || '3' }} on ${{ inputs.ref || github.ref_name }}
runs-on: ubuntu-latest
# Both search phases obey --timeout, so the tool now bounds itself: at the
# largest offered value the two phases total 60 minutes. This cap is the
# Both search phases obey --timeout, so the tool bounds itself: at the
# largest offered value the two phases total six hours. This cap is the
# backstop around them and has to clear that total plus checkout, Devbox,
# the opam bootstrap and the build, because a job killed here prints no
# verdict line at all and the report the verdict is read from is never
# written — turning an honest "not proven" into a broken run.
timeout-minutes: 75
#
# It is a backstop, not an expected duration. A survey is what needs the
# long end: it cannot stop at the first divergence, and at level 3 the walk
# was still going after 121k pairs in 30 minutes, so the counts came back
# as a floor. Only a survey run should reach for 3h, and a survey exits
# before the concretization search, so it spends one phase rather than two.
timeout-minutes: 380
env:
# Public ubuntu-latest runners provide four CPUs and 16 GB RAM:
# https://docs.github.com/en/actions/reference/runners/github-hosted-runners#standard-github-hosted-runners-for-public-repositories
Expand Down