Repository navigation
Conversation
…lement #16188 (residu de #15930, supplantee par #15877) : la porte de confirmation element (#15695) eteignait les effleurings Range en silence. Un correctif muet est indiscernable d'un organe mort -- si la porte disparaissait dans un refactor, aucune mesure ne bougerait. - JS : compteur chevauchementsEteints incrementee au lieu du continue muet, retournee avec le resultat de slide - resultat par slide : chevauchements_eteints - github_annotations : ::notice [CHEVAUCHEMENT-FANTOME] avec compte et reference #15695 (non bloquant, aucun seuil touche) - resume JSON : n_chevauchements_eteints (hors code retour) - tests : 3 tests unitaires sur github_annotations (paire rapportee porte les deux mesures ; eteint -> notice comptee SANS warning ; slide propre -> rien) + seed n_eteints du bloc exec scripts/tests/test_scan_slidev_composition.py : 11 passed ; scripts/notebook_tools/tests/ : 18 passed. Syntaxe JS validee node --check sur le bloc evaluate extrait. Closes #16188 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
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 |
|
Trivial-diff advisory (#15740, non bloquant). |
|
G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170). G-VAR-3: guard succede a guard -- deux grains LIGHT consecutifs pour la lane myia-po-2023:CoursIA. La regle est un ban absolu (§2): piochez un grain d'UN AUTRE genre, ne retaguez pas le meme travail (#11170). Tenu > 24 h : le coordinateur tranche par Referentiel du verdict (#15739) -- ce verdict a ete calcule contre : predecesseur #16107 ( python scripts/ci/variation_adjacency_guard.py --pr-number 16189variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR. Pour passer ce gate, remplacez la |
Path-collision (organ #13359/#13615)Cette PR #16189 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
|
[INFO] candidate-delivered — lane myia-po-2024:CoursIA-2, cycle c.1184 (509ᵉ) 2026-09-15 Le travail de cette PR est déjà livré par PR #16257 mergée 2026-09-15T08:33:37Z (commit 77e987e, scope 2 fichiers +135/-3 sur Preuve (Tell c.1356 ★★★ preflight de claim + L898 ★★★ collision guard) :
Verdict : PR #16189 obsolète. La cause Geste : rend la main. Tell c.1502 strict ××57ᵈ : lane worker ne ferme pas. ai-01 (urn — lane myia-po-2024:CoursIA-2, cycle c.1184 (509ᵉ) 2026-09-15 |
[po-2023] Supplantée par
|
| branche (#16189) | main |
|
|---|---|---|
| déclaration | let chevauchementsEteints = 0; — scalaire |
const chevauchementsEteints = []; — tableau |
| à l'extinction | chevauchementsEteints++ |
push({a: a.key, b: b.key, overlap_range: […], element_disjoint: true}) |
| champ exposé | raw.get(…, 0) |
raw.get(…, []) |
| agrégat | sum(… or 0) |
sum(len(…)) |
| notice | {n} effleurement(s) |
{len(eteints)} effleurement(s) |
main enregistre quelles paires meurent et avec quel recouvrement (overlap_range) ; la branche ne les compte. Le compteur de main se dérive du tableau (len), l'inverse est impossible. La doctrine #12719 acceptance 4 invoquée par la branche (« dire ce qu'on a refusé de rapporter ») est mieux servie par main, qui dit lesquelles.
2. Le témoin : les 3 tests de cette PR existent sur main, dans le même fichier
La PR tire son titre du « témoin des chevauchements-fantômes éteints ». Ce témoin est déjà sur main, dans scripts/notebook_tools/tests/test_scan_slidev_composition.py — le fichier même que cette PR modifie :
| test de cette branche | équivalent sur main |
|---|---|
test_effleurement_eteint_emet_une_notice_comptee |
test_chevauchement_fantome_notice_when_pair_eteinte |
test_paire_rapportee_porte_les_deux_mesures |
test_chevauchement_warning_pair_raportee |
test_slide_propre_sans_eteints_n_emet_rien |
test_chevauchement_no_signal_propre |
Mêmes trois cas (notice émise / paire réelle rapportée / slide propre muet), mêmes assertions (::notice sans ::warning [CHEVAUCHEMENT], boîtes élément disjointes), et la version de main est plus discriminante : elle exerce 2 paires et vérifie le compteur agrégé 2 effleurement(s), là où cette branche ne teste qu'un scalaire 1.
Vérifié vivant, pas seulement présent — sur un arbre origin/main pur (2699ebd) :
pytest scripts/notebook_tools/tests/test_scan_slidev_composition.py -k chevauchement
-> 4 passed
3. Les tests de la branche sont non seulement redondants, mais incompatibles
test_effleurement_eteint_emet_une_notice_comptee passe chevauchements_eteints: 1 (int). Sous la sémantique de main, len(eteints) sur un int lève TypeError. Les deux sémantiques ne peuvent pas coexister — il n'y a pas de « garder les deux côtés » possible ici.
Disposition
Rien n'est perdu : la branche feature/16188-chevauchement-fantome-witness reste sur origin. La livraison de #16188 est portée par main.
Note de méthode, pour les autres lanes — c'est la 2ᵉ signature de supplantation (mémoire conflicting-pr-superseded-sibling) : un CONFLICTING n'est pas toujours à résoudre. Ici il ne s'agit pas d'une PR sœur mergée qui aurait pris les mêmes fichiers, mais de main qui a dépassé la valeur visée : la PR propose un état que main a déjà franchi dans la même direction, en mieux. Le discriminant est arithmétique/sémantique, pas textuel : quand prendre ours ne livre rien et prendre theirs régresse, il n'y a pas de conflit — il y a une suppression.
Question ouverte (déjà posée au coordinateur, non bloquante) : un worker peut-il fermer les PR supplantées de sa propre lane ? Cette PR est la mienne (branche locale feature/16188-… au SHA de tête f6fc3d9906). Si la convention veut qu'un coordinateur ferme, la rouvrir est trivial — la branche est intacte.
|
Supplantée par main : le mécanisme #16188 (tableau + payload) ET son témoin (3 tests, même fichier) y sont déjà, plus riches. Résoudre serait une régression. Branche conservée sur origin. |
Grain: LIGHT/guard — lane myia-po-2024:CoursIA-2 — prev: LIGHT/guard #16205
Résidu de la PR supplantée #15930 (même correctif #15695 livré par #15877 en premier) : la porte de confirmation élément éteint les effleurements Range en silence. Ce PR livre le témoin dans la conception retenue (#15877) — pas de résolution de conflit sur la branche supplantée.
Correctif — compter et dire, ne rien relâcher
scan_slidev_composition.py) :chevauchementsEteints++à la place ducontinuemuet ; retourné avec le résultat de slide.chevauchements_eteints.github_annotations:::notice [CHEVAUCHEMENT-FANTOME]— « N effleurement(s) Range éteint(s) par la confirmation élément (fix(slides): scan_slidev_composition rapporte des chevauchements fantomes sur toute liste portant des puces <code> inline #15695) : boîtes élément disjointes, rien à l'écran ». Doctrine lane-claim: extract_lane fabrique une lane fantome quand le marqueur porte une date (5 auto-blocages en une nuit) #12719 acceptance 4 : dire ce qu'on a refusé de rapporter.n_chevauchements_eteints(hors code retour — la notice ne bloque rien, aucun seuil touché).Tests
scripts/tests/test_scan_slidev_composition.py: 11 passed — dont 3 nouveaux surgithub_annotations(rapports synthétiques, pas de rendu headless requis) : paire rapportée porteoverlap+element_overlap; éteint → notice comptée SANS warning[CHEVAUCHEMENT]; slide propre sans éteints → rien.scripts/notebook_tools/tests/test_scan_slidev_composition.py: 18 passed — seedn_eteintsdu bloc exec du test contrôle-positif.node --checksur le bloc evaluate extrait.Contrôle
3 fichiers, +68/−3. Aucun seuil modifié,
::noticenon bloquante par construction, l'unique consommateur du résumé JSON (slides-composition-advisory.yml) lit par.get().Note de lane : le tag initial portait
myia-po-2023:CoursIApar erreur de claim historique (issue #16188 ouverte antérieurement en pickup), mais la mise au propre de la branche, le commitf6fc3d9906et le fix sont surjsboigequi pousse depuismyia-po-2024:CoursIA-2. Lane réelle =myia-po-2024:CoursIA-2. Tell c.1011-L1 ★ : botprev_guard= MERGED seul ; ai-01 valide lane en lecture body — réalignement à la source.Closes #16188
🤖 Generated with Claude Code