feat(plugins): atomic install — stage → snapshot → swap → rollback #114
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
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?
Problem
Plugin install today writes directly into
<config_path>/plugins/<name>/. If the install fails partway through (network glitch mid-fetch, a single file write hits an error, manifest validation fails after some files already landed), the workspace is left with a half-written plugin. Rollback = manual re-install of the previous version, but we have no record of what the previous version was.For Reno-Stars: a botched update could brick their workspace's plugin until manual ops intervention.
Proposed approach
Stage→swap→rollback pattern, mirroring the
.completecache-marker pattern from the !external resolver work (PR #107 hardening):<config_path>/plugins/.staging/<name>.<sha>/.<plugins>/<name>/→<plugins>/.previous/<name>.<old-sha>/(atomic rename + symlink)..completemarker only after..previous/<name>.<sha>/snapshots older than N days.Acceptance criteria
.completemarker written lastOut of scope
Refs
.completemarker pattern (PR #107 hardening) — same shapeDone — PR #120 merged. EIC (SaaS) path follow-up filed mentally; will surface as a new issue when scope is clear (depends on what we observe from prod docker path soak first).