Spaces:
Running
Running
File size: 8,810 Bytes
1b4c2d1 2b782d0 1b4c2d1 ee838b2 2b782d0 ee838b2 2b782d0 ee838b2 052fb51 2b782d0 052fb51 1b4c2d1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | # Backlog post-livraison
> **Garde-fou de discipline du rewrite ciblé** (cf. `docs/roadmap/rewrite-2026.md`).
>
> Tout ce qui apparaît ici est **explicitement hors scope** des sprints
> S1–S26. Ces items pourront revenir dans le scope après la livraison à
> la BnF, pas avant.
>
> La règle d'or : "à chaque doute pendant le sprint en cours, l'item va
> ici et le sprint continue."
---
## 1. Promesses retirées du README
Items historiquement présentés comme acquis et qui ne sont en réalité
pas tenus au niveau qui justifierait leur affirmation publique.
### 1.1 Scientific publication track
- `CITATION.cff` au format Citation File Format 1.2.
- DOI Zenodo (snapshot release).
- Soumission JOSS (Journal of Open Source Software) avec article
technique.
- BibTeX généré automatiquement par release.
**Pourquoi retiré du README pour l'instant** : la posture éditoriale
sera difficile à tenir tant que le rewrite ciblé n'est pas livré et
qu'on ne peut pas pointer vers une version 2.0 stable.
**Quand revoir** : après S26.
### 1.2 Conformité RGPD opérationnelle
- Audit DPO interne ou externe.
- Registre des traitements documenté.
- Politique de rétention enforced (pas seulement documentée).
- Mécanisme d'exercice des droits (export, suppression).
**État actuel** : `docs/operations/data-retention-rgpd.md` existe mais
n'a jamais été validé par un DPO ni testé sur un workflow réel BnF.
### 1.3 Gouvernance et COI policies
- Constitution explicite du comité de pilotage.
- Politique de gestion des conflits d'intérêts exercée sur ≥ 1 PR
externe.
- Processus de release reviews documenté et appliqué.
**État actuel** : `GOVERNANCE.md` et `CONTRIBUTING.md` sont en place
comme documents de référentiel mais aucun de ces processus n'a été
exercé en pratique.
### 1.4 Accessibilité WCAG 2.1 AA
- Audit RGAA externe.
- Tests automatisés axe-core sur la SPA.
- Navigation complète clavier validée par utilisateur empêché.
**État actuel** : `ACCESSIBILITY.md` documente l'intention. Les
améliorations Sprint 25 (extraction du JS inline vers
`web-app.js`) sont un pas dans la bonne direction mais ne suffisent
pas à revendiquer la conformité.
### 1.5 Sécurité — pentest externe
- Pentest opérationnel sur un déploiement institutionnel (pas un
Space HF public).
- Validation de la CSP sans `'unsafe-inline'`.
- Validation de la sandbox `validated_path` / `compute_workspace_roots`
par un attaquant compétent.
**État actuel** : Sprint A14-S1 a comblé les 6 P0 connus mais
l'absence d'audit externe nous interdit d'affirmer l'absence d'autres
vecteurs.
---
## 2. Features attendues mais reportées
### 2.1 Features fonctionnelles
- Reprise de benchmark hashée par contenu+config (pas seulement par
`corpus_name + engine_name`).
- Backpressure réelle dans le runner (limite de futures en vol,
timeout depuis le début d'exécution réelle).
- Annulation propre qui tue les workers OCR/LLM en cours
(actuellement `cancel_futures` ne ferme pas un Tesseract en train
de tourner).
- ZIP upload qui préserve l'arborescence (sans flatten qui écrase).
- Détection des paires `(image, GT)` qui supporte tous les patterns
réels (`.gt.alto.xml`, `.alto.xml`, `.page.xml`, etc.).
→ Couverts par les Sprints S8, S9, S20 du rewrite ciblé.
### 2.2 Vues d'évaluation explicites
- `TextView` — la vue qui projette toute sortie textuelle vers du
texte brut comparable.
- `AltoView` — fidélité documentaire ALTO/PAGE.
- `SearchView` — recherchabilité fuzzy plein-texte.
- `LayoutView` — coordonnées et ordre de lecture.
- `HallucinationView` — contrôle d'invention par le modèle.
- `CostView` — coût/temps/CO₂.
→ Sprints S13–S18 du rewrite. Au minimum les 3 premières doivent
exister à la livraison BnF.
### 2.3 Couche service applicative
- `app/services/benchmark_service.py` — orchestration séparée des
routers FastAPI.
- `app/services/path_security.py` — `WorkspaceManager` qui crée un
dossier isolé par session/run.
- Schemas DTO (Pydantic) séparés des modèles de domaine.
→ Sprint S19 du rewrite.
### 2.4 Suppression de la dette d'imports magiques
- Plus de `import picarones.evaluation.metrics as _trigger_metric_registration`
dans `picarones/__init__.py`.
- Registres construits explicitement par un service au démarrage.
- Entry points Python pour les modules tiers (`picarones.metrics`,
`picarones.adapters`).
→ Sprint S5 + S20 du rewrite.
### 2.5b Migration des adapters restants
Le Sprint S11 a migré 5 LLM (base + openai/mistral/anthropic/ollama)
+ 2 corpus importers (htr_united, huggingface) + 1 helper privé
(_fallback_log). L'ancien emplacement est un re-export.
**Adapters OCR** (5 fichiers : tesseract, pero_ocr, mistral_ocr,
google_vision, azure_doc_intel) restent dans `picarones/adapters/ocr/`.
Tous importent `engines/base.py` qui hérite de `core.modules.BaseModule`.
Migration différée jusqu'au S20 quand `core.modules` aura disparu
(remplacé par le protocole `StepExecutor` du S6).
**Importers patrimoniaux** (3 fichiers : iiif, gallica, escriptorium)
restent dans `picarones/evaluation/metrics/importers/`. Tous importent
`core.corpus.{Corpus, Document}`. Migration différée jusqu'au
déplacement de `core.corpus` vers `domain/` (sprint dédié).
### 2.5c Migration des fichiers `measurements/*.py` restants vers `evaluation/metrics/`
Le Sprint S10 a migré 23 fichiers de calcul autonomes. 17 fichiers
restent dans `picarones/evaluation/metrics/` à migrer.
**Catégorie B — utilisent `@register_metric`** (singleton global
`core.metric_registry` à supprimer au S20) :
`mufi`, `abbreviations`, `unicode_blocks`, `roman_numerals`,
`early_modern_typography`, `modern_archives`, `reading_order`,
`ner`, `readability`, `searchability`, `numerical_sequences`.
→ Migrés au S20 quand le `MetricRegistry` instancié explicitement
(S5) deviendra le seul registre.
**Catégorie C — dépendances vers `core.corpus` / `engines.base` /
`measurements.metrics`** :
`robustness`.
→ Migré après S11 (déplacement des adapters) et S12 (équivalence
numérique).
**Catégorie D — dépendances inter-fichiers à orchestrer** :
`cost_projection` (→ pricing, déjà migré),
`equivalence_profile` (→ formats.text.normalization, déjà migré),
`specialization` (→ inter_engine, déjà migré),
`taxonomy_intra_doc` (→ taxonomy),
`taxonomy` (→ char_scores).
→ Trois de ces fichiers (cost_projection, equivalence_profile,
specialization) peuvent être migrés dès le S11+ puisque leurs deps
sont déjà migrées.
**Fichiers d'orchestration legacy** (à NE PAS migrer en l'état,
remplacés par `pipeline/executor` + `pipeline/runner` au S22) :
`runner/` (sous-package), `pipeline_benchmark`,
`pipeline_comparison`, `pipeline_spec_loader`,
`builtin_hooks`, `builtin_metrics`, `philological_hooks`,
`readability_hooks`, `searchability_hooks`,
`numerical_sequences_hooks`, `ner_backends`,
`metrics`, `history`, `structure`, `difficulty`,
`char_scores`, `alto_metrics`, `narrative/`, `statistics/`.
### 2.5 Suppression des références "Sprint X" dans le code
Le repo contient ~679 références à "Sprint N" dans les fichiers
Python (commentaires, docstrings, justifications de seuils
éditoriaux). C'est de la stratigraphie archéologique qui rend le
code illisible pour un nouveau contributeur.
→ Nettoyage progressif au fil des Sprints S10–S22 du rewrite (à
chaque déplacement de fichier, on supprime les commentaires de
sprint qui n'apportent plus rien à un lecteur de la version
courante). Pas un sprint dédié.
---
## 3. Idées qui ressortent mais qu'on ne traite pas
À valider après la livraison.
- Cache d'artefacts intermédiaires côté pipeline executor.
- Parallélisation inter-étapes au sein d'une même pipeline.
- Vue HTML drag-and-drop pour composer un pipeline (le DAG render
Sprint 95 est de l'inspection, pas de la construction).
- Score composite personnel persisté côté serveur (pour l'instant
uniquement URL state côté client).
- Plugin system PyPI pour modules contribués (`picarones-module-X`).
- Extension corpus levels au-delà de TEXT/ALTO/PAGE/ENTITIES/READING_ORDER
(par exemple : tableaux, mathématiques, partitions).
---
## 4. Convention d'usage de ce document
- **Ajouter** un item dès qu'on identifie une promesse / feature qui
doit attendre.
- **Ne pas retirer** un item juste parce qu'on a envie de le faire ;
attendre que le rewrite l'absorbe officiellement (auquel cas il
apparaîtra dans `docs/roadmap/rewrite-2026.md`).
- **Référencer** ce fichier dans les PRs qui retirent du scope du
README ou de la documentation utilisateur.
Dernière revue : Sprint A14-S2 (rewrite ciblé, étape 0).
|