FME — Phase 1A Test Plan (LOCKED)
Telegram ↔ KV ↔ Portal, two-way, NOTHING else. ALL tests must pass before 1B. Locked 2026-06-05 (ZW-ENGINE-V9).
Scope of 1A (build ONLY this)
- Chanie's bot → Sam: writes
chanie:thread(KV) → mirrors to her portal + pings Sam. - Sam ("Chanie …") → Chanie: lands in her portal AND her Telegram bot.
- 🔴 NO voice, NO photos, NO groceries, NO AI, NO classification, NO retrieval, NO new UI (Telegram + existing portal only).
Test matrix — ALL must pass
| # | Test | Pass criteria |
|---|---|---|
| 1 | Text Chanie → Sam | appears on Sam's Telegram + in chanie:thread + on her portal, <3s |
| 2 | Text Sam → Chanie | appears in Chanie's Telegram bot AND her portal, <3s |
| 3 | Long message (>1 SMS-segment length) | intact, not truncated |
| 4 | Emoji message | renders correctly both ends |
| 5 | Hebrew message | RTL intact, not garbled |
| 6 | Link | preserved, tappable |
| 7 | Duplicate send (same update_id) | deduped — appears ONCE |
| 8 | Network interruption mid-send | message captured raw, replayed, not lost |
| 9 | Telegram failure | save to thread + retry (failure grid) |
| 10 | KV failure | queue locally + replay; zero loss |
| 11 | Worker restart mid-request | idempotent; no dup, no loss |
| 12 | 50 consecutive messages | all mirror, all <3s, zero loss |
Gates after the matrix
- 50-message test (above #12) → pass.
- 7-day live family test → Chanie + Sam actually use it for a week, zero loss, no complaints about speed.
Family_Event_Logshows every event with timestamps.
Phase 2 — Family Search Test (for later; Phase 2 fails if any fail)
"Where is Libby's latest height?" · "Show the camp registration PDF." · "What doctor did Eli see?" · "Find the Airbnb link Chanie sent." · "What did Chanie send about tuition?" · "What happened last month?"