Design: docs/superpowers/specs/2026-09-13-flatcar-base-migration-design.md (PR #123), supports phase 6. Blocked by #126 and #134.
Reframed by the version-parity decision. The option is no longer "which base ships" - FSDK always ships. It is the harness that makes substitution measurable: build both the FSDK-composed payload and the imported Flatcar reference from one tree, boot both through the same layout, and diff.
Add os-base: fsdk | flatcar-reference:
What to compare
- Boot success and
systemd-analyze timings.
- Installed size. The current FSDK DDI is 1.1 GiB compressed; Flatcar's complete
/usr is 377 MiB compressed, and packs to 356 MiB as squashfs.
- Sysext attach behavior.
- Per-component behavioral divergence as substitution proceeds. This is the primary output of the experiment, per the design's goals.
Unlike the earlier framing, this option is not removed at cutover. It stays as the regression harness for parity claims.
Acceptance
Design:
docs/superpowers/specs/2026-09-13-flatcar-base-migration-design.md (PR #123), supports phase 6. Blocked by #126 and #134.Reframed by the version-parity decision. The option is no longer "which base ships" - FSDK always ships. It is the harness that makes substitution measurable: build both the FSDK-composed payload and the imported Flatcar reference from one tree, boot both through the same layout, and diff.
Add
os-base: fsdk | flatcar-reference:fsdk- the shipped payload, composed from FSDKcomponents/*at Flatcar-matched versions.flatcar-reference- the imported tree from feat(flatcar): import Flatcar /usr as a boot reference, not as the payload #126, the known-good control.What to compare
systemd-analyzetimings./usris 377 MiB compressed, and packs to 356 MiB as squashfs.Unlike the earlier framing, this option is not removed at cutover. It stays as the regression harness for parity claims.
Acceptance
just build-ddihonors the option.