Skip to content

Creusot red = prerequisite failure, and 'Creusot verdict' adjudicates a proof that never ran #148

Open

Description

@hyperpolymath

On PR #145 (ca306ba and since), the Creusot gate reports two red checks, and neither is a statement about this repository's contracts:

check failing step what it actually says
creusot / Creusot proofs (cargo creusot prove) Install Creusot v0.14.0 (clone at the tag, ./INSTALL) at run 41220124068 job 124592955217 the prover could not be installed; no proof was attempted
creusot / Creusot verdict Adjudicate at run 41220124068 job 124593340911 a verdict is produced for proofs that never ran

The second is the interesting one. It is a preflight failure presented as a verdict — the exact class squabble-core::execution exists to name (PrerequisiteMissing), and the exact reason a reader must not treat this red as "the contracts failed". A verdict job that can conclude without the proofs having been produced is evidence-free by construction, and should say no proof was performed rather than adjudicate.

Where the fix belongs

This repository is a thin caller: .github/workflows/creusot.yml calls

hyperpolymath/cicd-suite/.github/workflows/creusot-gate.yml@bf7dd95cf49733019343ff485c2f45c6b261839c

so the install failure and the adjudication shape are both inside the shared gate. No workflow copy is being made here — that would be a competing implementation, and the whole point of the reusable is one owner. The gate's own validation is tracked as hyperpolymath/proven-cicd-and-workflows#71, where the evidence has been posted.

Acceptance criteria

  • cicd-suite#71 resolves the Install Creusot v0.14.0 step, or the gate pins a version/installer that installs
  • creusot / Creusot verdict cannot conclude when Creusot proofs did not run: it must report "no proof was performed" and be classified PrerequisiteMissing, not failure
  • Once the gate runs, verification/squabble-creusot obligations are exercised for the first time (they are currently stated, not discharged — see docs/CREUSOT.adoc)
  • Nothing in this repository claims a discharged obligation until a run reaches that step

Deliberately not in scope

Disabling the gate, marking it non-required, or closing the PRs it reddens. The red is real; it is the attribution that is wrong.

Activity

  1. coderabbitai commented on Oct 31, 2026

    @coderabbitai
    Contributor
    🔗 Related PRs

    #145 - feat(diagnosis): classify where a run stopped — preflight ≠ finding [open]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. added
    cicdCI/CD: workflows, actions, lockfiles, pins, runners, release gates
    enhancementNew capability or improvement to existing behaviour
    on Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaves incorrectlycicdCI/CD: workflows, actions, lockfiles, pins, runners, release gatesenhancementNew capability or improvement to existing behaviour

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions