Picarones / docs /roadmap /backlog.md
Claude
docs(sprint-H.9): archive migration plans + cleanup stale doc paths
2b782d0 unverified

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.pyWorkspaceManager 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).