docs: update status with FAPP E2E flow completion
This commit is contained in:
@@ -58,6 +58,37 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-04-01 — FAPP: Complete E2E Flow
|
||||
|
||||
### Completed (Latest)
|
||||
- **E2E Encryption** — `fapp.rs`: SlotReserve/SlotConfirm with X25519 + ChaCha20-Poly1305
|
||||
- `PatientEphemeralKey`: generates X25519 keypair for reservation
|
||||
- `TherapistCrypto`: decrypts reserves, creates confirms with forward secrecy
|
||||
- `PatientCrypto`: creates reserves, decrypts confirmations
|
||||
- Each confirmation uses fresh ephemeral key for forward secrecy
|
||||
|
||||
- **FappRouter Reserve/Confirm** — `fapp_router.rs`:
|
||||
- `DeliverReserve` / `DeliverConfirm` action variants
|
||||
- `process_slot_reserve()`: routes to therapist or floods
|
||||
- `process_slot_confirm()`: delivers to patient
|
||||
- `send_reserve()` / `send_confirm()`: capability-checked sends
|
||||
- `send_response()`: relay-to-patient response routing
|
||||
|
||||
- **Integration Tests** — `tests/fapp_flow.rs`:
|
||||
- `full_fapp_flow_announce_query_reserve_confirm`: Complete flow from announce to confirmed appointment
|
||||
- `fapp_rejection_flow`: Tests therapist declining a reservation
|
||||
- `fapp_query_filters`: Tests Fachrichtung, PLZ, and other filters
|
||||
|
||||
### Test Coverage
|
||||
- 217 total tests (198 lib + 3 fapp_flow + 16 multi_node)
|
||||
- 31 FAPP-specific tests (24 fapp + 7 fapp_router)
|
||||
|
||||
### What's Next
|
||||
1. Wire FappRouter into P2pNode startup
|
||||
2. LoRa testing for FAPP messages
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-31 — FAPP: Free Appointment Propagation Protocol
|
||||
|
||||
### Completed
|
||||
@@ -67,7 +98,6 @@
|
||||
- **Domain model**: Fachrichtung, Modalitaet, Kostentraeger, SlotType (German enum names for domain concepts)
|
||||
- **FappStore**: in-memory cache with dedup (therapist_address + sequence), TTL expiry, signature verification, capacity limits
|
||||
- **Query matching**: filter by Fachrichtung, Modalitaet, Kostentraeger, PLZ prefix, time range, SlotType, max_results
|
||||
- **Tests**: 16 inline tests covering creation, signing, verification, tampering, forwarding, expiry, CBOR roundtrip, store dedup, sequence supersede, query filters (PLZ, SlotType, Kostentraeger, max_results)
|
||||
- **Privacy model**: therapist identity public (Approbation-bound), patient queries anonymous
|
||||
|
||||
### Design Decisions
|
||||
@@ -77,32 +107,6 @@
|
||||
- Location hint is PLZ only (e.g. "80331") — never exact address
|
||||
- Anti-spam: Approbation hash binding, signature verification, sequence-based dedup, rate limiting, TTL enforcement
|
||||
|
||||
### FAPP integration — status
|
||||
|
||||
**2026-04-01: FappRouter implemented!**
|
||||
|
||||
New `fapp_router.rs` module:
|
||||
- `FappAction` enum: Ignore, Dropped, Forward, QueryResponse
|
||||
- Wire format: 1-byte tag (0x01-0x05) + CBOR body
|
||||
- `FappRouter` struct with shared `RoutingTable` + `TransportManager`
|
||||
- `handle_incoming()` decodes and dispatches FAPP frames
|
||||
- `process_slot_announce()` with relay/flood logic (dedup, hop check, store, forward)
|
||||
- `process_slot_query()` answers from local `FappStore`
|
||||
- `broadcast_announce()` / `send_query()` for outbound floods
|
||||
- `drain_pending_sends()` for async send integration
|
||||
- 3 unit tests passing
|
||||
|
||||
**Remaining steps**
|
||||
1. **Integration test:** Multi-node demo (therapist → relay → patient flow)
|
||||
2. **Wire to P2pNode:** Add `FappRouter` to `start_with_mesh()` or similar
|
||||
3. **SlotReserve/SlotConfirm:** E2E encrypted reservation flow
|
||||
4. **LoRa test:** Verify FAPP over constrained links
|
||||
|
||||
**Definition of done**
|
||||
- announce → query → response works over multi-hop (automated or manual)
|
||||
- SlotReserve/Confirm E2E encryption works
|
||||
- LoRa test or documented blocker
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-30 — Mesh Protocol Infrastructure Sprint
|
||||
|
||||
Reference in New Issue
Block a user