rootfs apps Plan 1: carlos ship --rootfs and --check, the rootfs release kind, the console ship door (#366)
Lands the approved rootfs apps design (spec rev 5, index, plans 1-6, copy deck) and Plan 1's code: the rootfs release kind with processes, hibernate and jit; an app's kind and hibernation fixed at its first ship (create-only kind marker); carlos ship --rootfs building a normalised squashfs image locally from an OCI layout, a save archive or a directory; carlos ship --check running the image in docker or podman the way a box would; the console ship door taking a streamed image up to 2 GiB with per-account scratch admission. Census census-ruling-rootfs-apps-1 approved by Paul (#280). Astra final review fixed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Squashed from rootfs-apps-1-ship into main.
apimode_rootfs.go+84 −0apimode_rootfs_test.go+151 −0approved_moves_copy_test.go+70 −5approved_rootfs_copy_test.go+270 −0cli.go+91 −44docs/superpowers/notes/census-proposal-rootfs-apps-1.md+50 −0docs/superpowers/plans/2026-10-24-rootfs-apps-0-index.md+472 −0docs/superpowers/plans/2026-10-24-rootfs-apps-1-ship.md+1459 −0docs/superpowers/plans/2026-10-24-rootfs-apps-2-box-isolation.md+3110 −0docs/superpowers/plans/2026-10-24-rootfs-apps-3-lifecycle.md+1147 −0docs/superpowers/plans/2026-10-24-rootfs-apps-4-console-and-docs.md+1356 −0docs/superpowers/plans/2026-10-24-rootfs-apps-5-egress-allow.md+1094 −0docs/superpowers/plans/2026-10-24-rootfs-apps-6-interactive.md+1413 −0docs/superpowers/plans/2026-10-24-rootfs-apps-copy.md+539 −0docs/superpowers/plans/CODEX-FINDINGS-ROOTFS-PLANS-R1.md+59 −0docs/superpowers/plans/CODEX-FINDINGS-ROOTFS-PLANS-R2.md+64 −0docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLAN1-FINAL.md+31 −0docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLANS-R2.md+17 −0docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLANS.md+38 −0docs/superpowers/plans/LUNA-COPY-BRIEF-ROOTFS-PLAN1-BUILD.md+27 −0docs/superpowers/plans/LUNA-COPY-BRIEF-ROOTFS.md+33 −0docs/superpowers/plans/LUNA-COPY-REVIEW-ROOTFS-PLAN1-BUILD.md+18 −0docs/superpowers/plans/LUNA-COPY-REVIEW-ROOTFS.md+108 −0docs/superpowers/specs/2026-10-24-rootfs-apps-design.md+728 −0docs/superpowers/specs/CODEX-FINDINGS-ROOTFS-APPS-R1.md+17 −0docs/superpowers/specs/CODEX-REVIEW-BRIEF-ROOTFS-APPS.md+21 −0e2e_test.go+5 −0go.mod+3 −0go.sum+10 −0internal/console/apicli.go+142 −42internal/console/apiship_rootfs.go+365 −0internal/console/apiship_rootfs_test.go+954 −0internal/console/seedscratch.go+26 −13internal/console/seedscratch_test.go+42 −8internal/console/server.go+5 −0internal/hostops/mutation_boundary_putfrom.go+29 −11internal/hostops/mutation_boundary_putfrom_test.go+127 −0internal/provision/plan9_b8_census_test.go+1 −1internal/provision/rootfs_apps_1_census_test.go+64 −0internal/provision/testdata/plan14-root-reads-chain.tsv+2 −0internal/provision/testdata/plan14-root-reads-rootfs-apps-1-new.tsv+100 −0internal/provision/testdata/plan14-root-reads-rootfs-apps-1.tsv+17 −0internal/release/claim_app_writes.go+9 −0internal/release/golden_test.go+34 −0internal/release/release.go+26 −3internal/release/rootfs.go+224 −0internal/release/rootfs_ship.go+458 −0internal/release/rootfs_ship_test.go+780 −0internal/release/rootfs_test.go+391 −0internal/rootfsimage/archive.go+160 −0internal/rootfsimage/dir.go+123 −0internal/rootfsimage/dir_other.go+17 −0internal/rootfsimage/dir_test.go+259 −0internal/rootfsimage/dir_unix.go+23 −0internal/rootfsimage/errors.go+201 −0internal/rootfsimage/flatten.go+295 −0internal/rootfsimage/flatten_test.go+621 −0internal/rootfsimage/framework.go+85 −0internal/rootfsimage/framework_test.go+141 −0internal/rootfsimage/mounts.go+79 −0internal/rootfsimage/mounts_test.go+166 −0internal/rootfsimage/normalise.go+58 −0internal/rootfsimage/normalise_test.go+79 −0internal/rootfsimage/oci.go+475 −0internal/rootfsimage/oci_test.go+389 −0internal/rootfsimage/processes.go+239 −0internal/rootfsimage/processes_test.go+324 −0internal/rootfsimage/progarch.go+112 −0internal/rootfsimage/progarch_test.go+97 −0internal/rootfsimage/squashfs.go+308 −0internal/rootfsimage/squashfs_test.go+457 −0internal/rootfsimage/squashfs_unix_test.go+72 −0internal/rootfsimage/tar.go+87 −0internal/rootfsimage/tar_test.go+144 −0internal/rootfsimage/testimage_test.go+428 −0internal/rootfsimage/tree.go+408 −0internal/runs/runs_test.go+6 −0main.go+5 −0ship_check.go+526 −0ship_check_probe.go+291 −0ship_check_probe_test.go+403 −0ship_check_test.go+903 −0ship_rootfs.go+371 −0ship_rootfs_test.go+351 −0ship_rootfs_unix_test.go+257 −0ship_runtime.go+187 −0ship_runtime_test.go+440 −0ship_stop.go+146 −0ship_stop_test.go+126 −0
CI cancelled — superseded by a newer push — run details
apimode_rootfs.goLoading diff…
apimode_rootfs_test.goLoading diff…
approved_moves_copy_test.goLoading diff…
approved_rootfs_copy_test.goLoading diff…
cli.goLoading diff…
docs/superpowers/notes/census-proposal-rootfs-apps-1.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-0-index.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-1-ship.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-2-box-isolation.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-3-lifecycle.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-4-console-and-docs.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-5-egress-allow.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-6-interactive.mdLoading diff…
docs/superpowers/plans/2026-10-24-rootfs-apps-copy.mdLoading diff…
docs/superpowers/plans/CODEX-FINDINGS-ROOTFS-PLANS-R1.mdLoading diff…
docs/superpowers/plans/CODEX-FINDINGS-ROOTFS-PLANS-R2.mdLoading diff…
docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLAN1-FINAL.mdLoading diff…
docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLANS-R2.mdLoading diff…
docs/superpowers/plans/CODEX-REVIEW-BRIEF-ROOTFS-PLANS.mdLoading diff…
docs/superpowers/plans/LUNA-COPY-BRIEF-ROOTFS-PLAN1-BUILD.mdLoading diff…
docs/superpowers/plans/LUNA-COPY-BRIEF-ROOTFS.mdLoading diff…
docs/superpowers/plans/LUNA-COPY-REVIEW-ROOTFS-PLAN1-BUILD.mdLoading diff…
docs/superpowers/plans/LUNA-COPY-REVIEW-ROOTFS.mdLoading diff…
docs/superpowers/specs/2026-10-24-rootfs-apps-design.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-ROOTFS-APPS-R1.mdLoading diff…
docs/superpowers/specs/CODEX-REVIEW-BRIEF-ROOTFS-APPS.mdLoading diff…
e2e_test.goLoading diff…
go.modLoading diff…
go.sumLoading diff…
internal/console/apicli.goLoading diff…
internal/console/apiship_rootfs.goLoading diff…
internal/console/apiship_rootfs_test.goLoading diff…
internal/console/seedscratch.goLoading diff…
internal/console/seedscratch_test.goLoading diff…
internal/console/server.goLoading diff…
internal/hostops/mutation_boundary_putfrom.goLoading diff…
internal/hostops/mutation_boundary_putfrom_test.goLoading diff…
internal/provision/plan9_b8_census_test.goLoading diff…
internal/provision/rootfs_apps_1_census_test.goLoading diff…
internal/provision/testdata/plan14-root-reads-chain.tsvLoading diff…
internal/provision/testdata/plan14-root-reads-rootfs-apps-1-new.tsvLoading diff…
internal/provision/testdata/plan14-root-reads-rootfs-apps-1.tsvLoading diff…
internal/release/claim_app_writes.goLoading diff…
internal/release/golden_test.goLoading diff…
internal/release/release.goLoading diff…
internal/release/rootfs.goLoading diff…
internal/release/rootfs_ship.goLoading diff…
internal/release/rootfs_ship_test.goLoading diff…
internal/release/rootfs_test.goLoading diff…
internal/rootfsimage/archive.goLoading diff…
internal/rootfsimage/dir.goLoading diff…
internal/rootfsimage/dir_other.goLoading diff…
internal/rootfsimage/dir_test.goLoading diff…
internal/rootfsimage/dir_unix.goLoading diff…
internal/rootfsimage/errors.goLoading diff…
internal/rootfsimage/flatten.goLoading diff…
internal/rootfsimage/flatten_test.goLoading diff…
internal/rootfsimage/framework.goLoading diff…
internal/rootfsimage/framework_test.goLoading diff…
internal/rootfsimage/mounts.goLoading diff…
internal/rootfsimage/mounts_test.goLoading diff…
internal/rootfsimage/normalise.goLoading diff…
internal/rootfsimage/normalise_test.goLoading diff…
internal/rootfsimage/oci.goLoading diff…
internal/rootfsimage/oci_test.goLoading diff…
internal/rootfsimage/processes.goLoading diff…
internal/rootfsimage/processes_test.goLoading diff…
internal/rootfsimage/progarch.goLoading diff…
internal/rootfsimage/progarch_test.goLoading diff…
internal/rootfsimage/squashfs.goLoading diff…
internal/rootfsimage/squashfs_test.goLoading diff…
internal/rootfsimage/squashfs_unix_test.goLoading diff…
internal/rootfsimage/tar.goLoading diff…
internal/rootfsimage/tar_test.goLoading diff…
internal/rootfsimage/testimage_test.goLoading diff…
internal/rootfsimage/tree.goLoading diff…
internal/runs/runs_test.goLoading diff…
main.goLoading diff…
ship_check.goLoading diff…
ship_check_probe.goLoading diff…
ship_check_probe_test.goLoading diff…
ship_check_test.goLoading diff…
ship_rootfs.goLoading diff…
ship_rootfs_test.goLoading diff…
ship_rootfs_unix_test.goLoading diff…
ship_runtime.goLoading diff…
ship_runtime_test.goLoading diff…
ship_stop.goLoading diff…
ship_stop_test.goLoading diff…