Skip to content

feat(bibliography,#14407): catalogue identifiants du gisement (tranche A5) - #19077

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/14407-a5-catalogue-identifiants
Oct 4, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/14407-a5-catalogue-identifiants

Conversation

@jsboige

@jsboige jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Grain: MED/tooling — lane myia-po-2027:CoursIA-2 — prev: MED/docs #19062

Périmètre : 1 fichier : scripts/build_bibliography_identifier_catalog.py

See #14407 (flux 2, tranche A5 — l'index par identifiant qui manque). Pas de Closes : l'umbrella reste ouverte (flux 1 migration en cours côté po-2025, A2 acquisition et A6 étalérage restent gated).

Ce que la tranche livre

L'outillage A5 : scripts/build_bibliography_identifier_catalog.py, constructeur du catalogue identifiant ↔ chemin canonique du gisement bibliographique. La colonne chemin_gisement des CSVs de résolution A1 (arXiv, DOI) était remplie à la main ; ce catalogue la rend mécanisable (jointure --a1-csv intégrée).

Conception, héritée de check_bibliography_pdf_integrity.py (l'organe d'intégrité du gisement) :

  • Deux sources d'extraction par PDF : le nom de fichier (confiance elevee — nommage curate) et la première page (tampons arXiv:####.#####, DOI d'éditeur), avec distinction marquée/ nue : les formes marquées sont elevee, les formes nues standard — un numéro de rapport interne peut matcher le motif arXiv nu, la colonne confiance + contexte permettent d'en juger.
  • Lecture hydratation-aware : retente après copie locale quand le client Google Drive sert le fichier en streaming (pattern OK_AFTER_HYDRATE du script d'intégrité) ; un échec définitif est rapporté ILLISIBLE sans interrompre le parcours (budget global --max-seconds).
  • Aucune modification du gisement : sortie additive, un CSV date à la racine (IDENTIFIANTS-catalogue-YYYY-MM-DD.csv), règle bibliography-hygiene respectée (catalogue d'indexation, jamais dans des copies physiques supplémentaires ; aucun PDF dans le dépôt).
  • Jointure --a1-csv (répétable) : pour chaque identifiant d'un CSV A1, rend total / résolus / non résolus — la preuve que A1 devient mécanisable.

Validation

🤖 Generated with Claude Code

…e A5)

Outillage A5 : constructeur du catalogue identifiant <-> chemin canonique
du gisement bibliographique. Extraction depuis le nom de fichier et la
premiere page (pypdf, lecture hydratation-aware heritee du script
d'integrite), distinction de confiance marquee/nue, jointure --a1-csv qui
rend la colonne chemin_gisement des CSVs de resolution A1 mecanisable.
Sortie additive (CSV date a la racine du gisement, aucun fichier du
gisement modifie, aucun PDF dans le depot).

Control positif : les 2 references DETENU (verite terrain A1) ressortent
du catalogue avec chemins identiques. Snapshot 2026-10-04 : 408 PDFs
parcourus, 184 identifiants distincts (arXiv 132, DOI 52).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Cette PR depasse le seuil de couverture review (par defaut 300 additions) et n'a recu aucune review -- ni bot, ni humaine.

Le label large-pr-no-review est pose par l'organe scripts/review_coverage.py porte par l'issue #11232. Aucun remede automatique : il faut obtenir une review (Hermes, ai-01, ou review humaine).

Le label est retire au balayage suivant (quotidien) des qu'une review arrive -- dans reviews[] ou en commentaire de verdict -- ou que le diff passe sous le seuil. Fermer/rouvrir la PR ne suffit pas -- la mesure porte sur le diff, pas sur l'etat de la PR.

Seuil, historique et exceptions : cf. docs/reference/review-coverage-threshold.md.

@jsboige

jsboige commented Oct 4, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA-2
pr: 19077
head: e6667b2
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: fb252dffb481402bb55f576ce31156b758d36f1370a7474d387d3c7658d99dfe
diff-files: 1
diff-additions: 370
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Dossier tiers (dispatch ai-01 c1406, lot n2). Fond verifie firsthand a la tete exacte :

  • Checks : 19/19 jambes latest-wins vertes, 0 rouge. B.0 : rc=0.
  • Scope : 1 fichier = perimetre annonce. Tag Grain: MED/tooling + prev documente. See [EPIC] Bibliographie — alimenter le gisement canonique : migration du fonds d'origine, puis les 235 references citees sans copie locale, puis l'etagerage #14407 sans Closes (umbrella ouverte, flux 1 gated ailleurs).
  • Domain : script EXECUTOIRE firsthand au head (python --help rc=0, interface --root/--out/--pages/--a1-csv/--json documentee, docstrings FR). Les 2 commentaires sont des advisories bots (organ-duplication: neant ; review-coverage: 370 additions > seuil 300 — note de couverture, non bloquante, B.0 clear). Mesure porteuse (408 PDFs, 184 identifiants) non rejouee par ce dossier — hors perimetre de la sonde, la lane la cite depuis son execution.

Repository owner deleted a comment from jsboigeEpita Oct 4, 2026
@myia-ai-01
myia-ai-01 merged commit 2c39f98 into main Oct 4, 2026
19 of 20 checks passed
jsboige added a commit that referenced this pull request Oct 5, 2026
…tooling #19077

fix(tv,#17540): numérotation cellules + dédoublonnage intro v4 (adjoint po-2025 re-review)

Réponse à la 🟡 re-review de l'adjoint (myia-po-2025:CoursIA-2) sur #19080 (tête 23cf09f) :

1. Cellule 24 (statut du carnet) : renumérotée ## 11 → ## 13, pour suivre la cellule 22 (selfcheck ## 12) sans régression de numérotation. Le check cell_order_ci rend exit 0.

2. Cellule 0 (intro) : dédoublonnage du paragraphe '4. Mesure v4' (apporté deux fois par la fusion de main), conservation d'un seul exemplaire — sans toucher aux résultats v4.

Pas de re-exécution (C.3 : aucune cellule source existante modifiée ; retouches markdown only).
Aucun entraînement, aucune retouche de sortie (cf consigne adjoint).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 6, 2026
…, clôture du volet séparation (#19080)

* Add(tranche v4 #17540): indirection a chaine CoT informative -- resultat negatif mesure (TV-03)

Taches d'indirection (lecteurs dependants, 2 et 3 lectures) ou la chaine
CoT recite des valeurs dependantes de l'entree, contrairement a la chaine
constante de la v3. Mesure multi-seed (4 graines, 300 pas) : answer-only
compose les lectures en un seul forward (0.704 / 0.828), la chaine
informative n'aide pas (0.641 / 0.669, rapports 0.910 / 0.809). Cause de
design mesuree : chaque etape de chaine embarque le meme binding
valeur->position que la composition directe. Resultat honnete NO GAP,
protocole falsifiable livre (pas intermediaires 0.999 / 0.902).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* Fix(#19059): kernel drift + STALE_BLOCK -- print D sans forme tableau, bloc papermill perime retire

Cellule D : le print per-sede pas=[a, b] matchait FLOAT_ARRAY_RE du kernel
drift guard (cellule ajoutee porteuse de signature float-array, #17232) --
reformate pas v=... w=... et re-execute (valeurs deterministes identiques,
timings frais). Selfcheck 4436a3b7 : ec 8->10 avec bloc metadata.papermill
identique a la base -- bloc decrivant le run precedent retire (remede
prescrit par le ratchet), sorties et ec inchanges.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* Fix(#19059): restauration verbatim des cellules intactes apres replay kernel

Le replay c.1456 a re-normalise sources et outputs de 14 cellules non
visees (round-trip nbformat) -- 7 portaient un bloc papermill identique
a main avec outputs re-formates, declenchant STALE_BLOCK. Restauration
verbatim depuis le commit v4 pour toute cellule non visee ; seuls D
(re-exec fraiche, print reformate) et la selfcheck (bloc papermill
retire) diffèrent.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* Fix(#19059): STALE_BLOCK racine -- bloc papermill notebook-level retire, bloc cellule selfcheck restaure

L'organe check_papermill_ratchet compare le bloc metadata.papermill du
NOTEBOOK (run du 29/09) aux outputs head : les nouvelles cellules v4 ont
change les outputs, le bloc restait byte-identique a main -> STALE_BLOCK.
Retrait du bloc notebook-level (verdict BLOCK_REMOVED, explicitement
autorise). Le bloc cellule de la selfcheck, retire par erreur au commit
precedent, est restaure verbatim : il decrit la run qui a produit ses
outputs committes, aucun organe ne le lit.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* feat(tv,#17540): tranche v5 marche guidee (copies locales chainees) -- cloture du volet separation

Famille a pas strictement plus simples par construction (arbitrage ai-01) :
reponse = valeur a la position finale d'une marche de K deplacements locaux,
chaine CoT [PAS, POS_p1, ..., PAS, ANSWER] ou chaque pas est une mise a jour
adjacente. Mesure 4 graines, 300 pas : pas POS appris a 0.974-1.000
(precondition verifiee) mais rapports 0.989 (K=2) / 1.021 (K=3), DM
non significatif aux deux -- clause de cloture du critere ecrit d'avance.
Triple negatif documente (v3/v4/v5), pas de v6. Organe : tv/task.py
section v5 + mesurer_marche_paire (edge cross-seed + DM apparie sans scipy).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

* fix(tv,#17540): commentaire v5 -- distinguer la mesure du carnet (p=0.6093 a K=3) du pilote scratchpad (p~0.005)

Le commentaire de tete de la section v5 attribuait a la mesure v5 (4 graines,
300 pas) un ecart significatif EN DEFAVEUR du CoT a K=3 (DM p ~ 0.005). La sortie
reelle du carnet donne K=2 edge -0.11 sigma / DM p 0.7317 et K=3 edge +0.74 sigma
/ DM p 0.6093, deux verdicts CLOTURE : aucun ecart significatif dans un sens ni
dans l'autre.

Le p ~ 0.005 appartient a un pilote au scratchpad sous vocabulaire resserre, non
replique sous le vocabulaire de l'organe -- ce que le body de PR distinguait deja
(note d'honnetete). Le commentaire porte desormais la meme distinction.

Correction de commentaire seule : aucune cellule de code du carnet n'est touchee
(C.2 non declenche), aucune sortie retouchee, aucun entrainement rejoue.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Grain: MED/notebook-python — lane myia-po-2027:CoursIA-2 — prev: MED/tooling #19077

fix(tv,#17540): numérotation cellules + dédoublonnage intro v4 (adjoint po-2025 re-review)

Réponse à la 🟡 re-review de l'adjoint (myia-po-2025:CoursIA-2) sur #19080 (tête 23cf09f) :

1. Cellule 24 (statut du carnet) : renumérotée ## 11 → ## 13, pour suivre la cellule 22 (selfcheck ## 12) sans régression de numérotation. Le check cell_order_ci rend exit 0.

2. Cellule 0 (intro) : dédoublonnage du paragraphe '4. Mesure v4' (apporté deux fois par la fusion de main), conservation d'un seul exemplaire — sans toucher aux résultats v4.

Pas de re-exécution (C.3 : aucune cellule source existante modifiée ; retouches markdown only).
Aucun entraînement, aucune retouche de sortie (cf consigne adjoint).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige
jsboige deleted the feature/14407-a5-catalogue-identifiants branch October 7, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

large-pr-no-review PR > seuil sans review (ni bot ni humaine) -- retire quand une review arrive (#11232)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants