Telegram Ingress Proof

Handoff telegram-ingress-proof · TopBook-Pro → nano · finished 2026-09-11, 11:58 PM PDT on NanoBookPro
Verdict: PASS for the bridge stage. The running com.aios.tg-bridge-v2 service received one synthetic inbound message, ran a headless Claude turn, sent one reply, and logged it. Phone-to-bot ingress is still unfed: no Telegram poller is loaded anywhere, so real Telegram messages from Sean do not reach this bridge.

What was tested

ItemValue
Servicecom.aios.tg-bridge-v2, pid 42821, running since 08-30, stderr log 0 bytes
What it doesWatches workspace/comms/inbox/*__tg-*.md, runs each through headless Claude, sends one consolidated Telegram reply, writes the ledger
What feeds ittg-poll.mjs (Telegram getUpdates). Not running. Inbox had 0 files; status showed claimed:0 after 364,101 cycles
Test methodThe bridge's own E2E tool inject-fake-inbound.mjs: drops an inbox file in the exact shape tg-poll writes, then waits for turn_complete in the ledger
TrafficNo Telegram consumer loaded. Nothing sent to any external contact. The bridge's normal completed-turn reply ("BRIDGE-OK") went to Sean's own chat
ResultInjector exit 0. File dropped 11:57:29 PM PDT, turn complete 11:57:56 PM PDT (26.4 s, sonnet, direct reply)

What changed

Evidence

$ node inject-fake-inbound.mjs --timeout 420 --prompt "Bridge ingress self-test 2026-09-12: reply with the single word BRIDGE-OK and nothing else. Do not use any tools."
[inject] dropped .../workspace/comms/inbox/2026-09-12T065729329Z__tg-e2e1789196249329-bridge-selftest.md
[inject] watching .../workspace/comms/telegram/ledger.jsonl for tg-e2e1789196249329 turn_complete (timeout 420s)
PASS: real reply flowed to the ledger -> {"ts":"2026-09-12T06:57:56.612Z","source":"bridge-v2","trackingId":"tg-e2e1789196249329","event":"turn_complete","model":"sonnet","modelAlias":"sonnet","tokensEst":55481,"durationMs":26378,"replyMode":"direct","resultPath":"","sessionId":"8fc76f4a-22a6-4f19-96d3-5b9fe5ce2043","chatHash":"5fbf8b76accf"}
injector exit=0

$ tail -3 workspace/logs/tg-bridge-v2.log
[260824 21:32] bridged tg-804093774 -> complete
[260824 21:34] bridged tg-804093775 -> complete
[260911 23:57] bridged tg-e2e1789196249329 -> complete

$ grep tg-e2e1789196249329 workspace/comms/telegram/ledger.jsonl
{"ts":"2026-09-12T06:57:29.420Z","source":"bridge-v2","trackingId":"tg-e2e1789196249329","event":"session_expired","idleHours":72,"chatHash":"5fbf8b76accf"}
{"ts":"2026-09-12T06:57:56.612Z","source":"bridge-v2","trackingId":"tg-e2e1789196249329","event":"turn_complete","model":"sonnet",...,"replyMode":"direct","sessionId":"8fc76f4a-22a6-4f19-96d3-5b9fe5ce2043"}

$ ls -la workspace/comms/inbox/processed/ | grep e2e1789196249329
-rw-r--r--@ 1 SeanVargas staff 272 Sep 11 23:57 2026-09-12T065729329Z__tg-e2e1789196249329-bridge-selftest.md.42821.1789196249406.bridging.complete

$ cat /tmp/aios-tg-bridge-v2.status
{"ts":"2026-09-12T06:58:08.454Z","status":"running","pid":42821,"cycle":364115,"claimed":0,"inFlight":0,"queueDepth":0}
Two things this proof does not cover.
1. Real Telegram ingress. Nano's tg-poll is unloaded and Mini's com.aios.tg-runtime was verified absent on 09-02. Until one of them is loaded, a message typed into Telegram reaches nobody.
2. Authority drift. workspace/ops/tg-runtime/PRODUCTION-AUTHORITY.md (07-16) says tg-bridge-v2 must stay unloaded on Nano, yet it has run here since 08-30 and works. That file is stale relative to live state.

Next step (needs Sean)