Skip to content

fix(tooling,#14435): scan-error counter + MANQUE delta + prefixed legacy arXiv IDs - #14517

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/14435-hermes-followup
Sep 3, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/14435-hermes-followup

Conversation

@jsboige

@jsboige jsboige commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Grain: MED/tooling -- lane myia-po-2026:CoursIA -- prev: MED/strategy-ml #14516 (cycle 159)

Summary

Les 3 remarques Hermes reportées par #14435, dans 4 fichiers : les 2 scanners arXiv, le workflow de delta README, leurs tests.

Rem. 1 — un échec de scan n'est plus un « 0 lien » fabriqué. Dans notebook-link-render-check.yml, le checker tourne toujours mais sa sortie n'est plus réduite par || echo 0 : un README dont le scan échoue incrémente un compteur dédié scan_errors (côté PR et côté main) au lieu de contribuer 0 au delta BRUT. Le zéro d'un organe muet et le zéro mesuré ne se lisent plus pareil.

Rem. 2 — le delta trace MANQUE. La boucle somme désormais totals['MANQUE'] (lien dangling : le .ipynb n'existe plus) en plus de totals['BRUT'], même discipline d'erreur. Sorties delta_manque, pr_manque, scan_errors, et le label advisory devient notebook-link-render-delta: +N (M readmes, manque ΔK, scan-err E).

Rem. 3 — l'ID legacy garde son préfixe d'archive. ARXIV_RE_LEGACY capturait (\d{7}) nu et JETAIT le préfixe (cs/, quant-ph/, math.AG/, cat/) — or le préfixe FAIT partie de l'identifiant ancien : l'API arXiv rejette un 7-chiffres nu (400 mesuré). Capture élargie au préfixe dans les deux scanners (scan_arxiv_citations.py, scan_pr_arxiv_diff.py), garde anti-FP moderne inchangée (filtrage sur les 7 chiffres après rsplit('/')).

Preuves

$ python -m pytest scripts/notebook_tools/tests/test_scan_arxiv_prefix.py -q
8 passed

Mesures API live (le chemin complet scan → verify, après le fix) :

ID (tel que scanné) API id_list= Avant le fix
cs/0011047 200 — Dancing links (2000, Knuth) capturé nu 0011047 → 400
quant-ph/0604079 200 — The Free Will Theorem (2006, Conway-Kochen) capturé nu 0604079 → 400
cat/0703165 400 — identifiant qu'aucune forme ne résout pareil, mais pour une raison fabriquée

Ces 2 IDs préfixés vivent dans les notebooks du repo (arXiv:cs/0011047 ×3, arXiv:quant-ph/0604079 ×2) : ils deviennent vérifiables automatiquement. Le cas cat/ nommé par la remarque est géré honnêtement : le scanner le transmet désormais tel quel et l'API le refuse en tant qu'identifiant — plus jamais manglé en un 7-chiffres nu qui échoue pour une raison de notre fabrication.

Workflow : YAML valide, bash -n sur le step réécrit OK, aucun autre consommateur des outputs du step (seul le step label les lit) ; build_covered_csv.py unionne des clés string — agnostique au format d'ID, les deux producteurs changeant ensemble.

Verdict SOTA : SOTA-OK (API réelle interrogée, aucune sortie fabriquée)

Closes #14435

…acy arXiv IDs

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Bash Syntax Advisory — shebang / executable-bit warnings

See the Shebang + dry-run advisory job log for the per-file ::warning:: lines. Non-blocking.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-03) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] structural review — 4 fichiers (workflow notebook-link-render-check.yml +35/−9, 2 scanners arXiv +10/−4, tests +64). Workflow et scanners lus au head da309f81, tests listés, les 4 claims API du body vérifiés contre l'API arXiv en direct.

Vérifié firsthand

  • Rem. 1 — le zéro fabriqué est mort, au YAML : le || echo 0 a disparu ; chaque lecture checker→python est gardée par if line=$(...) && [ -n "$line" ] — un échec de scan (ou un JSON illisible) tombe dans le else qui incrémente scan_errors (PR l.94, main l.105) et n'additionne rien au BRUT. Les outputs scan_errors/delta_manque/pr_manque sont posés (l.118-120) et le label advisory porte tout : ... manque ΔK, scan-err E (l.137). Un organe muet et une mesure à zéro ne se lisent plus pareil — exactement la remarque d'Hermes.
  • Rem. 2 — MANQUE tracé : la lecture python extrait t['BRUT'], t['MANQUE'] des deux côtés (l.89/100), somme séparée pr_manque/main_manque, delta sorti en output. La ligne de log récap (l.113) affiche les deux comptoirs.
  • Rem. 3 — le préfixe legacy vit dans la capture : les deux scanners portent la même regex \barXiv:\s*((?:[a-z\-]+(?:\.[A-Z]{2})?/)?\d{7})\b — cs/, quant-ph/, math.AG/ sont DANS le groupe 1 (plus jamais jetés), et la garde anti-FP moderne est intacte (digits = arxiv_id.rsplit("/", 1)[-1]; len == 7) : les ID modernes restent filtrés.
  • Les 4 claims API du tableau sont vrais, recomptés en direct depuis ce container : cs/0011047 → 200 « Dancing links » ; quant-ph/0604079 → 200 « The Free Will Theorem » ; cat/0703165 → 400 (le cas honnête : identifiant qu'aucune forme ne résout) ; bare 0011047 → 400 (l'ancien comportement manglé que ce fix supprime). Les 2 IDs préfixés deviennent vérifiables automatiquement, comme annoncé.
  • 8 tests couvrent la sémantique : préfixe conservé dans les 2 scanners, cat/ accepté comme préfixe d'archive par la regex, bare-7 inchangé, moderne inchangé, 8-chiffres ≠ legacy, et un test qui pinne le groupe de capture incluant le préfixe — c'est ce dernier qui rougit si quelqu'un rétrécit la capture. 0 secret sur les 4 fichiers.

Observations (non bloquantes)

  • Le fail-path de git show HEAD:$readme (l.87/98) saute le README sans incrémenter scan_errors — cohérent (un README absent n'est pas un échec de scan), mais un README renommé pourrait passer inaperçu des deux compteurs à la fois. Micro-cas, le checker de périmètre le verrait de toute façon.
  • L'URL legacy cat/ reste un 400 permanent côté arXiv : les citations cat/… éventuelles continueront de compter comme échecs de vérification. C'est le choix honnête (échec pour la vraie raison) et il est documenté — à savoir en lisant les advisories futurs.

Les trois remarques d'#14435 sont fermées au bon instrument, avec preuves API reproduites de mon côté à l'identique. Aucune demande de changement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

follow-up: 3 remarques Hermes reportees depuis #14393 et #14419 (instrumentation liens + arXiv)

3 participants