Tasks: first-boot-local-provisioning
1. Provisioning Contract
- 1.1 Define the supported
config.tomlschema for managed users, activation requirements, and structured container/Quadlet data - 1.2 Define the TOML-to-Quadlet rendering rules, including how arrays map to repeated Quadlet directives
- 1.3 Define the canonical persisted layout under
/data/config/, including the importedconfig.tomland rendered Quadlet unit files
2. First-Boot Source Discovery
- 2.1 Add initrd fresh-flash detection that checks whether
boot-bis absent before repartitioning and persists a marker for the switched-root provisioning path - 2.2 Implement provisioning source search in fresh-flash order:
/boot/config.toml, then USB mass storage, then bootstrap web console - 2.3 Implement reprovision source search in reset order: USB mass storage, then bootstrap web console
3. Import And Validation
- 3.1 Import a discovered
config.tomlinto durable state under/data/config/ - 3.2 Render structured Quadlet definitions from
config.tomlinto canonical files under/data/config/quadlet/ - 3.3 Validate the minimum provisioning contract: at least one admin SSH key, at least one Quadlet-defined service, and explicit health requirements
4. First-Boot Commit Behavior
- 4.1 Change the production first-boot path so slot confirmation happens only after successful provisioning import and validation
- 4.2 Update the confirmation/health path to consume explicit health requirements from imported provisioning state
- 4.3 Preserve a development-safe fallback strategy for existing development-mode workflows while the new production gate is introduced
5. Bootstrap Web Console
- 5.1 Add a constrained local bootstrap web console for unprovisioned devices when no seed file is found
- 5.2 Support uploading an existing
config.tomlthrough the bootstrap console - 5.3 Support pasting a valid
config.tomland applying it locally - 5.4 Support programmatic local import of a complete
config.tomlthrough the bootstrap endpoint - 5.5 After apply, show the final applied
config.tomlin the bootstrap UI and offer a download action for that artifact - 5.6 Apply minimal AtomixOS branding to the bootstrap UI, including the logo and cobalt-blue theme styling aligned with the mdBook visual language
6. Reprovisioning And Documentation
- 6.1 Define and implement reprovisioning behavior so wiping
/datareturns the device to provisioning mode without replaying/boot/config.toml - 6.2 Update OpenSpec/docs to describe
/bootinitial seeding, USB reprovisioning, bootstrap UI fallback, and the/data/config/persistence boundary - 6.3 Add focused validation coverage for fresh flash, reprovisioning, seed-source precedence, and TOML-to-Quadlet rendering