Skip to content

feat(asahi): add AsahiBootChain rollback model and bootChain schema field#26

Merged
mdheller merged 1 commit into
mainfrom
feat/asahi-boot-chain
Jun 16, 2026
Merged

feat(asahi): add AsahiBootChain rollback model and bootChain schema field#26
mdheller merged 1 commit into
mainfrom
feat/asahi-boot-chain

Conversation

@mdheller

Copy link
Copy Markdown
Contributor

Summary

  • boot-release-set.schema.json: adds optional bootChain field with type enum and asahi sub-object; rollbackTarget accepts string | null
  • asahi_boot_chain.py: non-mutating rollback model; validate() enforces efiVarsMutable=false (mandatory on Apple Silicon — prevents EFI namespace conflict with macOS); detect_generations() reads NixOS profile symlinks; plan_rollback() returns an AsahiRollbackPlan targeting the most-recent previous generation
  • examples/builder-aarch64-dev-release.example.json: Phase 0 fixture with Asahi boot chain, local Katello content server (127.0.0.1:8101), dev lifecycle env

Test plan

  • 13 new tests pass (pytest tests/test_asahi_boot_chain.py)
  • Full suite passes (pytest)
  • Example fixture validates against updated schema
  • plan_rollback() returns denied when efiVarsMutable=true
  • On M2 device post-Asahi install: detect_generations() returns at least one generation

…ield

schemas/boot-release-set.schema.json: adds optional bootChain field to spec
with type enum (asahi-m1n1-uboot-systemd-boot, uefi-systemd-boot, uefi-grub,
coreboot, uboot-generic) and asahi sub-object (m1n1Version, ubootVersion,
efiVarsMutable, rollbackTarget[string|null])

asahi_boot_chain.py: non-mutating model of the m1n1→U-Boot→systemd-boot chain;
AsahiBootChainInfo.validate() enforces efiVarsMutable=false (mandatory on Apple
Silicon); AsahiBootChain.detect_generations() reads NixOS profile symlinks;
plan_rollback() returns AsahiRollbackPlan targeting most-recent previous
generation; no subprocess calls, no disk writes

examples/builder-aarch64-dev-release.example.json: Phase 0 fixture pointing
at local Katello content server (127.0.0.1:8101) with Asahi boot chain,
dev lifecycle environment, katello:SocioProphet/sourceos-builder-aarch64/dev
release set ref

13 tests, all passing
@mdheller mdheller merged commit 526bdc1 into main Jun 16, 2026
1 check failed
@mdheller mdheller deleted the feat/asahi-boot-chain branch June 16, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant