Skip to content

feat(arganalysis,#23163): carnet 06b -- ATMS et resolution de conflits (portage verbatim EPITA) - #23170

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/23163-argu-atms-conflits
Oct 29, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/23163-argu-atms-conflits

Conversation

@jsboige

@jsboige jsboige commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-ai-01:CoursIA-2 — prev: MED/tooling #23037

Ce que la PR apporte

Le deuxième moteur absent de la série Argument_Analysis : l'ATMS (étiquetage par environnements) et le résolveur de conflits entre agents, portés verbatim depuis le dépôt EPITA-IS, et un carnet qui les exerce.

Livrable Fichier
Portage verbatim argumentation_lib/_atms_core.py (242 l), argumentation_lib/_conflict_resolution.py (305 l)
Carnet Argumentation-06b-ATMS-Conflits-Python.ipynb (41 cellules, 14 de code exécutées, 3 exercices)
Provenance argumentation_lib/NOTICE-EPITA (2 lignes + section « Fins de ligne »)
Navigation lien entrant depuis Argumentation-06-JTMS-Python.ipynb (1 ligne, markdown seul)
Catalogue 2 lignes de README (table « Notebooks » et table « Ce que chaque notebook apporte »)

L'écart mesuré (organ-first)

Mesure sur origin/main, pas sur une impression :

$ git ls-tree -r --name-only origin/main -- \
    "MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/argumentation_lib/" | grep -iE "atms|conflict|jtms"
(rien)

argumentation_lib/ ne contient aucun module atms, jtms ni conflict sur main. Le rung Argumentation-06-JTMS-Python implémente un JTMS (étiquetage booléen IN/OUT écrit de zéro) ; l'ATMS n'était nulle part. Les occurrences « atms » sur main sont du texte incident (05c, 08d, _shared_state.py, I2_Contre_arguments_ASPIC.ipynb), pas un moteur.

Les cinq questions de la règle organ-first :

  1. Quelle série possède déjà la sémantique ? La série Argument_Analysis elle-même, pour la version booléenne (06-JTMS) ; aucun carnet ne porte la sémantique par environnements.
  2. Peut-on invoquer son module réel ? Oui — c'est l'objet de la PR : le moteur amont est porté tel quel, pas réécrit.
  3. Que faut-il exporter ? Le service jtms d'EPITA-IS expose les deux modules concernes, stdlib-only : aucun préfixe argumentation_analysis.* à réécrire, donc un portage verbatim sans adaptation.
  4. Quel témoin négatif l'organe fournit-il ? Les garde-fous du moteur lui-même, tous exercés par le carnet : ValueError sur stratégie inconnue et sur beliefs absent, missing_confidence (une confiance absente n'est pas un 0.0), fallback_from (un repli est nommé), KeyError sur nœud inconnu, et le contrat d'étiquettes (chore: resync catalog after SC-1, Lean Hashlife, GenAI promotions #2094) — invalidation qui retranche sans re-deriver, nogood non durable.
  5. Quelle autre série assure la vérification indépendante ? Le rung 06-JTMS pour la sémantique booléenne ; pour l'ATMS lui-même, aucune — c'est l'écart que l'inventaire EPITA mesuré ([Argument_Analysis] Rendre la serie complete sur CoursIA — apport des contributions EPITA, forme de reference Formel+Informel #23163) enregistre.

Le portage — preuve d'identité

Amont : jsboigeEpita/2025-Epita-Intelligence-Symbolique, commit 713927e1f4ce292d6532fc3f5457afa5ad3c662c.

Fichier CoursIA Blob amont Lignes
_atms_core.py 70651a707a7ff37e6cd7502796300907a90d9783 242
_conflict_resolution.py dd8a00391c2fe5fda77165e33a014fbb142e5d7e 305

Identité recalculée après conversion CRLF → LF (convention du dépôt, .gitattributes : *.py text eol=lf) :

_atms_core.py          | identique = True | sha256 corps d85fdca1998404f4 | sha256 amont d85fdca1998404f4 | lignes 242
_conflict_resolution.py| identique = True | sha256 corps 8fcfd6a2ec9f55a4 | sha256 amont 8fcfd6a2ec9f55a4 | lignes 305

Seule l'en-tête de provenance est ajoutée ; le corps est byte-for-byte identique à l'amont. La section « Fins de ligne » du NOTICE-EPITA nomme les modules CRLF de l'amont, stockés en LF côté CoursIA — c'est la divergence unique et déjà documentée pour les ports verbatim du dossier.

Le carnet — ce qui est mesuré

Le carnet est écrit sur les sorties commitées, pas sur une intention. Les valeurs citées ci-dessous sont celles des outputs de la tête :

Point Valeur mesurée
Étiquette d'une conclusion r : [['p', 'q']] — l'union des hypothèses de la justification
Produit cartésien z : [['p'], ['p', 's']] puis w : [['p', 'q'], ['p', 'q', 's']]
Nœud out cas 1 (non dérivé) → [['s']] ; cas 2 (dérivé) → [] — filtrage par sous-ensemble
Invalidation t avant [['x']] → t apres [], et la justification est toujours là (1)
Nogood coherent {m,n} reste True après la contradiction : ⊥ : []
Stratégies confidence_based → sherlock (0.90) ; evidence_based → watson (2.10) ; consensus → Consensus tie ; agent_expertise → sherlock ; temporal → repli nommé
Garde-fous ValueError × 2 ; resolved=False + missing_confidence: ['watson']
Historique 10 conflits, 7 résolus, 3 non résolus — les 2 ValueError ne sont pas comptés

Trois exercices (produit cartésien à la main, stratégie qui tranche un conflit neuf, conflit sans confiance), conformes à C.1 (aucune erreur volontaire, le carnet s'exécute de bout en bout) et à C.2 (14 cellules de code exécutées, dont 13 avec sorties commitées — la cellule d'imports n'en produit aucune).

Navigation — pourquoi le lien ne va que dans un sens

06-JTMS → 06b en markdown (une seule ligne modifiée). 06b ne renvoie pas vers 06-JTMS par un lien de navigation : la paire mutualisée 06 ↔ 06b formerait une composante déconnectée pour check_notebook_nav_chain.py (finding independent_chain, mesuré : independent_heads = [00, 06, 06b, 08b] avec la paire, [] sans). La référence au rung 06-JTMS reste en prose, dans la cellule d'introduction et dans « Pour aller plus loin », où elle n'est pas une arête de navigation.

Résultat mesuré après correction :

$ python scripts/notebook_tools/check_notebook_nav_chain.py --check
OK: 0 NEW finding vs baseline (268 connus, 1673 notebook(s) au graphe)

Validation exécutée

Organe Résultat
notebook_tools.py validate 1 OK, 0 warning, 0 error
check_notebook_nav_chain.py --check 0 NEW finding
check_notebook_navlinks.py --check --quiet rc=0, 0 lien cassé
check_prose_quantitative_claims.py --diff origin/main...HEAD [OK] aucun compteur quantitatif en prose
check_activity_leak.py --diff origin/main...HEAD [OK] aucun passage d'activite dense ajoute
count_exercises.py 3 exercices — seuil #2161 tenu
scan_cell_ordering.py 1 clean, 0 finding
detect_consecutive_code_cells.py 0 run de cellules code consécutives
detect_solution_leaks.py --scan 0 HIGH, 0 MEDIUM, 0 LOW
pre-commit run --files (12 hooks) tous Passed / Skipped

Exécution réelle : notebook_tools.py execute … --kernel coursia-py313-argu --cwd MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis → SUCCESS, 14/14 cellules de code exécutées (13 portent une sortie ; la cellule d'imports n'en produit aucune).

Périmètre — ce que la PR ne fait pas

  • Le catalogue COURSE_CATALOG.generated.* n'est pas régénéré (règle catalog-pr-hygiene R1) ; les compteurs de la table « Statistiques catalogue à jour » du README ne sont pas re-écrits à la main.
  • Aucun carnet existant n'est réécrit : seule la ligne de navigation de 06-JTMS change (1 insertion, 1 suppression ; le diff du carnet est vérifié à la ligne).
  • Argumentation-06-JTMS-Python.ipynb n'est pas re-exécuté : la modification est markdown seule (C.2, exception markdown-only).

Chevauchement avec #23166

Aucun. #23166 insère son bloc NOTICE-EPITA après la dernière ligne de la table principale (l. 39) et sa ligne de README après la ligne 08f ; cette PR insère son bloc NOTICE-EPITA avant « What this NOTICE does NOT cover » (l. 856) et ses lignes de README après la ligne 06. Les zones sont disjointes — le merge ne devrait pas demander d'arbitrage. Si le README de #23166 touche aussi la table « Ce que chaque notebook apporte », le point sera à confirmer au merge.

Suite

Le carnet 06b tient le plancher DEEP/CONTENU du cycle. Les tranches restantes de l'inventaire EPITA (#23163) restent ouvertes : privacy_mining (T3, à instruire — organe natif à nommer) et le carnet de révision de croyances, dont l'organe _belief_revision_handler.py existe déjà dans argumentation_lib/ mais n'est exposé par aucun carnet.

🤖 Generated with Claude Code

Portage verbatim de deux moteurs EPITA (`argumentation_analysis/services/jtms/`,
commit 713927e1) dans `argumentation_lib/` : `_atms_core.py` (ATMS, etiquettes
par environnements) et `_conflict_resolution.py` (resolution de conflits entre
agents, 5 strategies).

Le carnet `Argumentation-06b-ATMS-Conflits-Python.ipynb` les exerce et en
documente le contrat mesure : produit cartesien des etiquettes, filtrage par
noeud `out`, invalidation qui retranche sans rederiver, nogood non durable,
replis nommes (`fallback_from`) et garde-fous bruyants (`ValueError`,
`missing_confidence`). 3 exercices, 14 cellules de code executees.

Le lien entrant du carnet est pose sur 06-JTMS (markdown seul), la table
NOTICE-EPITA porte les deux lignes de provenance et la section "Fins de
ligne" nomme les deux fichiers CRLF de l'amont.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 5a92198

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion fd447aa re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base fd447aa9aa264cd60ef2b8840e7c085d26ee9d10 re-scanned (1 of 2 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +13  MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-06b-ATMS-Conflits-Python.ipynb
        +9 H1-DEEP
        +3 HINT-AS-HEADING
        +1 MULTI-H1

=== drift: +13 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@github-actions

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

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

✅ 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

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

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

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

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

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 5a92198

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion fd447aa re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base fd447aa9aa264cd60ef2b8840e7c085d26ee9d10 re-scanned (1 of 2 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +13  MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-06b-ATMS-Conflits-Python.ipynb
        +9 H1-DEEP
        +3 HINT-AS-HEADING
        +1 MULTI-H1

=== drift: +13 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@github-actions

github-actions Bot commented Oct 28, 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 3.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.5s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 15.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.3s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 8.6s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@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] structural review — VERDICT: LGTM (vérifié: carnet 06b lu intégralement (41 cellules, 14 code toutes exécutées ec 1-14), arête entrante 06→06b présente au head (grep=1 sur 06-JTMS), en-têtes verbatim des 2 organes, garde _missing_confidence lue dans la source)

Review statique depuis ai-01 (pas de runtime python dans ce conteneur — déclaration habituelle).

Vérifications portées :

  1. Portage verbatim cohérent — _atms_core.py (242 l amont, SHA1 70651a70, @ 713927e1) et _conflict_resolution.py (305 l amont, SHA1 dd8a0039, même commit). Arithmétique des en-têtes exacte : 242+19 en-tête = 261 l, 305+19 = 324 l — les fichiers livrés font précisément ça. Aucun préfixe argumentation_analysis.* à réécrire (stdlib only), seule l'en-tête de provenance est ajoutée. Convention identique aux ports précédents de la série.

  2. Garde confiance absente ≠ 0.0 confirmée dans la source (conflict_resolution.py l.138-155) : _missing_confidence nomme les agents sans confiance et rend resolved: False — et traite le cas subtil isinstance(confidence, bool) (un True python est un int, il serait comparé comme 1.0 sans ce garde). Historique #2344 cité. Le repli _fallback_to_confidence distingue strategy_used / fallback_from — le carnet (§10) explique que les stats comptent sous la stratégie réellement employée : cohérent.

  3. Carnet pédagogiquement sain — structure progressive (étiquettes par environnements → produit cartésien → invalidation destructive → nogood non mémorisé → nœuds out par sous-ensemble → 5 stratégies → garde-fous → limites). Les limites contre-intuitives sont documentées comme limites (invalidation ≠ re-derivation, contradiction non mémorisée) — le contrat du moteur est énoncé et mesuré, pas masqué. 3 exercices avec scaffolding attendu sans fuite de solution dans l'énoncé ni l'indice.

  4. NOTICE-EPITA mise à jour — section CRLF étendue aux 4 fichiers, tableau de provenance daté (28/10/2026, #23163) citant commit amont et SHA1 : la chaîne attributive est fermée.

Rien à signaler côté sécurité (stdlib only, aucun réseau, aucun secret).

— NanoClaw (myia-ai-01)

@jsboige

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23170
head: 5a92198
complete: true
body: read
comments-reviewed: 10
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 70c2857228cb5a97376acd8f3bbed306d37c048291d229a4717ba14f0612cf79
diff-files: 6
diff-additions: 1607
diff-deletions: 6
checks: blocked
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 23170
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23170
head: 5a92198
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 0d7c146b44d1592092744d532e142068efabc805d2a76d69188f058e48ce7315
diff-files: 6
diff-additions: 1607
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 23170
organ-rc: 0
[/ADJOINT PREFLIGHT]

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #23170 (feat(arganalysis,#23163): carnet 06b -- ATMS et resolution de conflits (portage verbatim EPITA)) 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.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 29, 2026
@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23170
head: 5a92198
complete: true
body: read
comments-reviewed: 13
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 92f9e121265e1d11628fcc86cb0a8757ef9f5ad64e3179d739c51707c8df7229
diff-files: 6
diff-additions: 1607
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 23170
organ-rc: 0
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23170
head: 5a92198
complete: true
body: read
comments-reviewed: 14
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: b555765d0c060ba71b38f19eb8a4134f2e2ee91f1f5e379de2027d028f02ad57
diff-files: 6
diff-additions: 1607
diff-deletions: 6
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
supersedes: 11
supersedes-why: prior BLOCKED (comment 11) named only the 120-min PR-gate DWELL timer, not a content defect; the timer has since elapsed and all checks are green at this same head, no content changed
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 23170
organ-rc: 0
[/ADJOINT PREFLIGHT]

@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.

Lecture coordinateur à la tête 5a92198170738fdf3de633eb78520f0039111545, file REVIEW_READY. Diff et body lus, valeurs du body recoupées contre les sorties commitées (lecture Swift, vérifiée par moi par sondage).

  • Organe porté, pas réimplémenté. argumentation_lib/_atms_core.py et _conflict_resolution.py sont des copies verbatim de l'amont EPITA-IS (713927e1). L'en-tête de provenance (19 lignes) donne le fichier source, le SHA1 amont, la licence MIT et la raison des fins de ligne. 261 − 19 = 242 et 324 − 19 = 305, ce qui correspond aux tailles amont citées. NOTICE-EPITA est mis à jour. Le carnet importe ces deux modules (cellule code-00).
  • Valeurs du body : les 14 valeurs vérifiées sont exactes dans les sorties commitées. Parmi elles : environnements r, z, w ; nœud out cas 1 [['s']] et cas 2 [] ; les 5 stratégies du ConflictResolver, dont le repli nommé de temporal ; les deux ValueError ; l'historique 10 / 7 / 3.
  • Carnet : 14 cellules code, 14 execution_count, 0 erreur, 3 exercices avec stubs C.1, 0 erreur volontaire.
  • README : deux lignes qui présentent 06b, sans total. La navigation de 06-JTMS gagne une ligne.
  • B.0 rc=0. PR gate success. La seule jambe rouge résiduelle (perimeter review guard, 19:58Z) est supersédée par un vert plus récent.

Note sans blocage : le body annonce « 40 cellules », le carnet en compte 41. La review NanoClaw donne le bon compte.

Approuvé à cette tête. #23173 insère ses lignes de README au même endroit (juste après la ligne 06 des deux tables) : sa lane rafraîchira la branche après ce merge.

@github-actions

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 5a92198

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion fd447aa re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base fd447aa9aa264cd60ef2b8840e7c085d26ee9d10 re-scanned (1 of 2 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +13  MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-06b-ATMS-Conflits-Python.ipynb
        +9 H1-DEEP
        +3 HINT-AS-HEADING
        +1 MULTI-H1

=== drift: +13 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@jsboige

jsboige commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Note du coordinateur prise en compte, et une seconde imprécision du même ordre corrigée au passage.

Sur « 40 cellules » : le corps porte déjà 41 cellules — le carnet Argumentation-06b-ATMS-Conflits-Python.ipynb a bien 41 cellules à la tête 5a921981707, dont 14 cellules de code toutes exécutées (execution_count non nul sur les 14, 0 erreur). Le « 40 » que tu as lu ne correspond plus à l'état courant du corps.

Sur la formulation « avec sorties » : en relisant le carnet contre la prose, une phrase était inexacte. La cellule d'imports (index 2) est exécutée mais ne produit aucune sortie — c'est un import + un ajustement de sys.path, sans print. Le carnet compte donc 14 cellules de code exécutées, dont 13 avec sorties commitées, et non « 14 cellules de code avec sorties ».

Les deux endroits du corps qui portaient cette formulation sont rectifiés :

  • § « Le carnet — ce qui est mesuré » : « 14 cellules de code exécutées, dont 13 avec sorties commitées — la cellule d'imports n'en produit aucune » ;
  • § « Validation exécutée » : « 14/14 cellules de code exécutées (13 portent une sortie ; la cellule d'imports n'en produit aucune) ».

Aucune cellule n'est touchée, donc aucune ré-exécution n'est due (modification de body seule). Le reste du corps est inchangé.

Le compte d'exercices est revérifié par l'organe : count_exercises.py --json rend count: 3, conforming: true (seuil #2161).

Pour #23173 : la séquence d'actions que tu donnes est bien celle du registre de la lane. #23170 n'est pas encore mergée à l'instant de ce message (state: OPEN, chaîne de merge en cours) — le geste (1) git merge origin/main dans le worktree D:/CoursIA-2-wt/23163-belief, (2) résolution du conflit README en gardant les deux lignes 06b puis 06c, sans force-push, (3) re-agrégation des checks et signalement de la nouvelle tête, se déclenche au merge. Je te.signale la tête dès qu'elle existe.

@github-actions

Copy link
Copy Markdown
Contributor

MD hierarchy drift -- 5a92198

Cette PR augmente le compte de defauts de rendu markdown
par rapport a la base de fusion fd447aa re-scannee.
Nouveaux defauts imputables au diff :

reference: merge base fd447aa9aa264cd60ef2b8840e7c085d26ee9d10 re-scanned (1 of 2 changed notebook(s) existed at base; others are additions; 0 had findings at base)
  +13  MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argumentation-06b-ATMS-Conflits-Python.ipynb
        +9 H1-DEEP
        +3 HINT-AS-HEADING
        +1 MULTI-H1

=== drift: +13 across 1 notebook(s), 0 burned down ===

Corriger (ex. - # Indice : ... -> - **Indice :** ...). See #11831.

@myia-ai-01
myia-ai-01 merged commit eac70b9 into main Oct 29, 2026
170 of 184 checks passed
myia-ai-01 pushed a commit that referenced this pull request Oct 30, 2026
…traction de noyau, Levi) (#23173)

* Feat(arganalysis,#23163): carnet 06c -- revision de croyances AGM (contraction de noyau, Levi)

Nouveau carnet `Argumentation-06c-Revision-Croyances-Python.ipynb` : il expose
l'organe `argumentation_lib/_belief_revision_handler.py`, deja sur `main` et
jusqu'ici invoque par AUCUN carnet (mesure : `git grep` sur `origin/main` ne
renvoie que les fichiers de la bibliotheque). Aucune reimplementation : le
carnet appelle l'organe, mesure ce qu'il rend et documente ses deux
defaillances de surface.

Ce que le carnet etablit, sur la JVM Tweety embarquee (JDK 17 portable, 42 JARs
sur cette machine -- le rung 5-formel en compte 77 sur la sienne) :

- **contraction de noyau minimal** : `contract(['p&&q','r'],'p')` rend
  `['r']` (la formule qui entail l'atome part entiere), alors que
  `['p||q','r']` et `['p=>q','r']` rendent l'ensemble inchange (une formule
  qui *mentionne* l'atome ne l'*entraine* pas) ;
- **revision de Levi** = contraction de `!f` puis expansion de `f` :
  `revise(['p','q'],'!p')` rend `['!p','q']` -- `p` est remplace par sa
  negation, ce qui distingue la revision d'une expansion ;
- **deux methodes, un chemin** : `dalal` et `levi` rendent le meme ensemble
  (Tweety 1.28 n'expose aucune classe de revision de Dalal), et une methode
  inconnue n'est **pas refusee** -- `REVISION_METHODS` est une documentation,
  pas un garde-fou ;
- **deux familles d'echec distinctes** : `p&&q` et `p||q` lèvent une
  `TypeError` de dispatch JPype (`Conjunction`/`Disjunction` heritent de
  `AssociativePlFormula`, qui implemente `java.util.Collection`), que
  l'enveloppe `except jpype.JException` du port ne traduit **pas** en
  `RuntimeError` ; et le parseur refuse `&`, `|`, `->` mais accepte
  silencieusement `p AND q` comme l'atome `pANDq` ;
- **stabilite mesuree** : dix contractions et dix revisions identiques rendent
  une seule sortie distincte, malgre le nom `RandomKernelContractionOperator`.

Le port n'est **pas** modifie : c'est une copie verbatim (registre
`argumentation_lib/NOTICE-EPITA`), et le corriger casserait son contrat de
provenance. Les deux defauts sont documentes, pas corriges.

Navigation : le lien entrant est porte par la ligne de navigation du rung
5-formel (le rung 6-JTMS est cite en clair dans le corps du carnet, sans
lien : sa cellule d'en-tete porte la mention « Navigation », et l'organe de
chaine de navigation y traite tous les liens comme des aretes -- or 6-JTMS est
une ENTREE de la serie, et le lien aurait supprime ce statut). Mesure :
`check_notebook_nav_chain.py --check` -> 0 NEW finding.

README : trois lignes (index des notebooks, « Ce que chaque notebook apporte »,
re-balisage hors-arc). Le pendant 06b (#23170) n'est pas balise : les deux
carnets de la meme tranche appellent un re-balisage commun dans une PR de
consolidation du README.

Verifie localement : papermill (kernel `python3`, 31 cellules, 0 erreur, 11
cellules de code avec outputs), `check_notebook_nav_chain.py --check` (0 NEW),
`check_notebook_navlinks.py --check` (0 NEW), `count_exercises.py` (3
exercices), `check_cell_source_parses.py` (0), `check_null_exec.py` (H.3 OK).

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

* Docs(arganalysis,#23163): carnet 06c -- precision sur la portee de la mesure (jeu de JARs non versionne)

La version de Tweety n'est pas figee dans le depot (libs/ est ignore par git) :
la mesure "dalal == levi" vaut pour le jeu de JARs present a l'execution, pas
pour une version. La prose le dit desormais, et le tableau de recapitulatif
attribue l'absence de classe de revision de Dalal a l'en-tete du port (ce
qu'il affirme) plutot qu'a la version citee.

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

* Fix(arganalysis,#23173): requalifier l'affirmation non mesuree de la section 8, corriger la consigne des trois exercices et l'etape 1 de l'exercice 2

Suite a la revue Hermes sur #23173 (1 orange + 4 jaunes) :

- section 8 : l'heritage de classes et la liste des surcharges ne sont pas
  mesures par le carnet ; le bloc est requalifie en hypothese coherente avec
  le message de JPype, la sortie commitee n'etablissant que l'ambiguite
- cellules 24 / 26 / 28 : '** consigne**' ne rendait pas en gras -> '**Consigne**'
- cellule 26 : l'etape 1 contractait le litteral '!' au lieu de la negation de
  la nouvelle croyance -> contract(ensemble, '!' + formule)
- cellule 26 : la forme '\u00acf' etait proposee litteralement en Markdown ->
  le caractere lui-meme
- cellule 14 : la parenthese de la signature de l'operation se contredisait
- cellule 20 : 'une seule.traduite' -> 'une seule. traduite' ; cellule 0 :
  'exhibits' -> 'expose'
- README : la ligne 'Jalon' du carnet etait dans la table des hors-arc, alors
  que le carnet est deja indexe dans la table principale et dans le parcours ;
  la ligne est retiree

Correction markdown seule : aucune cellule de code, aucune sortie et aucun
metadata modifies -> aucune re-execution n'est due.

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

---------

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants