Pure Phoenix Worker: Bot + iOS Shortcut Verification¶
URL: https://mkdocs.justinsforge.com/memory/handoffs/pure-phoenix-bot-shortcut-verification-2026-04-28/
You are a fresh Claude Code worker (Opus 4.7, dangerously-skip-permissions). Your job is to verify the iOS Shortcut and Justin's three remaining Telegram bots still work after the Pure Phoenix Phase 3 + 4 refactor.
Wait for the parallel Phase 4 worker to finish first¶
Another worker session is currently doing Phase 4.3 flat-file refactor (35-45 script renames + variable convention pass). Tmux session: pure-phoenix-phase-4_Opus47. It's actively renaming files that your tests depend on (notify.sh, dispatcher.sh, inbox_brain.py, ava_brain.py, hook scripts, etc.).
Before testing, confirm the Phase 4 worker is done:
- Run
tmux capture-pane -t pure-phoenix-phase-4_Opus47 -p | tail -10and check it shows an idle❯prompt without recent tool activity. - Verify all forge-* services are active:
systemctl list-units --type=service --state=active | grep forge-. - Verify cron entries are intact:
crontab -l | grep -v '^#' | grep -v '^$' | wc -lshould be > 0. - If the Phase 4 worker is still running, sleep ~5 minutes and recheck. Do NOT proceed to live testing while files are mid-rename.
Critical Read Order¶
forge/FORGE-DOCTRINE.md(Section 9 communication rules apply to your work).forge/CLAUDE.md(auto-loaded).~/.claude/projects/-home-justinwieb-forge/memory/MEMORY.mdTelegram Surface section.~/.claude/projects/-home-justinwieb-forge/memory/reference_telegram_inbox.md(inbox brain architecture).~/.claude/projects/-home-justinwieb-forge/memory/reference_telegram_ava.md(lifeos coordinator + manager output bot).forge/memory/handoffs/pure-phoenix-phase-4-continuation-2026-04-28.md(full refactor state).forge/memory/handoffs/pure-phoenix-phase-3-6-dns-migration-2026-04-28.md(DNS state).
What to verify¶
A. Telegram bots (3 active)¶
| Bot | Service | Token file | Job |
|---|---|---|---|
@jw_inbox_bot |
forge-telegram-inbox.service |
~/.forge-secrets/telegram-inbox.env |
Voice/text capture into Notion |
@Ava_JForgeBot |
forge-telegram-ava.service |
~/.forge-secrets/telegram-ava.env |
LifeOS coordinator |
@Manager_JForgeBot |
(push-only, no service) | ~/.forge-secrets/telegram-manager.env |
Outbound notifications, receives from notify.sh |
For each:
1. Confirm systemd service is active (systemctl is-active forge-telegram-inbox, etc.).
2. Confirm token file exists and is readable.
3. Tail the service log: journalctl -u forge-telegram-inbox -n 30 --no-pager. Look for fresh poll activity (every few seconds), no startup errors, no 409 Conflict (means another long-poller is running, doctrine forbids this).
4. Have Justin send a test message to each bot from his phone, watch the logs to confirm receipt and brain-handling.
5. For the manager bot: trigger a test notification with /home/justinwieb/forge/scripts/forge_notify.sh info "Phase 4 verification" "test message from worker" (or whatever the script renamed to after Phase 4.3) and confirm it lands in Justin's @Manager_JForgeBot chat.
B. iOS Shortcut + inbox webhook¶
Endpoint: https://inbox.justinsforge.com (was inbox.justinkrystal.com before Pure Phoenix Phase 3.6 DNS migration). Justin updated the iOS Shortcut to point at the new URL.
- Confirm
forge-inbox-webhook.serviceis active:systemctl is-active forge-inbox-webhook. - Confirm the webhook server is listening on port 7400:
ss -tlnp | grep 7400or curl from inside Console:curl -s http://localhost:7400/healthz. - Verify Cloudflare ingress points
inbox.justinsforge.comtohttp://192.168.86.50:7400. - Check for the
FORGE_WEBHOOK_SECRETenv var that the webhook validates:grep FORGE_WEBHOOK_SECRET /etc/systemd/system/forge-inbox-webhook.serviceor wherever it's defined. - Test the X-Forge-Auth flow: from Console, send a synthetic POST mimicking the iOS Shortcut:
curl -X POST https://inbox.justinsforge.com -H "X-Forge-Auth: $(grep FORGE_WEBHOOK_SECRET ~/.forge-secrets/*.env | head -1 | cut -d= -f2)" -H "Content-Type: application/json" -d '{"text": "test capture from verification worker"}'. Should return 200 (or whatever success code the webhook uses). - Verify the captured item lands in the inbox brain (Notion or wherever). If the brain spawned a follow-up job, watch the dispatcher log.
- Have Justin send a real voice memo via the iOS Shortcut. Watch the webhook log + brain log. Confirm Whisper transcription, Sonnet brain processing, and Notion/Calendar/Gmail tool routing all still work.
C. Notify pipeline regression check¶
After Phase 3.1 stripped Ntfy from notify.sh, the dispatcher path is now: file (always) + manager bot + n8n. Confirm:
infopriority hits manager bot only.warningpriority hits manager bot + n8n.criticalpriority hits manager bot + n8n.
Synthetic test:
/home/justinwieb/forge/scripts/forge_notify.sh info "info ping" "phase 4 verify"
/home/justinwieb/forge/scripts/forge_notify.sh warning "warning ping" "phase 4 verify"
/home/justinwieb/forge/scripts/forge_notify.sh critical "critical ping" "phase 4 verify"
Confirm Justin sees three messages in @Manager_JForgeBot. (If notify.sh was renamed to forge_notify.sh by Phase 4.3, use the new path.)
Stop conditions¶
- Phase 4 worker is still active. Wait 5 minutes and recheck.
- A bot service won't start. Read the logs, surface the error to Justin, do NOT attempt fixes that touch token files.
- iOS Shortcut returns auth error. Likely the webhook server's
FORGE_WEBHOOK_SECRETdoesn't match the iOS Shortcut's header. Surface to Justin so he can re-enter the secret. - Notification pipeline drops a priority level. Read
notify.shand confirm the dispatch case statement still has all three priorities.
Deliverable¶
Write a verification report to forge/memory/handoffs/pure-phoenix-bot-shortcut-verification-result-2026-04-28.md with:
- Pass/fail per bot
- Pass/fail per pipeline
- Any anomalies + recommended fixes
- Justin's manual verification steps (the ones requiring him to send a message from his phone)
When done, append a checkpoint to forge/memory/daily/$(date +%Y-%m-%d).md and exit.
[Claude Code, Pure Phoenix verification worker]