Managed drift (DESIGN.md, "the piece nobody ships"): because
theme.eject recorded provenance, a theme upgrade is a mechanical
three-way comparison — the base you ejected from, the installed
upstream, and your copy.
| status | meaning |
|---|---|
:current | upstream unchanged since eject — nothing to do |
:auto_updatable | upstream moved, you didn't touch it — safe to re-eject |
:conflict | both moved — a human (or agent) resolves |
:untracked | no provenance header — a hand copy we cannot manage |
Summary
Functions
Drift entries for every template this site overlays, manifest order.
Re-ejects an :auto_updatable overlay from the installed theme,
stamping fresh provenance. Refuses any other status — a conflict or
hand copy is never silently overwritten.
Functions
@spec entries(Cherry.Site.t(), Cherry.Theme.t()) :: [Cherry.Theme.Drift.Entry.t()]
Drift entries for every template this site overlays, manifest order.
@spec update(Cherry.Theme.Drift.Entry.t(), Cherry.Theme.t()) :: :ok | {:error, String.t()}
Re-ejects an :auto_updatable overlay from the installed theme,
stamping fresh provenance. Refuses any other status — a conflict or
hand copy is never silently overwritten.