Skip to content

docs(i18n): committer scan_translations.py + 3 heuristiques anti-FP (#633/#644) - #647

Merged
jsboige merged 1 commit into
masterfrom
docs/633-commit-scanner
Jul 2, 2026
Merged

docs(i18n): committer scan_translations.py + 3 heuristiques anti-FP (#633/#644)#647
jsboige merged 1 commit into
masterfrom
docs/633-commit-scanner

Conversation

@jsboige

@jsboige jsboige commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

docs(i18n): committer scan_translations.py + 3 heuristiques anti-FP (#633/#644)

TERTIAIRE (dispatch ai-01 msg-…c60w1b). scan_translations.py était référencé par
#640/#644 mais ne vivait dans aucun arbre — commit sous
docs/investigations/scripts/ (force-add : dir ignorée par .gitignore Scripts/,
comme les scripts .ps1 existants) pour rendre la méthodologie reproductible.

Les 3 heuristiques anti-FP (baseline 22 → 1 finding)

  1. Whitelist loanwords/mnémoniques (LEGIT_TOKENS) : Gish gallop, Creepypasta,
    Whataboutism, Credo quia absurdum + mnémoniques syllogismes (Barbara, Celarent,
    Darii… Bamalip). Strips avant le script-ratio scoring → un titre ZH « Celarent 三段论 »
    ne lit plus comme « 50% CJK ».
  2. Exemption cellules courtes (MIN_SCRIPT_CHARS=12) : les titres <12 lettres
    (noms propres) sont exonérés du seuil <30% script-ratio inadapté.
  3. FR-canon cross-check SAFE : supprime l'alerte seulement si le FR source ET la
    traduction partagent un loanword/mnémonique connu. La variante naïve « overlap latin
    large » masquait à tort le clobber Full retranslation needed for PT Rules CSV (blocked by #183) #211 (cellule _ru = FR non traduit partageant
    les mots FR ordinaires comme « baratineur ») → restreint au set curaté.

Résultat sur master 99145fab

22 → 1 finding. L'unique résiduel = Scenarii 6.1.3 title_zh = "Johnny Johnny"
(0% CJK, 12 chars) = VRAI défaut (duplication ; FR canon = « Johnny au Panthéon »,
PT correct = « Johnny no Panthéon »).

⚠️ Ce finding infirme mon verdict #644 « KEEP » pour cette cellule. En #644 j'avais
arbitré « PK6.1.3 title_zh = Johnny Johnny = nom propre, miroir FR canon » — mais le FR
canon est « Johnny au Panthéon », pas « Johnny Johnny ». Le scanner confirme
objectivement (reproductible) que c'est un défaut réel. Comment de correction à poster
sur #644. Les 6 autres arbitrages #644 restent valides (vraies FPs : Credo latin, Gish
gallop/Creepypasta/Whataboutism emprunts, Celarent/Camestres mnémoniques latins).

Validation

5 tests synthétiques (clobber FR détecté ✓, loanwords ZH/RU supprimés ✓, English Channel
PT détecté ✓, Celarent ZH supprimé ✓, FR non traduit détecté ✓). REPO configurable via
--repo / $ARGUMENTUM_REPO.

Impact

  • Doc/outil uniquement (0 changement de code/CSV/données).
  • Ne bloque pas le tag — rend la QA i18n reproductible + corrige une erreur docs(i18n): arbitrage 7 faux positifs scanner post-#640 (#633) #644.
  • Suit le signalement SECONDAIRE : le défaut Johnny (6 langues) + l'inventaire
    mnémoniques (40-60 cellules style) sont signalés à ai-01 pour décision scope.

Relates #633, #640, #644, #211. Base 99145fab.

🤖 Generated with Claude Code

…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
jsboige merged commit eee8b01 into master Jul 2, 2026
3 checks passed
@jsboige
jsboige deleted the docs/633-commit-scanner branch July 2, 2026 10:58
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
…e sign-off, 0 finding) (#679)

Secondaire of dispatch `lofjtd` (ai-01). Read-only coherence scan of Fallacies
taxonomy family/subfamily labels across 7 non-FR languages - the intra-lang
consistency axis not covered by scanner #647 (FR-contamination) nor #192
(FR-relative terminology).

Result: 0 inconsistencies at every meaningful granularity:
- Family_<lang> by (Famille, Sous-Famille): 29 groups, 0 inconsistent
- Subfamily_<lang>: 21 groups, 0 inconsistent
- Subsubfamily_<lang>: 63 groups, 0 inconsistent
- FR Sous-Famille -> consistent Subfamily_<lang>: 21, 0 inconsistent

The apparent Famille-level divergence (7/8 families) is intentional
sub-family-level localization, not a data-quality defect.

Complements #667 (scanner #647 = 0) and #192 on the three i18n axes.
Release Fallacies taxonomy surface: coherent + uncontaminated.

0 CSV write, 0 gpt-5.5 call. Read-only.

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.

1 participant