# Feature Plan: Transport Capability Matrix ## Goal Define transport feature capabilities centrally so router/policy/UI can make deterministic decisions. ## Why This Fits GIA - GIA currently spans Signal/WhatsApp/Instagram/XMPP with uneven feature support. - Prevents silent failures (for example reaction exists internally but cannot be sent outward). ## Scope - Add capability registry per transport. - Features: reactions, edits, deletes, threaded replies, typing, media classes, read receipts, participant events. - Runtime helper APIs used by router and compose UI. ## Implementation 1. Add `core/transports/capabilities.py` with static matrix + version field. 2. Expose query helpers: `supports(service, feature)` and `unsupported_reason(...)`. 3. Integrate checks into `core/clients/transport.py` send/reaction/edit paths. 4. Compose UI: disable unsupported actions with clear hints. 5. Add tests per service for expected behavior. ## Acceptance Criteria - Unsupported action never calls transport adapter. - User receives explicit, actionable error. - Service capabilities are test-covered and easy to update. ## Out of Scope - Dynamic remote capability negotiation.