feat(metadocs): systemd user timer — the daily job works on Linux - #45
Merged
Conversation
schedule.py was launchd-only: a Linux install got a plist nothing would ever read. Now the platform picks the native backend — launchd agent on macOS, systemd user units on Linux (Persistent=true carries the same laptop semantics: a run missed while asleep fires once on wake) — and anything else gets an honest error handing over the manual path instead of silence. enable/disable/is_enabled grew injectable platform+runner for hermetic tests; the CLI surfaces the unsupported-platform error as exit 1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Half the open-source audience runs Linux, and
metadocs enablethere wrote a launchd plist nothing would ever read.~/.config/systemd/user/session-recall-metadocs.{service,timer}), anything else → an honestRuntimeErrorhanding over the manual path (metadocs runfrom your own scheduler), surfaced by the CLI as exit 1.Persistent=truecarries the exact laptop semantics launchd was chosen for: a run missed while the machine was asleep or off fires once on the next boot/wake.PATHis frozen into the unit (the distiller shells out to the agent CLI), stdout/stderr append to the samemetadocs.log.build_unitsis pure text generation — tests read the units without systemd; enable/disable/is_enabled take injectableplatform/runner.Suite 326 passed.
🤖 Generated with Claude Code