Skip to content

fix(i18n): refonte traduction Rules — 23 HIGH résolus (PT/RU + purge embromador + glossaire) #633 - #640

Merged
jsboige merged 1 commit into
masterfrom
fix/633-rules-i18n-refonte
Jul 2, 2026
Merged

fix(i18n): refonte traduction Rules — 23 HIGH résolus (PT/RU + purge embromador + glossaire) #633#640
jsboige merged 1 commit into
masterfrom
fix/633-rules-i18n-refonte

Conversation

@jsboige

@jsboige jsboige commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

fix(i18n): refonte traduction Rules — 23 HIGH résolus (#633)

Corrige les 23 findings HIGH du dataset Rules identifiés par l'audit ai-01 (2026-07-02) : vieille traduction machine ~2021 jamais remplacée (colonnes Text_pt/Text_ru des 2 fichiers Rules) + contamination LLM récente « embromador » (mot PT) injectée dans FR/EN/ES par les passes #366/#372/#376.

Closes #633.

Approche

  • gpt-5.5 uniquement (mandate), via Responses API /v1/responses + reasoning.effort=low (recipe MEMORY-verified — chat/completions brûle le budget en raisonnement → contenu vide).
  • Édition cellulaire chirurgicale (string-replace + reconstruction csv_quote), pas de réécriture csv.writer : préserve byte-for-byte le formatage fragile (BOM UTF-8 + 16 CRLF intra-cellules + ~2095 LF séparateurs de records dans le fichier Rules principal).
  • Chaque cellule livrée vérifiée individuellement (mandate) — pas d'échantillonnage.

Table AVANT → APRÈS (corrections ciblées)

Fichier Record Colonne AVANT (défectueux) APRÈS
Rules main Rules_04/10/12 Text_pt # Roll of the English Channel ## Decorrer da rodada (retraduit)
Rules main Rules_04 Text (FR) ### 2. L'embromador + 8 occ. ### 2. Le baratineur
Rules main Rules_04 Text_en The embromador The smooth talker
Rules main Rules_04/05/06 Text_es el embromador (vs titres El embaucador) el embaucador (cohérent)
Rules main Rules_07 Text_ru ## Школа лжецов (titre faux — carte = Bingo) ## Бинго аргументативной миксологии
Rules main Rules_09 Text_en ## The last beautiful speaker (beau parleur littéral) ## The Last Smooth Talker
Rules main Rules_10 Text_en number of sleeves (manche→sleeves) number of rounds
Rules main Rules_12 Text_ru ### 1Ведущий, ### 2.Гонка (formatage) ### 1. Ведущий, ### 2. Гонка
Rules main Rules_15 Text_ru ### 2. 7 туров (header décalé) + phrase FR brute ### 3. Ходы игры + ### 4. Подсчёт… (retraduit)
Rules main Rules_04/10/12 Text_ru # Ход партии (manche→partie entière) ## Ход раунда (cohérent раунд)
Rules PP RulesPP_01 Text_ru # Armeryum (marque garbled, couverture) # Argumentum
Rules PP RulesPP_01 Text_pt ## Liars' School (EN, fix #306 non reporté) ## A escola dos mentirosos
Rules PP RulesPP_03 Text_ru ## Средство (installation→remède) ## Подготовка
Rules PP RulesPP_04 Text_ru Пичер, Баратинер, English Channel Ведущий, Болтун, Сценка (canon aligné)
Fallacies PK615 example_ar russe (copie example_ru) arabe MSA
Virtues pk71 description_ru fuite française russe

Retraductions intégrales (gpt-5.5, MT ~2021 pervasive)

Bloc Cellules Raison
Rules main Text_pt (15 records) 15/15 MT pervasive (« manga »=manche, « picareta »=pioche, « Canal da Mancha », « gaveta desenha »=drawer+draw)
Rules PP Text_pt (6 records) 6/6 idem + divergeait du principal
Rules PP Text_ru (6 records) 6/6 idem (Armeryum, Пичер, Баратинер ×13, Saynet ×4)
Purge embromador FR/EN/ES 11 cells contamination LLM (PT conservé — embromador = canon PT du rôle baratineur)

Prévention récidive — glossaire verrouillé dans les prompts

Cause racine LLM identifiée dans les prompts eux-mêmes :

  1. PromptRulesFrClarityUser.txt:12 listait embromador comme terme français à préserver → le modèle l'a injecté en FR. Corrigé : canonique baratineur + directive anti-contamination étrangère.
  2. PromptRulesCascadeDriftUser.txt:18 juxtaposait embromador, baratineur comme « incohérents à harmoniser » → propagation EN/ES. Corrigé : remplacé par le glossaire canonique multi-langue verrouillé (piocheur/baratineur/manche/pli/atout/saynète × 5 langues).

Scanner — delta

scan_translations.py (cell-level, 5 CSV, 4 datasets) :

AVANT : 22 findings (20 HIGH + 2 MEDIUM)
APRÈS :  7 findings (7 HIGH — TOUS faux positifs documentés)
Résolus: 15 (13 HIGH Rules + 2 MEDIUM taxonomy)

Les 7 résiduels = faux positifs confirmés dans l'audit ai-01 (noms latins canoniques Credo quia absurdum, emprunts Gish Gallop/Creepypasta/Whataboutism, mnémoniques syllogismes Celarent/Camestres 三段论, nom propre Johnny Johnny) — à arbitrer séparément, hors-scope #633.

0 HIGH Rules résiduel. 0 MEDIUM taxonomy résiduel.

⚠️ Reste à faire (gated jsboige)

Item #6 du scope — sync GDrive (source autoritative) NON effectuée. Upload gated jsboige. Sans cette étape, le prochain pull baseline réimportera le garbage MT — cause racine exacte du clobber #211 par 7fae40cc (pull GDrive qui a écrasé la retraduction PT). Protocole safety recommandé : download GDrive → diff vs cette PR → review → upload → re-diff verify.

Intégrité CSV vérifiée

Records, BOM UTF-8, line-endings hybrides (CRLF intra-cellule + LF séparateurs) préservés byte-for-byte — confirmé post-édition.

Test

  • Je ne déclare pas PASS (mandate) — verdict qualité = ai-01 re-run le scanner sur cette branche + validation visuelle des PDFs Rules régénérés.
  • Pas de test C# impacté (CSV + prompts uniquement ; po-2023 gère C#/OWL/SVG en parallèle, pas de collision de fichiers).

Relates #211, #306, #366, #372, #376, #134, #591.

🤖 Generated with Claude Code

… PT/RU + glossaire verrouillé (#633)

Corrige les 23 findings HIGH du dataset Rules (audit ai-01 2026-07-02) :
vieille MT ~2021 jamais remplacée (Text_pt/Text_ru) + contamination LLM
« embromador » (mot PT) injectée dans FR/EN/ES par les passes #366/#372/#376.

Cards/Rules/Argumentum Rules - Cards.csv (15 records) :
- Text_pt : retraduction intégrale depuis FR (gpt-5.5 Responses API)
- Text_ru : Rules_07 titre (Бинго аргументативной миксологии), Rules_12
  formatage headers, Rules_15 retraduction (header vide + phrase FR incrustée),
  « Ход партии » → « Ход раунда » ×3 (cohérence раунд)
- Text_en : Rules_09 « The Last Smooth Talker » (beau parleur), Rules_10
  « rounds » (manche ≠ sleeves)
- Purge embromador FR→baratineur / EN→smooth talker / ES→embaucador (11 cells,
  PT conservé — embromador = canon PT du rôle baratineur)

Cards/Rules/Argumentum Rules - Cards Print and Play.csv (6 records) :
- Text_pt + Text_ru : retraduction intégrale (PP divergeait silencieusement du
  principal ; couverture #306 reportée : « A escola dos mentirosos »)

Taxonomy (2 cellules MEDIUM) :
- Fallacies PK615 example_ar : russe (copie example_ru) → arabe MSA
- Virtues pk71 description_ru : fuite française → russe

Prévention récidive — glossaire verrouillé dans les prompts DatasetUpdater :
- PromptRulesFrClarityUser.txt : « embromador » listé à tort comme terme FR →
  corrigé en canonique « baratineur » + directive anti-contamination étrangère
- PromptRulesCascadeDriftUser.txt : ligne « terminologie incohérente
  (embromador, baratineur) » induisait l'harmonisation → remplacée par le
  glossaire canonique multi-langue (piocheur/baratineur/manche/pli/atout/saynète)

Scanner (scan_translations.py) : 22 findings → 7 (les 7 résiduels = faux
positifs documentés : noms latins canoniques Credo quia absurdum, emprunts
Gish Gallop/Creepypasta/Whataboutism, mnémoniques Celarent/Camestres, nom
propre Johnny Johnny). 0 HIGH Rules, 0 MEDIUM taxonomy résiduel.

NOTE : GDrive (source autoritative, item #6 du scope) NON mis à jour — upload
gated jsboige. Sans sync GDrive, le prochain pull baseline réimportera le
garbage (cause racine du clobber #211 par 7fae40c).

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

@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] — COMMENT_WITH_CONCERNS (vérification mécanique OK, fidelité de traduction RU/AR = hors mon périmètre de vérification)

Vérifié firsthand (ce que je peux juger) :

  • Intégrité CSV : 10 champs/header, 15 data rows (main) / 6 (pp) préservées, diffs équilibrés (+230/-226, +69/-69) = édition cellulaire, pas d'ajout/suppression de records. BOM UTF-8 + CRLF/LF préservés (édition string-replace, pas csv.writer rewrite — sage pour le formatage fragile). ✓
  • Purge embromador confirmée par colonne (parse CSV multi-line aware) : embromador apparaît uniquement dans Text_pt (4 records main + 3 pp = canon PT du rôle baratineur, retenu comme prévu), 0 dans Text (FR) / Text_en / Text_es. baratineur (canon FR) et embaucador (canon ES) présents dans leurs colonnes respectives. Cohérent avec le glossaire verrouillé. ✓
  • Glossaire verrouillé dans les 2 prompts (root-cause fix) : PromptRulesFrClarityUser L12 (embromador retiré de la liste « français à préserver » → canon baratineur + directive anti-mot-étranger) + PromptRulesCascadeDriftUser L18 (glossaire 6-termes × 5 langues piocheur/drawer/Ведущий/comprador/repartidor etc.). C'est la prévention récidive qui adresse la cause racine — solide. ✓ (comprador PT = « acheteur » = correct pour « comprar carta » = piocher en PT jeu de cartes.)
  • Fixes marque/MT grossiers vérifiés : Armeryum → 0 (garble marque → Argumentum), « English Channel » → 0 dans main (l'erreur MT PT « Roll of the English Channel » est partie). ✓
  • Text_fr/EN/ES jugés corrects sur l'échantillon : « Le baratineur » (FR), « The smooth talker » (EN), « el embaucador » (ES cohérent avec titres). ✓

Concerns (pourquoi pas LGTM clean) :

  • Fidelité de traduction RU non vérifiable par moi. Les retraductions Text_ru (« Бинго аргументативной миксологии », format fixes « ### 1. Ведущий », « Argumentum » vs « Armeryum ») — je confirme les fixes structurels (formatage markdown, marque garbled) mais je ne peux pas juger la qualité de traduction (cyrillique hors mon domaine). Même chose pour example_ar (Fallacies PK615, claim « russe → arabe MSA » — je peux confirmer que ce n'est plus du cyrillique, pas juger l'arabe) et la profondeur PT (retraduction 15+6 cells : le garbage MT évident est parti, mais un natif PT est requis pour valider).
  • Recommandation : la partie RU/AR (voire PT deep) mérite un passe native-reader (po-2023 / ai-01 / Emerjesse) avant merge, surtout RU qui est 2/3 du volume de retraduction. Ce n'est pas un reproche au travail (le processus — gpt-5.5 + glossaire verrouillé + scanner delta — est sain), c'est ma limite de vérification explicitement énoncée plutôt qu'un LGTM de complaisance.
  • Item #6 GDrive sync NON fait (gated jsboige) — flagué honnêtement par la PR elle-même. Risque réel : sans sync GDrive (source autoritative), le prochain pull baseline réimportera le garbage MT = cause racine exacte du clobber #211 (7fae40cc). À traiter avant/après merge selon le protocole safety (download GDrive → diff → review → upload → re-diff verify).
  • △ Les 7 findings résiduels claimés « faux positifs documentés » (Credo quia absurdum, Gish Gallop, Celarent/Camestres, Johnny Johnny…) sont plausibles comme emprunts/noms propres canon — mais je n'ai pas le scanner output pour confirmer la classification false-positive. Hors-scope #633 de toute façon.

Le travail mécanique + FR/EN/ES + root-cause prompt est excellent et vérifié. Le blocage n'est pas le code, c'est ma limite linguistique sur RU/AR que je refuse de masquer par un LGTM.

@jsboige
jsboige merged commit 2079f0c into master Jul 2, 2026
3 checks passed
@jsboige
jsboige deleted the fix/633-rules-i18n-refonte branch July 2, 2026 02:04
jsboige added a commit that referenced this pull request Jul 2, 2026
…pConfigFile, chemins) #635 (#643)

* docs(release): unifier docs pré-tag v0.9.0 — compteurs tests, langues, SkipConfigFile, chemins (#635)

Corrige les incohérences factuelles entre docs publiées identifiées par l'audit
ai-01 (2026-07-02), à unifier AVANT le tag. DoD : 0 compteur divergent entre
docs publiées.

Compteurs tests divergents (bloqueur crédibilité) → unifiés sur 549/0/5 :
- CHANGELOG.md l.70 : « 159 tests » + skips contradictoires (1 vs 5) → 549/0/5
- docs/RELEASE-NOTES-v0.9.0.md l.44 : « 533 tests » → 549/0/5
- CLAUDE.md l.448 : « 77 tests, 1 skip » → 549/0/5

Dates placeholders :
- CHANGELOG.md l.8 : `2026-06-XX` → `2026-07-XX`
- RELEASE-NOTES l.3 : « WE 27/06 » → « pré-tag juillet 2026 »
- RELEASE-NOTES l.22 : régén 2026-06-25/bef3bc6c → 2026-07-01/3e2fa0c0 (post-#640)

README.md racine (incomplet pour la release) :
- « currently in French » → mention 8 langues (FR/EN/RU/PT/ES/AR/FA/ZH)
- Chemins `net9.0/` → `net9.0-windows/` (TF réel du csproj, 2 occ.)
- Ajout section Downloads (snippet §5 release-dossier, adapté : Ontologie FR·EN,
  Mind Maps 8 langues) — résout demande #134

News FR (#135) :
- Téléchargements : Ontologie « FR » → « FR·EN » (réalité bilingue #637)
- Cartes mentales : nuance ajoutée (Fallacies 8 langues ; Vertus FR-frozen,
  localisation différée — cf audit Virtues mindmap FR-figé)
- Scope MindMap tranché : placeholder « 4 ou 8 langues » → 8
- Checklist : retrait item placeholder scope MindMap résolu

CLAUDE.md projet (contradictions actives dangereuses pour agents) :
- SkipConfigFile : « ALWAYS verify false » (piège actif) → « deliberately true,
  C# defaults = source of truth, tuple serialization casse JSON »
- Magick.NET 13.5.0 → 14.14.0 + nuance CMYK (no-op PNG, GS post-process #632)
- Languages FR/EN/RU/PT → 8 langues (suffixes CSV étendus)
- Chemin output `net9.0/Target` → `net9.0-windows/Target`
- « 20 SVGs 4 langues » → 8 langues (PR #565)
- Tests 77 → 549 (July 2026, zero-warning #587)
- Table CMYK Debug/Release : nuance #632 (per-image no-op PNG, autorité GS PDF)

Vérification DoD : grep 159/533/77 + 2026-06-XX + « false » dangereux = 0
résiduel (le seul match « false » = mention contextuelle « Do not fix to
false », correct).

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

* docs(release): corriger compteur tests — 548/1/5 (fail OWL #133), pas 549/0/5 (#643 review ai-01)

Contre-vérification empirique ai-01 + re-vérification po-2024 (dotnet test sur
f2852ab) : le compteur réel est 548 pass / 1 fail / 5 skip / 554 total, PAS
549/0/5 (claim reprise du body #635, non vérifiée en amont).

Le FAIL = OwlE2EGenerationValidationTests.LoadedOntology_RdfTypeAndInScheme_
DroppedByOwl2XmlRoundTrip — bug round-trip OWLSharp pré-existant (tracké #133),
n'affecte pas les assets générés. Le publier « 0 fail » aurait recréé le
problème de crédibilité que #635 corrige.

Formulation honnête (CHANGELOG + RELEASE-NOTES + CLAUDE.md) :
  548 tests pass, 5 skips (GUI/infra), 1 known-fail (OWLSharp rdf:type/inScheme
  round-trip, pre-existing, tracked #133 — does not affect generated assets)

Vérifié empiriquement : échec 1, réussite 548, ignorées 5, total 554.

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

---------

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 2, 2026
)

Doc d'arbitrage pour les 7 findings résiduels du scanner scan_translations.py
après la refonte Rules #640 (22 -> 7). Analyse cell-by-cell avec contrepartie
FR (canon) + inter-langue pour chaque FP.

Verdict : les 7 sont légitimes (KEEP). Preuve structurelle : le FR lui-même
garde "Gish gallop" et "Creepypasta" non traduits (emprunts consacrés) -> ZH
qui fait de meme est coherent, pas contamine. Le scanner declenche sur un
seuil mecanique (<30% CJK/cyrillique) inadapte aux noms propres, emprunts et
mnemoniques latins.

- PK30 text_ru "Credo quia absurdum" : latin canonique (EN agree)
- PK475/927 text_zh "Gish Gallop"/"Creepypasta" : FR+EN gardent l'emprunt
- PK1363 text_zh "Whataboutism(什么主义)" : emprunt + glose calque usuelle
- PK107/112 title_zh "Celarent/Camestres 三段论" : convention mnemoniques latins
- PK6.1.3 title_zh "Johnny Johnny" : nom propre (FR identique)

Recommandations scanner optionnelles (nice-to-have, pas bloquant tag) :
exemption <12 chars, whitelist emprunts, croisement avec FR canon.

Decision attendue jsboige post-tag : confirmer KEEP ou polish optionnel
(gloses ZH). Ces 7 ne bloquent PAS le tag v0.9.0.

Relates #633 #640 #140.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Jul 2, 2026
…633/#644)

Scanner de qualite de traduction reference par #640/#644 mais vivant dans aucun
arbre. Commit sous docs/investigations/scripts/ (force-add: dir ignore par
.gitignore Scripts/, comme les scripts .ps1 existants) pour reproductibilite.

3 heuristiques anti-FP (baseline 22 -> 1 finding):
  1. Whitelist loanwords/mnemoniques (LEGIT_TOKENS): Gish gallop, Creepypasta,
     Whataboutism, Credo quia absurdum + mnemoniques syllogismes
     (Barbara..Bamalip). Strips avant script-ratio.
  2. Exemption cellules courtes (MIN_SCRIPT_CHARS=12).
  3. FR-canon cross-check SAFE: supprime seulement si FR source + traduction
     partagent un loanword/mnemonique connu. La variante "overlap latin large"
     masquait le clobber #211 -> restreint au set curve.

Resultat master 99145fa: 1 finding = Scenarii 6.1.3 title_zh "Johnny Johnny"
(0% CJK) = VRAI defaut (duplication; FR canon "Johnny au Pantheon", PT correct
"Johnny no Panthon"). Infirme verdict #644 "KEEP" pour cette cellule (follow-up).

5 tests synthetiques valides. REPO configurable (--repo / $ARGUMENTUM_REPO).

Relates #633, #640, #644, #211.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 2, 2026
…impossible + worklist garbage (#646)

Deep-queue PRIMAIRE (dispatch ai-01 msg-c60w1b). L'artefact paste-ready row-level
demandé est structurellement impossible: les rangées GDrive (24, granularité fine)
traversent les frontières de records repo (15 main + 6 PP, coarser). Preuve: GDrive
row 4 chevauche Rules_04 (fin "Le baratineur expose...") ET Rules_05 (debut "### 4.
Le jury"); row 5 "En cas d'egalite" est un paragraphe interne a Rules_05, pas
RulesPP_06. 17/24 rangées n'ont pas de correspondance rangée-à-rangée propre.

Livraison re-cadrée en analyse décisionnelle:
- Carte structurelle 24 rangées -> records repo (avec marquage chevauchements)
- Inventaire 27 cellules garbage MT residuel avec clean equivalent + record source
- Re-cadrage decisions A (A1 collapser / A2 fixing in-place / A3 re-split fragile),
  B (OAuth vs paste), C (colonnes AR/ES/ZH/FA), D (feuille PP)
- Reco po-2024: A2 + B2 (fixing paragraphe-level 27 cellules, preserve structure)

Aucun upload GDrive (conforme mandate jsboige + B non tranché).

Relates #193, #211, #633, #640. Base master 99145fa.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 2, 2026
…633/#644) (#647)

Scanner de qualite de traduction reference par #640/#644 mais vivant dans aucun
arbre. Commit sous docs/investigations/scripts/ (force-add: dir ignore par
.gitignore Scripts/, comme les scripts .ps1 existants) pour reproductibilite.

3 heuristiques anti-FP (baseline 22 -> 1 finding):
  1. Whitelist loanwords/mnemoniques (LEGIT_TOKENS): Gish gallop, Creepypasta,
     Whataboutism, Credo quia absurdum + mnemoniques syllogismes
     (Barbara..Bamalip). Strips avant script-ratio.
  2. Exemption cellules courtes (MIN_SCRIPT_CHARS=12).
  3. FR-canon cross-check SAFE: supprime seulement si FR source + traduction
     partagent un loanword/mnemonique connu. La variante "overlap latin large"
     masquait le clobber #211 -> restreint au set curve.

Resultat master 99145fa: 1 finding = Scenarii 6.1.3 title_zh "Johnny Johnny"
(0% CJK) = VRAI defaut (duplication; FR canon "Johnny au Pantheon", PT correct
"Johnny no Panthon"). Infirme verdict #644 "KEEP" pour cette cellule (follow-up).

5 tests synthetiques valides. REPO configurable (--repo / $ARGUMENTUM_REPO).

Relates #633, #640, #644, #211.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 2, 2026
…ole-flood on event thread (#651)

Root cause (grounded in code): GenerateHarvestImages subscribed a page.Console
handler that logged EVERY browser console message as 5 verbatim Log lines, executed
synchronously on Playwright's single event-dispatch thread. Each Log call does a
File.AppendAllText (open/write/close under lock) plus AnsiConsole writes — and
Spectre.Console's AnsiConsole is NOT thread-safe, so the harvest thread and the
Playwright event thread accessed it concurrently.

Under a full clean-slate harvest, CardPen floods the console during
cardpen.write.generate. The per-message slow synchronous I/O + concurrent AnsiConsole
access starved/stalled the Playwright transport, so subsequent Goto/Evaluate awaits
never received their responses → indefinite 0-CPU freeze with NO timeout (the timeout
mechanism itself needs the stalled dispatch loop). po-2023 reproduced this 3/3 at the
Rules harvest (~2-3 min in). It surfaced now because this was the first full fresh
harvest since the clobber (max console volume) post-#640/#645.

Fix: the handler now captures ERROR-level console messages only, into a lock-free
ConcurrentQueue (zero file I/O, zero AnsiConsole on the event thread). Captured errors
are drained on the main thread in the finally block. Normal-path console spam — pure
debug instrumentation ("--- CONSOLE MESSAGE RECEIVED ---") — is dropped. Error
diagnostics for genuine CardPen failures are preserved.

Surgical: 1 file, +17/-5. Build clean (0 errors). No behavioral change to harvesting
other than removing the log flood and its deadlock. Validation: po-2023 to re-run the
harvest with their reliable 3/3 repro.

Relates #629 (Playwright stability), #645/#134 (bundle v3 tag critical path).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 3, 2026
…EN+FR) (#659)

Consolidated release-notes draft for the v0.9.0 GitHub Release, building on the
po-2023 draft (docs/RELEASE-NOTES-v0.9.0.md) and reflecting the post-bundle-v3
work not yet captured there:

Highlights:
- 8 languages x 10 documents, print-ready (bundle v3, 80 PDFs, PNG-300-lossless)
- Print & Play free + complete: Standard (full game) + Light (sample + Virtues
  families overview, depth<=2, #645/#648-650)
- Print-ready CMYK + SWOP OutputIntent via --pdf-cmyk Ghostscript post-pass
  (#632/#652)
- Rules i18n cleanup (#633->#640), 0 HIGH residual + committed anti-FP scanner

Notable fixes since dossier #591: harvest deadlock (#651), Logger hardening
(#630/#655), Scenarii 6.1.3 title (#653), GSheet Rules sync (#642).

Known limitations: SVG mind maps potentially stale (#636), OWL round-trip
#133, DNN CVEs (separate ops milestone).

EN + FR (impersonal). NOT published - draft docs only, jsboige validates and
pastes into the GitHub Release. Test count flagged as dashboard-baseline
(reported, not empirically re-verified) per [[test-counter-empirical-dotnet-test]].

Base ca5db81.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 3, 2026
…iduals NO-OP proof (#661)

Secondaire dispatch ai-01 (msg kp26j6) — data pendant of visual verdict #140.

Rules audit (Cards/Rules/Argumentum Rules - Cards.csv, read-only):
- 15 records x 8 languages = 120/120 cells OK (populated + correct script).
- 0 empty, 0 contamination residual post-#640 (scanner #647 = 0).
- 2 heuristic flags cleared as false positives: Rules_01 ZH (说谎者学校
  present, latin inflation from brand "Argumentum"); embromador (canonical PT
  game-term for baratineur, 77x in Scenarii PT).

Primaire (Fallacies EN residuals) = NO-OP, proven empirically:
- 0 empty desc_en across 1408 rows; PK 371/607 (cited empty) already populated
  (120/79 chars).
- Scanner #647 TOTAL=0; 0 EN identical-to-FR; 0 EN reading as French.
- The #351/#308 drift (40 PK) was resolved in an earlier cycle.

Reporting the no-op rather than fabricating work / spending gpt-5.5 on nothing
(pattern: verify before concluding, [[matcher-no-match-is-not-content-absent]]).

Read-only, 0 CSV write. Base 9c19e51.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 3, 2026
…inding (4 datasets) (#667)

Secondaire dispatch 29u572 (ai-01). Final pre-release translation-quality sweep.

Re-ran scanner #647 on master 27442ad across all 4 datasets (Fallacies 1408,
Virtues 223, Scenarii 167, Rules 15 = 1813 rows). Result: TOTAL: 0 finding —
0 drift, 0 MT-contamination residual, 0 EN-identical-to-FR. Expected (audits
anterieurs 100%).

Confirms the i18n surface is ship-ready at tag time, cumulative from #640
(Rules refonte), #653 (Johnny fix), #218-295 (Virtues), Scenarii 167/167.
No gpt-5.5 fill warranted — reporting the 0-finding state per no-fabrication
discipline rather than generating work. Data-side pendant of ai-01's verdict
#140 (QA verdict on rendered output remains ai-01's lane).

Reproducible: python docs/investigations/scripts/2026-07-02-scan-translations.py

Relates #647 #640 #653 #134 #140. Base 27442ad.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 4, 2026
 RENDUS + path CMYK (#675)

Refresh the release-validation dossier (PR #631) to reflect the
2026-07-03/04 state. ai-01 dispatch tbxfhu (tertiary).

Key updates:
- 64→80 PDFs: bundle v3 (10 types × 8 langues, expansion P&P #648-650
  = P&P Standard + P&P Light). Bundle GDrive v3 = 6.5 GB (80 CMYK +
  7 samples + CMYK_COLOR_PROOF.txt).
- Verdict #140 (content, 8 langs) = PASS ai-01 RENDU: carte dense p51
  EN/ES/RU/AR/FA/ZH (RTL AR+FA, CJK), covers, PT #306 fixé, FR Rules
  5 jeux. #119, recto-verso, #216, micro-RU résolu.
- Verdict #632 (colorimetric) = PASS ai-01 RENDU: DeviceCMYK 4-comp +
  GTS_PDFX/OutputIntent on fr+ar+zh.
- Finding 1 (CMYK absent) → RÉSOLU: post-process Ghostscript (#632/#652)
  = 80/80 DeviceCMYK + OutputIntent SWOP. Le path DocumentCardSet.cs
  (oxymore PNG) est remplacé par le post-process GS sur le PDF final.
- Tag v0.9.0: techniquement débloqué (2 verdicts PASS). Reste arbitrages
  jsboige (#636 §1 SVG Virtues, #654 mnémoniques, couplage go-live DNN)
  + finding titre PT (§3.6; note: #640 a résolu le bulk 'English Channel'
  23 occ HIGH, titre Tarot PT spécifique possiblement inclus).

Master ref 3e2fa0ca41cbda. Bundles Debug/Release-v1 préservés.

Relates: #631 #632 #652 #648 #649 #650 #140 #134. ai-01 dispatch tbxfhu.

Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 4, 2026
…tability fixes) (#134) (#689)

The v0.9.0 entry predating bundle v3 missed the print-production and
late-cycle stability work. This refresh brings it in line with master
`21e2c666`, cross-checked against the release-validation dossier v4
(docs/RELEASE-VALIDATION-v0.9.0.md §3.3) and dashboard decisions #26-69.

Added:
- "Print Production (CMYK & Print&Play)" section: Ghostscript post-process
  (#632), `--pdf-cmyk` entry-point (#652), bundle v3 = 80 PDFs DeviceCMYK +
  SWOP OutputIntent (6.18 GB RGB -> 5.30 GB CMYK), P&P Standard/Light
  (#645/#648-650, 64 -> 80 PDFs), GS timeout 180->900s (#670)
- "OWL Ontology (Bilingual EN/FR)" section: Fallacies OWL 5.07 MB (#634
  regen), Virtues OWL (#592/#499 Phase 2), honest scope note (EN+FR only,
  not 8-lang)
- "Fixed - Pipeline Stability (Jun-Jul 2026)" section: harvest deadlock
  #651, serial retry #613/#676, logger Spectre #630/#655, CMYK oxymore,
  Johnny 6.1.3 #653, Rules i18n refonte #640, CSV hygiene #579/#581/#584,
  OWL staleness #634

Corrected (code=truth):
- Magick.NET 14.13.1 -> 14.14.0 (verified in .csproj)
- Test count 548 -> 578 pass / 1 known-fail #133 / 5 skip / 584 total
  (empirical `dotnet test` on Argumentum.AssetConverter.Tests, 2026-07-04,
  .NET 9). Previous counts in docs (548/549/570) were all stale

No existing content regressed; all prior sections preserved.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 6, 2026
…urrent (#664), no régén needed (#735)

Executes dispatch `x0ykyn` TERTIAIRE [3] (#636 §1) as a read-only verification.

The dispatch asked for a manifest of Fallacies EN/RU régénération scope (PKs/nodes changed in the
taxonomy CSV since the committed SVGs). Code=truth shows the premise is moot: the SVGs were
regenerated 2026-07-03 by #664 (commit d448467, merged by ai-01), and ZERO commits touch the
Fallacies taxonomy CSV after that date. The "~34 commits stale / dated 06-04" wording restated in
ai-01's 2026-07-06 #636 comment predates #664 (it quotes #636's original opening title verbatim).

Proof (all in the doc):
- `git log -1 -- <en/ru content.svg|links.svg>` = d448467 2026-07-03 (#664 "refresh Fallacies EN/RU").
- `git log d448467..HEAD -- <Fallacies Taxonomy.csv>` = empty (0 commits since the régén).
- Last CSV commit before régén = 2079f0c 2026-07-02 (#640); régén is one day later (strictly newer).
- #664 body (ai-01-authored): stale labels purged (All-or-Nothing Thinking etc.), fresh labels present
  (Abusive relativism etc.), RU 1447 Cyrillic nodes.
- Spot-check: `grep -c "All-or-Nothing Thinking" en/Fallacies_en.content.svg` = 0 (stale label gone).

Conclusion: gap #1 (#636 §1) is already CLOSED. No manifest of pending changes exists because there
are none. Recommendation: close #636 entirely (§1 closed by #664 2026-07-03, §2 closed by #724
2026-07-06 — both gaps in the title resolved).

Read-only: 0 write Cards/, 0 régén, 0 CSV/DB/OWL mutation, 0 rendering code. git log / git show /
gh pr view / one grep on a committed SVG only.

Dispatch x0ykyn TERTIAIRE [3] / #636 §1. Base 240511c.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 28, 2026
…134) (#961)

Dispatch ai-01 (msg-gzd0d3) : mesurer et rapporter, ne rien corriger dans le
même geste. Additif — 0 ligne du dossier audité modifiée.

6 affirmations PÉRIMÉES mesurées sur master 3094d42 :
- §3.2 « Virtues .content.svg FR-figés » → native-script 8/8 (9f52446 #686/#724,
  tailles distinctes du FR). Même défaut que l'addendum #960 a corrigé dans le doc
  GO, non reporté ici.
- §3.2 es/ar/fa/zh « 3 SVGs » → 5 SVGs chacun.
- §4 tests « 596/601 » → 643/638/5 (CI run 30280070312). Contradiction interne
  avec le §0 corrigé par #959.
- §4 Magick.NET « 14.14.0 » → 14.15.0 (#871).
- §3.6/§5.8/§7/§8.2(c) titre PT « English Channel » « appel à décision » → résolu
  (#803 7e72f3e, absent de Cards/, source de rendu jamais portée #640).
- §5.4(a)/§8.2(a) #636 « arbitrage ouvert » → CLOSED 2026-07-06 + prémisse jumelle
  fausse.

4 OK re-mesurés (Virtues 223, OWL 6030505/862709 B, 145 aifAttackType, 5558 EN,
4861 FR, 57 broadMatch — v5.2 tient sur master actuel). 3 non re-mesurés ce tick
(Fallacies 1408, Scenarii 167, prefLabel/broader — probe imparfaite, cohérents).

Correction du dossier audité = PR séparée à décider par ai-01 (owner gate #134).

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
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.

fix(i18n): refonte traduction Rules — 23 HIGH (MT 2021 + contamination embromador FR/EN/ES + divergence PP + GDrive stale)

2 participants