Skip to content

ordeal v0.22.1 — the bump that missed the #22 merge - #23

Merged
avrabe merged 1 commit into
mainfrom
sec/ordeal-0.22.1
Sep 30, 2026
Merged

avrabe merged 1 commit into
mainfrom
sec/ordeal-0.22.1

Conversation

@avrabe

@avrabe avrabe commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

This realm still ships the affected ordeal. main pins v0.22.0, inside
GHSA-xfxf-qxr3-435x's range.

My mistake, stated plainly: I pushed the ordeal bump to #22's branch after
it had already merged. #22 merged at 04:56:42Z with head 0081baf — the
musl commit alone. The ordeal commit sat unmerged on a dead branch while I
reported it as handled. Re-applied here on top of current main.

ordeal           v0.22.1    musl-mapped=2
synth            v0.76.0    musl-mapped=2
meld             v0.58.3    musl-mapped=2
varve-producer   v0.39.0    musl-mapped=2
varve-serve      v0.39.0    musl-mapped=2

The scanner bumped synth 0.75.0 → 0.76.0 after #22 landed. The %R
templates followed it, and I verified that rather than trusting the pattern —
all ten musl assets were resolved against the real release listings and
every one exists. check-manifest.py passes.

Merging this still publishes nothing

Worth stating because it caught me: a merge to main does not deposit.
scan-and-deposit.yml gates both the commit and the deposit on
if: steps.scan.outputs.moved == 'true', and moved is true only when
scan-pins.py finds a pin behind upstream. These pins are already at
upstream latest, so the next scan reports "nothing moved" and exits — no
commit, no deposit, forever.

So a hand-edited layer.toml is never published by the scanner. The only
automatic path to a deposit is upstream drift. Publishing this needs a
deposit.yml dispatch, which I am not doing unilaterally: it signs and
publishes to consumers, and varve has no revocation.

Filed the general gap separately.

…false result

GHSA-xfxf-qxr3-435x (HIGH), published today, affects every ordeal release
from 0.2.0 through 0.22.0 — including the v0.22.0 this layer pins.

Shifts and rotations at non-power-of-two bit widths used too few
barrel-shifter stages, so some satisfiable queries returned Unsat WITH AN
LRAT CERTIFICATE THAT RE-CHECKS. The checker certified the CNF it was given
and the CNF was the wrong encoding, which means the usual defence — "we do
not trust the solver, we check the certificate" — does not catch it.

That is worse here than in any one repo's CI. A layer is how this
organisation distributes a prover; shipping the affected one hands every
consumer a tool that can certify a wrong answer, and consumers pinned to
2026.09.16 have it now.

v0.22.1 publishes the same four Linux assets, so the musl mapping added in
this branch is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019TNtfRjLNhEz82G2ggeeNu
@temper-pulseengine

Copy link
Copy Markdown
Contributor

Automated review for PR #23

pulseengine/pulseengine-layers:sec/ordeal-0.22.1 → pulseengine/pulseengine-layers:main

Verdict: 💬 Comment

Summary: Layer.toml update for ordeal version bump.

Findings: 0 mechanical (rivet) · 1 from local AI model.

Findings (1):

  1. layer.toml:97
    +version = "v0.22.1"
    
    The layer.toml file was updated to reflect the new ordeal version v0.22.1.

Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location.

Reviewed at 821fbc7

@avrabe
avrabe merged commit ebb7124 into main Sep 30, 2026
1 check passed
@avrabe
avrabe deleted the sec/ordeal-0.22.1 branch September 30, 2026 08:46
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