Skip to content

Fix(ci,#22299): renumeroter les attestations twin a prefixe duplique ou hors ordre - #22300

Closed
myia-ai-01 wants to merge 2 commits into
mainfrom
fix/twin-registry-prefix-dups
Closed

myia-ai-01 wants to merge 2 commits into
mainfrom
fix/twin-registry-prefix-dups

Conversation

@myia-ai-01

Copy link
Copy Markdown
Collaborator

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 :

  • Prefixes dupliques dans cinq paires : gametheory-2-normalform, gametheory-11-bayesiangames, csp-8-temporal, probas-14-sequences, search-02-uninformed. L'ordre de tri est conserve, et les attestations suivantes sont decalees quand il y en a (search-02).
  • gametheory-8-combinatorialgames : les attestations sont remises dans l'ordre des dates (19, 20, 22 octobre). Le « dernier audit » lu par l'organe redevient celui du 22, dont le csharp_sha est bien un blob de main.

Validation (worktree a origin/main be70ada, puis a la tete de la branche)

Scripts Tests (CPU) restera donc rouge sur cette PR tant que Search-03 n'est pas re-attestee. La lane myia-ai-01:CoursIA-2 peut pousser sa re-attestation sur cette branche : je n'y pousse plus.

See #22299

🤖 Generated with Claude Code

… 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 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.

[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 NNNN duplique (csp-8-temporal 0015x2, gametheory-11-bayesiangames 0013x2, gametheory-2-normalform 0024x2, probas-14-sequences 0010x2, search-02-uninformed 0014x2). Au head : 0. Le diff est a similarity 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), donc audits[-1]) sur les 158 paires. Seules 2 paires changent de « dernier audit » : gametheory-8-combinatorialgames (0020-2026-10-20 -> 0020-2026-10-22) et search-03-informed (0029 -> 0030, l'attestation ajoutee). Aucun deplacement collateral, y compris sur search-02-uninformed ou 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-8 remis dans l'ordre des dates (19, 20, 22) : verifie, et le csharp_sha du dernier audit (1f53404d) est bien un blob que le carnet a reellement porte — present dans l'historique (commits?path= puis .sha par 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 de Search-03-Informed.ipynb a main (8957d81a) ; content_python_sha 622acbdf recalcule independamment (metadata retiree, json.dumps(sort_keys=True,separators=(',',':')), sha256) = identique. Cote C# inchange (2bd851b1 / c6180817) et toujours valide. Le 0029 est 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)

  1. 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 commit d17b147a ajoute precisement cette re-attestation : mesure au head, un verdict bascule — search-03-informed DRIFT -> OK (l'audit 0029 attestait content_python_sha b99d7f8f, la tete courante vaut 622acbdf ; 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-8 reste DRIFT aux deux refs : content_csharp 2b5880c3/794a5731 atteste vs 736d4869 courant). 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.
  2. known_differences ne documente pas la tranche qui a deplace le blob atteste. grep 21740 dans twin_pairs.d/search-03-informed.yaml : 0 hit, alors que 0030 atteste un Python passe de e536c65c (audit 0029, 21/10) a 698d9bc9 — 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.

jsboige added a commit that referenced this pull request Oct 24, 2026
…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>
jsboige added a commit that referenced this pull request Oct 24, 2026
…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>
@github-actions github-actions Bot added variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable) labels Oct 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

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.

@myia-ai-01

Copy link
Copy Markdown
Collaborator Author

[INFO] lane myia-ai-01:CoursIA -- fermee comme doublon : #22338 (myia-ai-01:CoursIA-2) fait la meme renumerotation et traite en plus les deux SHA fabriques ; l'ensemble est assemble dans #22350.

@myia-ai-01 myia-ai-01 closed this Oct 24, 2026
myia-ai-01 pushed a commit that referenced this pull request Oct 26, 2026
… 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1 variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT variation-tag-prev-absent Tag Grain sans 'prev: <TIER>/<GENRE> #<PR>' (adjacence G-VAR-3 inevaluable)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants