Repository navigation
fix(tooling,#14435): scan-error counter + MANQUE delta + prefixed legacy arXiv IDs - #14517
Conversation
…acy arXiv IDs Co-Authored-By: Claude-Code <noreply@anthropic.com>
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[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 0a disparu ; chaque lecture checker→python est gardée parif line=$(...) && [ -n "$line" ]— un échec de scan (ou un JSON illisible) tombe dans leelsequi incrémentescan_errors(PR l.94, main l.105) et n'additionne rien au BRUT. Les outputsscan_errors/delta_manque/pr_manquesont 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éepr_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) ; bare0011047→ 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émenterscan_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 citationscat/…é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.
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.ipynbn'existe plus) en plus detotals['BRUT'], même discipline d'erreur. Sortiesdelta_manque,pr_manque,scan_errors, et le label advisory devientnotebook-link-render-delta: +N (M readmes, manque ΔK, scan-err E).Rem. 3 — l'ID legacy garde son préfixe d'archive.
ARXIV_RE_LEGACYcapturait(\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èsrsplit('/')).Preuves
Mesures API live (le chemin complet scan → verify, après le fix) :
id_list=cs/00110470011047→ 400quant-ph/06040790604079→ 400cat/0703165Ces 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 cascat/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 -nsur le step réécrit OK, aucun autre consommateur des outputs du step (seul le step label les lit) ;build_covered_csv.pyunionne 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