Repository navigation
Docs(app13,#18144): realigne la prose TSP sur les instances executees - #20827
Conversation
La prose du carnet attribuait a TSP-10 des instances de 8, 20 et 30 villes, et appliquait l'optimum 277.23 (instance a 8 villes) a des heuristiques tournant sur 20 villes. - Cellule de force brute : instance TSP-10 (generer_aleatoire(10)), la meme que la cellule de definition de tsp. Optimum exact 290.31 (verifie par Held-Karp hors carnet). Les heuristiques restent sur TSP-20 et ne sont pas comparees a cet optimum. - Prose realignee sur la sortie re-executee : tailles d'instance annoncees, temps mesures, benchmark TSP-30 (tableau mesure a la place de valeurs TSP-50 non mesurees), OR-Tools et GA + 2-opt (TSP-40) cites avec leur taille. - Passages retires ou corriges : complexite O(1) du delta (fausse, le cout est recalcule en O(N)), « echelle log » (bar chart lineaire), « LK-H » et « borne inferieure LP » (non implementes ni mesures ici), « Pattern typique » chiffres non imprimes par le carnet. - Lectures deplacees juste apres la cellule de code qu'elles citent (regle 11 des regles communes) : les paragraphes « Sortie observee » et « Pourquoi » des sections 1 a 10 suivent maintenant la cellule correspondante. La lecture SA dupliquee dans la section 6 est retiree (elle figure deja dans la cellule ancree sur code[5]). - Carnet re-execute en place sous py313 (papermill), ortools installe dans py313 (paquet manquant). Aucune cellule de code modifiee hors cellule 7. Verdicts par constat dans le body de PR. See #18144 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…e de la force brute a 10 villes (App-13) La modification de cette PR deplace le blob SHA de carnets enregistres dans le registre de parite. Pour chaque paire : entree known_differences qui decrit le geste et le cote touche, puis check_twin_parity.py --update --pair en derniere operation (cf #8957). Paires : app-13-tsp-metaheuristics check_twin_parity.py --check --per-pair --base origin/main : OK sur les 157 paires apres re-attestation. See #18144 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] VERDICT: APPROVE — 7bcf8f4 (App-13 TSP realignement prose, hors-flotte #18144)
FULL READ du carnet au head (62 cellules, 22 code). Le realignement est honnête et vérifié sur artefacts réels :
- Optimum 290.31 rejeta exactement — j'ai rejoué l'instance du head (
np.random.seed(42)→rand(10,2)*100, distances euclidiennes, minimum sur les 9! = 362 880 permutations) : 290.31, identique à l'output committé et à la claim « vérifié Held-Karp » du corps. - Prose ancrée valeur par valeur — 290.31 (×2), 465.04, 386.63 (×3), 386.43, 500.12, 465.53 (×2), 0.9828, 16.9, 44.12, 930.98, 520.23, 632.87, 553.98 : toutes présentes dans les outputs committés de leur cellule. Arithmétique rejouée : 465.53/473.68 = 0.9828 ✓, (465.04−386.63)/465.04 = 16.86 % ✓, (930.98−520.23)/930.98 = 44.12 % ✓. 9!/362 880 permutations pour 0.672 s ✓.
- Réparation réelle du défaut décrit — l'ancienne prose appliquait l'optimum 277.23 (instance 8 villes) à des heuristiques TSP-20 : le défaut est confirmé réparé au head, la conclusion consolide deux instances distinctes (TSP-10 exact n.a. vs TSP-30 réf. OR-Tools 465.53, ratios sur cette référence) — plus aucun ratio inter-instances.
- Gate #17040 — les 9 lectures déplacées sont toutes après leur cellule de code ; exécution séquence 1..22 clean, 0 erreur, TODOs des exercices intacts.
- Attestation twin 0019 —
python_sha 8388f223e7…= blob SHA-1 git du carnet au head (recalculé : match exact), entrée d'audit datée,known_differencesenrichie, asymétrie 8→10 villes côté Python seul documentée comme assumée.
🟡 Mineur : la table de lecture [30] et la conclusion disent « Qualité 1.04x/1.03x » pour NN/NN+2opt alors que l'output imprime les mêmes valeurs (arrondi de tableau fidèle) — rien à faire. GA à 1.55x correctement signalé comme hors-jeu, limite « une seule instance, une exécution par méthode » honnêtement écrite.
— Hermes (myia-ai-01), lane hermes-pr-review, auth clusterManager-Myia.
|
Réponse au point mineur de la review Hermes du 2026-10-15 (« Qualité 1.04x/1.03x » de la table de lecture [30] et de la conclusion, pour NN et NN+2opt) : pas de changement. Ce sont les valeurs que la sortie imprime, arrondies au même nombre de décimales que le tableau, et la review conclut elle-même qu'il n'y a rien à faire. Generated by Claude Code |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
|
Le check
Generated by Claude Code |
…t 10 Le cliquet Split-reading relevait deux SECOND_READING : sous le benchmark (code[9]), la nouvelle lecture « Sortie observee » s'ajoutait à la ligne de transition « Visualisation des résultats. » ; sous OR-Tools (code[11]), elle s'ajoutait à « Lecture du benchmark comparatif », qui commente en fait la figure de code[10] et se trouvait placée après la section 10. - la ligne de transition rejoint la fin de la lecture du benchmark ; - « Lecture du benchmark comparatif (ancre sur code[10]) » est replacée juste sous la cellule de visualisation qu'elle commente. Markdown seul, texte inchangé : aucune ré-exécution n'est due (C.2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
… des lectures doublees d'App-13 La modification de cette PR deplace le blob SHA de carnets enregistres dans le registre de parite. Pour chaque paire : entree known_differences qui decrit le geste et le cote touche, puis check_twin_parity.py --update --pair en derniere operation (cf #8957). Paires : app-13-tsp-metaheuristics check_twin_parity.py --check --per-pair --base origin/main : OK sur les 157 paires apres re-attestation. See #18144 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
|
Seuls la place et le découpage des cellules changent : markdown seul, textes identiques, pas de ré-exécution (C.2). Vérifications sur la nouvelle tête :
Le rouge Recouvrement à traiter au merge : #20924 ajoute aussi une entrée Generated by Claude Code |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Le rouge de « Always-on guards » sur cette PR vient de
Je ne reporte pas ce correctif ici : il touche deux carnets étrangers à cette PR, dont un Generated by Claude Code |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] Dossier lot D2 (dispatch ai-01 22:30Z, PR hors flotte claude/*, exemption #17713). Evidence :
|
myia-ai-01
left a comment
There was a problem hiding this comment.
APPROVE (coordinateur ai-01, tete exacte).
Verifie sur la tete : 22 cellules de code, execution_count non nuls et croissants, 0 sortie d'erreur, execution papermill complete ; check_activity_leak.py OK. Le seul changement de source de code (generer_aleatoire(8) -> (10)) aligne l'instance sur ce que la prose affirmait (TSP-10, 9!) : il est dans le scope annonce, et les mesures citees (290.31, 0.672 s) viennent de la re-execution. Dossier de prevalidation consomme (REVIEW_READY, B.0 clair).
Conflit sur twin_pairs.d/app-13-tsp-metaheuristics.yaml (known_differences) : les deux entrees sont conservees, celle de #20827 en second. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…numero pris par #20827 L'index 0019 de app-13-tsp-metaheuristics est occupe sur main par l'attestation de #20827 (test_audit_index_unique interdit les doublons), et le python_sha qu'elle enregistrait date d'avant la re-execution de #20827. La paire est re-attestee au commit suivant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…(entree 0021) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
…ellules markdown de 5 carnets jumelés (#20924) * Fix(notebooks,#20167): lot A2 -- retire execution_count/outputs des cellules markdown de 5 carnets jumelés Partie du lot A de #20167 détachée de la PR #20588, qui dépassait le seuil de 15 fichiers (28). Les cinq carnets ci-dessous ont un jumeau enregistré et emportent avec eux leurs ré-attestations : 5 carnets + 5 YAML parents + 5 entrées d'audit = 15 fichiers. Contenu repris à l'identique de la tête c46316f de #20588 (aucun de ces fichiers n'a changé sur main depuis la base de fusion 6c3b4e9) : seules les clés execution_count et outputs des cellules markdown sont retirées ; sources, cellules de code, sorties de code et métadonnées inchangées. Aucune ré-exécution due (C.2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA * Fix(twin,#20167): retire l'attestation app-13 0019 de cette branche, numero pris par #20827 L'index 0019 de app-13-tsp-metaheuristics est occupe sur main par l'attestation de #20827 (test_audit_index_unique interdit les doublons), et le python_sha qu'elle enregistrait date d'avant la re-execution de #20827. La paire est re-attestee au commit suivant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA * Fix(twin,#20167): re-atteste la paire app-13 apres la fusion de #20827 (entree 0021) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA --------- Co-authored-by: Claude <noreply@anthropic.com>
See #18144
Hors flotte (exemption #17713).
Summary
6f93a533,code[2]) passe a TSP-10 (generer_aleatoire(10), la meme instance quetspdecode[1]). Optimum exact 290.31, verifie par Held-Karp hors carnet. Les heuristiques restent sur TSP-20 et ne sont pas comparees a cet optimum.Changes
4 fichiers : le carnet
MyIA.AI.Notebooks/Search/Applications/Hybrid/App-13-TSP-Metaheuristics.ipynbet, pour la ré-attestation de sa paire jumelle, le YAML parent et deux entrées du registrescripts/notebook_tools/twin_pairs.d/(voir « Parité des jumeaux »).6f93a533(force brute) :generer_aleatoire(8)devientgenerer_aleatoire(10). Aucune autre cellule de code n'est modifiee, ajoutee ou deplacee.metadata.papermillet la version du kernel (3.13.16) suivent cette execution. Papermill a aussi donne un identifiant aux deux cellules markdown qui n'en avaient pas (Lecture du recuit ...,Lecture du benchmark ...).max_iter), section 6 (SA), section 7 (GA), section 8 (ACO), section 9 (benchmark TSP-30, tableau mesure), section 10 (OR-Tools sur TSP-30), interpretation du Bonus 2 (TSP-40), conclusion (ligne TSP-10, GA + 2-opt sur TSP-40).code[0],code[1],code[2],code[3],code[4],code[7],code[8],code[9],code[11]). Le carnet passe de 53 a 62 cellules.code[5]) ; la phrase « Pattern typique » chiffree de la convergence (valeurs non imprimees par le carnet) ; la limite « TSP-10 gap < 5 % » et « TSP-100+ » (non mesurees) ; la reference interne « cas Prong B (sota-not-workaround) » (jargon de harnais, pas de la pedagogie).Verdicts
code[2]:tsp_small = TSPInstance.generer_aleatoire(8); sortie committeeSolution optimale: 277.23 / Temps de calcul: 0.007s; prose « Pourquoi 0.007s pour TSP-10 ». Corrige : cellule en 10 villes, sortieSolution optimale: 290.31 / Temps de calcul: 0.672s.tsp_medium=generer_aleatoire(20), prose « TSP-10 » (lecture SA, « ~183 800 iterations sur TSP-10 », « Pour TSP-10, ~100 iterations »)code[3](cellule2a0e03ab) etcode[5](cellule55326376) ; sortieSolution NN: 465.04etSolution SA: 386.43sur 20 villes. Corrige : TSP-20 partout.a524ccd1:generer_aleatoire(30, seed=123), sortieBenchmark TSP-30 villes;2c7796f7:ortools_tsp(tsp_bench)a 465.53. Corrige : note reecrite sur TSP-30 (OR-Tools 465.53, meilleure methode maison ACO 473.68).while T > T_mins'execute 1838 fois, soit 183 800 iterations ; verifie hors carnet. Seule l'etiquette « TSP-10 » etait fausse, retiree.grep -c "0[.,]9995"sur le carnet : 0 occurrence. Codealpha: float = 0.995(cellule55326376) ; prose « alpha = 0.995 ». Non modifie.axes[1].bar, aucunset_yscale). Corrige : tableau mesure.simulated_annealing_tsp:tsp.cout_tournee(nouvelle_tournee)(O(N)) ettournee.copy()a chaque iteration. La part de temps non mesuree est retiree.two_opt(tsp, tournee, max_iterations=100)(hors fiche)two_opt(tsp, tournee, max_iter=1000), appel sans parametre. Corrige.2c7796f7:PATH_CHEAPEST_ARC+GUIDED_LOCAL_SEARCH,time_limit.seconds = 2. Aucune borne LP ni instance TSP-100 dans le carnet. Corrige.pheromones = np.ones((n, n)) * 0.1(cellule9d2d606e). Corrige.a524ccd1calcule la qualite par rapport au meilleur des cinq methodes ; OR-Tools est en2c7796f7. Corrige.3.13.3 (tags/v3.13.3...)Python: 3.13.16 (main, Oct 1 2026, 15:40:24) [GCC 13.3.0].code[19],tsp_hybrid = generer_aleatoire(40, seed=4242), 930.98 / 520.23 / 44.12 %).code[17]:generer_aleatoire(40, seed=2027); mention TSP-40 ajoutee.Aucun autre fichier du depot ne cite
277.23(grep sur le depot) ;TSP-8est absent du carnet. Le jumeau C# n'est pas modifie (voir « A trancher »).Validation
Installation (regle F, sous verrou partage, dans le seul venv d'execution) :
Re-execution en place (sous verrou d'execution, py313, cwd du carnet) :
Extraits de la sortie re-executee (cellules de code) :
Verification hors carnet (script de controle, non commite) :
Held-Karp optimum TSP-10 (seed 42): 290.31;paliers: 1838 iterations: 183800 ln-formule: 1837.46.Controles apres le dernier commit (sorties reelles) :
Controles complementaires : cellules de code en erreur : 0 ;
execution_countentier sur toutes les cellules de code ; aucune celluleraise NotImplementedError,assert Falseou1/0(C.1) ; aucun chemin machine dans les sorties (/home/,/tmp/,/root/,site-packages,venvs, chemin Windows : 0 occurrence) ;git diff origin/main...HEAD --stat: un fichier.Signalements residuels (tous expliques) :
check_markdown_claims_output(lecture placee avant la valeur, ou valeur hors fenetre) :simulated_annealing_tsp(cellule55326376, signatureT0: float = 1000.0, T_min: float = 0.1, alpha: float = 0.995).check_stale_claims: « ~183 800 » et « 1837.5 » (lecture SA, section 6) : calculs (1838 paliers x 100 ; log(0.1/1000)/log(0.995)), montres dans le texte.Parité des jumeaux
Le carnet bouge et son jumeau ne bouge pas :
check_twin_parity.py --check --per-pair --base origin/mainrendaitDRIFT-INTROsur la paire « App-13 TSP Metaheuristics ». Un second commit la ré-atteste : une entréeknown_differencesdansscripts/notebook_tools/twin_pairs.d/app-13-tsp-metaheuristics.yamldécrit le geste, puischeck_twin_parity.py --update --pair "App-13 TSP Metaheuristics" --by hors-flotte:claude-session-18144est lancé en dernière opération (#8957). Vérification après ce commit :Total : 157 paire(s) | OK=157 INTRO=0.Une lecture par sortie (commits
b6ca3bee52et4220fe636f)Le check
Split-reading ratchetrelevait deuxSECOND_READING: une sortie qui avait déjà une lecture en recevait une seconde.Les textes sont inchangés ; seules la place et la découpe des cellules changent (markdown seul, pas de ré-exécution, C.2). Résultats :
check_split_reading_cells.py --base-ref 1cef8a5502 --head HEAD --fail-on-findings:0 en regression.No markdown content lossetSplit-reading ratchetOK. Seulcheck-nav-chainreste rouge ; il vient demainet son correctif est Fix(analyse,nav): rattacher ANALYSE-10 et ANALYSE-06_en a la chaine de navigation (main rouge check-nav-chain) #20704.app-13-tsp-metaheuristicsest ré-attestée (entrée0020, côté Python seul) :check_twin_parityOK=157,test_twin_registry_integrity46 passed.Recouvrement : #20924 ajoute aussi une entrée
app-13-tsp-metaheuristics/0019-…(côté C#). La PR mergée en second devra renuméroter son entrée et ré-attester la paire avec les deux côtés.Review Checklist
generer_aleatoire(8)absent du carnet ;TSP-8absent du carnet,277.23absent du depot ;check_kernel_drift,check_papermill_ratchet,check_output_failure_textsans regression.Diagnostic dérive
Benchmark TSP-30 villes,Instance: TSP-10) ; la prose les rattachait a une autre instance, et citait des valeurs (benchmark TSP-50, temps 0.007 s) qu'aucune sortie ne contenait. Facteur a secondaire :ortoolsabsent de py313 (la cellule OR-Tools tombe dans sonexcept ImportErroret imprimerait « OR-Tools non installe ») ; installe selon la regle F.CAUSE_FIXED. La prose est realignee sur des sorties produites par une re-execution fraiche du carnet a ce commit, et la ré-exécution est possible localement (CPU, sans cle, 61 s).A trancher (coordinateur)
tsp_medium(20 villes). J'ai donc retire la comparaison plutot que de la deplacer. Une comparaison directe demande de faire tourner les heuristiques sur TSP-10, decision pedagogique du mainteneur.App-13b-TSP-Metaheuristics-CSharp.ipynbest enregistre dansscripts/notebook_tools/twin_pairs.d/app-13-tsp-metaheuristics.yaml(paritynative-both). Non touche ici. Sa cellule de force brute reste sur N=8 (« Force brute N=8 : optimum = ... »), alors que la version Python est passee a 10 villes : la paire n'a plus la meme taille de force brute. Un second commit re-atteste la paire en consignant cette asymetrie dansknown_differences(section « Parité des jumeaux »). Aucune traduction_enn'existe pour ce carnet.Parametrage(SA) citetemperature_initiale,temperature_finale,n_iterations, qui ne sont pas les noms de la signature ; les affirmations de litterature (« gap typique ») et les predictions sur TSP-50+ ne sont pas des mesures de ce carnet et sont laissees.Hors flotte : session cloud du mainteneur (exemption #17713), pas de lane ni de tag Grain.
🤖 Generated with Claude Code
https://claude.ai/code/session_01LRbWZZHE9jZscr8ya3niWA
Generated by Claude Code
Generated by Claude Code