Auto-update: daily GitHub check for memd and the Meilisearch engine - #1
Merged
Conversation
…ification - Restore failure no longer wedges the daemon; logs a CRITICAL message instead - Recover a stranded backup automatically on startup after a mid-migration crash - Discard engine-migration markers older than 1 hour to avoid silent data loss - Stats failure aborts prepare() (except index_not_found); warns when expected_docs=0 - Delete the dump file on successful migration - Log prune failures instead of silently discarding the error - Write the marker file atomically via a temp file + rename
…_installed caveat
…t, clippy clean - Remove bare `use time;` import (clippy::single_component_path_imports) - Surface GitHub fetch errors instead of silently claiming "up to date" - Bail if both release checks fail (unreachable network) - Record last_check_secs in both Memd and Engine apply paths - Fix error message in engine branch for accuracy - restart_service() now takes &Config and polls health for up to 20s
…nfig Also applies cargo fmt reformatting to update module source files.
…on config-save failure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[update] auto = true, opt-out supported).--versionsanity check (10s timeout, off-runtime) → atomic swap over~/.local/bin/memd→ restart via launchdKeepAlive(or re-exec without a supervisor).--import-dumppath: dump the live instance, download the new versioned binary, restart, migrate at startup with version + document-count verification. On any failure: full rollback to the previous engine and data dir, version blacklisted, memories never lost.meili-data.mismatch.*isolation somemd doctor --fixbackups are never auto-restored, honest network-failure reporting.memd update [--check]command,Updates:line inmemd status, docs for the command and[update]config.Design spec:
docs/superpowers/specs/2026-06-10-auto-update-design.md· Plan:docs/superpowers/plans/2026-06-10-auto-update.mdTest Plan
cargo fmt --check,cargo clippy --all-targets -- -D warnings,cargo test(31 tests),cargo build --releasememd update --checkagainst live GitHub (correctly reported Meilisearch v1.46.1 available vs pinned v1.45.1)memd update, confirm swap + service restart (plan Task 11, step 5)memd update, confirm dump → import with unchanged memory count🤖 Generated with Claude Code