Skip to content

composefs: Declare the backend stable - #2530

Open
cgwalters wants to merge 3 commits into
bootc-dev:mainfrom
cgwalters:bot/composefs-stabilize
Open

cgwalters wants to merge 3 commits into
bootc-dev:mainfrom
cgwalters:bot/composefs-stabilize

Conversation

@cgwalters

Copy link
Copy Markdown
Collaborator

Super excited to finally do this! In practice we've been aiming
to support upgrades from existing systems that were installed
when the backend was experimental, but it's time to just declare
the on-disk setup stable.

cgwalters-bot and others added 3 commits October 2, 2026 11:12
Prep for declaring the composefs backend stable. Its single page mixed
architecture, image building, bootloader and install material, each of
which has a natural home in the production docs, so move each section
there verbatim: the storage layout into bootc-sysroot(7), sealed image
building into a new bootc-sealed-images(7) under Building images, the
bootloader and install notes into bootc-bootloaders(7) and
bootc-installation(7), and the rest into a new bootc-composefs(7) under
Architecture.

Only headings and intra-page links change here, plus dropping a
sentence in the bootloader section that pointed at bootc-bootloaders(7)
itself (`git diff --color-moved` shows the rest as moves). The
wording, including the "experimental" status text, is updated in the
next commit. Redirects keep the old experimental-composefs.html URL,
and its main anchors, working, as well as the short-lived
bootc-experimental-composefs.7.html.

Generated-by: AI
Signed-off-by: Colin Walters <walters@verbum.org>
This is an internal entry point run by bootc-finalize-staged.service
and bootc-finalize-staged-hold.service, not something users should
invoke, so it shouldn't be listed in `bootc --help` or bootc(8) once
the composefs backend is declared stable.

Its man page stays, since it documents what the services do. Hidden
commands are left out of the CLI JSON that the man page generator
reads, so the page's OPTIONS section is now maintained by hand rather
than between the generated markers.

This takes just the CLI change from bootc-dev#2168 by cgwalters, which also
documents the service; that part can still land from there.

Generated-by: AI
Signed-off-by: Colin Walters <walters@verbum.org>
Super excited to finally do this! In practice we've been aiming
to support upgrades from existing systems that were installed
when the backend was experimental, but it's time to just declare
the on-disk setup stable.

Assisted-by: AI
Signed-off-by: Colin Walters <walters@verbum.org>
@cgwalters cgwalters changed the title Declare the backend stable composefs: Declare the backend stable Oct 2, 2026
@github-actions github-actions Bot added the area/documentation Updates to the documentation label Oct 2, 2026
@bootc-bot
bootc-bot Bot requested a review from jeckersb October 2, 2026 15:18
@cgwalters
cgwalters requested a balanced review from Copilot October 2, 2026 15:20
@cgwalters
cgwalters enabled auto-merge (rebase) October 2, 2026 15:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Deep-link redirects are incomplete, and the documented sealed-image recipe retains the extracted kernel files.

Review effort: Balanced
Findings: 2 Low severity

Open (2)
What changed in this PR

Declares the composefs backend stable and reorganizes its documentation around supported configurations, sealed images, and storage architecture.

Changes:

  • Replaces experimental composefs documentation with stable backend guidance.
  • Publishes composefs digest tooling and marks remaining experimental features.
  • Adds compatibility redirects and updates cross-references.
