revert(live-sync): drop path-activation unit
Frank veto: DirectoryNotEmpty re-fires on every file event (GUI writes, wallpaper shuffle) un-debounced -> hundreds of heartbeat spawns/day. The sweep is cheap (57 ms CPU) but the trigger design was event spam. Exposure-window fix is an open design question; timer unchanged.
This commit is contained in:
@@ -1,13 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Fire the live-sync heartbeat within seconds of a dotfiles-tier write
|
|
||||||
|
|
||||||
[Path]
|
|
||||||
# GUI writes (noctalia settings.toml, niri cfg) land in the repo via the
|
|
||||||
# dotfiles symlinks; this directory watch makes "GUI edit -> durable commit"
|
|
||||||
# sub-second instead of up to one heartbeat interval. DirectoryNotEmpty fires
|
|
||||||
# while the dir holds any file, so the unit re-triggers on every modification
|
|
||||||
# (the empty-dir edge case is irrelevant here — dotfiles is never empty).
|
|
||||||
DirectoryNotEmpty=%h/.omp/dotfiles
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=paths.target
|
|
||||||
@@ -26,13 +26,6 @@ because the dirty tree collided with incoming work.
|
|||||||
machine's own writes on a schedule. Tier law (which paths it may touch) lives
|
machine's own writes on a schedule. Tier law (which paths it may touch) lives
|
||||||
in [AGENTS.md](../../AGENTS.md) § Live-sync tiers.
|
in [AGENTS.md](../../AGENTS.md) § Live-sync tiers.
|
||||||
|
|
||||||
`live-sync.path` (`DirectoryNotEmpty` on `dotfiles/`) activates the same
|
|
||||||
service within seconds of any GUI dotfiles write; `live-sync.timer` remains
|
|
||||||
the hourly catch-all for the machine tiers the path unit does not watch.
|
|
||||||
The trigger gap between a GUI edit and its commit is what let a 2026-10-18
|
|
||||||
trunk-sync stash destroy a month of uncommitted bar layout — a timer-only
|
|
||||||
heartbeat leaves up to 59 minutes of exposure.
|
|
||||||
|
|
||||||
## Contract (black-box)
|
## Contract (black-box)
|
||||||
|
|
||||||
Run = one pass: flock → branch guard (`main` only) → stage allowlisted dirty
|
Run = one pass: flock → branch guard (`main` only) → stage allowlisted dirty
|
||||||
@@ -68,7 +61,6 @@ with the usual dotfiles chain:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
systemctl --user enable --now live-sync.timer # after the unit is linked
|
systemctl --user enable --now live-sync.timer # after the unit is linked
|
||||||
systemctl --user enable --now live-sync.path # sub-second dotfiles trigger
|
|
||||||
systemctl --user start live-sync.service # one manual heartbeat
|
systemctl --user start live-sync.service # one manual heartbeat
|
||||||
journalctl --user -u live-sync.service -n 20 # observe
|
journalctl --user -u live-sync.service -n 20 # observe
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user