feat: real Deno+Just container packaging (Containerfile) - #72
Merged
Conversation
Nix was retired estate-wide 2026-06-01; flake.nix no longer satisfies the governance gate, and this repo's Guix side isn't working yet, so a sealed Containerfile is the accepted interim escape hatch. Replaces the prior stub Containerfile, which only offered a commented- out example RUN line and pulled in nodejs (estate-banned; Deno is the sanctioned JS runtime). The new Containerfile installs Deno and Just for real via wolfi-base apk packages and runs genuine checks against the current tree: `deno task check`, `just test-structure`, `just test-frontend-structure`, and `just validate-rsr`. It also regenerates the repo's 0-byte (corrupt) deno.lock inside the image so Deno commands can execute at all — the committed deno.lock is untouched. Verified: `podman build -t candy-crash-verify:latest -f Containerfile .` exits 0, and `podman run --rm candy-crash-verify:latest` runs the structural check successfully as the non-root `nonroot` user. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
hyperpolymath
marked this pull request as ready for review
July 27, 2026 16:13
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.
Summary
fallback). A bare
flake.nixno longer satisfies the governancecontainer-packaging gate; a sealed Containerfile is the accepted
interim escape hatch.
flake.nixis left in place here — the Guixside (
guix.scm) isn't working for this repo yet.Containerfile, which only had a commented-out example
RUNline for the AffineScript build and pulled innodejs— Node/npm are estate-banned; Deno is the sanctioned JSruntime. That stub also referenced artifact paths (
selur,erlang-shipping-libs) that no real build step in the file produced.Containerfileinstalls Deno and Just for real (wolfi-baseapk packages) and runs genuine checks against the current tree in the
build stage:
deno task check— the rootdeno.json"check" task. Its targetglob (
app/assets/javascripts/**/*.js) doesn't exist in this repoyet, so Deno reports "no matching files" and exits 0 — a real,
honest pass reflecting current repo state, not a fake gate.
just test-structure(tests/validate_structure.sh)just test-frontend-structure(tests/validate_frontend.sh)just validate-rsr(RSR compliance file-presence check)deno.lockships as an empty (0-byte) file in this repo, which Deno2.x treats as corrupt and refuses to run any command against. The
build stage regenerates a minimal valid lockfile inside the image
so the checks above can execute — the committed
deno.lockin git isuntouched by this PR.
USER nonroot, wolfi-base's built-inuid 65532 account);
ENTRYPOINT ["just"]/CMD ["test-structure"].AffineScript/ReScript frontend, SPARK/Ada + Zig safety_core,
VeriSimDB, Gossamer, Burble). This image packages the Deno + Just
slice only, per this container-packaging task's mandate — it does not
attempt to containerize the rest of the stack.
Verified build result
podman run --rm candy-crash-verify:latestrunsjust test-structureand exits 0 as the non-root user.
Test plan
podman build -t candy-crash-verify:latest -f Containerfile .exits 0podman run --rm candy-crash-verify:latestexits 0Gleam/AffineScript/SPARK stack)
deno.lock/app/assets/javascriptsglob mismatch in a follow-up🤖 Generated with Claude Code