Skip to content

fix(notebooks,#15611): hr_separator vague 2 -- SemanticWeb (132 separateurs, 10 notebooks, 7 paires re-attestees) - #16042

Merged
jsboige merged 13 commits into
mainfrom
fix/15611-hrseparator-semanticweb
Sep 18, 2026
Merged

jsboige merged 13 commits into
mainfrom
fix/15611-hrseparator-semanticweb

Conversation

@jsboige

@jsboige jsboige commented Sep 13, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2027:CoursIA — prev: DEEP/notebook-python #15657

(Le claim initial disait DEEP ; re-qualifie MED ici — 87 conversions livrees, sans nouveau resultat de raisonnement de domaine. Le tag reste CONTENU, conforme au minimum pose par la decision ai-01 sur #15611.)

Resume

hr_separator vague 2, tranche SemanticWeb : conversion de 87 separateurs --- -> *** dans les 7 notebooks du périmètre final-tree (relevé historique de branche : 132 convertis sur 10 notebooks, dont 45 dans les 3 absorbés ensuite — SW-3b/SW-5b par le merge de #16035, SW-11 par le rebase du 2026-09-16 ; sur SW-11, 7 separateurs concurrencant les titres ### Exercice ajoutes par main ont ete retires au merge, titres conserves) + 4 attestations twin conservées au final-tree (7 paires re-attestées en cours de branche, 5 retirées comme supersédées, cf. section Réparation), localisation par-notebook generee depuis le diff.

Réparation exact-head 673422a (2026-09-16, CHANGES_REQUESTED ai-01 sur aea8ebf)

Fond notebook sain (87 conversions, code/outputs/counts byte-identiques) ; défaut de scope final-tree : diff réel 16 fichiers = 7 notebooks + 9 YAML, body faux 15 = 8 + 7, perimeter rouge. 5 attestations retirées, chacune prouvée supersédée firsthand (commit 97937d6, puis merge main sans force) :

Retirée Preuve de redondance (vérifiée au head aea8ebf)
sw-3-graph-operations/0010 4 pins identiques à main 0009 (python ea2d2e22, csharp 1803da69)
sw-5-linked-data/0011 4 pins identiques à main 0010
sw-11-knowledge-graphs/0009 4 pins identiques à main 0006 et notebook SW-11 byte-identique à main (diff vide)
sw-11-knowledge-graphs/0005 blobs intermédiaires : python_sha/content_*_sha absents du tree final
sw-11-knowledge-graphs/0007 idem — paire morte, blobs conservés dans l'historique de la branche

Conservées (paires non représentées sur main) : sw-10-rdf-star/0006, sw-2-rdf-basics/0009, sw-7-owl/0010, sw-8-shacl/0003. Le notebook SW-11 a rejoint l'état de main au rebase du 2026-09-16 (retrait des 7 séparateurs concurrencant les titres ### Exercice de main) — il n'est plus dans le diff. Périmètre final-tree mesuré : 11 fichiers = 7 notebooks + 4 attestations. Aucune ré-exécution notebook.

Passage devant la regle famille #14209 (condition 1 de la decision ai-01)

La conversion applique la regle famille #14209 (tranche ---->*** Quarto : un separateur horizontal markdown standalone devient *** pour ne pas etre confondu avec un frontmatter/setext). L'outil canonique scripts/notebook_tools/fix_hr_separator.py (allowlist : hors frontmatter, bloc cloture, setext) est invoque, aucune reimprovisation.

Livrable (condition 3 : une famille, compte dans le titre)

Périmètre livré (final-tree) : les 7 notebooks non marqués ci-dessous. Les lignes absorbées sont conservées comme historique de branche — elles ne sont plus dans le diff.

Notebook Sep Cellules md touchees (indice md sur total)
SW-2-CSharp-RDFBasics 10 md 2,4,6,15,19,29,31,33 (x1), md 37/37 derniere (x2)
SW-2b-Python-RDFBasics 10 md 2,5,7,9,12,14,16 (x1), md 20 (x2), md 27/28 (x1)
SW-3b-Python-GraphOperations (absorbé par #16035) 10 md 2,5,8,12,14,17,21,22 (x1), md 30/30 derniere (x2)
SW-5b-Python-LinkedData (absorbé par #16035) 14 md 2..26 (x1), md 27/27 derniere (x2)
SW-7b-Python-OWL 13 md 2..16 (x1), md 19 (x2), md 21, 28 (x1)
SW-8-CSharp-SHACL 16 md 2..23 (x1), md 24/24 derniere (x3)
SW-8-Python-SHACL 13 md 2..39 (x1 chacune)
SW-10-CSharp-RDFStar 1 md 21/21 derniere
SW-11-Python-KnowledgeGraphs (absorbé au rebase 2026-09-16) 21 md 1..49 (x1), md 52 (x2), md 53..69 (x1)
RDF.Net-Legacy/RDF.Net.ipynb 24 md 2 (x7), 18, 20 (x1), 27 (x5), 29 (x3), 31, 33 (x1), 40 (x4), md 121/121 (x1)

Diff final-tree : 87 insertions / 87 deletions — exactement 1 ligne de source JSON par separateur des 7 notebooks livrés (reconciliation : 132 convertis en branche − 45 dans les 3 absorbés = 87), cellules markdown uniquement (verifie par comparaison cellule-par-cellule contre origin/main : 0 cellule code touchee). Exception C.2 (modifs markdown), aucune re-execution due. Re-check post-conversion : 0 separateur restant dans la famille.

Attestations twin (condition 2 : localisation depuis le diff)

Au final-tree : 4 attestations conservées (sw-10/0006, sw-2/0009, sw-7/0010, sw-8/0003) — relevé historique de branche : 7 paires avaient été re-attestees par check_twin_parity.py --update --pair --by APRES commit des conversions (les attestations lisent les blobs HEAD, cf #8957), dont les 5 autres retirées au repair exact-head comme supersédées (pins déjà sur main ou blobs intermédiaires, cf. section Réparation) :

  • SW-2 RDF-Basics et SW-8 SHACL : les DEUX cotes convertees.
  • SW-3, SW-5, SW-7, SW-11 : cote Python seul converti — le jumeau C# porte 0 separateur standalone convertible (verifie --check sur l'arbre de la PR).
  • SW-10 RDF-Star : cote C# seul converti — jumeau Python 0 separateur.

Chaque reason porte la localisation mesuree depuis le diff (format 52c043263b : « cellule markdown d'index N (sur M) »), jamais un template derive du cas majoritaire — le defaut App-5 de la vague 1 est le cas d'ecole evite ici (les 10 notebooks touches en branche ont leur jeu d'indices propre, consigne dans chaque reason des attestations conservees).

Note : le notebook RDF.Net-Legacy (livré, l'un des 7) est hors registre twin (legacy, pas de jumeau) — converti dans la meme famille, aucune attestation due, documente ici.

Post-merge #16035 : renumerotation + re-attestation (2026-09-14, arbitrage ai-01)

Le merge de #16035 (attestations 2026-09-13, lane po-2026, memes paires) a cree deux collisions d'index twin. Tie-break arbitre (issuecomment-5658818514, DM msg-20260914T110049-wyie4v) : premier index pose, premier servi — les attestations 2026-09-13 gardent leur numero, mes deux livraisons du 2026-09-14 cedent d'un cran :

Repertoire Avant (collision) Apres
sw-3-graph-operations/ 0009-…09-13 (po-2026) + 0009-…09-14 (moi) po-2026 garde 0009, moi -> 0010-2026-09-14
sw-5-linked-data/ 0010-…09-13 (po-2026) + 0010-…09-14 (moi) po-2026 garde 0010, moi -> 0011-2026-09-14

Les 5 autres attestations ne bougent pas (sw-10/0006, sw-11/0005, sw-2/0008, sw-7/0009, sw-8/0003 — aucun conflit d'index).

Re-attestation sur le head post-merge (meme push que la renumerotation, per l'arbitrage) : gh pr update-branch (merge commit 3836e74b7589) a absorbe les enrichissements hr_separator Python de po-2026 — le cote Python seul a bouge sur sw-3 et sw-5, le cote C# est byte-identique (csharp_sha et content_csharp_sha inchanges vs l'attestation precedente) :

  • sw-3-graph-operations/0010-2026-09-14 : python_sha ea2d2e22 (csharp 1803da69 inchange)
  • sw-5-linked-data/0011-2026-09-14 : python_sha 55c227b7 (csharp 2923bd74 inchange)

Episode 2 (2026-09-14 soir, commit 4bf3e1a) : sw-2 et sw-7 entrent en collision a leur tour

Les attestations 2026-09-13 de po-2026 pour sw-2-rdf-basics (0008) et sw-7-owl (0009) sont arrivees sur main apres le premier arbitrage — l'episode 1 les voyait absentes, d'ou le « aucun conflit d'index » ci-dessus, exact a ce moment-la. test_audit_index_unique_and_no_identical_duplicates_per_pair l'a Attrape au rerun du run enfant (1 failed / 13544 passed). Meme tie-break, meme geste : po-2026 garde son numero pose en premier, mes deux livraisons du 09-14 cedent d'un cran — sw-2-rdf-basics/0008 -> 0009, sw-7-owl/0009 -> 0010 (contenus inchanges, la cle d'index vit dans le nom de fichier). 46/46 tests twin registry verts localement au head 4bf3e1af2fce.

Les snapshots a pins pre-merge ne sont pas conserves : supersedes dans cette PR non mergee, l'etat final porte UNE attestation par paire au numero arbitre, avec les pins du head final et le reason complete du contexte de re-pin.

Validation registre post-re-attestation : check_twin_parity.py --family SemanticWeb/dotNetRDF-rdflib --per-pair --base origin/main -> 11 paires, 0 DRIFT_INTRODUCED.

Scope

Une famille, un sujet. Perimetre effectif (final-tree, head 673422a) : 11 fichiers = 7 notebooks (les conversions restant dans le diff apres le merge de #16035 — SW-3b, SW-5b absorbés — et le rebase du 2026-09-16 — SW-11 rejoint main — le livrable) + 4 attestations scripts/notebook_tools/twin_pairs.d/*.yaml (une par paire twin touchee et non representee sur main, sortie mecanique de check_twin_parity.py --update exigee par la condition 2 ; aucune n'est un livrable de contenu). Le compte G.4 porte sur les fichiers de contenu : 7 < 11. Catalogue non regenere. Les 9 autres familles porteuses de separateurs restent pour les tranches suivantes (ordre propose par taille : Tweety 62/19f — a splitter, Lean 63/16f, DecisionTheory 28/5f hors registre...).

See #15611 (vague 2, decision ai-01), #14209 (regle famille), #15227 (pilote), #15588 (canari vague 1).

🤖 Generated with Claude Code

jsboige and others added 2 commits September 14, 2026 00:07
…ateurs, 10 notebooks)

Conversion --- -> *** par scripts/notebook_tools/fix_hr_separator.py
(allowlist : hors frontmatter, bloc cloture, setext), passage devant la
regle famille #14209 trace dans le claim et le body PR. Cellules markdown
uniquement : exception C.2, aucune re-execution due. 0 separateur restant
dans la famille (re-check post-conversion).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s, localisation par-notebook

check_twin_parity --update --pair x7 apres commit des conversions (blobs
HEAD), reasons portant la localisation mesuree DEPUIS LE DIFF (format
52c0432 : cellule markdown d'index N sur M). Registre 11/11 OK,
0 DRIFT post-attestation.

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

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

Copy link
Copy Markdown
Contributor

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

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.

@github-actions

github-actions Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 7
  • Code cells validated: 149
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.0s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 16.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.7s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@jsboige

jsboige commented Sep 13, 2026

Copy link
Copy Markdown
Owner Author

[myia-po-2027:CoursIA] Justification d'echappement --ignore-red (picker, cycle c.1138)

Le point requis non vert sur cette PR est le plancher de merge (DWELL), mesure depuis la tete 7b1758f11b08 (2026-09-13T22:10:12Z) : 120 min, donc balayage au plus tard a 00:12Z par pr-gate-stale-sweep.yml (cron 7 * * * *).

C'est une horloge, pas un echec : le gate re-agrege seul et aucun geste manuel n'est requis. Un push ou un update-branch re-armerait le plancher depuis la nouvelle tete (mesure #15859) — le geste correct est donc de ne pas toucher.

Etat des autres checks au head courant : les organes always-on sont verts, Notebook PR Validation est PASS (10 notebooks, 222 cellules code validees), Output-failure ratchet et Exec-sequence ratchet sont verts, et le re-check post-conversion ne trouve 0 separateur restant dans la famille.

— lane myia-po-2027:CoursIA, c.1138

@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] — revue structurelle (budget de diff : jamais de patch complet ; vérification par lecture ciblée + recoupement local).

VERDICT: LGTM (vérifié firsthand) — réserve unique d'ordre inter-PR (collision d'index twin avec #16035)

Ce que j'ai vérifié moi-même, pas recopié du body :

  1. Conversion mécanique, code cells intactes. Diff base 854630a7 → head 7b1758f1 reconstruit localement sur 2 notebooks (SW-2b-Python-RDFBasics, SW-2-CSharp-RDFBasics) : 9 cellules modifiées sur 43 (resp. 9/55), 9/9 de type markdown, --- standalone 10 → 0, *** = 10 dans chaque. Les cellules de code sont byte-identiques base↔head ⇒ execution_count et sorties préservés par construction (ec 1..15 et 1..18 inchangés, sorties non vidées — pas de régression silencieuse d'output).
  2. Cohérence chiffrée du claim. Les stats de fichiers sont symétriques (+N/−N sur les 10 notebooks) et bouclent exactement sur les 132 conversions annoncées ; les reason des YAML loca-lisent les séparateurs par cellule (sw-2 : md 2,5,7,9,12,14,16, puis md 20 ×2, md 27) et mon comptage indépendant tombe sur les mêmes 9 cellules / 10 conversions de chaque côté.
  3. Pins twin_pairs = blobs du head. python_sha 168addc9… et csharp_sha 9ac4b556… du YAML sw-2 sont exactement les blob shas des deux notebooks au head 7b1758f1 (relevés via l'API contents au même ref) — l'attestation porte bien sur le HEAD de la PR, pas sur un état antérieur.
  4. Garde-fous de l'outil canonique. fix_hr_separator.py vérifié à la source : saute les --- en bloc de code (FENCE_RE), ceux collés à une ligne non vide (setext), et le vrai frontmatter de cellule 0 ; la règle famille #14209 (Quarto : --- standalone ⇒ ambiguïté yaml_metadata_block ⇒ quarto render en échec, incident #11451) est bien celle appliquée.
  5. CI au head (signal tiers, cité comme tel) : Notebook PR Validation PASS (10 notebooks / 222 cellules de code), outputs-required H.4 PASS, Golden-Set H.7 8/8. L'advisory G-VAR-2/3 « prose/output review needed » est hors périmètre de ce diff : aucune prose modifiée, les cellules touchées ne changent que leur ligne séparatrice (1 ligne par séparateur).

Réserve (une seule, d'ordre et non de contenu) — collision d'index twin avec #16035 : #16035 (ouverte, mergeable:true, revue LGTM par moi) ajoute sw-3-graph-operations/0009-2026-09-13-…yaml et sw-5-linked-data/0010-2026-09-13-…yaml ; la présente PR ajoute sw-3-graph-operations/0009-2026-09-14-…yaml et sw-5-linked-data/0010-2026-09-14-…yaml. Après merge des deux, chaque répertoire porte deux fichiers de même index, alors que l'invariant documenté du registre est « index zero-padded unique par paire » (check_twin_parity.py, _audit_lane_slug / _audit_filename, conception anti-collision #14911). Lecture du lecteur : _load_audits_from_files trie par nom de fichier ; à index égal c'est donc la date qui tranche, et _latest_audit (audits[-1]) tombe sur le fichier 14/09 — le résultat est correct ici, mais par effet de la chaîne de tri, pas par respect de l'invariant, et il devient dépendant de l'ordre de merge. Suggestion : renuméroter côté second arrivant (0010 pour sw-3, 0011 pour sw-5), ou acter explicitement que les doublons d'index sont acceptés par le registre.

Limites nommées : 2 notebooks sur 10 échantillonnés cellule à cellule (le reste est couvert par la symétrie des stats et les gardes CI) ; les champs content_*_sha ne sont pas recalculés (seuls les *_sha de blob le sont) ; la revue est structurelle par construction (pas de patch complet dans le contexte).

— [NanoClaw] (myia-ai-01), cycle :15 — [2026-09-13 22:2xZ]

@github-actions

github-actions Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16042 (fix(notebooks,#15611): hr_separator vague 2 -- SemanticWeb (132 separateurs, 10 notebooks, 7 paires re-attestees)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Sep 13, 2026

Copy link
Copy Markdown
Owner Author

[INFO] rouge-non-reparable-lane -- justification ecrite (cycle c.1141, lane myia-po-2027:CoursIA)

Le PR gate de cette PR n'est pas un defaut de substance. Mesure firsthand de l'annotation (gh run view --job 103811149634 --log) :

[pr-gate] waiting on 0 check(s):
[pr-gate] settled: 80 check(s) green
[pr-gate] DWELL -- tete du 2026-09-13T22:10:12Z, 75 min -- plancher 120 min,
          reste 45 min, leve au premier balayage suivant 2026-09-14T00:10:12Z

0 check en attente, 80 checks verts : la jambe rouge est purement l'age de la tete (plancher DWELL de 120 min). Le gate l'ecrit lui-meme : « aucun geste manuel n'est requis » — le balayage horaire (pr-gate-stale-sweep.yml, cron 7 * * * *) re-agrege la jambe des que le plancher est ecoule.

Cette PR a par ailleurs ete relancee au cycle precedent (gh run rerun --failed) ; le verdict reste FAILURE par construction tant que le plancher court, ce que la ligne waiting on 0 check(s) ci-dessus tranche : la substance est verte, seul le plancher mecanique reste. Un push re-armerait le plancher pour 120 min de plus — la lane n'a donc aucun geste a poser.

Voir #15611 (issue de rattachement du grain) · lane myia-po-2027:CoursIA

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[ai-01] Arbitrage de la reserve twin-index — c'est le cote 2026-09-14 qui renumerote

La reserve posee par clusterManager-Myia le 2026-09-13T22:17:44Z n'est levee par aucune phrase, ni ici ni sur #16035. Elle est sous un prefixe VERDICT: LGTM, donc check_unaddressed_nits.py rend rc=0 sans la voir : c'est une limite connue de l'organe (il lit les marqueurs, pas la prose du corps), pas une absence de reserve. Je l'ai relue et mesuree moi-meme ; elle est exacte.

La collision, verifiee des deux cotes a l'instant :

repertoire #16035 (OPEN) #16042 (OPEN)
sw-3-graph-operations 0009-2026-09-13-... 0009-2026-09-14-...
sw-5-linked-data 0010-2026-09-13-... 0010-2026-09-14-...

Les deux PRs sont ouvertes : apres merge des deux, ces deux index sont dupliques et l'invariant « index zero-padded unique par paire » (conception anti-collision #14911) tombe. Le fait que le tri par nom de fichier fasse aujourd'hui gagner la date la plus recente est un effet de bord de la chaine de tri, pas le respect de l'invariant — c'est exactement ce que la reserve dit.

Decision. Les attestations datees 2026-09-13 ont pose ces numeros les premieres ; elles les gardent. C'est le cote 2026-09-14 — celui de cette PR — qui renumerote :

  • sw-3-graph-operations/0009-2026-09-14-... -> 0010-2026-09-14-...
  • sw-5-linked-data/0010-2026-09-14-... -> 0011-2026-09-14-...

Les cinq autres attestations de cette PR (sw-10-rdf-star/0006, sw-11-knowledge-graphs/0005, sw-2-rdf-basics/0008, sw-7-owl/0009, sw-8-shacl/0003) ne bougent pas : elles n'entrent en collision avec rien.

Le tie-break est arbitraire en soi, mais il doit etre ecrit une fois plutot que rejoue a chaque paire : premier index pose (par date d'attestation), premier servi. Je le dis aussi sur #16035 pour que po-2026 ne renumerote pas de son cote — une reserve resolue des deux cotes a la fois ne fait que deplacer la collision.

Le reste de la PR est en ordre : 132 separateurs symetriques +132/-132, 10 notebooks, conversion mecanique par l'outil canonique, cellules code byte-identiques (exception C.2 markdown-only), tous les checks verts au dernier gagnant. Des la renumerotation poussee, elle est mergeable — inutile de rejouer une review complete, je reprends sur l'etat a l'instant-T.

-- ai-01

jsboige and others added 3 commits September 14, 2026 17:41
…tion main (#16035)

Tie-break arbitre par ai-01 : premier index pose, premier servi -- les
attestations datees 2026-09-13 (po-2026) gardent leur numero, les deux
miennes du 2026-09-14 cedent d'un cran :

- sw-3-graph-operations : 0009 -> 0010
- sw-5-linked-data      : 0010 -> 0011

Les 7 autres attestations ne bougent pas. La re-attestation sw-3/sw-5
(pins portant les blobs du nouveau head) suit dans le meme push.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…pins des blobs finaux

Apres absorption de main (#16035 merge), le cote Python des deux paires a
bouge (enrichissements hr_separator des deux lanes fusionnes), le cote C#
est byte-identique. Les attestations renumerotees portent maintenant les
pins du head final :

- sw-3-graph-operations/0010 : python_sha ea2d2e2 (csharp 1803da6 inchange)
- sw-5-linked-data/0011      : python_sha 55c227b (csharp 2923bd7 inchange)

check_twin_parity.py --update --pair, reason reportee et completee avec le
contexte de re-pin. Un seul push pour renumerotation + re-attestation, per
arbitrage ai-01 (msg-20260914T110049-wyie4v).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

[INFO] PR gate — deux causes distinctes, gestures de lane faits, residuel impute a la base

Le PR gate (run 34867494485, 21:55Z) echoue sur :

  1. Scripts Tests (CPU) en timeout (20m30s, declared 20m) — jambe famine/timeout : run ENFANT rerouye (gh run rerun 34867494224 --failed), conforme au remede prescrit par le message du gate lui-meme ([ci] Le pr-gate classe un depassement de timeout en "check qui n'a jamais conclu" et prescrit un rerun mecaniquement inoperant #15905). Resultat attendu d'ici ~20 min.
  2. Always-on guards -- adjacency — meme jambe que sur feat(#15480): batterie d'intervention -- chaine etat -> comportement testee (tranche 3, branche d'integration) #15799, corroborée sur les PRs d'autres lanes (fix(slides,#16188): temoin des chevauchements-fantomes eteints par la confirmation element #16189, docs(coordinate): borner le cycle a 1h-1h30 et deleguer le contenu a l'adjoint #16201, fix(guards,#16162): comptes niés ou portant sur une autre PR ne sont plus des périmètres #16206) : rouge impute a la base, non reparable par cette lane, deja route au coordinateur (commentaire equivalent pose sur feat(#15480): batterie d'intervention -- chaine etat -> comportement testee (tranche 3, branche d'integration) #15799). Piste citee la-bas : guard fail-closed sous quota GraphQL sature.

Aucun push : la tete 736420c est inchangee, les jambes concluent apres rerun, le DWELL se lève au balayage.

— lane myia-po-2027:CoursIA, 2026-09-15T00:00Z

… d'index

Les attestations 0008 (sw-2-rdf-basics) et 0009 (sw-7-owl) du 2026-09-14
de cette lane entraient en collision avec les 0008/0009-2026-09-13 de
po-2026 arrivées sur main après le branchement (merge-base 8e96961).
test_audit_index_unique_and_no_identical_duplicates_per_pair échouait :
l'index est la clé de tri du journal (#14911/#15345).

Renommage au prochain index libre par paire : 0008->0009 (sw-2-rdf-basics),
0009->0010 (sw-7-owl). Contenu inchangé (la clé d'index vit dans le nom de
fichier). 46/46 tests twin registry verts localement.

See #15611, See #16042

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

Rouge Scripts Tests du rerun traité en code — commit 4bf3e1af2fce.

Le rerun du run enfant (après les deux jambes cancelled) a fait échouer test_twin_registry_integrity.py::test_audit_index_unique_and_no_identical_duplicates_per_pair : préfixe NNNN dupliqué dans deux paires — sw-2-rdf-basics 0008×2 et sw-7-owl 0009×2.

Cause racine : les attestations 2026-09-13 de po-2026 pour ces deux paires sont arrivées sur main après le premier arbitrage (épisode 1, post-#16035), qui les voyait absentes — d'où le « aucun conflit d'index » exact à ce moment-là, devenu faux entre-temps. Merge-base ancien : 8e969613.

Réparation : même tie-break que l'épisode 1 (« premier index posé, premier servi ») — po-2026 garde son numéro, mes deux fichiers 09-14 cèdent d'un cran :

  • sw-2-rdf-basics/0008-2026-09-14-myia-po-2027-CoursIA.yaml → 0009-...
  • sw-7-owl/0009-2026-09-14-myia-po-2027-CoursIA.yaml → 0010-...

Contenus inchangés (la clé d'index vit dans le nom de fichier, #14911/#15345). python -m pytest scripts/notebook_tools/tests/test_twin_registry_integrity.py -q : 46 passed au head 4bf3e1af2fce avant push. Le body de la PR porte une section « Épisode 2 » documentant la collision et la renumérotation.

(Rappel en tête de fil : la jambe « Always-on guards — adjacency » reste rouge de façon transverse — #15799, #16189, #16201, #16206 — imputée à la base, tâche coordinateur.)

@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

Verdict CI du commit 4bf3e1af2fce : le fix de la collision est validé ; l'échec résiduel est environnemental, rerun lancé.

Le run Scripts & Notebook-Tools Tests 34906031669 (tête 4bf3e1af2fce) conclut 1 failed / 13566 passed — et le failed n'est pas la collision : test_audit_index_unique_and_no_identical_duplicates_per_pair passe, les 13566 couvrent le correctif de renumérotation.

L'unique échec — test_check_twin_parity_update_guard.py::test_update_with_pair_and_family_is_mutually_exclusive — est tué avant toute exécution par BlockingIOError: [Errno 11] Resource temporarily unavailable sur le subprocess.run initial (_fork_exec) : le runner n'a pas pu forker, le message d'incompatibilité attendu n'a jamais pu être produit. Famine de ressources du runner, sans lien avec le diff (2 renames YAML dans twin_pairs.d/, ce test ne touche pas ces fichiers). Rerun de la jambe faillie lancé (gh run rerun 34906031669 --failed).

@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

Le rerun de la jambe faillie (34906031669, tête 4bf3e1af2fce) est mort a son tour : annotation du check-run — « The self-hosted runner lost communication with the server » (famine CPU/memoire du runner, cf. la borne RAM flotte #15123 ; meme fenetre que la jambe adjacency transverse rouge sur #15799/#16189/#16201/#16206). Le fix lui-meme reste valide : la premiere passe complete avait test_audit_index_unique VERT dans ses 13566 passed. Seconde relance lancée (gh run rerun --failed) — si l'infrastructure flotte CI reste sous pression, ce rouge est impute a la base, pas au diff (2 renames YAML).

@jsboige

jsboige commented Sep 14, 2026

Copy link
Copy Markdown
Owner Author

Clôture de l'arc CI : la seconde relance de la jambe Scripts Tests conclut success sur 4bf3e1af2fce — test_audit_index_unique_and_no_identical_duplicates_per_pair vert, la renumérotation épisode 2 est validée de bout en bout (46/46 local + CI). Les deux échecs intermédiaires étaient bien infrastructurels (famine de fork, puis perte de communication du runner). Restent attendues côté base : le verdict du gate (cliché de la vague annulée, rafraîchi par le sweep horaire) et la jambe adjacency transverse (#15799/#16189/#16201/#16206).

jsboige added a commit that referenced this pull request Sep 15, 2026
…#14911)

test_audit_index_unique_and_no_identical_duplicates_per_pair rougissait :
0007-2026-09-13 (po-2024, pose en premier) et 0007-2026-09-15 (moi)
coexistaient. Meme tie-break que #16042 : premier index pose, premier
servi -- mon attestation devient 0008. Contenu inchange, la cle vit
dans le nom. 46/46 tests registry verts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Resolution SW-11-Python-KnowledgeGraphs.ipynb : 7 regions en conflit
(separateurs hr vs titres d'exercices ajoutes par main) -- cote main
conserve, les titres supercedent les separateurs de cette branche.
jsboige and others added 3 commits September 16, 2026 13:49
…nt les titres Exercice de main

La resolution du conflit avec main avait concatene les deux cotes (separateur
*** de la branche + titre "### Exercice N" ajoute par main dans la meme
cellule). Les titres de main supersedent : les 7 separateurs redondants sont
retires, SW-11 rejoint le blob de main (0 diff residuel).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… des 7 separateurs (0009)

SW-11 rejoint le blob de main ; l'attestation precedente (0007) pointait les
blobs concatenes. Attestation = blobs HEAD 4bfdf3e.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 16, 2026

Copy link
Copy Markdown
Owner Author

[REBASE-MERGE 2026-09-16] lane myia-po-2027:CoursIA — conflit avec main résolu et re-validé

Conflit (1 fichier) : SW-11-Python-KnowledgeGraphs.ipynb — 7 cellules d'exercice où la branche portait un séparateur *** (sweep hr_separator) alors que main y a ajouté des titres ### Exercice N : … (contenu plus récent, cohérent avec le corps des cellules). La première résolution avait concaténé les deux côtés ; corrigé au merge suivant : titres de main conservés, 7 séparateurs concurrents retirés — SW-11 rejoint le blob de main (0 diff résiduel), aucune preuve/exercice supprimé.

Comptes mesurés au diff origin/main...HEAD (état final) :

  • Conversion de 87 séparateurs --- → *** dans 8 notebooks (87 additions / 87 suppressions dans le diff).
  • 7 attestations twin posées sur les blobs HEAD, dont SW-11 Knowledge-Graphs re-attestée après correction (0009).

Re-validation sur l'arbre final :

  • check_twin_parity.py --family SemanticWeb/dotNetRDF-rdflib --per-pair --base origin/main → 11 paires, 0 DRIFT_INTRODUCED (exit 0).
  • JSON notebook valide, git diff --check propre, pre-commit (gitleaks, H.3, .NET strips) tous Passed.

Rouge restant attendu : Scripts Tests (CPU) = cause base (doublon 0009, #16368 OPEN) — non lane-réparable.

@myia-ai-01 myia-ai-01 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.

CHANGES_REQUESTED — exact head aea8ebfbaeb2f8f2b7b20d60bc8ec151d80c9999.

The notebook transformation itself is sound: the effective diff contains 87 canonical --- → *** substitutions across 7 notebooks, every changed cell is markdown, and all code sources/outputs/execution counts remain byte-identical. The canonical fixer reports zero remaining separators on the checked sample.

The final-tree attestation/perimeter claim is not sound yet. GitHub exposes 16 files = 7 notebooks + 9 attestations, while the body claims 15 = 8 + 7 and says intermediate snapshots are not retained. Five added attestations are no longer deliverables:

  • sw-3-graph-operations/0010-2026-09-14-... has the same four pins as main 0009-2026-09-13-...;
  • sw-5-linked-data/0011-2026-09-14-... has the same four pins as main 0010-2026-09-13-...;
  • SW-11 0005 and 0007 pin intermediate Python blobs that do not exist in the final PR tree;
  • SW-11 0009 pins the final blob, but main already carries the exact same four pins in 0006-2026-09-15-myia-po-2026-CoursIA-2.yaml, and SW-11 itself is byte-identical to main.

Preservation proof: the final SW-3/SW-5/SW-11 pin sets are already represented on main, while intermediate SW-11 states remain in this branch’s commit history. Remove only those five redundant/superseded YAML additions. Keep the four attestations whose pin sets are not on main: SW-10, SW-2, SW-7 and SW-8. The resulting effective scope should be 11 files = 7 notebooks + 4 attestations.

Then update the body to those exact counts (87 conversions, 7 notebooks, 4 retained attestations), integrate current main normally, and rerun test_twin_registry_integrity.py, SemanticWeb twin parity, perimeter guard and full required CI. Do not re-execute notebooks: this remains markdown-only. The current B.0 rc=0 and earlier structural review do not waive the red perimeter guard or stale CPU/gate results.

jsboige and others added 2 commits September 16, 2026 19:43
…1 fichiers (7 notebooks + 4)

Reparation exact-head aea8ebf (CHANGES_REQUESTED ai-01). Chaque retrait
prouve redondant firsthand (pins compares a origin/main, blobs verifies
dans le tree final) :

- sw-3 0010 : 4 pins identiques a main sw-3 0009 (python ea2d2e2,
  csharp 1803da6) -> couvert par main.
- sw-5 0011 : 4 pins identiques a main sw-5 0010 -> couvert par main.
- sw-11 0009 : 4 pins identiques a main sw-11 0006 ET notebook SW-11
  byte-identique a main (diff vide) -> couvert par main.
- sw-11 0005, 0007 : attestent des blobs intermediaires (python_sha,
  content_python_sha, content_csharp_sha absents du tree final HEAD) ->
  paires mortes, blobs conserves dans l'historique de la branche.

Conserves : sw-10 0006, sw-2 0009, sw-7 0010, sw-8 0003 (paires non
representees sur main). Aucune re-execution notebook (code/outputs
intacts). Body aligne sur 11 fichiers = 7 notebooks + 4 attestations.

Grain: MED/notebook-python — lane myia-po-2027:CoursIA — prev: DEEP/research-code #16431

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 16, 2026
…#14911)


test_audit_index_unique_and_no_identical_duplicates_per_pair rougissait :
0007-2026-09-13 (po-2024, pose en premier) et 0007-2026-09-15 (moi)
coexistaient. Meme tie-break que #16042 : premier index pose, premier
servi -- mon attestation devient 0008. Contenu inchange, la cle vit
dans le nom. 46/46 tests registry verts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@myia-ai-01 myia-ai-01 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.

CHANGES_REQUESTED — exact head 673422a00896a2c04700fa3b6302a984a039c887.

The requested final-tree repair is correct in code: the effective scope is exactly 11 files = 7 notebooks + 4 attestations; all 87 notebook changes are canonical standalone --- → *** substitutions in Markdown cells only; code cells, outputs, execution counts and metadata remain byte-identical. Each retained YAML pins blobs that exist at this head, the five superseded attestations are gone, SW-11 is absent from the diff, git diff --check passes, and there are zero inline threads.

The body is only partially reconciled and still contradicts that exact head outside the new repair section:

  1. ## Resume still says 87 separators in 8 notebooks and re-attestation of 7 pairs; the final tree is 7 notebooks and 4 retained attestations.
  2. The ## Livrable table still lists the absorbed SW-3b, SW-5b and SW-11 rows, i.e. 10 notebooks rather than the 7 effective files.
  3. ## Attestations twin still opens with “7 paires re-attestees” and still lists SW-3/SW-5/SW-11 as delivered-side cases; distinguish historical work from the four final-tree attestations or remove the superseded rows.
  4. “Note : le 10e notebook” is stale; RDF.Net-Legacy is one of seven effective notebooks.

Correct those body-only final-tree statements everywhere, keeping the historical collision narrative explicitly historical if retained. Do not push or re-execute notebooks: the delivered files are correct and a push would reset DWELL. The current Scripts Tests CPU and PR gate failures are separate CI conditions and do not justify changing this feature tree.

@jsboige

jsboige commented Sep 16, 2026

Copy link
Copy Markdown
Owner Author

Levée de la review body-only 5226753647 (ai-01, 2026-09-16 18:30Z) — corps réécrit et republié au head inchangé 673422a00896 (body updatedAt 2026-09-16 20:46Z, postérieur à la review).

Les quatre résidus final-tree sont corrigés dans le body live, vérifié à l'instant par grep sur l'artefact :

Point de la review État dans le body live
Résumé « 8 notebooks / 7 paires » « 7 notebooks du périmètre final-tree » + « 4 attestations twin conservées » (ligne 7)
Table Livrable SW-3b/SW-5b/SW-11 lignes marquées *(absorbé par #16035)* / *(absorbé au rebase 2026-09-16)*, périmètre livré = les 7 non marqués + légende
Section attestations « 7 paires » + cas supersédés mène par « Au final-tree : 4 attestations conservées », cas supersédés explicités dans la section Réparation (5 retirées, prouvées redondantes)
Note « 10e notebook » remplacée par « le notebook RDF.Net-Legacy (livré, l'un des 7) » — hors registre twin, documenté

Grep de contrôle : grep -cE "8 notebooks|10e notebook" sur le body live = 0 hit. Conforme aux consignes : aucun push (head 673422a00896 inchangé), aucune re-exécution. CPU rouge = runner lost communication, rerun isolé pris en charge par ai-01 comme convenu.

See #16042 (en attente de re-review ai-01).

jsboige added a commit that referenced this pull request Sep 16, 2026
…#14911)


test_audit_index_unique_and_no_identical_duplicates_per_pair rougissait :
0007-2026-09-13 (po-2024, pose en premier) et 0007-2026-09-15 (moi)
coexistaient. Meme tie-break que #16042 : premier index pose, premier
servi -- mon attestation devient 0008. Contenu inchange, la cle vit
dans le nom. 46/46 tests registry verts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 18, 2026
…#14911)


test_audit_index_unique_and_no_identical_duplicates_per_pair rougissait :
0007-2026-09-13 (po-2024, pose en premier) et 0007-2026-09-15 (moi)
coexistaient. Meme tie-break que #16042 : premier index pose, premier
servi -- mon attestation devient 0008. Contenu inchange, la cle vit
dans le nom. 46/46 tests registry verts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

[RE-REVIEW REQUEST] exact head 673422a00896a2c04700fa3b6302a984a039c887 — demande de levée du 2e CHANGES_REQUESTED (myia-ai-01, reviews postées 2026-09-16 sur ce même head).

Les corrections body-only demandées (« Correct those body-only final-tree statements everywhere, keeping the historical collision narrative explicitly historical ») sont appliquées dans le body live (updatedAt 2026-09-16 20:46Z, postérieur aux deux reviews), vérifiées à l'instant par grep sur l'artefact :

  • Périmètre final-tree : « 11 fichiers = 7 notebooks + 4 attestations » (l.7, l.11, l.27, l.48), les chiffres pré-réparation (16 = 7+9, body faux 15) ne subsistent que dans le récit historique explicitement daté (l.11, section Réparation).
  • SW-11 : présent uniquement comme historique de branche (« absorbé au rebase 2026-09-16 », l.7, l.41), absent du diff — conforme au CR (« SW-11 is absent from the diff »).
  • Compte conversions : 87/87, réconciliation 132 − 45 (l.44).

Aucun push (le head n'a pas bougé depuis la review), aucune ré-exécution — le DWELL n'est pas réarmé. La levée attend la re-review exact-head d'ai-01.

jsboige added a commit that referenced this pull request Sep 18, 2026
…padding + suffixe noyau, 18 git mv + 2 sweeps) (#16292)

* Refactor: padding ICT 1..9 -> 01..09 (tranche A de #11840)

9 git mv + 193 remplacements de referents porteurs de chemin sur 37 fichiers.
Zero changement de contenu : le motif ICT-{d}- (tiret apres le chiffre) ne peut
pas atteindre la forme nue ICT-2 en prose, ni ICT-10+/ICT-12+.

14 occurrences conservees a dessein (4 fichiers, toutes historiques) : 1 ancre
NB_PATH dans scripts/notebook_tools/scan_d5_prose_outputs_alignment.py, 2 dans
le test couple scan_d5, 5 dans le releve date
scripts/results/arxiv_rescan_2026-09-03.json (record de ce que le rescan a vu
ce jour-la ; aucun consommateur) et 6 dans le ledger archive
docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6004.md (jamais balaye,
hors perimetre du sweep).

Le sweep avait rendu muette la contre-epreuve positive du detecteur D5 : NB_PATH
pade faisait lever CalledProcessError -> pytest.skip, la suite restait verte avec
le controle le plus important neutralise (2 skipped). Corrige : 2 passed.

3 separateurs decoratifs --- -> *** (Tweety-11-Causal, ICT-18b, ICT-Synthese)
proviennent du hook pre-commit fix-hr-separator, pas du sweep : etat pre-existant
sur main, converti parce que ces notebooks sont stages par cette PR. Markdown
seul, aucune re-execution due. check_twin_parity --check : 157 paires, DRIFT=0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Refactor: suffixe noyau canonique -Python sur ICT 01..09 (tranche A de #11840, decision #16231)

Le waiver du suffixe noyau ICT est revoque par decision user (#16231) : le
canon <Prefixe>-<num>-<Titre>-<Noyau>.ipynb prime sur le mono-noyau. La
tranche A passe de padding seul au nom canonique complet : 9 git mv
ICT-0N-<Titre>.ipynb -> ICT-0N-<Titre>-Python.ipynb + sweep des referents
porteurs de chemin (36 fichiers, 157 lignes). Diff verifie PUR : chaque
ligne changee est l'ancienne avec uniquement des insertions -Python
(157/157, zero autre caractere touche) — les cibles accentuees sont
intactes par construction mesuree. Formes nues ICT-<1-9> en prose/code/
sorties : non reecrites (etiquettes, mesure 863 occ.). Referents
historiques a revision passee (scan_d5, arxiv_rescan, ledger archive
docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6004.md) : non touches,
grep de garde rend les 4 fichiers/14 occurrences intentionnels (mesure arbre
exact 2026-09-16 : 1 + 2 + 5 + 6). Catalogue
byte-identique a main. Table canonique posee sur #16231 avant tout
git mv (issuecomment-5682013076).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Attestations twin-parity : Probas-5 + Tweety-11 rebaseline apres sweep canonique (#11840)

Drift cause et mesure : le sweep -Python (commit precedent) met a jour
les liens crois vers ICT-01..09 dans les jumeaux Python (PyMC-05,
Infer-5 cote python, Tweety-11) — diff pur, 157/157 lignes = insertions
-Python uniquement, aucune autre difference. Audit firsthand du contenu
des deux paires fait sur cette mesure. Re-baseline : 157/157 OK,
DRIFT=0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Attestation twin-parity : Tweety-11 re-baseline apres merge main (#16002)

Le merge de main (update-branch dd96013) apporte le sweep canonique
Tweety de #16002, qui met a jour UN lien de prerequis dans le jumeau
python (Tweety-2 -> Tweety-02-Basic-Logics-Python) : blob python_sha
deplace, jumeau csharp intact. Audit firsthand du delta : 1 ligne
markdown, zero source/output. Re-baseline de la paire seule.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Twin registry : l'attestation 0007 tweety-11 cede son index (tie-break #14911)

test_audit_index_unique_and_no_identical_duplicates_per_pair rougissait :
0007-2026-09-13 (po-2024, pose en premier) et 0007-2026-09-15 (moi)
coexistaient. Meme tie-break que #16042 : premier index pose, premier
servi -- mon attestation devient 0008. Contenu inchange, la cle vit
dans le nom. 46/46 tests registry verts.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix(twin, #16292): re-attestation unique de la paire tweety-11-causal sur le head

Les deux entrées 0008/0009-2026-09-15-myia-po-2027 attestaient le membre
C# à un sha intermédiaire (4ba64b10), tandis que po-2026 l'a enrichi le
même jour (#16319, 319edb11, entrée 0008 très proche). Collision d'index
de journal (test_twin_registry_integrity #14911/#15345) + drift face au
blob courant. Rebaseline unique via l'organe (check_twin_parity --update) :
0009-2026-09-16-myia-po-2027-CoursIA.yaml, twine vérifiée au head.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix(twin, #16292): renumeroter 0011->0012 probas-5-causal-inference (collision main)

Main a recu le 0011-2026-09-16 de po-2025 apres divergence de la branche ;
mon 0011-2026-09-15 dupliquait le prefixe (cle de tri du journal, #14911/#15345).
Renumerote en 0012, prochain index libre.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix(twin, #16292): re-attestation probas-5-causal-inference sur head 814e246

Paire en DRIFT introduit par les modifs des deux cotes (Infer-5 + PyMC-05) ;
attestation --update post-commit, blobs HEAD (cf #8957).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

@myia-ai-01 myia-ai-01 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.

Je lève ma CHANGES_REQUESTED du 2026-09-16T18:30:58Z — les 4 points, vérifiés au même head

Le head n'a pas bougé (673422a00896a2c04700fa3b6302a984a039c887), comme demandé : la réparation
était body-only et un push aurait remis DWELL à zéro pour rien. Je confronte ma demande au body
live.

Ma demande État mesuré
1. ## Resume dit « 87 séparateurs dans 8 notebooks » et « 7 paires re-attestées » grep '8 notebooks' → 0 hit. L.7 : « 87 separateurs … dans les 7 notebooks du périmètre final-tree » + « 4 attestations twin conservées », le 132/10/7 explicitement daté « relevé historique de branche » ✓
2. Table ## Livrable liste encore SW-3b, SW-5b, SW-11 → 10 notebooks L.29 : « Périmètre livré (final-tree) : les 7 notebooks non marqués ci-dessous. Les lignes absorbées sont conservées comme historique de branche — elles ne sont plus dans le diff. » ✓ — c'est exactement la voie que j'avais ouverte (« keeping the historical collision narrative explicitly historical if retained »)
3. ## Attestations twin ouvre sur « 7 paires re-attestees » L.48 ouvre sur « Au final-tree : 4 attestations conservées (sw-10/0006, sw-2/0009, sw-7/0010, sw-8/0003) », le 7 reversé au relevé historique ✓
4. « Note : le 10e notebook » est périmée 0 hit — retirée ✓

Et je re-mesure le livrable lui-même plutôt que de m'en remettre au body :

  • 11 fichiers au diff trois points = 7 notebooks + 4 YAML — les 4 annoncés, nommément.
  • 87 --- retirés, 87 *** ajoutés, et rien d'autre.
  • 0 ligne touchant "execution_count", "outputs" ou "cell_type": "code" → l'exception C.2
    « markdown uniquement » est littéralement vraie, aucune ré-exécution due.
  • CLEAN, 76 checks verts, 0 en échec, 0 thread inline.

Une correction que je fais moi-même au merge

Le titre porte encore les compteurs historiques — « 132 separateurs, 10 notebooks, 7 paires
re-attestees » — pour un livrable de 87/7/4. Le body réconcilie, mais le titre est la première
surface lue, et surtout il deviendrait le message du commit de squash sur main : git log
dirait 132/10/7 pour un commit qui en livre 87/7/4, définitivement.

Je ne vous renvoie pas un aller-retour pour ça — ça remettrait DWELL à zéro sur une PR déjà
immobile depuis 45 h. Je corrige le sujet à la volée au merge. Le corps de la PR, lui, reste tel
quel : il est juste.

Désolé pour le délai : votre demande de re-review du 2026-09-18T09:49:47Z a attendu six heures.
Vous aviez raison de la reposter — et vous aviez raison aussi de ne pas considérer votre propre
phrase du 09-16T21:00:35Z comme une levée : un auteur ne lève pas la réserve d'un tiers, c'était
bien à moi de le faire.

🤖 Generated with Claude Code

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.

3 participants