mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
Background safe update (Docker-correct, via wp_cli): record pre-update versions -> wp db export a DB snapshot (600s timeout via a new wp_cli timeout param so a large DB is never truncated; ABORTS if the snapshot fails) -> apply updates only to components with an available update minus an exclusion list -> a quiet, side-effect-free health probe (wp eval + HTTP probe; does NOT fire #27 alerts) -> if the update regressed a previously-healthy site, AUTO-ROLLBACK: version-pin each updated component back (--force --skip-plugins --skip-themes, so it runs even on a fatally-broken site) + re-import the snapshot -> re-check -> persist a WordPressUpdateRun report. The snapshot is kept for manual restore whenever the site does not end verified-healthy. A per-site cron schedule + exclusion list is driven by a new daemon-thread scheduler bounded by a concurrency semaphore (a shared 3am cron can't stampede the host). New model WordPressUpdateRun + auto_update_schedule/auto_update_exclude columns (Alembic 012). New Updates tab (run-now, schedule, exclusions, history). Also fixes a latent #26/#27 bug: EnvironmentHealthService.check_health returned 'unknown' for every production site (_get_compose_path needs a container_prefix they lack), making uptime/incidents/alerts inert for the primary site type — now falls back to the Application root_path compose. Deferred: staging-first promotion (needs a staging env + env-pipeline orchestration). Verified: backend py_compile, frontend lint-clean (full build was blocked only by a concurrent agent's in-progress AI import, not #29 code), 2-lens adversarial review (blockers fixed: production health gating, DB-import timeout; majors fixed: scheduler stampede, snapshot-abort). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>