docs: update status with FAPP E2E flow completion

This commit is contained in:
2026-04-01 16:36:41 +02:00
parent 6ae3251ebd
commit a60767a7eb

View File

@@ -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 ## 2026-03-31 — FAPP: Free Appointment Propagation Protocol
### Completed ### Completed
@@ -67,7 +98,6 @@
- **Domain model**: Fachrichtung, Modalitaet, Kostentraeger, SlotType (German enum names for domain concepts) - **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 - **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 - **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 - **Privacy model**: therapist identity public (Approbation-bound), patient queries anonymous
### Design Decisions ### Design Decisions
@@ -77,32 +107,6 @@
- Location hint is PLZ only (e.g. "80331") — never exact address - 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 - 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 ## 2026-03-30 — Mesh Protocol Infrastructure Sprint