docs(contributing): state the proof lane's platform and font prerequisites - #1088
Closed
doublewhy wants to merge 1 commit into
Closed
docs(contributing): state the proof lane's platform and font prerequisites#1088doublewhy wants to merge 1 commit into
doublewhy wants to merge 1 commit into
Conversation
…sites The `verify` gate includes the `participant-opacity-proof` lane, whose prerequisites were undocumented. The lane is Linux x86_64 only and needs bubblewrap plus a fontconfig setup with at least one font, because Isabelle starts a JVM that will not run without one. Missing fonts are the costly case: the lane reports that the Isabelle kernel rejected the fixed proof session, which reads as a failing proof rather than an incomplete environment. The tool source is digest-bound by the proof-evidence manifest, so the message itself is left alone and the prerequisite is documented where contributors run the gate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Collaborator
|
Please note in the comments or body which issue this PR closes. If no issue exists, please create one and link it. Thank you! |
Author
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plain-language summary
Related issues
Closes #1118
Proof-tool preflight and Ubuntu sandbox portability remain tracked in #1109.
What breaks
A new contributor runs the documented full gate,
nox -s verify, on a clean Linux machine and is told their proof failed:Nothing is wrong with the proof. The machine is missing fonts.
Why that message appears
The
participant-opacity-prooflane replays the pinned Isabelle proof. Isabelle starts a JVM, and that JVM will not run without a fontconfig setup, so it aborts with a non-zero exit. The lane reports any non-zero exit as the kernel rejecting the theory — which reads as "your mathematics is broken" rather than "install a font".The sandbox already bind-mounts
/etc/fonts,/usr/share/fontsand/var/cache/fontconfig, but onlyif runtime_path.exists(), so on a host without them the sandbox is silently font-less.CONTRIBUTING.mdlists Python, uv and nox as prerequisites, and does not mention that this lane is Linux x86_64 only or that it needsbubblewrapand fonts.Concretely
On a stock Ubuntu 22.04 image this cost me a full debugging cycle before the real cause surfaced further up the output:
It reproduces on an unmodified
devcheckout, so it is not specific to any change, and clears completely with:The fix
Document the prerequisite where contributors run the gate, including the misleading message, so the next person recognises it immediately.
Why documentation instead of a better error message
The better fix is obviously in the tool: preflight for fonts, or classify that failure as an environment problem rather than a rejected proof. I wrote that version first and it worked — then it broke two manifest tests.
tools/isabelle_tool.pyis digest-bound.tools/check_participant_opacity_proof.pyvalidates its SHA-256 againstparticipant-opacity-proof-evidence.jsonas the "proof tool source", precisely so nobody can quietly alter the tool that certifies the proof. Editing it invalidates that attestation until the evidence is regenerated.Re-attesting the proof-checking tool to improve an error message is not a trade I should make unilaterally, so I reverted the code and documented the prerequisite instead. If you would rather re-attest, say so and I will land the preflight and classifier — they are straightforward, and I have the tests.
Documentation only. Vale clean (the style rule caps sentences at 32 words), public-docs boundary check passes.
🤖 Generated with Claude Code