Skip to content

Pin the machine at main, not at a branch that has been merged away - #82

Merged
aledbf merged 1 commit into
mainfrom
chore/pin-machine-at-main
Sep 8, 2026
Merged

Pin the machine at main, not at a branch that has been merged away#82
aledbf merged 1 commit into
mainfrom
chore/pin-machine-at-main

Conversation

@aledbf

@aledbf aledbf commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

go.mod named 4a006f3, a commit that only ever existed on the branch of spin-stack/spin-machine#2. It was cherry-picked onto main and merged as 58d404e, so the pin resolved to a commit that is not in the history of anything.

There is no tag to move to, and there will not be one. spin-machine is versioned CalVer, and v20260908.01 is not valid semver — the module system resolves it to a pseudo-version of the commit it points at anyway:

$ go list -m github.com/spin-stack/[email protected]
github.com/spin-stack/spin-machine v0.0.0-20260908002245-b8821714df1c

So a pseudo-version off main is what a pin here looks like, and go.sum is what makes it exact. I said in #81 that this would move to a tagged release; that was wrong about this repository's versioning.

Verified: task lint, go test ./..., go vet -tags=integration,e2e ./....

🤖 Generated with Claude Code

https://claude.ai/code/session_019GHRRFvbnZi5q3KSTvyW5a

go.mod named 4a006f3, a commit that only ever existed on the branch of
spin-stack/spin-machine#2. It was cherry-picked onto main and merged as 58d404e,
so the pin resolved to a commit that is not in the history of anything.

There is no tag to move to and there will not be one: spin-machine is versioned
CalVer, and `v20260908.01` is not valid semver, so the module system resolves it
to a pseudo-version of the commit it points at anyway. A pseudo-version off main
is what a pin here looks like, and go.sum is what makes it exact.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_019GHRRFvbnZi5q3KSTvyW5a
@codecov

codecov Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@aledbf
aledbf merged commit da446fa into main Sep 8, 2026
3 of 7 checks passed
aledbf added a commit that referenced this pull request Sep 8, 2026
The proof the unit tests cannot give. They drive qemu-img and assert on what it
reports; this boots the pinned kernel on the disk this package prepares, over
the release's real rootfs.qcow2, and reads back two lines the kernel printed:
that it mounted an ext4 root from vda, and that PID 1 was executed from that
filesystem. Then it hashes the base image again.

The second half is the one worth having. A guest that boots proves the overlay
resolves to its backing file; the base being byte-for-byte identical afterwards
proves the sharing is safe, and that is the property every other VM on the host
depends on. Its failure has no symptom at the time — the overlays go on working
until one of them reads a cluster that moved.

It asks the kernel and not the userland. `mount` was the first assertion and it
failed, because a guest with no initramfs has no /proc and mount cannot read a
table it has no access to. That reads exactly like a broken chain.

Proven able to fail: with the base pointed one character away, QEMU refuses with
"Could not open backing file" and the test goes red.

The release's base image is fetched now — it was skipped while nothing here
booted from it — and installed 0444, which is the one place in that script where
the mode is doing work rather than describing. And the tarball pin moves to
v20260908.02, which is where it was meant to be: the commit that did it was on
the branch of #82 and did not survive the merge.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_019GHRRFvbnZi5q3KSTvyW5a
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