File Description
CONTRIBUTING.md Removes experimental labeling and updates guidance.
crates/​lib/​src/​cli.rs Exposes digest tooling and hides an internal command.
crates/​lib/​src/​lib.rs Marks composefs implementation stable.
crates/​lib/​src/​spec.rs Marks grub-cc experimental.
docs/​book.toml Adds composefs documentation redirects.
docs/​src/​SUMMARY.md Reorganizes composefs documentation navigation.
docs/​src/​bootc-bootloaders.7.md Documents composefs bootloader support.
docs/​src/​bootc-compatible-images.7.md Links sealed-image guidance.
docs/​src/​bootc-composefs.7.md Adds stable backend documentation.
docs/​src/​bootc-experimental-composefs.7.md Removes superseded experimental documentation.
docs/​src/​bootc-experimental-unified-storage.7.md Updates the composefs link.
docs/​src/​bootc-installation.7.md Documents composefs selection and requirements.
docs/​src/​bootc-internals.7.md Removes the experimental designation.
docs/​src/​bootc-overview.7.md Introduces composefs as a supported backend.
docs/​src/​bootc-sysroot.7.md Documents composefs on-disk storage.
docs/​src/​bootc-upgrades.7.md Updates the composefs upgrade reference.
docs/​src/​building/​bootc-sealed-images.7.md Adds sealed-image build guidance.
docs/​src/​host-v1.schema.json Marks grub-cc experimental.
docs/​src/​man/​bootc-container-compute-composefs-digest.8.md Adds the digest command manual.
docs/​src/​man/​bootc-composefs-finalize-staged.8.md Converts generated option text to static documentation.
docs/​src/​man/​bootc-container.8.md Lists the digest command.
docs/​src/​man/​bootc-setup-root-conf.5.md Removes the experimental warning.
docs/​src/​man/​bootc.8.md Removes the hidden internal command listing.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/book.toml
# Preserve published URLs when canonical chapters adopt manual filenames.
[output.html.redirect]
"boot-failure-detection.html" = "bootc-boot-failure-detection.7.html"
"bootc-experimental-composefs.7.html" = "bootc-composefs.7.html"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid: bootc-experimental-composefs.7.html is the most recent published URL (since 09-28, unreleased), so its section links should follow the moved sections too. Fix in dfb63b6 on bot/composefs-stabilize-review, on top of 4831ab5; the built book's redirect page maps the fragments.

git fetch https://github.com/cgwalters-forge/bootc bot/composefs-stabilize-review && git cherry-pick dfb63b6c

Generated-by: https://github.com/cgwalters/#llms

EORUN

# Final image: the split rootfs (kernel/initramfs already removed) plus the signed UKI
FROM split

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid (and pre-existing, moved from the experimental chapter): the final image ships /kernel/<kver>/{vmlinuz,initramfs.img}. The recipe is still self-consistent, since the digest also covers /kernel, so it boots; it just carries the duplicate. Fix in 0e1abed on bot/composefs-stabilize-review: a sealed-rootfs stage removes /kernel and is both ukify's /target and the final base.

Tested by building the doc's Dockerfile block verbatim on fedora-bootc:44 (bootc 1.16.13, test Secure Boot key): before, /kernel is present; after, it is absent, and in both the UKI's composefs= digest equals bootc container compute-composefs-digest of the final image.

git fetch https://github.com/cgwalters-forge/bootc bot/composefs-stabilize-review && git cherry-pick 0e1abed7

Generated-by: https://github.com/cgwalters/#llms

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah but in order to not re-do CI again let's queue a fixup PR post-merge

@cgwalters cgwalters added this to the 1.17 milestone Oct 2, 2026
cgwalters added a commit to cgwalters/composefs-rs that referenced this pull request Oct 2, 2026
In practice we're committed to doing that, came up in
the context of bootc-dev/bootc#2530

Signed-off-by: Colin Walters <walters@verbum.org>
github-merge-queue Bot pushed a commit to composefs/composefs-rs that referenced this pull request Oct 2, 2026
In practice we're committed to doing that, came up in
the context of bootc-dev/bootc#2530

Signed-off-by: Colin Walters <walters@verbum.org>
@cgwalters-bot

Copy link
Copy Markdown
Contributor

CI at 4831ab5: everything passed except two ostree integration jobs, neither related to this PR. Both need a rerun of the failed jobs, which I can't trigger:

  • centos-9, ostree: flake. plan-32-multi-device-esp failed in its cleanup on umount: /var/mnt/esp_check: target is busy. The same umount EBUSY hit other tests on centos-9/ostree in two unrelated PRs in the last day (runs 37023292955, 36905285081).
  • fedora-44, ostree: infra. plan-33-bib-build couldn't pull quay.io/centos-bootc/bootc-image-builder:latest (unexpected EOF from the quay CDN).

bot/composefs-stabilize-review is on top of 4831ab5 and has the two Copilot fixes (see the threads above). It also has an optional 5464df1, which adds the ostree-only update units (#2437) to the Limitations list, since bootc-fetch-apply-updates.timer silently does nothing on composefs today:

git fetch https://github.com/cgwalters-forge/bootc bot/composefs-stabilize-review && git cherry-pick 4831ab56..FETCH_HEAD

Generated-by: https://github.com/cgwalters/#llms

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/documentation Updates to the documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants