Chanes for v1.1.0 #2
Loading…
Reference in a new issue
No description provided.
Delete branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Changelog
[v1.1.0] — 2026-08-22 (unreleased)
All notable changes since v1.0.0. Supply-chain-safety posture is unchanged:
lagom only ever pulls digests it has previously observed, regardless of feature.
Added
lagom inspect [image]— lists every digest lagom has recorded for atracked image from local BoltDB state, marking the digest currently running.
No registry or pull queries; filter by substring argument.
--skip-first-runforlagom daemon(alsoskip_first_runconfig /LAGOM_SKIP_FIRST_RUNenv) — skips the startup track+update cycle and waitsfor the first
daemon_interval_hoursinstead of running immediately.Changed
first observed a digest (
FirstSeen), not the registry-reported builddate. Registry creation times are capped at the observation time when
recorded, so a backdated or spoofed registry timestamp cannot make an
unpulled digest eligible early.
updatepulls the newest eligible observed digest. Previously the pulldecision used the registry's live tag digest; now it advances to the newest
digest lagom has tracked that satisfies
min_age_days. Pulls remaindigest-addressed with up to
max_pull_candidatesfallbacks.updateplans running containers only. Update decisions are made forimages currently running (or from
imagesconfig); images whose containersare stopped are left alone.
statusstill shows them.--forcebypasses the age gate but stays observed-only. It pulls thenewest digest already tracked regardless of age, rather than reaching for the
live registry digest. Run
lagom trackfirst if nothing is recorded.statusno longer queries the registry. The LOCAL DIGEST / NEXT DIGEST /AGE / STATUS columns are derived from local state plus one Docker listing, so
statusworks without network access to registries.update phases (
docker psonce, not twice).Fixed
newer remote digest recorded in the same track pass share a first-seen time;
once both were age-eligible the pull decision was left to map-iteration
order, so lagom could skip ("already on newest eligible image") or pull at
random across cycles and disagree with
status. Update now prefers thenon-live digest on ties, matching
status.updatereports "already at latest" when running the newest observeddigest instead of emitting a misleading age-gate countdown.
updatekeeps newer images when a pulled replacement is older. Theprune path checks the replacement's effective creation time before pruning
the orphaned image, preventing a newer build from being destroyed to reclaim
space.
updatefails loudly on container-list errors instead of silentlyplanning from an empty set.
statusverifies the local digest against the Docker daemon, so theLOCAL DIGEST column reflects what is actually running, not only the last
recorded state.
Removed
inspectno longer shows a size column..golangci.yml; remaining suppressionsare inlined as documented
//nolintcomments.Upgrade notes
--forcesemanticsare intentional behavior changes. Existing state carries over unchanged;
FirstSeentimestamps already in the DB drive the new policy.--forcepulling a never-before-tracked digest, runlagom track(or let the daemon cycle) once first.Follow-up safety fix in commit
249b6e7(fix(update): keep live digest on first-seen ties):FirstSeen.statususes the same tie behavior.Verified with
mise run build,go test -shuffle=on -count=1 ./...,go vet ./..., andgolangci-lint run ./....Release v1.1.0to Chanes for v1.1.0