forked from c-fu/arah2
- chain.ts: acquireFix tries telegram → webview → chat-pin in locked order; staleness routes to the nudge inside link 1, never to success (Pitfall 2); pluggable cadence — NO setInterval/watchPosition anywhere (Phase 6 picks, Open Question 2) - isFixStale (45s = UI-SPEC signal-lost trigger) + fixAgeSeconds for FIX Ns AGO telemetry - store.ts: module-scope token holder, zero persistence calls (the D-07 invariant); SESSION_TTL_SECONDS = 900 mirrors bot/src/kv/sessions.ts by name (D-03) - client.ts: posts VERBATIM initData as the body, validates token shape, maps 401 categories exactly (malformed/tampered/stale/network)