Skip to content

test: the curl installer's verification paths fail closed, proven by mutation - #884

Merged
VijitSingh97 merged 2 commits into
develop-v2from
test/868-installer-failclosed
Aug 4, 2026
Merged

test: the curl installer's verification paths fail closed, proven by mutation#884
VijitSingh97 merged 2 commits into
develop-v2from
test/868-installer-failclosed

Conversation

@VijitSingh97

Copy link
Copy Markdown
Collaborator

Closes #868

install.sh is the path a new operator runs before any of the bundle's own defenses exist, and its two security-critical branches — the bundle sha256 against the release manifest, and the cosign signature against the repo-pinned key — had no test: deleting either check kept the suite green, exactly as the issue predicted.

The new stack-suite block stubs each remote artifact as a file served by basename (absent file = the curl -f failure the script already distinguishes) and pins the whole matrix: sha256 match proceeds to the setup handoff, mismatch installs nothing; a present-but-bad signature is fatal and installs nothing; absent signature and pre-sha manifests degrade with their documented notes; a signature whose pinned key can't be fetched is fatal; an occupied target dir and a bundle without a pithead executable refuse.

Mutation-tested: removing the sha comparison and downgrading the cosign failure to a note were each applied to install.sh and the suite run — each breaks exactly the new assertions (3 failures each), so the suite now genuinely guards both fail-closed branches.

Suite: 2135 passed, 0 failed. make lint green. install.sh itself is untouched.

🤖 Generated with Claude Code

VijitSingh97 and others added 2 commits August 4, 2026 00:27
…mutation

install.sh is the path a new operator runs before any of the bundle's
own defenses exist, and its two security-critical branches — the bundle
sha256 against the release manifest, and the cosign signature against
the repo-pinned key — had no test: deleting either check kept the suite
green.

The new block stubs each remote artifact as a file served by basename
(absent file = the curl -f failure the script already distinguishes) and
pins the whole matrix: sha256 match proceeds to the setup handoff,
mismatch installs nothing; a present-but-bad signature is fatal and
installs nothing, absent signature and pre-sha manifests degrade with
their notes; a signature whose pinned key can't be fetched is fatal; an
occupied target dir and a bundle without a pithead executable refuse.

Both fail-closed branches were mutation-tested: removing the sha
comparison and downgrading the cosign failure to a note each break
exactly the new assertions (3 failures each), so the suite now actually
guards them.

Closes #868

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@VijitSingh97
VijitSingh97 merged commit 2825a95 into develop-v2 Aug 4, 2026
15 checks passed
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