Skip to content

Morning report snooze re-surfacer

URL: https://mkdocs.justinsforge.com/memory/general/reference_morning_report_snooze_check/

Phase 3 of the Telegram bot upgrade. Companion script to forge_morning_report_callbacks.py (which writes the snooze marker) and forge_morning_report.py (which posts the original report).

What it does

  • Reads forge/data/morning_report_snooze.json.
  • If now_utc >= until, sends a short reminder via sendMessage with reply_to_message_id pointing at the original morning-report message so the reminder threads visually under the pinned report.
  • Rotates the marker to forge/data/morning_report_snooze.last.json (audit trail) so the same snooze never fires twice.
  • If the marker is missing or now < until, exits 0 with a log line.

Files

  • Script: forge/scripts/forge_morning_report_snooze_check.py
  • Service: forge/infra/systemd/forge-morning-report-snooze-check.service
  • Timer: forge/infra/systemd/forge-morning-report-snooze-check.timer (15-min cadence)
  • Marker (active): forge/data/morning_report_snooze.json
  • Marker (audit): forge/data/morning_report_snooze.last.json

Install

Not auto-installed. After review:

sudo cp /home/justinwieb/forge/infra/systemd/forge-morning-report-snooze-check.{service,timer} /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now forge-morning-report-snooze-check.timer

Why a separate reminder, not a fresh report

Sending a brand-new morning report when the snooze pops would compete with the next day's report and double the pin slot churn. A short threaded reply keeps state simple: the original report stays pinned, Justin scrolls up to see it, taps Mark done or Full plan when ready.

[Claude Code]