Repository navigation
Fix(ci,#22299): renumeroter les attestations twin a prefixe duplique ou hors ordre - #22300
myia-ai-01 wants to merge 2 commits into
Conversation
… hors ordre Des PRs paralleles ont chacune pris le prefixe NNNN suivant de leur base : cinq paires portent un prefixe en double sur main (gametheory-2-normalform, gametheory-11-bayesiangames, csp-8-temporal, probas-14-sequences, search-02-uninformed), et gametheory-8 rangeait l'audit du 2026-10-22 avant ceux du 19 et du 20. test_twin_registry_integrity rougit Scripts Tests (CPU) sur toute PR qui touche scripts/. Renommage seul, contenu des attestations inchange, ordre de tri conserve (et retabli par date pour gametheory-8). check_twin_parity --check : totaux identiques avant/apres (OK=143 DRIFT=15). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…0030) Le pin 0029 epinglait `python_sha e536c65`, un blob de tete de PR qui n'a jamais ete un blob de main : le squash-merge, fait apres que main a bouge, en a produit un autre (#21740 a modifie Search-03 le 24/10). La paire etait donc en DRIFT sur main et rougissait `test_twin_registry_integrity` (`test_audit_shas_exist_in_file_history`) sur toute PR touchant scripts/. Rebaseline via `check_twin_parity.py --update --pair "Search-03 Informed" --by myia-ai-01:CoursIA-2` : le nouveau pin 0030 porte `python_sha 698d9bc`, le blob courant de `origin/main` (verifie a l'identique sur la tete de cette branche). L'audit firsthand a confirme un pin perime, pas une rupture de parite : seul le cote Python a deplace son contenu, le C# est intact. Validation : `test_twin_registry_integrity.py` 47 passed (etait 46 + 1 fabricated-sha). Voir #22299 point 3. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review de la tete d17b147a (2 commits : renumerotation 33aaf44e + re-attestation Search-03). Verification firsthand, pas de rejeu du seul diff : arbre du registre extrait aux deux refs (git/trees?recursive=1, 2 453 -> 2 454 .yaml sous twin_pairs.d/) et comparaison par multiensemble de blobs, paire par paire.
Ce qui tient, mesure
- Prefixes dupliques : la base porte bien 5 paires a prefixe
NNNNduplique (csp-8-temporal0015x2,gametheory-11-bayesiangames0013x2,gametheory-2-normalform0024x2,probas-14-sequences0010x2,search-02-uninformed0014x2). Au head : 0. Le diff est asimilarity index 100%pour les 10 renommages — aucun octet d'attestation touche. - Ordre d'append preserve, et pas seulement dans les 5 paires citees : j'ai rejoue la semantique de tri (
sorted(<slug>/*.yaml), doncaudits[-1]) sur les 158 paires. Seules 2 paires changent de « dernier audit » :gametheory-8-combinatorialgames(0020-2026-10-20 -> 0020-2026-10-22) etsearch-03-informed(0029 -> 0030, l'attestation ajoutee). Aucun deplacement collateral, y compris sursearch-02-uninformedou 3 fichiers se decalent (0014-10-10 reste 0014, 0014-10-20 -> 0015, 0015 -> 0016, 0016 -> 0017 : l'ordre 10-10 < 10-20 est conserve). gametheory-8remis dans l'ordre des dates (19, 20, 22) : verifie, et lecsharp_shadu dernier audit (1f53404d) est bien un blob que le carnet a reellement porte — present dans l'historique (commits?path=puis.shapar commit, 5 blobs distincts). Ce n'est pas un sha fabrique.- Attestation 0030 verifiee sur les blobs, pas sur la prose :
python_sha 698d9bc9= blob deSearch-03-Informed.ipynbamain(8957d81a) ;content_python_sha 622acbdfrecalcule independamment (metadata retiree,json.dumps(sort_keys=True,separators=(',',':')), sha256) = identique. Cote C# inchange (2bd851b1/c6180817) et toujours valide. Le0029est bien reste intact a cote. - Borne Windows : nom le plus long au head = 69 chars, borne du test = 4+1+10+1+48+5 = 69. A la limite, pas au-dela.
- Scan securite du diff :
HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN=-> 0 hit.
Deux reserves (non bloquantes, aucune sur le diff de fichiers)
- Le corps decrit le commit 1, plus la tete. Il annonce
OK=143 DRIFT=15, « identique avant et apres. Aucun verdict de parite ne change », et «Scripts Tests (CPU)restera donc rouge sur cette PR tant que Search-03 n'est pas re-attestee ». Le commitd17b147aajoute precisement cette re-attestation : mesure au head, un verdict bascule —search-03-informedDRIFT -> OK (l'audit 0029 attestaitcontent_python_sha b99d7f8f, la tete courante vaut622acbdf; 0030 atteste le second). Les autres paires sont intouchees par construction (le diff ne touche que le registre, et seules 2 paires changent de dernier audit —gametheory-8reste DRIFT aux deux refs :content_csharp 2b5880c3/794a5731atteste vs736d4869courant). Donc tete = OK 144 / DRIFT 14, et la phrase sur le rouge persistant est perimee par le commit qu'elle precede. Je ne reproduis pas les comptes absolus 143/15 a la base (316 blobs a recalculer) : c'est le delta que j'ai mesure, et le delta contredit « aucun verdict ne change ». Un edit de corps suffit ; le diff, lui, fait ce qu'il annonce. known_differencesne documente pas la tranche qui a deplace le blob atteste.grep 21740danstwin_pairs.d/search-03-informed.yaml: 0 hit, alors que 0030 atteste un Python passe dee536c65c(audit 0029, 21/10) a698d9bc9— deplacement produit par #21172 (markdown, deja documente) puis #21740 (Greedy/IDA*, les deux cotes re-executes, non documente). La convention du fichier est d'ecrire une entree par re-baseline (#19297 -> #21172, #19245 -> #19259, #21193 sont toutes la). L'attestation est exacte ; c'est la tracabilite qui manque, et le prochain auditeur ne peut pas savoir ce qui a bouge le cote Python.
Etat CI
Au moment de cette review, PR gate est in_progress et les 18 autres jambes queued a d17b147a — aucune conclusion lue, je n'en cite donc aucune comme verte. Le point 3 de #22299 (test_audit_shas_exist_in_file_history) est traite par construction pour Search-03 (blob present dans l'historique) ; la prediction du corps sur Scripts Tests (CPU) reste a confirmer par le run.
VERDICT: le diff est un renommage pur + une attestation exacte, mecaniquement verifie sur les blobs. Reserves : corps a realigner sur la tete (comptes), et une entree known_differences pour #21740.
…l'etat fusionne Le merge de main a introduit une collision d'index intra-revision sur la paire gametheory-3-topology2x2 : la branche portait 0017-2026-10-18 (myia-po-2023) et main a pousse 0017-2026-10-22 (myia-po-2024). C'est exactement le defaut que #22299 decrit et que #22300 repare ailleurs ; ici il est introduit par mon merge, donc c'est a moi de le defaire. Renumerotation, contenu inchange (append-only : date, auteur et SHAs restent ceux de l'enregistrement d'origine) : 0017-2026-10-22-myia-po-2024 -> 0019-2026-10-22-myia-po-2024 L'ordre chronologique des entrees est ainsi retabli (10-18, 10-20, 10-22) et l'index 0017 redevient unique. Second volet, mesure : apres la renumerotation, `check_twin_parity` rendait encore DRIFT, mais sur le Python. Le merge a compose un etat qu'aucune attestation ne couvrait -- Python de la branche (07fb69f3), C# de main (ccffb683). Une nouvelle entree 0020 atteste cet etat fusionne. Aucun `--update` sur une entree ancienne : la regle append-only est respectee. Verifications : check_twin_parity --pair "GameTheory-3 Topology2x2" --check -> OK (1/1) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…estation 0032 du carnet reellement modifie Deux defauts du registre corriges dans cette PR, tous deux mesures par scripts/notebook_tools/tests/test_twin_registry_integrity.py. 1. Index duplique. L'entree ajoutee par cette PR portait le prefixe 0028 alors que main porte deja 0028-2026-10-21-myia-po-2024-CoursIA-2.yaml et va jusqu'a 0030. L'index zero-pade est la cle de tri du journal (#14911/#15345), deux fichiers au meme index rendent leur ordre relatif dependant du reste du nom. Renommee 0031-2026-10-22, l'index suivant libre. 2. Attestation orpheline. L'entree 0028 declarait python_sha c9d3857, qui n'a jamais ete le blob de GameTheory-06-EvolutionTrust-Python.ipynb : c'est un etat intermediaire de la branche du 22/10 qui n'a jamais atterri sur main (main est passe par 1f47763 puis 64b428b). Comme l'organe ne compare que audits[-1], cette entree devenait la derniere et faisait echouer test_audit_shas_exist_in_file_history sur cette paire. Le carnet ayant ete reellement modifie par cette PR (reconciliation cellule par cellule + re-execution papermill 24/24 a 06:22Z, puis edition markdown-only), le geste est une NOUVELLE entree, pas une re-signature : l'attestation 0032 enregistre les blobs courants a la tete. Aucune entree ancienne n'est reecrite. Preuve, meme suite avant/apres sur l'arbre de la branche : avant : gametheory-6-evolutiontrust present dans les doublons d'index (0028-2026-10-21 et 0028-2026-10-22) + "GameTheory-6 EvolutionTrust.python_sha = c9d3857 (jamais blob)" apres : la paire n'apparait plus dans aucun des deux messages Residuel, herite de main et hors perimetre de cette PR : 5 paires en doublon d'index (csp-8-temporal, gametheory-11-bayesiangames, gametheory-2-normalform, probas-14-sequences, search-02-uninformed) et 2 SHA jamais vus (GameTheory-8, Search-03). Classe #22299, correctif #22300. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
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 |
… profondeur D2 (volet 1/2) (#21252) * renum(gametheory): GT-03 re-lettrage f->e, g->f -- anomalie de profondeur D2 Part of #14944 (volet 1/2 : verdict D2 ; les referents A2 de la renum precedente suivent en PR separee, regle accretion 5.6 -- un renommage et un correctif de contenu ne se relisent pas ensemble). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * renum(gametheory): referents internes des deux carnets re-lettres (H1 + nav) Complement du commit precedent -- les edits internes etaient restes unstaged lors du premier commit (git add sans les nouveaux chemins). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#14944): lien README l.195 + entree baseline nav-chain -- suites du re-lettrage (03f-Meta -> 03e-Meta) - README.md l.195 : l'URL pointait encore vers l'ancien nom GameTheory-03f-Meta-Actions-Tarifees (label 03e deja aligne) -- le lien cassait apres le renommage (audit README -> .ipynb links, NOUVELLES=1 sur la tete precedente). - baseline_nb_nav_chain.json : l'entree orphan_entry suit le carnet renomme (03e-Meta-Actions), edite minimal sur le precedent c4148fa/c6258b9062 -- pas de regeneration (348 entrees preservees, les 25 drops de la regen complete sont hors perimetre et hors verdict DELTA). See #14944 (volet 1) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * chore(twin,#8057): attestation 0016 paire GameTheory-3 Topology2x2 post re-lettrage 03f->03e Le re-lettrage a modifie la prose du carnet 03-Topology2x2 (renvoi 03h->03f), invalidant l'attestation precedente. Rebaseline exactement comme prescrit par la jambe Twin parity audit (#8508: selecteur --pair obligatoire). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix(gametheory,#14944): twin registry topology2x2 -- dedupe index 0016 + re-attestation Deux rouges de CI, une cause racine chacun : 1. Scripts Tests / test_audit_index_unique : l'entree du 2026-10-18 prenait l'index 0016 deja pris sur main par l'attestation hors-flotte du 2026-10-14 (cle de tri du journal, #14911/#15345). Renumerotree en 0017 (git mv, contenu inchangé). 2. Twin parity audit (#8057) : DRIFT reel du jumeau C# depuis la derniere attestation (content f7a582ab -> 76bc8244). Re-attestation par l'outil canonique --update --pair "GameTheory-3 Topology2x2" (entree 0018-2026-10-20), en DERNIER -- aucun strip outille apres. Preuve locale (worktree, post-fix) : - check_twin_parity --check --pair : OK=1 DRIFT=0 MISSING=0 - test_twin_registry_integrity.py : 46 passed Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#14944): re-lettrage GT-03 -- referents perimes GT-3h et note de fusion ex-03e Le re-lettrage 03f->03e / 03g->03f (#21252) a renomme les fichiers et aligne leurs libelles longs, mais quatre renvois courts `GT-3h` ont echappe au sweep, tous pointant vers le fichier renomme GameTheory-03f-Deux-Especes-de-Fleches-Python.ipynb dont le H1 dit desormais GameTheory-03f : - 03b cellule 15 (theoreme de la condition de transformation) - 03b cellule 32 (encodages identiques a GameTheory-3 et GT-3h) - 03c cellule 37 (renvoi de nav) - 03e cellule 0 (renvoi de nav) Cinquieme correction, de meme classe : la note de fusion de 03e annoncait absorber l'ex-03e-Parcours-Complet, alors que le fichier absorbE etait GameTheory-03f-Parcours-Complet.ipynb (fusion 03f -> 03e, 656c120). Aucun GameTheory-03e-Parcours-Complet n'a jamais existe dans l'historique (API commits?path= : vide). Aucune cellule source modifiee, aucune sortie touchee : markdown seul, donc C.2/C.3 sans re-execution due. Surfaces volontairement non touchees, verifiees : - docs/ledgers/15615-gradation-foundations.md et docs/reference/rename-ledger.tsv : historique append-only ; - slides/05-theorie-des-jeux/slides.md:409 "absorbe depuis l'ex-03g" est exact (GameTheory-03g-Derivation-Quotient.ipynb supprime par b5fcbac, fusion 03g -> socle 03). Organes : check_notebook_navlinks.py --check --family GameTheory -> 0 nouveau lien casse (123 carnets) ; check_link_label_agreement.py -> 0 desaccord dans les carnets (les 6 restants sont dans docs/curriculum/recherche.md, 5 identiques sur origin/main, voie advisory). See #14944 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#14944): quatre referents GameTheory-3h de plus en 03d La premiere passe n'avait vu que la graphie GT-3h et GameTheory-03h ; la forme courte GameTheory-3h (sans le zero) echappait au grep comme au checker, qui derive le prefixe de famille de la cible. Mesure exhaustive des quatre graphies (GT-3h, GameTheory-3h, GameTheory-03h, GameTheory 3h) sur GameTheory/, SocialChoice/, slides/, docs/reference et docs/curriculum, cellules source des .ipynb plutot que texte brut : - 03d cellule 0 et cellule 25 : "voir aussi GameTheory-3h (Loi III," "transformation)" -> 3f - 03d cellule 12 : "Notre grammaire R-G (cf GameTheory-3, GameTheory-3h)" - 03d cellule 25 : "- GameTheory-3h (morphisme fini, swaps preservants) :" "[GameTheory-03f-...]" -> 3f Total des referents perimes corriges par les deux commits : 8 (03b x2, 03c x1, 03d x4, 03e x1), conforme au decompte du coordinateur. Markdown seul, aucune sortie touchee. See #14944 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#21252): collision d'index twin 0017 + attestation de l'etat fusionne Le merge de main a introduit une collision d'index intra-revision sur la paire gametheory-3-topology2x2 : la branche portait 0017-2026-10-18 (myia-po-2023) et main a pousse 0017-2026-10-22 (myia-po-2024). C'est exactement le defaut que #22299 decrit et que #22300 repare ailleurs ; ici il est introduit par mon merge, donc c'est a moi de le defaire. Renumerotation, contenu inchange (append-only : date, auteur et SHAs restent ceux de l'enregistrement d'origine) : 0017-2026-10-22-myia-po-2024 -> 0019-2026-10-22-myia-po-2024 L'ordre chronologique des entrees est ainsi retabli (10-18, 10-20, 10-22) et l'index 0017 redevient unique. Second volet, mesure : apres la renumerotation, `check_twin_parity` rendait encore DRIFT, mais sur le Python. Le merge a compose un etat qu'aucune attestation ne couvrait -- Python de la branche (07fb69f3), C# de main (ccffb683). Une nouvelle entree 0020 atteste cet etat fusionne. Aucun `--update` sur une entree ancienne : la regle append-only est respectee. Verifications : check_twin_parity --pair "GameTheory-3 Topology2x2" --check -> OK (1/1) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#21252): decaler les attestations au-dessus du max de main (index 0017 partage) L'organe `check_twin_index_collisions` compare les inventaires HEAD vs main : mon renommage precedent laissait l'index 0017 porte par deux noms differents de part et d'autre. Il ne peut pas savoir que HEAD contient main, donc il lit un doublon que le merge produirait. Rotation pure (`git mv`, aucun contenu touche -- date, auteur et SHAs de chaque enregistrement sont intacts), tous les index au-dessus du max de main (0017) et dans l'ordre chronologique : 0017-2026-10-18-myia-po-2023 -> 0018 0018-2026-10-20-myia-po-2023 -> 0019 0017-2026-10-22-myia-po-2024 -> 0020 (renomme au commit precedent en 0019) 0020-2026-10-24-myia-po-2023 -> 0021 `audits[-1]` reste l'entree du 24/10, qui atteste l'etat fusionne : la parite ne depend pas de l'ordre de la rotation. Verifications : check_twin_parity --pair "GameTheory-3 Topology2x2" --check -> OK check_twin_index_collisions --base origin/main --head HEAD --in-tree -> plus de collision sur cette paire Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix(gametheory,#14944): attestation 0022 paire GT-3 Topology2x2 -- le re-lettrage 03h->03f est un marqueur Python-seul Mesure --per-pair --base origin/main : DRIFT-INTRO (base=OK, head=DRIFT, content python 07fb69f3 -> c93238e1). Diff Python : 2 cellules markdown, renommage de reference croisee uniquement, 0 cellule code (exception C.2). Jumeau C# : 0 occurrence GameTheory-03<lettre>, rien a faire suivre, byte-identique a main. Re-baseline documentee en known_differences + audit file-per-audit 0022, apres audit firsthand (cf #8957). Registre : 158 paires, DRIFT 15 -> 14 ; les 14 restantes sont le plancher repo-wide #21822, series hors diff de cette PR. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * fix(gametheory,#14944): deduplicate twin audit ordinal 0018 Move the five branch-owned GameTheory-3 Topology2x2 attestations to 0023-0027 above main's current maximum. Preserve every YAML byte; no notebook source changed, so C.2 re-execution is not due. Validation: worktree registry integrity test passed; check_twin_index_collisions --worktree --in-tree reports no collision; targeted check_twin_parity reports OK. The HEAD-based collision test requires this commit and is rerun immediately afterwards. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: CI/twin-registry — lane myia-ai-01:CoursIA
Resume
Renommage seul de 10 attestations twin (
scripts/notebook_tools/twin_pairs.d/), sans toucher a leur contenu. Couvre les points 1 et 2 de #22299 :csharp_shaest bien un blob de main.Validation (worktree a
origin/mainbe70ada, puis a la tete de la branche)pytest scripts/notebook_tools/tests/test_twin_registry_integrity.py: 3 failed avant, 1 failed / 46 passed apres. Le test restant,test_audit_shas_exist_in_file_history, porte uniquement sur Search-03 (point 3 de Twin registry : prefixes d'attestation dupliques ou hors ordre et SHA de tete de PR sur main (test_twin_registry_integrity rouge) #22299). Il releve de la lane auteure et demande un audit firsthand.check_twin_parity.py --check:OK=143 DRIFT=15 MISSING=0 NUMBERING-DRIFT=0, identique avant et apres. Aucun verdict de parite ne change.Scripts Tests (CPU) restera donc rouge sur cette PR tant que Search-03 n'est pas re-attestee. La lane
myia-ai-01:CoursIA-2peut pousser sa re-attestation sur cette branche : je n'y pousse plus.See #22299
🤖 Generated with Claude Code