Claude commited on
Commit
1d36e9e
Β·
unverified Β·
1 Parent(s): 3af8896

fix(sprint-H.7): repair build/CI references to deleted paths

Browse files

Sprint H.7 β€” fix critique des rΓ©fΓ©rences CI/build aux chemins
``picarones/{core,measurements,engines,modules,llm,pipelines,
report,web,cli,extras}/`` et ``interfaces/{cli,web}/_legacy/``
supprimΓ©s aux sprints A-H.

Sans ce fix, la release v2.0 ressemblerait Γ  une v2.0 mais :
- les wheels distribuΓ©s ne contiendraient pas les templates Jinja2
ni les CSS/JS (HuggingFace Space dΓ©ployΓ© via wheel cassΓ©).
- le job ``perf_regression.yml`` ne se dΓ©clencherait plus (paths
surveillΓ©s inexistants).
- ``CODEOWNERS`` dΓ©signerait des reviewers sur des dossiers vides.
- le README documenterait un rΓ©pertoire d'adapters disparu.

pyproject.toml
--------------

- ``[tool.setuptools.package-data]`` : remplacement complet de la
liste des globs. Avant H.7 :
```
interfaces/web/_legacy/static/*.css ← path supprimΓ©
interfaces/web/_legacy/static/*.js ← path supprimΓ©
interfaces/web/_legacy/templates/*.j2 ← path supprimΓ©
interfaces/web/_legacy/templates/*.html ← path supprimΓ©
report/templates/*.j2 ← report/ renommΓ© en reports/
report/templates/*.html ← idem
report/templates/*.css ← idem
report/templates/*.js ← idem
report/i18n/*.json ← idem
report/glossary/*.yaml ← idem
```
Tous remplacΓ©s par les chemins canoniques (interfaces/web,
reports/html/templates, reports/i18n, reports/glossary,
reports/_helpers/vendor, reports/narrative/templates).
VΓ©rification : les 14 globs du fichier matchent 39 fichiers
rΓ©els (script de validation inline).

- Commentaire ``defusedxml`` :
``picarones.web.corpus_utils`` β†’ ``picarones.interfaces.web.corpus_utils``.

- Commentaire stratΓ©gie mypy : retire la note historique sur le
passage ``picarones.core`` (paquet supprimΓ©).

.github/workflows/perf_regression.yml
-------------------------------------

- ``on.pull_request.paths`` : remplace les paths surveillΓ©s par
les chemins canoniques.

