Create canonical consolidation plan and Telegram-Nostr bridge spec under docs/nostr-migration/. - CONSOLIDATION.md: establishes #819 as canonical parent epic, maps scope boundaries, documents current implementation state (Python stack + browser stack + infrastructure), lists action items - TELEGRAM-NOSTR-BRIDGE-SPEC.md: highest-priority child issue spec with requirements, architecture, implementation phases, and acceptance criteria Refs #862, #819, #138
3.4 KiB
3.4 KiB
Nostr Migration Consolidation Plan
Issue #862 | Canonical Epic: the-nexus #819
Consolidated From: the-nexus #819 + timmy-config #138
Problem
Two epics tracked the same Telegram -> Nostr migration with overlapping scope:
| Epic | Repo | Focus | Status |
|---|---|---|---|
| #819 | the-nexus | Client fork (Nostur), UI/UX, agent presence | CANONICAL |
| #138 | timmy-config | Relay/infrastructure, deployment, ops | Tracked child |
Neither was the parent. Work risked duplication and drift.
Resolution
#819 is the canonical parent epic. All Nostr migration work rolls up here.
Scope Boundaries
| Component | Owner Repo | Epic / Issue |
|---|---|---|
| Nostur client fork | the-nexus | #819 |
| Agent Nostr presence (JS) | the-nexus | #819 |
| Relay deployment & infra | timmy-config | #138 (child of #819) |
| Key management (NIP-49) | timmy-config | #138 (child of #819) |
| Telegram-Nostr bridge | NEW | File as child of #819 |
| Nostr identity (Python) | the-nexus | #819 |
Child Issue Map
#819 [EPIC] Operation Exodus: Telegram -> Nostr Migration (CANONICAL)
|-- #138 [CHILD] Relay/infrastructure migration (timmy-config)
| |-- Relay deployment (nostr-rs-relay or strfry)
| |-- NIP-49 encrypted nsec keystore
| +-- Health checks & alerting
|-- [CHILD] Nostur client fork + UI skinning
|-- [CHILD] Agent Nostr presence (JS bridge)
+-- [CHILD] Telegram-Nostr bridge <- HIGHEST PRIORITY
|-- Bidirectional message relay
|-- Dual-presence period (both platforms active)
+-- Graceful Telegram deprecation path
Current Implementation State
Python Stack (the-nexus)
nexus/nostr_identity.py- Pure-Python BIP340 Schnorr signatures- WARNING Timing side-channel vulnerabilities (see FINDINGS-issue-801.md)
- Suitable for prototyping; production needs
coincurveor constant-time rewrite
nexus/nostr_publisher.py- Async WebSocket publisher to public relays
Browser Stack (the-nexus)
app.js:NostrAgent- Browser-side agent presence- WARNING Uses mock signatures (
mock_id,mock_sig) - Needs real crypto integration or delegation to Python backend
- WARNING Uses mock signatures (
Infrastructure (timmy-config)
nostr-bridge.service- Running but source file deleted, only.pycremains/root/nostr-relay/keystore.json- NIP-49 encrypted nsec storage
Highest Priority: Telegram-Nostr Bridge
The bridge is the critical path. Without it, migration strands users on Telegram.
Requirements:
- Bidirectional message relay (Telegram <-> Nostr)
- Dual-presence period: both platforms active during transition
- Graceful deprecation: Telegram bot stays online until 90% of active users have Nostr handles
- Channel/topic mapping: preserve conversation structure
File this as a new child issue under #819.
Action Items
- Close #138 in timmy-config with comment: "Consolidated into the-nexus #819. Relay/infrastructure work tracked as child of canonical epic."
- Update #819 title/body to reference this consolidation plan
- File child issue: Telegram-Nostr bridge (bidirectional, dual-presence)
- File child issue: Fix timing side-channel in
nostr_identity.py(or replace withcoincurve) - File child issue: Replace mock signatures in
app.js:NostrAgentwith real crypto - Assign owners to each child issue
Sovereignty and service always.