Noted while closing #3. Three ways to schedule cmd/recompute now live in the repo, and nothing in the filenames says which platform each is for:
scripts/com.brahy.hushield.recompute.plist — macOS launchd only; cannot run on the Linux host
scripts/recompute.cron — a crontab line with a placeholder /path/to/recompute
deploy/hushield-recompute.{service,timer} — systemd, and what production actually uses
Someone landing in scripts/ reasonably assumes the plist or the cron file is the production mechanism. Neither is. The launchd plist in particular is dead weight on the deploy host.
What to do
Small and mostly editorial, but it removes a real trip hazard:
- Move or rename so the platform is obvious — e.g.
scripts/macos/, or a README.md in scripts/ mapping artifact to platform to status
- Replace the
/path/to/recompute placeholder with something real or clearly marked as a template
- Consider whether the cron file earns its place now that systemd is the production path
Also worth capturing somewhere durable, because it cost time to find: systemctl enable on a timer does not start it. Enabling only takes effect at the next boot, so the timer sat enabled but inactive until explicitly started. systemctl enable --now is what you want. That belongs in deploy/DEPLOY.md.
Noted while closing #3. Three ways to schedule
cmd/recomputenow live in the repo, and nothing in the filenames says which platform each is for:scripts/com.brahy.hushield.recompute.plist— macOS launchd only; cannot run on the Linux hostscripts/recompute.cron— a crontab line with a placeholder/path/to/recomputedeploy/hushield-recompute.{service,timer}— systemd, and what production actually usesSomeone landing in
scripts/reasonably assumes the plist or the cron file is the production mechanism. Neither is. The launchd plist in particular is dead weight on the deploy host.What to do
Small and mostly editorial, but it removes a real trip hazard:
scripts/macos/, or aREADME.mdinscripts/mapping artifact to platform to status/path/to/recomputeplaceholder with something real or clearly marked as a templateAlso worth capturing somewhere durable, because it cost time to find:
systemctl enableon a timer does not start it. Enabling only takes effect at the next boot, so the timer satenabledbutinactiveuntil explicitly started.systemctl enable --nowis what you want. That belongs indeploy/DEPLOY.md.