Skip to content

ci(coq): unpin coq-interval, which required a Coq the image does not have - #3326

Merged
gHashTag merged 1 commit into
masterfrom
w118a2-coq-interval
Sep 5, 2026
Merged

ci(coq): unpin coq-interval, which required a Coq the image does not have#3326
gHashTag merged 1 commit into
masterfrom
w118a2-coq-interval

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Refs #3316

#3324 fixed OPAMROOT and the job
got further — opam now updates both repositories and reaches the solver. It then
fails on a second, independent defect that was invisible until the first was
repaired
:

[ERROR] Package conflict!
  * Missing dependency:
    - coq-interval = 4.9.0 -> coq < 8.19~
No solution found, exiting

The image is coqorg/coq:8.19-ocaml-4.14-flambda. The pin asks for a package
requiring a Coq older than the one it runs on, so it could never have
installed — the job just never got far enough to say so.

The dependency is real and not droppable: 7 of the 13 compiled files
Require Import Interval.TacticBounds_Masses, Bounds_Mixing,
Bounds_Gauge, Bounds_LeptonMasses, Bounds_QuarkMasses, Unitarity,
ConsistencyChecks. Only the version can move.

Left unpinned on purpose, rather than pinned to a guess. No version of
coq-interval has been observed resolving against Coq 8.19 in this job, because
the job has never run far enough to try one. opam list --installed coq-interval
now prints what the solver chose — and that reading is what a pin should be
restored from, in a commit that can cite it.

This PR runs the workflow on itself; #3324 added this file to the
pull_request paths for exactly this reason.

…have

Refs #3316

#3324 fixed OPAMROOT and the job got further: opam now updates both
repositories and reaches the solver. It then fails on a second, independent
defect that was invisible until the first was repaired:

    [ERROR] Package conflict!
      * Missing dependency:
        - coq-interval = 4.9.0 -> coq < 8.19~
    No solution found, exiting

The image is coqorg/coq:8.19-ocaml-4.14-flambda. The pin asks for a package
that requires a Coq older than the one it runs on, so it could never have
installed.

The dependency is real and is not droppable: 7 of the 13 compiled files
`Require Import Interval.Tactic` (Bounds_Masses, Bounds_Mixing, Bounds_Gauge,
Bounds_LeptonMasses, Bounds_QuarkMasses, Unitarity, ConsistencyChecks). Only
the version can move.

Left unpinned on purpose rather than pinned to a guess. No version of
coq-interval has been observed resolving against Coq 8.19 in this job, because
the job has never run far enough to try. `opam list --installed coq-interval`
now prints what the solver chose; that reading is what a pin should be restored
from, in a commit that can cite it.

This PR runs the workflow on itself -- #3324 added this file to the
`pull_request` paths for exactly this reason.
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 18:51:18 UTC

Summary

Status Count
Total Open PRs 15
PRs with Failing Checks 10
PRs with All Checks Green 5
READY 2
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=ffccfa1a71cf != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@gHashTag

gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner Author

The unpin worked, and the job reached a third layer.

Install Coq Interval now succeeds — the solver picks a compatible coq-interval and pulls coq-coquelicot 3.4.5 with it. Run time went 1m44s → 4m10s. The failure moved to Compile Proofs:

File "./CorePhi.v", line 14, characters 8-24:
Error: The variable Rmult_lt_pos_pos was not found in the current environment.

That is the source, not the workflow, and this is where I stop.

Rmult_lt_pos_pos is used at CorePhi.v:14 and AlphaPhi.v:27 and is defined nowhere in the tree. It is not in Coq's Reals; the lemma with that statement is Rmult_lt_0_compat. CorePhi.v requires only Reals.Reals, so Interval is not in scope there either.

Renaming it would not be enough. The script under it is:

apply Rmult_lt_pos_pos.
- apply (Rlt_trans 0 2). lra.

apply (Rlt_trans 0 2) leaves 0 < 2 and 2 < 1 + sqrt 5; lra closes the first and cannot close the second without a bound on sqrt 5. So the proof needs rewriting, not a substitution, and iterating a Coq proof blind through a 4-minute CI cycle is not a good use of the loop.

The finding worth recording: because this workflow never got past opam install, coqc has never run on these files in CI, and the first line it reaches does not compile. The proofs are not "passing but ungated" — they are unbuilt.

Three layers, each invisible until the one before it was repaired:

  1. OPAMROOT → opam could not start (ci: repair the two workflows whose failure was in the workflow #3324)
  2. coq-interval pinned below the image's Coq (ci(coq): unpin coq-interval, which required a Coq the image does not have #3326, this PR)
  3. CorePhi.v does not compile — left open, source work

This PR is still worth merging: it fixes a real workflow defect and moves the failure from infrastructure to substance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant