You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Single source of truth for the v2 appliance plan — same format as #364. Re-sequenced 2026-08-13: the machine exists and the roadmap's job has changed. Everything below describes what is shipped and proven versus what still gates the release tier. The full ADR trail lives in docs/dev/dual-distribution-plan.md; the release mechanics in docs/dev/appliance-release.md.
The theme: v2 turned the stack from software you install into a machine you boot — and that machine now boots. One immutable image (Debian 13, RAUC A/B — chosen over Rugix by the 2026-07-25 bake-off on stability grounds, fault-injection proven), read-only root, single /data persistence, the stack on Podman via the compose bridge, everything Tor-first. The DIY channel stays Docker Compose, byte-identical. What remains before the tier opens is parity, proof, and polish — not construction.
Boot contract: pithead-boot renders derived config every boot, compose owns the stack, rauc status mark-good only after the dashboard answers through Caddy + doctor --json — derived is regenerated, state is validated, never the reverse.
Security posture: cosign-mandatory releases; RAUC release keys with custody runbook (dev builds refuse without --dev); Tor egress fail-closed under netavark (proven live); shell-less release variant; per-machine host identity (SSH host keys + machine-id) generated on /data, never baked (2026-08-13); stale-artifact build guard.
Host-CLI-only settings were impossible to change on a shell-less box. Decision record on #786 (peer research: Talos, HAOS, TrueNAS/OPNsense, Synology/UniFi/umbrel):
#923 factory-reset/wedged-/data reformat never battery-exercised · #924 headless setup() silent no-op · #925 role-select undocumented · #926 partition-derivation consolidation · #927 worker-verb dedup. Plus #851 (migration-manifest fields, open by design until a real migration exists) and #821 (RigForge repin, blocked on their next tagged release).
Release status — tier not open. Gates:
KVM battery green per cut on the current tip (now includes identity-survival, hugepage, and honest fault-C asserts)
Shipped and proven (phases 0–3 of #77, RC20 line)
tests/os/run.shis the release gate,tests/os/verify-image.shthe static half.pithead-bootrenders derived config every boot, compose owns the stack,rauc status mark-goodonly after the dashboard answers through Caddy +doctor --json— derived is regenerated, state is validated, never the reverse.--dev); Tor egress fail-closed under netavark (proven live); shell-less release variant; per-machine host identity (SSH host keys + machine-id) generated on/data, never baked (2026-08-13); stale-artifact build guard.The parity arc — #786, decided 2026-08-13
Host-CLI-only settings were impossible to change on a shell-less box. Decision record on #786 (peer research: Talos, HAOS, TrueNAS/OPNsense, Synology/UniFi/umbrel):
Hardening backlog (filed 2026-08-13 audit)
#923 factory-reset/wedged-
/datareformat never battery-exercised · #924 headlesssetup()silent no-op · #925 role-select undocumented · #926 partition-derivation consolidation · #927 worker-verb dedup. Plus #851 (migration-manifest fields, open by design until a real migration exists) and #821 (RigForge repin, blocked on their next tagged release).Release status — tier not open. Gates:
docs/dev/appliance-release.mdexercised end-to-end for the first public cut#479 (screenshots) rides the v1.12 milestone, not this tier.