← back to Norma
daily-cadence: posting-hours guard (Mon-Sat 08:00-20:00) + draft launchd plist for durable cadence
f700cdd07152bc3dd5b18daf92e050829104268b · 2026-08-11 13:06:03 -0700 · Steve Abrams
Files touched
M agents/instagram-agent/daily-cadence.jsA agents/instagram-agent/deploy/com.steve.dw-ig-cadence.plist
Diff
commit f700cdd07152bc3dd5b18daf92e050829104268b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue Aug 11 13:06:03 2026 -0700
daily-cadence: posting-hours guard (Mon-Sat 08:00-20:00) + draft launchd plist for durable cadence
---
agents/instagram-agent/daily-cadence.js | 5 +++++
.../deploy/com.steve.dw-ig-cadence.plist | 24 ++++++++++++++++++++++
2 files changed, 29 insertions(+)
diff --git a/agents/instagram-agent/daily-cadence.js b/agents/instagram-agent/daily-cadence.js
index e90d090..754f15c 100644
--- a/agents/instagram-agent/daily-cadence.js
+++ b/agents/instagram-agent/daily-cadence.js
@@ -64,6 +64,11 @@ async function findProduct(keyword) {
(async () => {
if (isRestDay) { console.log('REST DAY (Sunday) — no posting today.'); return; }
+ const hour = now.getHours();
+ if (!flag('force') && !flag('dry') && !flag('status') && (hour < 8 || hour >= 20)) {
+ console.log(`Outside posting hours (${hour}:00; window 08:00–20:00). Skipping. Use --force to override.`);
+ return;
+ }
const eligible = HANDLES.filter((h) => !themeFor(h).skip);
const remaining = eligible.filter((h) => !postedToday.has(h));
diff --git a/agents/instagram-agent/deploy/com.steve.dw-ig-cadence.plist b/agents/instagram-agent/deploy/com.steve.dw-ig-cadence.plist
new file mode 100644
index 0000000..d6ad3ce
--- /dev/null
+++ b/agents/instagram-agent/deploy/com.steve.dw-ig-cadence.plist
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- DRAFT — NOT installed. Durable "1 post/day per account, 6 days/week" cadence.
+ Runs daily-cadence.js every 35 min; the driver self-limits to Mon–Sat, 08:00–20:00,
+ never double-posts an account/day (ledger-derived), and stops on a velocity tripwire.
+ Install (Steve): cp this to ~/Library/LaunchAgents/ && launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.steve.dw-ig-cadence.plist -->
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key><string>com.steve.dw-ig-cadence</string>
+ <key>ProgramArguments</key>
+ <array>
+ <string>/opt/homebrew/bin/node</string>
+ <string>/Users/macstudio3/Projects/Norma/agents/instagram-agent/daily-cadence.js</string>
+ <string>--batch</string><string>4</string>
+ </array>
+ <key>WorkingDirectory</key><string>/Users/macstudio3/Projects/Norma/agents/instagram-agent</string>
+ <key>EnvironmentVariables</key>
+ <dict><key>PATH</key><string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string></dict>
+ <key>StartInterval</key><integer>2100</integer>
+ <key>StandardOutPath</key><string>/Users/macstudio3/Projects/Norma/agents/instagram-agent/data/cadence.log</string>
+ <key>StandardErrorPath</key><string>/Users/macstudio3/Projects/Norma/agents/instagram-agent/data/cadence.log</string>
+ <key>RunAtLoad</key><false/>
+</dict>
+</plist>
← 1ec2435 daily-cadence: velocity tripwire (stop batch on 'restricted'
·
back to Norma
·
auto-data-snapshot: 2026-08-11T13:21:01 (1 data files) — age 40f3825 →