Skip to content

Add(genai,#16754): Backdoor Code -- Houdini 3 etages vs Guard majority-vote (R12 Fig 12-13) - #20031

Open
jsboige wants to merge 10 commits into
mainfrom
feature/16754-backdoor-code-from-scratch
Open

jsboige wants to merge 10 commits into
mainfrom
feature/16754-backdoor-code-from-scratch

Conversation

@jsboige

@jsboige jsboige commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2023:CoursIA — prev: MED/research-code #20328 — reprise de myia-po-2026:CoursIA-2 (machine HS, dispatch ai-01 c2146, override #16754 c.6104661210)

Ce que la PR livre

Carnet neuf MyIA.AI.Notebooks/GenAI/Security/Oversight/Backdoor-Code-From-Scratch.ipynb, qui matérialise le résidu nommé par la vérification tierce du 2026-10-07 sur #16754 (commentaire [PARTIAL c.1466] : « Manquant (3 fichiers cités dans le claim po-2024 du 06/10) », dont Backdoor-Code-From-Scratch.ipynb).

Distillé de R12 — Engels, Baek, Kantamneni, Tegmark, Scaling Laws For Scalable Oversight, arXiv:2504.18530 — §3.3 (Backdoor Code), §A.3 (pipeline), Fig. 12-13, §4 (NSO). PDF relu firsthand au gisement (…\XAI\2025 - Engels et al - Scaling Laws For Scalable Oversight.pdf, sha8 FDA29C9A), réparé par pikepdf pour l'extraction de texte.

Contenu

  • Pipeline Houdini en trois étages (§A.3, repris tel quel) : cinq idées → implémentation pour une entrée précise → entrée déclencheuse ; relancé jusqu'à cinq fois ; seuils déclarés pédagogiques.
  • Guard à cinq jugements au vote majoritaire, pente volontairement plate (fait R12 §3.3, « Guard slope nearly flat »). Le taux de succès de l'attaquant culmine vers +400 Elo (34,3 %) puis plafonne : au-delà, tout gain de capacité part dans la détection.
  • La nuance de la Fig. 13, mesurée : P(trompe | viable) reste plate (~0,350) quand P(trompe) non conditionnelle monte jusqu'à 34,5 %. La montée apparente est un pur effet de composition avec P(viable). C'est le résultat contre-intuitif que le carnet existe pour rendre visible — dans ce modèle paramétré, un attaquant plus capable n'est pas un menteur plus doué, il est plus souvent fonctionnel. C'est le mécanisme de la nuance de la Fig. 13 : R12 l'établit empiriquement sur de vrais LLMs, le carnet en mesure la décomposition sans reproduire la mesure empirique.
  • Inversion du vote majoritaire sous le seuil de Condorcet : à capacité 0, P(juge) = 0,4174 < 0,5 — ajouter des juges dégrade la détection. Le carnet montre aussi le régime inverse (P(juge) > 0,5 à +400), où le vote majoritaire renforce au lieu d'affaiblir.
  • Le modèle NSO le plus simple ne produit pas la Goldilocks zone de R12 : n* = 1 mesuré ; le n* = 2 du papier et les taux NSO (13,5 / 51,7 / 10,0 / 9,4 %) sont rapportés, non reproduits. Le carnet dit pourquoi — il faudrait le Double ReLU à deux plateaux du §2.2 — plutôt que de laisser croire à une reproduction.

Preuves d'exécution (C.1 / C.2 / H.3)

  • 8 cellules de code, toutes avec execution_count 1-8 et sorties réelles committées ; zéro sortie d'erreur.
  • grep -E "raise NotImplementedError|assert False|1/0" → 0 occurrence. Les trois exercices (cellules 7, 12 et 20) sont des stubs result = None # TODO etudiant, exécutés, qui affichent un rappel sans livrer la réponse.
  • Exécution papermill … -k python3, 24 cellules, y compris les cellules d'exercice non complétées.
  • Trois corrections de prose portées après relecture tierce : troisième exercice au commit c6770667bf ; distinction simulation/R12 au commit bd908952a8 ; ancrage de la machine et qualification du §7 au commit c7eed44d5a. Toutes markdown seul, aucune re-exécution due. : le seuil de three-exercises-per-notebook n'était pas tenu à la tête précédente (97f5493561), où le carnet n'en portait que deux. La section 4 reçoit l'exercice manquant, et la re-exécution complète est refaite à cette tête.
  • Carnet neuf : aucune cellule # Solution / # Exemple résolu supprimée.

Verdict SOTA

RECOVERABLE-MACHINE, avec une precision qui change ce que le verdict designe. R12 emploie de vrais LLMs (GPT-4, Claude, Mistral) comme Houdini et Guard sur le corpus APPS ; la transposition demande une pile GenAI. La machine qui la porte est citée plutôt que déclarée : docs/reference/cluster-agents.md place les services GenAI sur po-2023, et la taxonomie elle-même donne « GenAI -> po-2023 » comme exemple canonique du verdict. Le seul fait propre à la lane est vérifiable : pas de GPU, torch y tourne en CPU strict.

Ce verdict nomme un AUTRE carnet, pas une re-exécution de celui-ci. Le carnet est auto-contenu, sans GPU ni appel réseau, graine fixée : le rejouer sur po-2023 rendrait exactement les mêmes nombres. Le carnet « rejouable ailleurs » serait un carnet distinct (vrais LLMs × corpus APPS), qui reste à écrire. Ce carnet-ci EST une simulation pédagogique déclarée de R12 (porte de sortie de organ-first-implementation) : From Scratch est le livrable — le produit est le mécanisme, pas le résultat expérimental du papier. Ce qui est mesuré et ce qui est seulement rapporté sont distingués par un tableau en §4 et la limite en §6 : un carnet qui laisserait croire qu'il a rejoué R12 de bout en bout fabriquerait une confiance que rien ne porte.

Périmètre

3 fichiers :

  • MyIA.AI.Notebooks/GenAI/Security/Oversight/Backdoor-Code-From-Scratch.ipynb (neuf)
  • MyIA.AI.Notebooks/GenAI/Security/README.md (une ligne de tableau + un paragraphe d'état)
  • _quarto.yml (une ligne de render-list, insérée au tri lexicographique)

Le lien README pointe le .ipynb, conformément à la décision mainteneur du 2026-10-05 portée par #19301 : un README ne vise la page .html que si cette page équivaut au carnet exécuté ; sinon on vise le .ipynb.

Le choix a été inversé en cours de PR, sur mesure et non sur raisonnement. La première version pointait .html, en argumentant que l'équivalence tient « par construction » (_quarto.yml déclare execute: enabled: false, donc le rendu reprend les sorties committées). L'organe que #19301 spécifie — scripts/notebook_tools/check_equivalence.py, mergé sur main entre-temps via #19305 — a été invoqué sur ce carnet :

$ python scripts/notebook_tools/check_equivalence.py \
    --notebook MyIA.AI.Notebooks/GenAI/Security/Oversight/Backdoor-Code-From-Scratch.ipynb --json
{ "status": 404, "verdict": "MISSING_PAGE",
  "page_url": "https://jsboige.github.io/CoursIA/.../Backdoor-Code-From-Scratch.html", ... }

MISSING_PAGE est précisément le cas « sinon » de la décision : la page n'existe pas avant le déploiement, donc le lien .html est mort le temps que la page soit publiée, alors que le .ipynb est valide immédiatement et le reste. Le raisonnement « par construction » portait sur les sorties de la page, pas sur son existence — l'organe mesure les deux, et c'est lui qui tranche. Le carnet est aligné sur les carnets frères de la série, tous en .ipynb.

Le STALE_LINK que python scripts/regen_quarto_render.py --check-readme-links émet pour cette ligne est, par #19301, une exemption motivée et non une dette : le garde readme-ipynb-links-guard calcule un delta et passe --pr-added-files aux deux passes, donc une cible ajoutée par la PR est exclue du rendu des deux côtés et le delta vaut 0 — CI verte sans dépendre d'une faveur.

python scripts/regen_quarto_render.py --check rend stale sur main lui-même (deux entrées de main absentes de sa propre render-list : bakeoff_large/README.md, docs/coordination/gpu-reservation.md) — dérive héritée, hors périmètre de cette PR. La ligne de _quarto.yml, elle, reste justifiée : le carnet est rendu, seule la forme du lien change. Position insérée au tri lexicographique, identique à celle que produit le regen. Aucun workflow n'exécute --check : quarto-pages-deploy.yml régénère la liste avant de rendre.

See #16754 — le carnet Wargames-Simulation.ipynb, second résidu nommé par la même vérification, reste ouvert.

🤖 Generated with Claude Code

claude added 2 commits October 9, 2026 07:07
…y-vote (R12)

Carnet neuf dans GenAI/Security/Oversight/, il materialise le residu nomme par
la verification tierce du 2026-10-07 sur #16754 (le plan citait
Backdoor-Code-From-Scratch.ipynb, absent du depot).

Contenu, distille de R12 (arXiv:2504.18530) §3.3, §A.3, Fig. 12-13 et §4 :
- pipeline Houdini en 3 etages (5 idees -> implementation -> entree
  declencheuse), relance jusqu'a 5 fois, seuils pedagogiques declares ;
- Guard a 5 jugements au vote majoritaire, pente volontairement plate (fait
  R12 « Guard slope nearly flat ») ;
- la nuance de la Fig. 13 mesuree : P(trompe | viable) reste plate (~0,350)
  quand P(trompe) non conditionnelle monte jusqu'a 34,5 % -- la montee
  apparente est un pur effet de composition avec P(viable) ;
- inversion du vote majoritaire sous le seuil de Condorcet (P(juge) < 0,5 :
  empiler des juges degrade la detection) ;
- le modele NSO le plus simple ne produit PAS la Goldilocks zone de R12
  (n* = 1 mesure, n* = 2 du papier rapporte comme non reproduit).

Verdict SOTA : RECOVERABLE-MACHINE -- R12 emploie de vrais LLMs (GPT-4,
Claude, Mistral) sur APPS ; la transposition demande une pile GenAI
(po-2023 ou ai-01), pas cette lane. Le carnet est auto-contenu, sans GPU ni
appel reseau, graine fixee, 7 cellules de code toutes executees avec sorties
reelles, 3 exercices stubs sans erreur volontaire (C.1/C.2).

See #16754 -- le carnet Wargames-Simulation reste ouvert.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Le carnet est dans la render-list (`_quarto.yml`), sa forme servie sur Pages
est donc le `.html` : la ligne README pointe cette forme. Un lien `.ipynb`
vers un carnet rendu est la classe STALE_LINK du garde #13025 -- la forme
`.html` n'ajoute aucune violation, alors qu'un `.ipynb` de plus serait
entre dans le backlog de balayage (#18911).

Verifie par `python scripts/regen_quarto_render.py --check-readme-links` :
aucune ligne ne nomme le carnet.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

…s encore

L'organe check_equivalence.py (merge sur main via #19305) rend MISSING_PAGE
(404) sur ce carnet : la page publiee n'existe pas avant le deploiement.
La decision mainteneur du 05/10 portee par #19301 veut alors le .ipynb --
"sinon, on vise le .ipynb : un lien vers une page absente ou infidele coute
plus qu'il ne rapporte". Aligne aussi sur les carnets freres de la serie.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

✅ No prose/output mismatch detected in the notebooks this PR changed.

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

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 7.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 8.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 10.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 9.8s
Search-01-StateSpace.ipynb ✅ SUCCESS 7.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.0s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 60.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 6.2s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 34.3s

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

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 8
  • 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)

This was referenced Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #20031 (Add(genai,#16754): Backdoor Code -- Houdini 3 etages vs Guard majority-vote (R12 Fig 12-13)) 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.

`three-exercises-per-notebook` exige 3 exercices pour un carnet NEUF ; le
carnet n'en portait que 2 (cellules 7 et 12) alors que le body de la PR en
annoncait trois. Contradiction relevee par la lecture tierce de l'adjointe
(`[ADJOINT c8]`, 2026-10-09T10:05:53Z) : "deux exercices livres contre trois
annonces".

Ajoute l'Exercice 3 en section 4, apres la lecture du modele NSO : balayer
`p_nso` sur une large plage de (ecart, pente) et chercher un optimum interieur.
Le carnet n'avait mesure la monotonie qu'a UNE pente (120) et UN ecart (800).

Mesure : aucun optimum interieur sur 42 combinaisons (D de 200 a 5000, pente
de 10 a 1000) -- `n* = 1` est une propriete de la FAMILLE, pas des parametres
choisis. Verifie analytiquement : avec u = a/n, g'(n) = u*sigma(-u) +
log(1+e^-u) > 0 pour tout u > 0, donc decroissance stricte. C'est la raison
precise pour laquelle R12 a besoin du Double ReLU sature.

Re-execution complete (C.2/H.3) : 8 cellules de code, execution_count 1-8,
zero sortie d'erreur, zero violation C.1. La cellule 14 (stochastique, graine
fixe) ne bouge que par la FRONTIERE de chunk du flux stdout -- texte concatene
byte-identique, valeurs inchangees (verifie entree par entree).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA
pr: 20031
head: 89dff2b
complete: true
body: read
comments-reviewed: 13
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 1b6b14e8fd7567e71cc11655d9d590d732a0109ca0c25fb9a510c84a39201d7e
diff-files: 3
diff-additions: 922
diff-deletions: 0
checks: BLOCKED
b0: clear
scope: pass
domain: not-applicable
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20031
organ-rc: 3
[/ADJOINT PREFLIGHT]

