Skip to content

Separate package intent from realized profiles - #51

Merged
jhuntwork merged 3 commits into
mainfrom
package-intent
Aug 23, 2026
Merged

Separate package intent from realized profiles#51
jhuntwork merged 3 commits into
mainfrom
package-intent

Conversation

@jhuntwork

Copy link
Copy Markdown
Owner

Mere currently records the exact installed closure but not why each package is present. That makes dependencies permanent roots, allows a named install to upgrade unrelated packages, and loses the constraints users intended to keep.

This change gives profiles two explicit layers: requested roots retain canonical constraints, while every package still records its exact version, release, and content hash. Existing profiles remain compatible by treating packages without intent metadata as requested.

mere upgrade now owns deliberate whole-profile or targeted reconsideration. Ordinary installs hold unrelated selections, preserve an existing constraint when repeated unconstrained, and promote named dependencies to roots. Uninstall re-resolves the remaining roots, rejects removal of required dependencies unless cascading, and prunes packages no longer reachable. Install and upgrade both support dry-run previews.

The three commits are independently reviewable: profile intent persistence, explicit upgrades, then scoped install and removal behavior. Swamp validation passed 759 tests with 2 skipped, a portable baseline release build, and built CLI smoke.

@jhuntwork
jhuntwork merged commit fe248f3 into main Aug 23, 2026
2 checks passed
@jhuntwork
jhuntwork deleted the package-intent branch August 23, 2026 14:26
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