fix: reorganise charmcraft.yaml preprocessing
Metadata
Current evaluation
Merged in #1622 (commit 7ce4182e): extensions now run first, charms with bases get a default part, and parts must be a dictionary.
Resolution: closed resolved
Reason: PR #1622 was approved and merged as commit 7ce4182e, reordering charmcraft.yaml preprocessing, adding default parts for charms with bases, and enforcing dictionary-valued parts.
Evaluated by: mr-cal-bot
No scores available.
Issue body
This makes a few related changes:
1. Extensions are applied on the rawest charmcraft.yaml data we have
2. Charms with a "bases" key (not just bundles) get a default part.
3. Always expect a dictionary for parts.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged in #1622 (commit 7ce4182e): extensions now run first, charms with bases get a default part, and parts must be a dictionary. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged #1622 (commit 7ce4182e), reworking charmcraft.yaml preprocessing to run extensions first, default parts for charms with bases, and require dictionary parts. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged following two approvals and passing CI. Reorganized charmcraft.yaml preprocessing to apply extensions on raw data, assign default parts to charms with bases, and enforce dictionary type for parts. Modified 5 files (+27/-14 lines). | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged a fix reorganizing charmcraft.yaml preprocessing. Extensions now apply to raw data, charms with bases keys receive a default part, and parts are strictly enforced as dictionaries. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2452 docs: small tweaks to best practice blocks | charmcraft | merged | Merged in charmcraft#2452 via commit 655519ae, reclassifying two “manage charms” examples as a tip and making charmcraft.yaml best practices clearer standalone. | |
| #215 fix(charm): accept redundant multi-base charms | craft-platforms | merged | Merged PR #215 as commit 4879309, allowing redundant multi-base charms when they produce equivalent valid build plans and addressing canonical/charmcraft#2620. | |
| #1248 feat(extensions): add basic support | charmcraft | merged | Merged PR #1248 as 65726afc, adding basic extensions support and fixing #1238; extensions now run after base expansion during charmcraft.yaml unmarshalling. | |
| #1616 Default `charm` or `bundle` part is not added if `parts` is defined but empty in `charmcraft.yaml`. | charmcraft | closed | Fixed by merged PR canonical/charmcraft#1815 (commit 2a0eb973), correcting default charm/bundle part handling in charmcraft.yaml. | |
| #186 Support charmcraft.yaml, parts, pull and build behaviours | charmcraft | closed | Full lifecycle support for charmcraft.yaml, explicit parts, and pull/build behaviors landed in master; the Charmhub UUID idea was split into #216. | |
| #91 First pass at 'charmcraft init' | charmcraft | merged | Merged PR #91 delivered the first non-interactive charmcraft init scaffolding implementation; README improvements, extra options, and prompts were deferred (commit 0ebd9f87). |