Spaces:
Running
Running
| # 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). | |