Etat re-mesure ce cycle : pr_gate est repasse PASS (le rouge du tri precedent s'est resorbe) -- 99/100 jambes latest-wins vertes. Seul rouge restant : advisory scan_md_hierarchy drift FAILURE 21:34:08Z sur myia-po-2024-linux-persist-1 -- drift mode broken (unreadable baseline / vacuous scan) = baseline illisible sur arbre ampute (famille #20200). BLOCKED motive par cet advisory : pas d'exemption advisory (lecon no-advisory-exemption), mais l'advisory lui-meme est casse par l'infra, pas par le contenu. Sans rejeu.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2023:CoursIA — orpheline adoptee (c2141) : qualification du/des check(s) advisory rouge(s), famille infra #20174 (amputation runner). Aucun rejeu tant que le residu est actif (arbitrage ai-01 c.6092735664) ; rejeu post-purge a tete constante.

Check concerne : scan_md_hierarchy drift.

Preuve lue dans les annotations du run : l'organe s'auto-declare en echec de lecture : scan_md_hierarchy drift mode broken (unreadable baseline / vacuous scan) — baseline illisible = workdir ampute, pas une derive de hierarchy reelle.

Reproduction locale au head ci-dessus : arbre Git sain, l'organe s'execute et rend son verdict attendu. Le rouge est porteur du slot, pas du diff.

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 20031
head: 89dff2b
complete: true
body: read
comments-reviewed: 15
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 270d22a5296e7c279e67cf9138605036d686c4f626c5be67b6c1cfb477a1399b
diff-files: 3
diff-additions: 922
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 20031
organ-rc: 0
supersedes: 14
supersedes-why: Le motif checks du dossier ordinal 14 est eteint a tete constante. Son domain not-applicable ne couvrait pas ce carnet neuf : lecture de domaine faite et reserve editoriale bornee au paragraphe de justification de review et de mapping de lane du paragraphe 6, selon la lentille demandee par ai-01 pour #20250. Le present dossier retient domain, pas checks.
[/ADJOINT PREFLIGHT]

Lecture tierce complete : body, quinze commentaires, deux reviews avec leurs corps et etats, aucun thread, diff trois fichiers. Tete REST mergeable=true, mergeable_state=clean. Les reserves NanoClaw du 09/10 sont traitees dans le contenu et acquittees par la review ai-01 a cette tete ; ce dossier ne remet pas cet arbitrage scientifique en cause. Aucun rejeu CI.

Reserve editoriale precise : cellule markdown index22, section 6 « Qualification des limites (verdict SOTA) », 2575 caracteres selon lecteur. Elle ouvre sur « Ce carnet applique la discipline de sota-not-workaround : une sortie de substitution ne se committe pas sans verdict ecrit », puis justifie RECOVERABLE-MACHINE par le mapping de flotte, docs/reference/cluster-agents.md, po-2023 et « Cette lane ne porte pas cette pile ». C'est une justification interne de livraison et de review integree dans une section entiere du cours, pas une simple reference ponctuelle. La lentille #20250, precisee par c6096802174 et demandee dans le DM ai-01 c2142, porte sur les sections ajoutees, pas sur un mot isole. Je ne revendique pas un score automatique de densite.

Action recommandee : conserver dans le carnet la distinction simulation/reproduction, l'hypothese P_TROMPE=0.35 hors du modele Guard, les quantites mesurees et non mesurees, les contraintes sans GPU/reseau et la limite NSO ; deplacer vers le body de PR la discipline de commit/review, le mapping de flotte et les declarations de lane. Presenter le besoin de vrais LLMs et du corpus APPS comme une limite experimentale lisible sans connaitre la flotte. La requalification peut etre markdown-only sans re-execution C.2.

Je ne reprends pas le verdict delegue « sections 5/6/7 toutes narration » : la section5 applique les notions de viabilite et de vote a un exemple de reviewers ; la section7 expose les conclusions bornees du modele. Elles ne sont pas rejetees en bloc sur leurs noms propres. Le champ domain s'applique au carnet, non au seul fait qu'il contienne un token SOTA. Les corrections de graine et d'hypothese sont presentes ; l'execution est rapportee et les sorties coherentes, sans nouveau Papermill independant revendique ici. Aucun APPROVED, OVERRIDE ou merge par adjoint.

@jsboige

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

[ACK] Reprise #20031 par lane myia-po-2023:CoursIA (dispatch c2146, override #16754 c.6104661210) — ligne Grain passee a mon nom. Etat mesure a la tete 89dff2b : 100 jambes / 100 noms, 0 rouge (fold check_run_state.py), mergeable MERGEABLE, reviewDecision APPROVED (myia-ai-01). Aucune reparation due : la PR attend son merge (DWELL/dossier au coordinateur). Aucun rejeu lance.

…/lane), garder la qualification des limites

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige
jsboige force-pushed the feature/16754-backdoor-code-from-scratch branch from bbab13a to efa291d Compare October 11, 2026 11:57
@jsboige

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

