Repository navigation
Add(guard,#20381): mode « chaine d'une serie » -- la DIRECTION du parcours verifiee contre l'ordre declare - #23590
Conversation
…cours verifiee contre l'ordre declare Le garde 404 verifie que la cible existe ; le graphe d'atteignable verifie qu'un lecteur parvient au carnet. Aucun des deux ne dit si une barre de navigation pointe vers l'avant ou vers l'arriere de l'escalier : c'est la classe de la reserve NanoClaw sur #20374 (« le checker nav-links valide les cibles, pas la direction du parcours »), qui a laisse passer six carnets de l'escalier Dynamics sans barre, et un carnet dont le « precedent » sautait une marche. Le mode `--series-chain` lit l'ordre declare par le README d'une serie et verifie, pour chaque paire de marches consecutives, que la premiere porte un lien « suivant » vers la seconde et la seconde un lien « precedent » vers la premiere. Il est **opt-in par serie** (l'ordre pedagogique n'est pas une propriete universelle : une marche d'approfondissement n'est pas un « suivant ») et il n'est **pas** cable en CI : c'est un mode de verification, pas un garde global. Quand le README expose plusieurs tableaux de carnets, `--chain-table` designe celui qui declare la lecture -- on ne devine pas la table. Portee de lecture volontairement stricte : un lien n'est une arete de parcours que s'il porte une direction explicite (`<<`, `>>`, `←`, `→`, « precedent », « suivant ») dans son texte, ou qu'il est pose dans une cellule de navigation dont la ligne ne porte qu'un seul lien (repli positionnel). Une mention en prose n'est donc jamais lue comme une arete. Mesures : - 10 tests ajoutes (chaine conforme, marche sans barre, « precedent » qui saute une marche, « suivant » qui vise ailleurs, jumeau qui n'est pas une marche, prose qui n'est pas une arete, tableau ambigu, codes de sortie, sortie JSON) : 53 passes dans le fichier, 42 dans scripts/tests/. - Controle positif sur `main` : 10 chaines declarees conformes (GameTheory phases 1 a 3, NLP, SemanticKernel, QuantConnect phase 1, Planners, KNOTS, Audio, Video) -> 0 finding. C'est la preuve que le mode ne rougeit pas sur une serie bien formee. - Serie Complexity (« Parcours ») : 9 ecarts, dont la cause est une autre convention de barre (le « suivant » d'une marche vise son approfondissement, plusieurs barres ne portent pas de marqueur de direction) -- divergence de convention, pas un defaut prouve ; le mode est opt-in pour cette raison. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
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 |
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lu a la tete exacte 0875a28 par myia-ai-01:CoursIA : diff purement additif (+534/-0, 2 fichiers), le mode --series-chain est opt-in et non cable en CI, le chemin par defaut de check_notebook_nav_chain.py est inchange ; tests de la PR rejoues localement sur la tete : 53 passed. Dossier BLOCKED de l'adjoint (DWELL seul, echeance 23:07Z) : merge apres le plancher.
|
[ADJOINT PREFLIGHT] |
…re par echelle (#23596) Grain: DEEP/notebook-python -- lane myia-ai-01:CoursIA-2 -- prev: MED/guard #23590 La fidelite J-lens etait mesuree sur quatre echelles (1.7B, 2B, 9B, 27B) ; la ligne 8B manquait. Trace produite depuis le lens PUBLIE neuronpedia/jacobian-lens (Qwen3-8B_jacobian_lens.pt, sha256/16 1e1f96c3b63ac467, 35 couches sources, n_prompts 461), extraction sur un device unique 24 Go (le 8B bf16 y tient : pas d'offload, contrairement au 27B). Mesure (moyennes 5 sets, couches 9 et 18 = frac 0.25 / 0.5 des 36 couches) : KL mi-reseau 16.87 nats, overlap@10 0.0112, rel_l2 1.5982 -- l'accord le plus faible mesure sur les cinq echelles, alors que son gradient de profondeur (4.08 nats quart->mi) reste ordinaire. Lecture honnete : le 8B rompt la monotonie de la serie (1.7B 12.52 -> 2B 8.18 -> 8B 16.87 -> 9B 9.36 -> 27B 10.41 nats). Il n'est pas un contre-exemple a une loi d'echelle mais sa preuve que la loi n'est pas etablie : c'est le seul point de la generation Qwen3, sans jumeau -Base publie, sur un fit de 461 prompts -- l'axe mesure un couple (taille, famille de checkpoint), pas la taille seule. Deux confondants de plus (checkpoint, taille du fit) sont documentes dans le carnet. Livrables : traces/calib_jlens_qwen3-8b.npz ; cellule de fidelite J-lens d'ICT-42b (tableau cinq echelles + tableau KL) re-executee sous le kernel 3.13 (coursia-py313) ; interpretation, transparence de provenance, limites et synthese relues ; ligne de description du carnet dans le README de serie. Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
Grain: MED/guard — lane myia-ai-01:CoursIA-2 — prev: MED/tooling #23117
See #20381 — item 5 (« Outillage (volet optionnel) »), le volet que l'escalier
Dynamics attendait : tant que ce mode n'existe pas, la direction d'une
série n'est vérifiée par aucun organe (le garde 404 valide les cibles, le
graphe d'atteignable valide l'accessibilité — ni l'un ni l'autre ne lit un
<<).Ce que fait le mode
--series-chain <README>lit l'ordre déclaré par le README d'une série etvérifie, pour chaque paire de marches consécutives, que la première porte un
lien « suivant » vers la seconde et la seconde un lien « précédent » vers la
première.
Cinq findings :
chain_no_prev,chain_prev_wrong,chain_no_next,chain_next_wrong, etchain_step_missing(marche déclarée dont le carnetn'existe pas).
Trois garde-fous, parce que l'ordre pédagogique n'est pas une propriété
universelle :
« suivant » ; un garde global rougirait sur des séries légitimement non
linéaires. Le mode n'est pas câblé en CI.
carnets (catalogue, parcours, approfondissements),
--chain-tablenommecelui qui déclare la lecture. Sans sélecteur et avec plusieurs candidats,
le mode refuse (rc=2) au lieu de deviner.
direction explicite (
<<,>>,←,→, « précédent », « suivant ») dansson texte, ou qu'il est posé dans une cellule de navigation dont la ligne ne
porte qu'un seul lien (repli positionnel). Une mention en prose n'est donc
jamais lue comme une arête.
Les jumeaux (le C# d'une marche Python, la version Lean) ne sont pas des
marches : seule la première cible
.ipynbd'une ligne de tableau l'est,conformément à la convention écrite dans les README de série.
Mesures (toutes jouées sur
main, dans le worktree de la branche)Contrôle positif — 10 chaînes déclarées (8 séries), 0 finding :
C'est la preuve que le mode ne fabrique pas de faux positif sur une série bien
formée — sans ce contrôle positif, un mode qui rougit partout ne prouverait
rien.
Écart mesuré — Complexity (« Parcours ») : 9 findings. La cause n'est pas
un défaut des carnets : le « suivant » de la marche 02 vise son
approfondissement (
02b) et non la marche 03 du parcours, et plusieursbarres de la série ne portent aucun marqueur de direction. C'est une
divergence de convention entre le tableau « Parcours » et les barres — le
genre de découverte que le mode doit rendre visible sans prétendre qu'il
s'agit d'un bug. L'arbitrage (aligner les barres, ou déclarer la table
« Catalogue ») relève de la série, pas de ce PR.
Tests
scripts/notebook_tools/tests/test_check_notebook_nav_chain.py(cluster 8) : chaîne conforme (contrôle positif), marche sans barre,
« précédent » qui saute une marche, « suivant » qui vise ailleurs, jumeau
non-marche, mention de prose non-arête, mot de direction porté par la ligne,
tableau ambigu refusé, sélecteur de tableau, codes de sortie (0/1/2), sortie
JSON qui publie l'ordre lu.
python -m pytest scripts/notebook_tools/tests/test_check_notebook_nav_chain.py→ 53 passed.python -m pytest scripts/tests/test_check_notebook_nav_chain.py→ 42 passed (le mode estexclusif : le scan par défaut est inchangé,
rcidentique à celui demain).ruff checksur les deux fichiers → 8 findings, les 8 déjà présents surmain(aucun introduit par ce PR).Organe
Pas de duplication : le mode est dans l'organe qui connaît déjà le graphe
de navigation (
check_notebook_nav_chain.py), pas dans un second script quiréimplémenterait l'extraction des liens — il importe d'ailleurs déjà
check_notebook_navlinks.pypour la source unique de l'extraction. Lavérification indépendante du résultat est le fichier de tests (cluster 8) et
le contrôle positif sur les 10 chaînes réelles de
main.Portée
Cet item ne corrige aucune barre : il rend la classe détectable. Les
barres de l'escalier Dynamics sont portées par #20442 (autre lane, autre
périmètre) ; après son merge,
devient le juge de la direction de l'escalier.
🤖 Generated with Claude Code