[object Object]

← back to Nas Setup

auto-data-snapshot: 2026-08-07T08:00:20 (3 data files) — launchd/com.steve.nas-dwdump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror.plist

0003120c6c5f89180e406c45aff07d4502316ea6 · 2026-08-07 08:02:36 -0700 · auto-commit-fleet

Files touched

Diff

commit 0003120c6c5f89180e406c45aff07d4502316ea6
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date:   Fri Aug 7 08:02:36 2026 -0700

    auto-data-snapshot: 2026-08-07T08:00:20 (3 data files) — launchd/com.steve.nas-dwdump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror-root.plist launchd/com.steve.nas-realestate-dump-mirror.plist
---
 launchd/com.steve.nas-dwdump-mirror-root.plist     | 46 ++++++++++++++++++
 ...com.steve.nas-realestate-dump-mirror-root.plist | 54 ++++++++++++++++++++++
 launchd/com.steve.nas-realestate-dump-mirror.plist |  6 ++-
 3 files changed, 105 insertions(+), 1 deletion(-)

diff --git a/launchd/com.steve.nas-dwdump-mirror-root.plist b/launchd/com.steve.nas-dwdump-mirror-root.plist
new file mode 100644
index 0000000..be50ef3
--- /dev/null
+++ b/launchd/com.steve.nas-dwdump-mirror-root.plist
@@ -0,0 +1,46 @@
+<?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-ROOT — root-context replacement for the user LaunchAgent
+  com.steve.nas-dwdump-mirror (the dw_unified 3-2-1 on-prem mirror). Same TCC fix as the
+  realestate sibling: a user launchd agent EPERM'd writing to /Volumes/Henry because macOS
+  won't honor Full Disk Access on the SIP /bin/bash responsible-process; a system
+  LaunchDaemon runs outside the per-user TCC consent domain and can write the external
+  volume. This is what let the dw_unified backup go 41 days stale silently.
+  Installed to /Library/LaunchDaemons by scripts/install-root-daemon-dwdump.sh.
+  HOME=/var/root points ssh at root's copy of the Kamatera key. Runs 03:45 as root.
+  Added 2026-08-07 (TK-10323).
+-->
+<plist version="1.0">
+<dict>
+  <key>Label</key>
+  <string>com.steve.nas-dwdump-mirror-root</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>EnvironmentVariables</key>
+  <dict>
+    <key>HOME</key>
+    <string>/var/root</string>
+    <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-dwdump-root.out.log</string>
+  <key>StandardErrorPath</key>
+  <string>/Users/macstudio3/Projects/nas-setup/data/launchd-dwdump-root.err.log</string>
+</dict>
+</plist>
diff --git a/launchd/com.steve.nas-realestate-dump-mirror-root.plist b/launchd/com.steve.nas-realestate-dump-mirror-root.plist
new file mode 100644
index 0000000..128b767
--- /dev/null
+++ b/launchd/com.steve.nas-realestate-dump-mirror-root.plist
@@ -0,0 +1,54 @@
+<?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-ROOT — root-context replacement for the user LaunchAgent
+  of the same name. Installed to /Library/LaunchDaemons (root:wheel 644), bootstrapped into the
+  system/ domain by scripts/install-root-daemon.sh.
+
+  WHY root: the user LaunchAgent EPERM'd writing to /Volumes/Henry because macOS TCC won't honor
+  a Full Disk Access grant on the SIP /bin/bash responsible-process for a launchd job. A system
+  LaunchDaemon runs outside the per-user TCC consent domain, so it can write the external volume
+  without a GUI Full Disk Access toggle. Root gets its own copy of the Kamatera SSH key
+  (/var/root/.ssh/) + config from the install script — HOME=/var/root points ssh at it.
+  Added 2026-08-07 (TK-10323). The George-email leg of pull-dw-dump.sh self-skips under
+  HOME=/var/root (its `[ -f $HOME/.claude/... ]` guard); the CNCP alert card still fires.
+-->
+<plist version="1.0">
+<dict>
+  <key>Label</key>
+  <string>com.steve.nas-realestate-dump-mirror-root</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>EnvironmentVariables</key>
+  <dict>
+    <key>HOME</key>
+    <string>/var/root</string>
+    <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-root.out.log</string>
+  <key>StandardErrorPath</key>
+  <string>/Users/macstudio3/Projects/nas-setup/data/launchd-realestate-root.err.log</string>
+</dict>
+</plist>
diff --git a/launchd/com.steve.nas-realestate-dump-mirror.plist b/launchd/com.steve.nas-realestate-dump-mirror.plist
index a823f95..c3cad59 100644
--- a/launchd/com.steve.nas-realestate-dump-mirror.plist
+++ b/launchd/com.steve.nas-realestate-dump-mirror.plist
@@ -14,7 +14,11 @@
   <string>com.steve.nas-realestate-dump-mirror</string>
   <key>ProgramArguments</key>
   <array>
-    <string>/bin/bash</string>
+    <!-- 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>

← a442f8d auto-data-snapshot: 2026-08-07T07:29:27 (1 data files) — lau  ·  back to Nas Setup  ·  docs(nas): add DW-Backups activation checklist (root-context fb2f00f →