Cron jobs7
Launchd agents9
Fortress jobs10
Power events1
Generated20 Jul 2026 14:48
Clock now14:48 SGT / 02:48 ET

The daily rhythm (SGT, with ET in brackets)

21:30 (09:30 ET)
US market OPENS. evening_run fires its first attempt; retries every 5 min until TWS answers. On a clean run it launches the 4 live watch tools.
21:30-04:00
US regular trading hours. sector_pulse refreshes every 2 min and pushes the live snapshots to CF. The live watch tools stream all session.
03:00 (15:00 ET)
Last plain retry slot for the day's main run.
03:25
pmset wakes the Mac, so a sleeping machine still makes the 03:30 and 04:30 jobs.
03:30 (15:30 ET)
EOD close run (--force), Tue-Sat. Refreshes every dashboard 30 min before the close. Does not launch live tools.
04:00 (16:00 ET)
US market CLOSES.
04:30
nightly_cron: docs/publish pass, CF deploy, git push, regression gate. Emails only on failure.
Sat 08:00 / 08:30 / 09:00
Weekly maintenance: purge aged run artifacts, calibration report, then this page regenerates.
Sun 05:30
Encrypted weekly backup to iCloud.
Sun 22:00
Health workout tracker refresh + deploy (not fortress).

Cron jobs

JobWhenWhat it doesCommandType
Nightly refresh + publish04:30 (every day)16:30 ETThe docs/publish pass (no IBKR analysis). Runs 11 jobs in order: miner_update, x_digest_html, update_tool_reference, sheet_to_pf_export, sheet_to_pf, trade_query, cc_timing, hedge_iv, deploy_cf, git_push, native_gate_tests. Emails ONLY on failure.bash ~/fortress/scripts/nightly_cron.shFortress
Main analysis runevery 5 min, 00,01,02,21,22,23 (every day)The full 4-lane IBKR pipeline: Lane A cc_scanner, Lane B fortress_rebuild, Lane C fortress_fight/stock_fight/fortress_repair, Lane D light jobs; then the Phase 2b readers (cc_check, cc_manager), a retry pass for transient IBKR failures, RunStats, deploy_cf and NTFY. On a clean OPEN run it also launches the 4 _live watch tools.bash ~/fortress/scripts/evening_run.sh --expiry 30-Sep-2026Fortress
Main analysis run03:00 (every day)15:00 ETThe full 4-lane IBKR pipeline: Lane A cc_scanner, Lane B fortress_rebuild, Lane C fortress_fight/stock_fight/fortress_repair, Lane D light jobs; then the Phase 2b readers (cc_check, cc_manager), a retry pass for transient IBKR failures, RunStats, deploy_cf and NTFY. On a clean OPEN run it also launches the 4 _live watch tools.bash ~/fortress/scripts/evening_run.sh --expiry 30-Sep-2026Fortress
EOD close run (forced)03:30 (Tue, Wed, Thu, Fri, Sat)15:30 ETThe US-CLOSE analysis pass. Same 4-lane pipeline as the open run, --force bypasses the daily marker. Does NOT launch the live tools (too near the close).rm -rf ~/fortress/runs/evening_run/.run.lock.d 2>/dev/null; bash ~/fortress/scripts/evening_run…Fortress
Prune run artifacts08:00 (Sat)20:00 ETDeletes aged/oversized artifacts under runs/ (history >30d) so the tree does not creep. --apply actually removes; without it, dry-run.bash -lc 'cd ~/fortress/scripts && python3 purge_runs.py --apply'Maintenance
Calibration report08:30 (Sat)20:30 ETRuns the three predicted-vs-realised graders (cc_scanner --score-ledger, fortress_fight --score-calibration, fortress_rebuild --score-calibration) and publishes one combined dashboard to CF.bash ~/fortress/scripts/weekly_calibration.shFortress
This page09:00 (Sat)21:00 ETRegenerates this scheduled-jobs page from the live crontab / launchd / pmset state and republishes it. Self-documenting: if you add a job, it appears here.bash -lc 'cd ~/fortress/scripts && python3 schedule_docs.py --deploy'Maintenance

Launchd agents

JobWhenWhat it doesCommandType
Launchpad control panelalways on (KeepAlive)Local web control panel on :8788 for running any fortress tool with options. Always-on (RunAtLoad + KeepAlive), restarted automatically if it dies./opt/homebrew/bin/python3 ~/fortress/scripts/launchpad_server.pyAlways on
Sector rotation radarevery 2 minScans ~57 industry/theme groups (free Yahoo data, NOT IBKR) and deploys to CF. Its own ET-clock gate means it only really works during US RTH; off-hours ticks no-op. This is also what keeps the LIVE dashboard snapshots on CF refreshing./opt/homebrew/bin/python3 ~/fortress/scripts/sector_pulse.py --autoFortress
Remote trigger relayalways on (KeepAlive)Always-on listener that lets a browser button trigger a local script run./opt/homebrew/bin/python3 ~/fortress/scripts/trigger_server.pyAlways on
Encrypted weekly backup05:30 (Sun)17:30 ETEncrypted backup of the fortress tree to iCloud. Key is stored off-Mac; retention pruning is interactive-only (launchd/TCC cannot list iCloud)./bin/bash ~/fortress/scripts/weekly_backup.sh --applyMaintenance
Health workout tracker22:00 (Sun)10:00 ETNot fortress, but yours: refreshes the workout progression tracker in ~/Health and deploys it to the health-protocol CF Pages site./bin/bash ~/Health/refresh_and_deploy.shHealth
X/Twitter digestevery 15 minRebuilds the X digest page and deploys it. Cheap, no IBKR./bin/bash -c cd ~/fortress/scripts && /usr/bin/env python3 x_digest_html.py --deployFortress
Google updater (third party)every 60 minNot ours. Google's own updater wake task.~/Library/Application Support/Google/GoogleUpdater/Current/GoogleUpdater.app/Contents/MacOS/Goo…Third party
Google Keystone (third party)on loadNot ours. Google software update agent.com.google.keystone.agentThird party
Google Keystone (third party)on loadNot ours. Google software update agent.com.google.keystone.xpcserviceThird party

Power schedule (pmset)

EventWhenWhy it matters
wakepoweron3:25AM every dayWakes the Mac so the overnight cron jobs actually fire on a sleeping machine.
Fortress scheduled-jobs reference · regenerated weekly (Sat 09:00 SGT) by schedule_docs.py straight from crontab -l, ~/Library/LaunchAgents and pmset -g sched.
Add or change a job and it appears here on the next run. ET times are DST-correct as of generation.