← back to Nas Setup
belt-and-suspenders: stagger user-agent belts past their root siblings (dwdump 03:45->03:55, realestate 03:50->03:58) — avoids the write-collision once Option-B FDA lands, adds temporal redundancy, and makes tomorrow's log the proof the user belt fires unattended (Cody cycle-11 gate, TK-10547)
d41f040d1d1a2f7e68764b07c0375c5300049eeb · 2026-08-14 12:15:46 -0700 · Steve Abrams
Files touched
M launchd/com.steve.nas-dwdump-mirror.plistM launchd/com.steve.nas-realestate-dump-mirror.plist
Diff
commit d41f040d1d1a2f7e68764b07c0375c5300049eeb
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Aug 14 12:15:46 2026 -0700
belt-and-suspenders: stagger user-agent belts past their root siblings (dwdump 03:45->03:55, realestate 03:50->03:58) — avoids the write-collision once Option-B FDA lands, adds temporal redundancy, and makes tomorrow's log the proof the user belt fires unattended (Cody cycle-11 gate, TK-10547)
---
launchd/com.steve.nas-dwdump-mirror.plist | 70 ++++++++-----------
launchd/com.steve.nas-realestate-dump-mirror.plist | 80 ++++++++++------------
2 files changed, 64 insertions(+), 86 deletions(-)
diff --git a/launchd/com.steve.nas-dwdump-mirror.plist b/launchd/com.steve.nas-dwdump-mirror.plist
index fa4dc97..a036365 100644
--- a/launchd/com.steve.nas-dwdump-mirror.plist
+++ b/launchd/com.steve.nas-dwdump-mirror.plist
@@ -1,47 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<!--
- com.steve.nas-dwdump-mirror — pull the nightly Kamatera dw_unified dump to BOTH
- on-prem destinations (3-2-1 topology, DTD verdict 2026-06-26): Henry local drive
- + NAS 2TB share. Each leg is independent — the Henry leg works today; the NAS leg
- auto-activates once /Volumes/DW-Backups is mounted.
- Runs 03:45 (after the 03:00 Kamatera db-backup.sh has finished writing).
- Safe to load NOW: the Henry leg runs nightly, the NAS leg no-ops until mounted.
- Adjust the *_BACKUP_DIR env vars below if your paths differ.
--->
<plist version="1.0">
<dict>
- <key>Label</key>
- <string>com.steve.nas-dwdump-mirror</string>
- <key>ProgramArguments</key>
- <array>
- <!-- non-SIP Homebrew bash as the TCC responsible process: SIP /bin/bash cannot durably hold
- the Full-Disk/removable-volume grant for a launchd job, so writes to /Volumes/Henry EPERM'd
- ("not writable"). /opt/homebrew/bin/bash (non-SIP) holds the grant — proven: the loaded
- com.steve.backup-daemon-health agent reads Henry through this exact binary every hour, and
- the sibling realestate user agent already uses it. Swapped 2026-08-14 (TK-10547) to match. -->
- <string>/opt/homebrew/bin/bash</string>
- <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
- </array>
- <key>EnvironmentVariables</key>
- <dict>
- <key>HENRY_BACKUP_DIR</key>
- <string>/Volumes/Henry/dw-backups/dw_unified</string>
- <key>NAS_BACKUP_DIR</key>
- <string>/Volumes/DW-Backups/dw_unified</string>
- <key>PATH</key>
- <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
- </dict>
- <key>StartCalendarInterval</key>
- <dict>
- <key>Hour</key><integer>3</integer>
- <key>Minute</key><integer>45</integer>
- </dict>
- <key>RunAtLoad</key>
- <false/>
- <key>StandardOutPath</key>
- <string>/Users/macstudio3/Projects/nas-setup/data/launchd.out.log</string>
- <key>StandardErrorPath</key>
- <string>/Users/macstudio3/Projects/nas-setup/data/launchd.err.log</string>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>HENRY_BACKUP_DIR</key>
+ <string>/Volumes/Henry/dw-backups/dw_unified</string>
+ <key>NAS_BACKUP_DIR</key>
+ <string>/Volumes/DW-Backups/dw_unified</string>
+ <key>PATH</key>
+ <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+ </dict>
+ <key>Label</key>
+ <string>com.steve.nas-dwdump-mirror</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/bash</string>
+ <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
+ </array>
+ <key>RunAtLoad</key>
+ <false/>
+ <key>StandardErrorPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd.err.log</string>
+ <key>StandardOutPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd.out.log</string>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key>
+ <integer>3</integer>
+ <key>Minute</key>
+ <integer>55</integer>
+ </dict>
</dict>
</plist>
diff --git a/launchd/com.steve.nas-realestate-dump-mirror.plist b/launchd/com.steve.nas-realestate-dump-mirror.plist
index c3cad59..0c54278 100644
--- a/launchd/com.steve.nas-realestate-dump-mirror.plist
+++ b/launchd/com.steve.nas-realestate-dump-mirror.plist
@@ -1,51 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<!--
- com.steve.nas-realestate-dump-mirror — pull the nightly Kamatera `realestate` dump to BOTH
- on-prem destinations (Henry local drive + NAS 2TB share), mirroring the dw_unified job.
- Added 2026-08-06 (TK-10076 Gate D): realestate (rentv_licensed_targets ~102k rows, serving
- /api/summit/licensed + public /services) had no offsite copy. Reuses the same parameterized
- pull-dw-dump.sh via PGDUMP_GLOB + *_BACKUP_DIR overrides. Runs 03:50 (5 min after the
- dw_unified pull, both after the 03:00 PT Kamatera dumps). NAS leg no-ops until mounted.
--->
<plist version="1.0">
<dict>
- <key>Label</key>
- <string>com.steve.nas-realestate-dump-mirror</string>
- <key>ProgramArguments</key>
- <array>
- <!-- non-SIP bash as the TCC responsible process: SIP /bin/bash cannot durably hold an
- FDA grant for launchd, so writes to /Volumes/Henry EPERM'd. /opt/homebrew/bin/bash
- (Homebrew, non-SIP) CAN hold the grant. Requires Homebrew bash to have Full Disk
- Access (System Settings → Privacy → Full Disk Access). Swapped 2026-08-07 TK-10323. -->
- <string>/opt/homebrew/bin/bash</string>
- <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
- </array>
- <key>EnvironmentVariables</key>
- <dict>
- <key>HENRY_BACKUP_DIR</key>
- <string>/Volumes/Henry/dw-backups/realestate</string>
- <key>NAS_BACKUP_DIR</key>
- <string>/Volumes/DW-Backups/realestate</string>
- <key>PGDUMP_GLOB</key>
- <string>/root/backups/db/realestate_*.dump</string>
- <key>PGDUMP_FLOOR_MB</key>
- <string>1</string>
- <key>PGDUMP_TOC_FLOOR</key>
- <string>5</string>
- <key>PATH</key>
- <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
- </dict>
- <key>StartCalendarInterval</key>
- <dict>
- <key>Hour</key><integer>3</integer>
- <key>Minute</key><integer>50</integer>
- </dict>
- <key>RunAtLoad</key>
- <false/>
- <key>StandardOutPath</key>
- <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate.out.log</string>
- <key>StandardErrorPath</key>
- <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate.err.log</string>
+ <key>EnvironmentVariables</key>
+ <dict>
+ <key>HENRY_BACKUP_DIR</key>
+ <string>/Volumes/Henry/dw-backups/realestate</string>
+ <key>NAS_BACKUP_DIR</key>
+ <string>/Volumes/DW-Backups/realestate</string>
+ <key>PATH</key>
+ <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
+ <key>PGDUMP_FLOOR_MB</key>
+ <string>1</string>
+ <key>PGDUMP_GLOB</key>
+ <string>/root/backups/db/realestate_*.dump</string>
+ <key>PGDUMP_TOC_FLOOR</key>
+ <string>5</string>
+ </dict>
+ <key>Label</key>
+ <string>com.steve.nas-realestate-dump-mirror</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/bash</string>
+ <string>/Users/macstudio3/Projects/nas-setup/scripts/pull-dw-dump.sh</string>
+ </array>
+ <key>RunAtLoad</key>
+ <false/>
+ <key>StandardErrorPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate.err.log</string>
+ <key>StandardOutPath</key>
+ <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate.out.log</string>
+ <key>StartCalendarInterval</key>
+ <dict>
+ <key>Hour</key>
+ <integer>3</integer>
+ <key>Minute</key>
+ <integer>58</integer>
+ </dict>
</dict>
</plist>
← 4a447c8 daemon-health: belt-and-suspenders model (Steve ruled 8/14 '
·
back to Nas Setup
·
daemon-health: accept single-belt operation as PASS (Steve 8 3c61bc3 →