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
|
## 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
|
||||||
|
|||||||
Reference in New Issue
Block a user