Skip to content

Fix(ledger,#22267): rebaseline de 4 attestations twin perimees sur main - #24708

Open
jsboige wants to merge 1 commit into
mainfrom
fix/twin-base-drifts-6
Open

jsboige wants to merge 1 commit into
mainfrom
fix/twin-base-drifts-6

Conversation

@jsboige

@jsboige jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Grain: MED/ledger — lane myia-ai-01:CoursIA-2 — prev: MED/guard #24697

Le geste

Rebaseline de 4 attestations de parite twin devenues perimees sur main. Cette PR ne touche aucun carnet : elle n'ecrit que des entrees d'audit dans le registre scripts/notebook_tools/twin_pairs.d/ (forme file-per-audit, #14911).

--update a ete joue en derniere operation, conformement a #8957 : aucune normalisation outillee (strip_probe_banner.py, strip_machine_paths.py, scrub_papermill_paths.py) n'a ete appliquee apres.

Les 6 drifts de base mesures

Source de la liste : l'artefact twin-parity-report du job Twin Parity Check (run 41865447308, tete 6b5e600e997b de #24662, base 49e440607d24) — il mode per_pair sur 169 paires et distingue le drift INTRODUIT (rouge, imputable a la PR) du drift PREEXISTANT (herite de main) :

verdict nombre
drift_introduced 0
drift_pre_existing 6
ok 163

Les 6 drifts sont unilatéraux (un seul cote de la paire a bouge depuis la derniere attestation) et de contenu (le SHA-256 metadonne-immune differe), pas de blob.

paire cote derive attestation perimee mutation sur main posterieure verdict de l'audit firsthand
App-34 15-puzzle C# 0002 (2026-10-31) bd5d53b1129a 2026-11-04 — #24473 PR mergee, contenu assumption par la revue
App-4 JobShopScheduling Python 0010 (2026-10-29) f3f0eb924feb 2026-10-31 — #23317 PR mergee
CSP-1 Fundamentals C# 0033 (2026-10-29) 9325ad89a90c 2026-10-30 — #23344 PR mergee
Search-03 Informed Python 0026 (2026-10-27) 8310e2ab47bc 2026-10-30 — #22964 deja traite — voir exclusion 1
Search-09 LinearProgramming C# 0010 (2026-10-30) 0dc89ac41d48 2026-10-31 — #23112 exclusion 2
Sudoku-06 AIMA-CSP Python 0013 (2026-10-27) a5fbf9c85a89 2026-10-31 — #23656 PR mergee

Audit firsthand de chaque paire : git log sur le fichier derive (la mutation est posterieure a la date d'attestation, et provient d'une PR deja mergee) + lecture de l'ecart de SHA de contenu. Aucun des 6 derives n'est une degradation : ce sont des attestations perimees par des travaux legitimes merges entre-temps.

Ce que cette PR ecrit

4 entrees d'audit nouvelles, une par paire, avec l'index alloue contre origin/main (le garde d'integrite refuse un index deja publie pour la meme paire) :

paire entree cote re-atteste
App-34 15-puzzle app-34-15-puzzle/0003-2026-11-04-myia-ai-01-CoursIA-2.yaml C# (content_csharp_sha = 8cad0271…)
App-4 JobShopScheduling app-4-jobshopscheduling/0011-2026-11-04-myia-ai-01-CoursIA-2.yaml Python (content_python_sha = 26472593…)
CSP-1 Fundamentals csp-1-fundamentals/0034-2026-11-04-myia-ai-01-CoursIA-2.yaml C# (content_csharp_sha = f1ade393…)
Sudoku-06 AIMA-CSP sudoku-06-aima-csp/0014-2026-11-04-myia-ai-01-CoursIA-2.yaml Python (content_python_sha = f2fcedc6…)

Chaque entree reprend les deux cotes de la paire (SHA de blob et SHA de contenu des deux jumeaux), comme le veut la forme append-only du registre : l'entree decrit l'etat de la paire entiere, pas le seul cote qui avait bouge.

Les 2 paires exclues, et pourquoi

  1. Search-03 Informed — deja traite par la lane myia-po-2028:CoursIA-2 : la PR Fix(search,#24558): les sorties d'exercice C# ne simulent plus une mesure #24640 ecrit l'entree search-03-informed/0028-2026-11-04-myia-po-2028.yaml avec python_sha: bde4cf18… et content_python_sha: 8b5a8e02…, c'est-a-dire exactement les valeurs courantes que j'aurais ecrites. Ecrire ma propre entree produirait deux entrees concurrentes pour la meme paire et un collision d'index au merge (garde twin-index-collision-gate). Je n'en ecris pas.

  2. Search-09 LinearProgramming — la PR Fix(search,#10921): titres H1 residuels alignes sur le zero-pad #12933 -- 6 carnets #24695 (lane myia-po-2023:CoursIA) modifie encore Search-09-LinearProgramming-CSharp.ipynb, qui est le cote derive de cette paire. Rebaseline maintenant produirait une attestation perimee a la minute de son merge (le SHA de blob du cote C# changerait), c'est-a-dire un drift re-apparu. Le rebaseline de cette paire se fait apres le merge de Fix(search,#10921): titres H1 residuels alignes sur le zero-pad #12933 -- 6 carnets #24695.

Ces deux exclusions sont des barrieres reelles (collision d'index, contenu en mouvement), pas des preferences de triage.

Verification

Mesure par paire sur le worktree (organe check_twin_parity.py --check --json --pair <nom>), apres le --update :

paire avant apres
App-34 15-puzzle DRIFT (C#, contenu) OK
App-4 JobShopScheduling DRIFT (Python, contenu) OK
CSP-1 Fundamentals DRIFT (C#, contenu) OK
Sudoku-06 AIMA-CSP DRIFT (Python, contenu) OK
Search-03 Informed DRIFT (Python, contenu) DRIFT — couvert par #24640
Search-09 LinearProgramming DRIFT (C#, contenu) DRIFT — rebaseline apres #24695

Les 4 paires rebaselinees passent en OK ; les 2 exclues gardent exactement l'etat de main (aucune degradation introduite par cette PR).

Le job Twin Parity Check de la CI refait le meme calcul en mode per_pair contre origin/main : il ne peut signaler que le drift INTRODUIT, et cette PR n'introduit aucun carnet.

Portee

🤖 Generated with Claude Code

Les 6 drifts de base mesures par l'artefact twin-parity-report (job
"Twin Parity Check", run 41865447308, base 49e4406) sont tous
DRIFT_PRE_EXISTING, unilateraux et de contenu : chaque cote derive a bouge
par une PR deja mergee, posterieure a la derniere attestation.

Cette PR re-atteste les 4 paires sans collision ni contenu en mouvement :
  app-34-15-puzzle      0003  (C# derive par bd5d53b, #24473)
  app-4-jobshopscheduling 0011 (Python derive par f3f0eb9, #23317)
  csp-1-fundamentals     0034 (C# derive par 9325ad8, #23344)
  sudoku-06-aima-csp    0014 (Python derive par a5fbf9c, #23656)

Deux paires sont volontairement exclues :
  search-03-informed     deja re-attestee par #24640 (entree 0028, memes
                         SHA) -- ecrire une seconde entree produirait une
                         collision d'index au merge ;
  search-09-linearprogramming  le cote C# derive est encore modifie par
                         #24695 -- une attestation ecrite maintenant serait
                         perimee a son merge.

--update joue en derniere operation (#8957) : aucune normalisation outillee
n'a ete appliquee apres. Aucun carnet n'est touche par ce diff.

See #22267
See #21822

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) labels Nov 4, 2026
@jsboige jsboige closed this Nov 4, 2026
@jsboige jsboige reopened this Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Avertissements consultatifs

Trivial-diff advisory (#15740, non bloquant).
genre ledger dans la famille META (docs/guard/ledger/readme/test) + diff de 24 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

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

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=6 cap=2)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=0 genre=6 cap=2)

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.

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-ai-01:CoursIA-2 a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #24518 (MED/ledger, merge a 2026-11-04T01:41:27Z), #24504 (MED/readme, merge a 2026-11-04T12:23:23Z), #24519 (MED/guard, merge a 2026-11-04T12:32:11Z), #24681 (MED/guard, merge a 2026-11-04T17:01:48Z), #24441 (DEEP/guard, merge a 2026-11-04T17:48:57Z), #24697 (MED/guard, merge a 2026-11-04T18:40:44Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

Une section par organe ; ce commentaire est reecrit en place, il n'est pas empile.

This branch has not been deployed

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

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant