Christian Nennemann
9af66ab073
feat: add anti-abuse mechanisms
Prevent slot blocking and reservation spam:
- RateLimiter: per-sender cooldowns, hourly limits, pending caps
- ProofOfWork: Hashcash-style PoW for reservation requests
- SenderReputation: track honor rate, no-shows, auto-block
- TherapistPolicy: configurable requirements per provider
- 7 new tests (39 total)
Docs: docs/anti-abuse.md with implementation roadmap
2026-04-01 08:27:02 +02:00
..
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00
2026-04-01 08:27:02 +02:00