Avant : ``picarones/measurements/runner.py`` +
``picarones/measurements/normalization.py`` +
``picarones/engines/**``.

Après : ``picarones/app/services/benchmark_runner.py`` +
``picarones/app/services/benchmark_service.py`` +
``picarones/formats/text/normalization.py`` +
``picarones/adapters/ocr/**``.

.github/CODEOWNERS
------------------

- RestructurΓ© par couches au lieu de "Cercles" hΓ©ritΓ©s. Avant :
``/picarones/{core,measurements,engines,llm,pipelines,modules,
report,web,cli,extras}/`` (tous supprimés). Après :
``/picarones/{domain,formats,evaluation,pipeline,adapters,app,
reports,interfaces}/`` (les 8 couches actuelles).

- ``/docs/api-stable.md`` β†’ ``/docs/reference/api-stable.md``
(dΓ©placΓ© en S60).

README.md
---------

- Note sur la rΓ©gΓ©nΓ©ration du tableau Engines : ``adding a new
adapter under picarones/adapters/legacy_engines/`` β†’
``picarones/adapters/ocr/`` (chemin canonique consommΓ© par
``scripts/gen_readme_tables.py``).

Tests
-----

- ``pytest tests/`` : 4126 passed, 9 skipped, 24 deselected.
- Validation des 14 globs ``package-data`` : 39 fichiers matchΓ©s,
0 glob vide.

Reste pour v2.0 (cf. H.8 + H.9)
-------------------------------

- H.8 : nettoyer les ~25 docstrings de production qui mentionnent
encore "shim legacy" (les shims sont supprimΓ©s depuis le Lot D).
- H.9 : archiver ``docs/migration/`` (plans terminΓ©s) et corriger
les ~15 docs qui réfèrent les chemins legacy supprimés.

https://claude.ai/code/session_01NxyVKqg2SowXLZdM4H1ZDE

.github/CODEOWNERS CHANGED
@@ -7,8 +7,8 @@
7
  # Politique :
8
  # - Tout fichier de l'arbre a au moins un mainteneur dΓ©signΓ© (catch-all
9
  # en premiΓ¨re ligne).
10
- # - Les sous-packages ``core/`` et ``measurements/`` ont une revue
11
- # renforcΓ©e car ils dΓ©finissent les contrats de l'API publique.
12
  # - Les guides dΓ©veloppeur et la doc institutionnelle ont une revue
13
  # ciblΓ©e sur la cohΓ©rence Γ©ditoriale (cf. GOVERNANCE.md).
14
  #
@@ -22,29 +22,31 @@
22
  * @maribakulj
23
 
24
  # ──────────────────────────────────────────────────────────────────
25
- # Cercle 1 β€” abstractions pures (API publique stable).
26
  # Toute modification ici peut casser des consommateurs externes :
27
  # revue prioritaire, tests anti-rΓ©gression renforcΓ©s.
28
  # ──────────────────────────────────────────────────────────────────
29
- /picarones/core/ @maribakulj
30
- /docs/api-stable.md @maribakulj
 
31
 
32
  # ──────────────────────────────────────────────────────────────────
33
- # Cercle 2 β€” mΓ©triques et orchestration.
34
  # ──────────────────────────────────────────────────────────────────
35
- /picarones/measurements/ @maribakulj
36
- /picarones/engines/ @maribakulj
37
- /picarones/llm/ @maribakulj
38
- /picarones/pipelines/ @maribakulj
39
- /picarones/modules/ @maribakulj
40
 
41
  # ──────────────────────────────────────────────────────────────────
42
- # Cercle 3 β€” rapport, web, CLI, extras.
43
  # ──────────────────────────────────────────────────────────────────
44
- /picarones/report/ @maribakulj
45
- /picarones/web/ @maribakulj
46
- /picarones/cli/ @maribakulj
47
- /picarones/extras/ @maribakulj
 
 
 
 
48
 
49
  # ──────────────────────────────────────────────────────────────────
50
  # Documentation, gouvernance, sΓ©curitΓ©, accessibilitΓ©.
 
7
  # Politique :
8
  # - Tout fichier de l'arbre a au moins un mainteneur dΓ©signΓ© (catch-all
9
  # en premiΓ¨re ligne).
10
+ # - Les couches 1-2 (``domain/``, ``formats/``) ont une revue
11
+ # renforcΓ©e car elles dΓ©finissent les contrats de l'API publique.
12
  # - Les guides dΓ©veloppeur et la doc institutionnelle ont une revue
13
  # ciblΓ©e sur la cohΓ©rence Γ©ditoriale (cf. GOVERNANCE.md).
14
  #
 
22
  * @maribakulj
23
 
24
  # ──────────────────────────────────────────────────────────────────
25
+ # Couches 1-2 β€” types purs + parsing (API publique stable).
26
  # Toute modification ici peut casser des consommateurs externes :
27
  # revue prioritaire, tests anti-rΓ©gression renforcΓ©s.
28
  # ──────────────────────────────────────────────────────────────────
29
+ /picarones/domain/ @maribakulj
30
+ /picarones/formats/ @maribakulj
31
+ /docs/reference/api-stable.md @maribakulj
32
 
33
  # ──────────────────────────────────────────────────────────────────
34
+ # Couches 3-4 β€” mΓ©triques et orchestration.
35
  # ──────────────────────────────────────────────────────────────────
36
+ /picarones/evaluation/ @maribakulj
37
+ /picarones/pipeline/ @maribakulj
 
 
 
38
 
39
  # ──────────────────────────────────────────────────────────────────
40
+ # Couches 5-6 β€” adapters externes + services applicatifs.
41
  # ──────────────────────────────────────────────────────────────────
42
+ /picarones/adapters/ @maribakulj
43
+ /picarones/app/ @maribakulj
44
+
45
+ # ──────────────────────────────────────────────────────────────────
46
+ # Couches 7-8 β€” rapports + interfaces utilisateur (CLI, web).
47
+ # ──────────────────────────────────────────────────────────────────
48
+ /picarones/reports/ @maribakulj
49
+ /picarones/interfaces/ @maribakulj
50
 
51
  # ──────────────────────────────────────────────────────────────────
52
  # Documentation, gouvernance, sΓ©curitΓ©, accessibilitΓ©.
.github/workflows/perf_regression.yml CHANGED
@@ -19,12 +19,13 @@ on:
19
  workflow_dispatch: # DΓ©clenchement manuel
20
  pull_request:
21
  paths:
22
- # Une PR qui touche le runner, la normalisation ou les engines
23
- # dΓ©clenche aussi le check (cas oΓΉ on veut prouver qu'un refactor
24
- # ne dΓ©grade rien).
25
- - 'picarones/measurements/runner.py'
26
- - 'picarones/measurements/normalization.py'
27
- - 'picarones/engines/**'
 
28
  - '.github/workflows/perf_regression.yml'
29
 
30
  permissions:
 
19
  workflow_dispatch: # DΓ©clenchement manuel
20
  pull_request:
21
  paths:
22
+ # Une PR qui touche le runner de benchmark, la normalisation ou
23
+ # les adapters OCR dΓ©clenche aussi le check (cas oΓΉ on veut
24
+ # prouver qu'un refactor ne dΓ©grade rien).
25
+ - 'picarones/app/services/benchmark_runner.py'
26
+ - 'picarones/app/services/benchmark_service.py'
27
+ - 'picarones/formats/text/normalization.py'
28
+ - 'picarones/adapters/ocr/**'
29
  - '.github/workflows/perf_regression.yml'
30
 
31
  permissions:
README.md CHANGED
@@ -214,8 +214,8 @@ engines): GPT-4o, Claude, Mistral Large, Ollama (local). See
214
 
215
  The `Engine` table is regenerated automatically by
216
  `scripts/gen_readme_tables.py` β€” adding a new adapter under
217
- `picarones/adapters/legacy_engines/` makes the next CI run update
218
- this table or fail.
219
 
220
  ---
221
 
 
214
 
215
  The `Engine` table is regenerated automatically by
216
  `scripts/gen_readme_tables.py` β€” adding a new adapter under
217
+ `picarones/adapters/ocr/` makes the next CI run update this table
218
+ or fail.
219
 
220
  ---
221
 
pyproject.toml CHANGED
@@ -40,8 +40,8 @@ dependencies = [
40
  "numpy>=1.24.0",
41
  "jinja2>=3.1.0",
42
  # XML parsing sΓ©curisΓ© contre les attaques XXE / Billion Laughs.
43
- # UtilisΓ© par ``picarones.web.corpus_utils`` pour le parsing ALTO/PAGE
44
- # quand un utilisateur uploade un corpus XML.
45
  "defusedxml>=0.7.1",
46
  ]
47
 
@@ -144,17 +144,19 @@ include = ["picarones*"]
144
  [tool.setuptools.package-data]
145
  picarones = [
146
  "prompts/*.txt",
147
- "interfaces/web/_legacy/static/*.css",
148
- "interfaces/web/_legacy/static/*.js",
149
- "interfaces/web/_legacy/templates/*.j2",
150
- "interfaces/web/_legacy/templates/*.html",
151
- "report/templates/*.j2",
152
- "report/templates/*.html",
153
- "report/templates/*.css",
154
- "report/templates/*.js",
155
- "report/i18n/*.json",
156
  "data/*.yaml",
157
- "report/glossary/*.yaml",
 
 
 
 
 
 
 
 
 
 
 
158
  ]
159
 
160
  [tool.pytest.ini_options]
@@ -224,14 +226,9 @@ exclude_lines = [
224
  # Sprint A1 (M-4) β€” type-checking gradient.
225
  #
226
  # StratΓ©gie : ``picarones.domain`` est en mode ``strict`` car c'est la
227
- # couche 1 du rewrite (types purs, Pydantic + stdlib only) β€” l'API
228
- # publique stable et la base de l'architecture concentrique. Les autres
229
- # couches passent en mode permissif (``ignore_missing_imports`` + pas
230
- # de strict) β€” au fur et Γ  mesure des sprints suivants, on monte le
231
- # niveau (Sprint A11 resserre `picarones.measurements`).
232
- # Note : avant les Lots A-G de la migration legacy β†’ rewrite, ce strict
233
- # ciblait ``picarones.core`` ; ce paquet a été entièrement supprimé,
234
- # son contenu est dΓ©sormais dans ``domain/``, ``evaluation/`` et ``formats/``.
235
  # ──────────────────────────────────────────────────────────────────
236
  [tool.mypy]
237
  python_version = "3.11"
 
40
  "numpy>=1.24.0",
41
  "jinja2>=3.1.0",
42
  # XML parsing sΓ©curisΓ© contre les attaques XXE / Billion Laughs.
43
+ # UtilisΓ© par ``picarones.interfaces.web.corpus_utils`` pour le parsing
44
+ # ALTO/PAGE quand un utilisateur uploade un corpus XML.
45
  "defusedxml>=0.7.1",
46
  ]
47
 
 
144
  [tool.setuptools.package-data]
145
  picarones = [
146
  "prompts/*.txt",
 
 
 
 
 
 
 
 
 
147
  "data/*.yaml",
148
+ "interfaces/web/static/*.css",
149
+ "interfaces/web/static/*.js",
150
+ "interfaces/web/templates/*.html",
151
+ "interfaces/web/templates/*.j2",
152
+ "reports/_helpers/vendor/*.js",
153
+ "reports/glossary/*.yaml",
154
+ "reports/html/templates/*.css",
155
+ "reports/html/templates/*.html",
156
+ "reports/html/templates/*.j2",
157
+ "reports/html/templates/*.js",
158
+ "reports/i18n/*.json",
159
+ "reports/narrative/templates/*.yaml",
160
  ]
161
 
162
  [tool.pytest.ini_options]
 
226
  # Sprint A1 (M-4) β€” type-checking gradient.
227
  #
228
  # StratΓ©gie : ``picarones.domain`` est en mode ``strict`` car c'est la
229
+ # couche 1 (types purs, Pydantic + stdlib only) β€” l'API publique stable
230
+ # et la base de l'architecture concentrique. Les autres couches passent
231
+ # en mode permissif (``ignore_missing_imports`` + pas de strict).
 
 
 
 
 
232
  # ──────────────────────────────────────────────────────────────────
233
  [tool.mypy]
234
  python_version = "3.11"