You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
~/Library/Logs/onebrain has now gone missing twice on the same machine. Each time, every registered launchd job is left unable to start: launchd opens StandardOutPath before exec and does not create parents, so all five entries would die with EX_CONFIG 78 writing zero bytes.
The CLI does not delete it. No remove_dir/remove_dir_all exists anywhere in crates/onebrain-core/src/scheduler/ or register_schedule.rs, and nothing destructive references log_base_path. Ruled out by grep, not by assumption.
Neighbouring directories survive.~/Library/Logs/ still holds Baseband, Claude, com.apple.CloudTelemetry, com.openai.codex, mole, OneDrive — so this is not a blanket wipe of ~/Library/Logs.
It is empty when recreated and jobs then work, so nothing depends on prior contents.
What is NOT established
Who removes it. Candidates, none confirmed:
a third-party disk-cleanup tool (a mole log directory is present on this machine, and "clean up empty/large log dirs" is exactly what such tools do)
macOS periodic maintenance
a manual cleanup by the operator that also swept it
The directory is empty in normal operation — launchd only writes to files inside it when a job produces output, and the vault-side audit log is where real output goes. An empty directory is precisely what a cleaner reclaims.
Why this needs more than the existing checks
scheduler-log-dir (#362) and scheduler-silent-runs (#363) both detect the condition, and #362 can even fix it with doctor --fix. Neither prevents it. Between two doctor runs the schedule is silently dead, and the observed gap was over a day.
Options worth weighing
Keep a sentinel file inside the directory (e.g. .keep), so a cleaner that only reclaims empty directories leaves it alone. Cheap; does not defend against a cleaner that ignores contents.
Re-assert the directory at fire time — impossible for the launchd failure by construction (the CLI is never reached), but it would cover the systemd and Task Scheduler paths.
~/Library/Logs/onebrainhas now gone missing twice on the same machine. Each time, every registered launchd job is left unable to start: launchd opensStandardOutPathbefore exec and does not create parents, so all five entries would die withEX_CONFIG 78writing zero bytes.Occurrences
onebrain-search-reindexgoing78 → 0onmkdir -palone, nothing else changed. Tracked as scheduler: if the log dir is removed after register, every job fails with EX_CONFIG 78 forever — silently #362, which added thescheduler-log-dirdoctor check.digestat 08:30). Recreated by hand; both scheduler checks green afterwards.What is established
remove_dir/remove_dir_allexists anywhere incrates/onebrain-core/src/scheduler/orregister_schedule.rs, and nothing destructive referenceslog_base_path. Ruled out by grep, not by assumption.~/Library/Logs/still holdsBaseband,Claude,com.apple.CloudTelemetry,com.openai.codex,mole,OneDrive— so this is not a blanket wipe of~/Library/Logs.What is NOT established
Who removes it. Candidates, none confirmed:
molelog directory is present on this machine, and "clean up empty/large log dirs" is exactly what such tools do)The directory is empty in normal operation — launchd only writes to files inside it when a job produces output, and the vault-side audit log is where real output goes. An empty directory is precisely what a cleaner reclaims.
Why this needs more than the existing checks
scheduler-log-dir(#362) andscheduler-silent-runs(#363) both detect the condition, and #362 can even fix it withdoctor --fix. Neither prevents it. Between twodoctorruns the schedule is silently dead, and the observed gap was over a day.Options worth weighing
.keep), so a cleaner that only reclaims empty directories leaves it alone. Cheap; does not defend against a cleaner that ignores contents.schedule registeralready re-creates it viaensure_log_dir, so re-registering is the practical manual remedy today; worth documenting as such.Filed from the v3.4.22 epic, where the detection half shipped. This is the prevention half.