[INFO] lane myia-po-2023:CoursIA — retrait du récit d'activité du §6 (commit efa291d, per dispatch ai-01 04:35Z et Epic #20250) : la puce Verdict ne cite plus le mapping de flotte (cluster-agents.md, po-2023) ni l'état GPU de la lane — la justification review/mapping vit dans le body de la PR, qui la porte déjà. La référence po-2023 de la puce suivente devient « rejouer ailleurs ». Limites, mesuré/pas mesuré et contraintes : inchangés. Cellule markdown seule, aucune cellule de code touchée, pas de re-exécution due.

Incident de manipulation réparé dans la minute : un premier commit (bbab13a, clone --no-checkout à index vide) avait embarqué 12 867 fichiers en deletion ; branche à lane unique (override ai-01 #16754 c.6104661210) → reset au parent, re-commit chirurgical, push --force-with-lease bbab13a...efa291d. Tête courante : efa291d, diff 1 fichier 2+/2-.

…envoi mapping, garder simulation pedagogique

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

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

Réserve adjoint (DM adjoint-20031-intro-mapping-efa291d, 14:20Z) traitée au commit f44aa46351 : le renvoi intro devenu faux — « Cette lane ne porte pas la pile GenAI (cf. §6 ... la machine qui la porte est nommée par le mapping de la flotte) » — est retiré. La phrase porte désormais « Ce carnet est une simulation pédagogique », en conservant les paramètres explicites, les résultats qualitatifs et la non-revendication des valeurs absolues du papier. Markdown seul (cellule 0), round-trip byte-identical vérifié avant écriture, diff 1 ligne ; aucune re-exécution due (C.2 exception markdown). La tête passe à f44aa46351 — dossier tiers à redemander à cette tête une fois les checks ré-agrégés.

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants