Profile Stack

Domain: DSH Fundamentals

Motivation

A profile is composed over an empty root in a fixed order: each bundle’s patch in dsh.profile.bundles order, then the profile’s cordis.patch.yml, then the home-level $DSH_HOME/cordis.patch.yml, then --patch overlays. A patch entry replaces the target’s whole configuration, so the last write wins per row. Developers care because this precedence is why a user patch beats a bundle default, and why an override must restate every setting it wants to keep.

Concrete Example

Use --dump-config to inspect the composed tree without booting it.

Analogy

It is a pile of sticky notes, read top to bottom, where the top note erases whatever the notes below it said.