From a0e302510dde9241d2d7b1636eea01b3dcd90131 Mon Sep 17 00:00:00 2001 From: Logan Willem Date: Wed, 1 Jul 2026 20:22:45 +0200 Subject: [PATCH] :memo: Drop TODO.md in favor of GitHub Issues The backlog now lives in GitHub Issues (one issue per former TODO item). Remove the tracked TODO.md and repoint CLAUDE.md's tracking section to README.md. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01WR8LQfqozNYuYh6CEMZECp --- CLAUDE.md | 13 ++++++------- TODO.md | 19 ------------------- 2 files changed, 6 insertions(+), 26 deletions(-) delete mode 100644 TODO.md diff --git a/CLAUDE.md b/CLAUDE.md index 2dcaf7d..63a3aa4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,17 +7,16 @@ read it for anything descriptive; this file is only conventions and traps. FastAPI service: audio over `/ws` → local transcription (faster-whisper) → claim extraction/verification via the Anthropic API. Plus an admin API under `/admin/*`. -## Tracking files (TODO.md, README.md) +## Tracking files (README.md) -- Read them at the start of a task for **direction and intent** — where the project +- Read `README.md` at the start of a task for **direction and intent** — where the project is headed and the why behind choices. -- Treat their **progress/done state as a hint, not the truth**: a task marked done +- Treat its **progress/done state as a hint, not the truth**: something described as done may not be, or may have drifted. Verify against the code before relying on it. When they disagree, **the code wins** — flag the gap, don't edit code to match the docs. -- Update these files **only when I ask** (or at the end of a task I've validated). - No speculative or routine updates. Exception: when I point to a specific TODO item - and ask you to handle it, update that line automatically (check it off / amend it) - as part of completing the task — no need to ask first. +- Update `README.md` **only when I ask** (or at the end of a task I've validated). + No speculative or routine updates. +- The backlog lives in **GitHub Issues**, not in a tracked file — there is no `TODO.md`. ## Commands diff --git a/TODO.md b/TODO.md deleted file mode 100644 index e295266..0000000 --- a/TODO.md +++ /dev/null @@ -1,19 +0,0 @@ -# TODO — Backend - -Liste des features, métier comme tech, à implémenter. La source de vérité reste le code, pas ce fichier. - -## Features métier - -- [ ] **Dédoublonnage des claims** : un même fait répété sur plusieurs chunks de 5 s crée aujourd'hui des claims distincts. Détecter les quasi-doublons (similarité du `text`) et fusionner / ne pas re-vérifier — économise des appels Anthropic. -- [ ] **Cache de vérification** : mémoriser le résultat d'un claim déjà vérifié (clé = texte normalisé) pour ne pas repayer un appel sur une affirmation identique. -- [ ] **Multilingue (prompt Claude)** : la transcription tourne toujours en auto-détection ; la langue choisie par session sert de *filtre* (les chunks d'une autre langue sont ignorés, voir `core/languages.py` + `ConfigMessage` + le filtre dans `session.py`). Reste à adapter `SYSTEM_PROMPT` et l'enum de catégories de `claim_extractor.py` à la langue de la session — actuellement figés FR, donc les claims sortent en français même pour un audio non francophone. - -## Tests (priorité haute) - -- [ ] `session.py` : `_make_claim`, `_spawn_claims` (skip si < `MIN_WORDS`), le cycle pending → claim/remove_claim. Mocker `extract_and_verify` et le `WebSocket`. (Partiel : `_ensure_persisted` couvert par `test_session_persistence`.) -- [ ] Auth : `/admin/login` (bon mot de passe → JWT, mauvais → 401), expiration du token, `require_admin` qui rejette un token absent/invalide/expiré. -- [ ] Routes admin : un test d'intégration par route via `TestClient`, avec `require_admin` overridé (`app.dependency_overrides`). (Fait pour `/sessions/*` dans `test_sessions_route`.) - -## Observabilité - -- [ ] Exposer des métriques agrégées (claims/min, ratio web_search, latence moyenne transcription + vérification) en plus du statut de session brut.