ludic/changes/pkg-remove-get-json.md
Orkuncakilkaya 320ce42626 ludic remove <module> and ludic get --json (R9)
remove is the inverse of add: the require line leaves package.ludic; the lock keeps exactly what the
remaining requires still reach, read from the store's copy of each locked package.ludic (no
network), so a package another still requires stays locked and what only the removed one brought in
leaves with it; each leaving package loses the ludic_modules/ symlink add made, never the shared
store entry. Refused (exit 1) when package.ludic does not require the module; source still
importing a removed package is a warning. With no store copy to read, only the named module leaves.

get --json diffs the lock before and after in memory and prints {added, removed, changed,
unchanged} on stdout (an entry as the lock records it: name, version, hash, kind, provides; a change
as name, from, to, from_hash, to_hash), the resolver's lines on stderr. Cases added to test-pkg,
not run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:24:49 +03:00

792 B

bump: minor type: feat ludic remove <module> and ludic get --json. remove is the inverse of add: the require leaves package.ludic, the lock keeps what the remaining requires still reach (read from the store's copies of each package's manifest, no network), and each package leaving the lock loses the ludic_modules/ link add made - never the shared store entry. A module that is not required is refused; source still importing a removed package is a warning. ludic get --json prints what the run changed in the lock as one JSON object on stdout - {"added", "removed", "changed", "unchanged"}, an entry as the lock records it (name, version, hash, kind, provides), a change as {name, from, to, from_hash, to_hash} - with the resolver's own lines on stderr.