generated from coulomb/repo-seed
OverlayEngine.apply: read-only target → KEPT_DRAFT; base_rev==current → fast-forward write-through (APPLIED, MERGE_DECIDED closes overlay); drift → REFUSED_DRIFT (no clobber, I-5). 5 tests green, pyflakes clean. (blueprint §8.6) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>