Skip to content

data(rules): fix PT cover subtitle (EN contamination row 1) - #306

Merged
jsboige merged 1 commit into
masterfrom
data/rules-cover-pt-fix
May 18, 2026
Merged

data(rules): fix PT cover subtitle (EN contamination row 1)#306
jsboige merged 1 commit into
masterfrom
data/rules-cover-pt-fix

Conversation

@jsboige

@jsboige jsboige commented May 18, 2026

Copy link
Copy Markdown
Contributor

Context

Rules CSV row 1 Text_pt contained the EN string # Argumentum\n## Liars 'School (with typo space) instead of the PT translation. This affected the cover subtitle of TarotCards_pt PDF.

Diff

Field Before After
Text_pt row 1 # Argumentum\n## Liars 'School # Argumentum\n## A Escola dos Mentirosos

Translation rationale

  • Source FR : L'école des menteurs
  • Validated PT : A Escola dos Mentirosos (Title Case, branding-consistent)
  • Native PT validation by po-2023 cycle 55 (2026-05-18): "Escola" féminin singulier (article A), "dos Mentirosos" génitif pluriel masculin, cohérent pt-PT et pt-BR
  • Aligned with cycle 25 glossary style guide (Title Case for game branding)

Audit

Audited all 24 rows of Rules CSV for similar EN contamination → only row 1 Text_pt affected. No other multilingual cells require correction in Rules CSV.

Cycle 44 Phase 2 impact

This fix resolves what was originally tracked as 2 separate blockers in cycle 44 Phase 2 plan:

→ Phase 2 v1.0.0 blocker count reduced from 5 to 3.

Test plan

  • CSV parses correctly (dotnet run harvest Rules)
  • Regenerate TarotCards_pt PDF → confirms row 1 cover shows A Escola dos Mentirosos
  • Visual diff TarotCards_fr/_en/_ru unchanged
  • CI Debug + Release SUCCESS

Linked issue

Rattaché à Epic #202 (text & translation finalization). No dedicated issue required (trivial data fix).

🤖 Generated with Claude Code

Row 1 Text_pt contained 'Liars 'School' (EN with typo) instead of PT
translation. Replaced with 'A Escola dos Mentirosos' (native PT validated
by po-2023 cycle 55).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@jsboige
jsboige merged commit 6783001 into master May 18, 2026
3 checks passed
@jsboige
jsboige deleted the data/rules-cover-pt-fix branch June 1, 2026 21:41
jsboige added a commit that referenced this pull request Jul 1, 2026
…ue (0 Cards/) (#619)

TERTIAIRE of ai-01 deep-queue supersede (msg-...370u0q). Read-only
scoping of the #202 "bulk EN translation" backlog.

Reframe (stale-dispatch pattern, like #609/#618): #202's Phase-2 bulk
counts (Simple_name_en 1348 empty, political_example 1373 empty) are
2-year-old and contradict the live census.

Census on master 18b4d02:
  - Fallacies core text (desc/example/text x8 langs) = 100% (census #609).
  - Only 6 _en columns total. EN > FR source on the bulk-secondary ones:
      nom_vulgarisé (FR=3%) vs Simple_name_en (EN=4%) -> 25 translatable
      exemple politique (FR=3%) vs political_example_en (EN=2%) -> 10
    => EN cells were curated directly in English; FR SOURCE is ~97% empty.
       Cannot translate content never authored.
  - Genuinely FR->EN translatable residue = ~35 cells total (trivial).
  - Scenarii baratineur leak = 0/167 (Phase-2 resolved). Virtues i18n =
    100% (#218/#236/#246/#290/#295). Rules PT fixed (#306).
  - Real i18n gap = link_* (lane #600/#618, DONE), not text.

Recommendation: close or re-scope #202. The concrete residue is (a) FR
source editorial authoring (lane #191, human, not translation), (b) a
~35-cell micro-pass, (c) link_*/AIF lanes already tracked. Do NOT launch
a bulk EN run — no source to translate on secondary cols, core is 100%.
Memory i18n-coverage-gap-is-link-urls honored (measure FR-relatively).

Scope: docs/taxonomy/202-bulk-en-scoping.md only. 0 write Cards/, 0
AssetConverter code change (pre-tag safe). Base 18b4d02.

Relates to #202, #191, #609, #600, #618.

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
… PT/RU + glossaire verrouillé (#633) (#640)

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: 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 5, 2026
…to look at, per lang) (#700)

Bundle-v3-specific verification guide so jsboige can validate the 80-PDF CMYK
bundle (10 types x 8 langs, post P&P #648-650 + CMYK #632/#652) in ~15 min,
including the languages he doesn't read (ar/fa/zh, +ru). Triggered by ai-01
dispatch yj7u3j (secondary). Mandate "present the dossier cleanly at tag".

Complementary to the existing guides (no duplication):
- validation-guide.fr.md (general procedure, 2026-05-31, pre-P&P expansion)
- non-latin-verification-guide.md (DNN site UI strings, not bundle)

Bundle-v3 guide adds:
- 10 doc types (incl. new P&P Standard/Light #648-650).
- Per-lang sampling: 16 PDFs (2/lang) = Thumbnails p1 + TarotCards p1.
- 3 sense-independent checks (direction RTL, glyph/font tofu, FR-leak #216).
- Per-lang expected strings: ru Cyrillic "Sofizm", pt cover "A Escola dos
  Mentirosos" (#306 fix), ar RTL "Al-Safsata", zh CJK "miuowu".
- CMYK transverse check (pdfimages -list = cmyk 4-comp + SWOP OutputIntent).
- 15-min validation order + defect triage table.

Master dc02e84. Docs-only, no test/build impact.

Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Jul 6, 2026
…ispatch h2utyb TERTIAIRE)

Applies the #712/#716 i18n-propagation-gap method to the other two Cards/ datasets. These use
semantic name pairs (not _fr/_en suffix), so FR↔EN pairs are enumerated explicitly. Result: 0
derivable gap in either — Fallacies is the ONLY Cards/ dataset with an i18n-propagation hierarchy
gap.

Scenarii (167 rows, 8 FR→EN pairs: catégorie↔category, sous-catégorie↔subcategory, titre↔title,
baratineur↔smoothTalker, piocheur↔drawer, contexte↔context, enjeu↔issue, suggestion↔suggestion_en):
0 gap across all 8. Confirms Scenarii 100% translated (8 fields × 4 langs).

Rules (15 rows, Text↔Text_en): 0 gap (consistent with #306 PT row-1 cover fix).

Reproducible via scenarii_rules_gap_scan.py (scratchpad). Closes TERTIAIRE: the Fallacies hierarchy
gap is the only i18n-propagation gap in Cards/.

Dispatch h2utyb (TERTIAIRE). Base 7ebeda1.

Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 6, 2026
…onsolidates #712 + #716, dispatch h2utyb) (#721)

* tools(i18n): unified gated apply-spec for Fallacies i18n-hierarchy gap (#712 + #716 consolidated)

Consolidates the two data-quality inventories — #712 family-gap (Family/Subfamily empty) + #716
subsubfamily-gap (Subsubfamily empty, same 48 rows) — into ONE post-tag apply spec + gated
byte-targeted script. Dispatch h2utyb PRIMARY (ai-01 2026-07-06 07:09), base master 7ebeda1.
GATED: 0 write to prod CSV (release freeze on Cards/ until v0.9.0 tag). Script + unit tests ship
and run; --apply on prod is post-tag.

The 48 rows are a pure i18n-propagation gap: French Soussousfamille filled but all three English
hierarchy columns (Family/Subfamily/Subsubfamily) empty. Fix is 100% mechanical — each row's FR key
maps to exactly one canonical (Family, Subfamily, Subsubfamily) EN tuple (100% consensus, 0 conflict).
The #712 apply would have filled 2 columns and missed the third; this does all three in one pass.

Files:
- tools/fallacies_i18n_hierarchy_apply.py — Python 3 stdlib, same byte-targeted discipline as
  mnemonics_to_latin.py (#654): BOM preserved, CRLF, QUOTE_MINIMAL, only empty target cells change.
  Re-derives the canonical map at apply time (never hardcoded). Modes: --dry-run (default), --apply
  (gated), --report.
- tools/test_fallacies_i18n_hierarchy_apply.py — 11 unit tests (all PASS): canonical-map derivation,
  conflict detection, plan building (3-col/partial/novel/no-FR-key/full-row), apply round-trip
  (BOM+CRLF, never overwrites filled cells), + real-CSV grounding (asserts 144 cells = 48x3, 0
  conflict, 0 novel on master).
- docs/taxonomy/i18n-hierarchy-apply-spec.md — the unified spec: gap definition, 6-tuple canonical
  map, script usage, 5 validation gates (re-derive/conflict/novel/row-count/byte-preserve), post-tag
  apply procedure, impact, relationship to the link_fr->link_en gap (24 URLs, human-research,
  out of scope).

Validation gates (enforced in code, abort exit 2): re-derive mapping at apply, conflict (>1 tuple per
FR key), novel key (FR value absent from map), row count preserved, BOM+CRLF+QUOTE_MINIMAL.
Dry-run on 7ebeda1: 144 cells (48x3), 0 conflict, 0 novel, canonical map 63 FR keys consensus.

Post-tag apply = one command (--apply), same discipline as #654 --apply. Supersedes #712 + #716 as
the single authoritative apply spec.

Read-only this PR: 0 write Cards/, 0 build, 0 prod test, 0 OWL regen. Reproducible: python
tools/fallacies_i18n_hierarchy_apply.py (dry-run) + python tools/test_fallacies_i18n_hierarchy_apply.py.

Dispatch h2utyb (PRIMARY). Base 7ebeda1.

Co-authored-by: Claude-Code <noreply@anthropic.com>

* docs(taxonomy): add §8 Scenarii+Rules scan — 0 gap (clean negative, dispatch h2utyb TERTIAIRE)

Applies the #712/#716 i18n-propagation-gap method to the other two Cards/ datasets. These use
semantic name pairs (not _fr/_en suffix), so FR↔EN pairs are enumerated explicitly. Result: 0
derivable gap in either — Fallacies is the ONLY Cards/ dataset with an i18n-propagation hierarchy
gap.

Scenarii (167 rows, 8 FR→EN pairs: catégorie↔category, sous-catégorie↔subcategory, titre↔title,
baratineur↔smoothTalker, piocheur↔drawer, contexte↔context, enjeu↔issue, suggestion↔suggestion_en):
0 gap across all 8. Confirms Scenarii 100% translated (8 fields × 4 langs).

Rules (15 rows, Text↔Text_en): 0 gap (consistent with #306 PT row-1 cover fix).

Reproducible via scenarii_rules_gap_scan.py (scratchpad). Closes TERTIAIRE: the Fallacies hierarchy
gap is the only i18n-propagation gap in Cards/.

Dispatch h2utyb (TERTIAIRE). Base 7ebeda1.

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 28, 2026
…follow-up) (#962)

The release-gate dossier carried six facts measured stale against master
3094d42. All are mechanical/premise drift from July merges — no verdict,
no release scope changed. This pass corrects the dossier body that #959
(header/§0) deliberately left untouched.

1. §3.2 Virtues .content.svg were marked FR-figé ("gap structural"). FALSE:
   Argumentum_Virtues_MindMap_{lang}.content.svg are native-script 8/8,
   committed via #665/#715/#724/#686 (9f52446). Distinct-size proof
   (git cat-file -s): fr 431931 / en 418954 / ru 485254 / pt 446948 /
   es 432142 / ar 461859 / fa 461654 / zh 1148677 — a FR clone would be
   ~431931 everywhere. Twin premise of #636 (CLOSED 2026-07-06), false for
   the same reason. Marked RÉSOLU.

2. §3.2 es/ar/fa/zh mindmap SVG count 3 → 5 each (git ls-files | wc -l).
   fr 6 / en 5 / ru 5 / pt 5 / es 5 / ar 5 / fa 5 / zh 5.

3. §4 tests 596/601 → 643/638/0/5 (CI run 30280070312, both matrix legs),
   aligning with §0/#959. The 596/601 was pre-#911 (Test step was a no-op).

4. §4 Magick.NET 14.14.0 → 14.15.0 (#871 6f1a6e1a, 5 advisories patched).
   Also adds AutoMapper 14.0.0 (#588) and PdfPig 0.1.14 official (#908).

5. §3.6 + §5.8 + §7 + §8.2(c) "PT titre English Channel — open finding,
   appel à décision" → RÉSOLU. git grep "English Channel" -- Cards/ = 0.
   Per ai-01 precision: the string lived in an EMBEDDED csv key that is
   IGNORED at runtime (HarvestManager.cs overwrites it with the real CSV),
   so the defect never reached a card — NOT "resolved by #803". The
   observed mistranslation was stale-harvest, not a live prod defect.
   Separated from PT row-1 cover contamination (#306, distinct, also closed).

6. §5.4(a) + §8.2(a) #636 "arbitrage ouvert" → CLOSED 2026-07-06 (twin
   premise of #1).

Every value above is re-read at source (git ls-files / cat-file -s / grep /
gh issue view), not taken from an intermediate report. 3 audit-probe
imperfections (Fallacies/Scenarii counts grabbed Archive/2022; skos:prefLabel
grep namespace-split) are documented honestly in the audit report, not masked.

Scope: 1 docs file, docs-only, 0 prod write, 0 OWL, 0 CSV. Correction PR,
decision to merge = ai-01 (pre-tag sensitive zone, #134 gate).

Audit report: docs/investigations/2026-07-28-release-validation-v0.9.0-audit.md
(landed in #961). This PR is the body-correction follow-up ai-01 gave GO on
(arbitrage qgsvq4, 2 precisions applied: "n'a jamais atteint une carte"
phrasing + PT vs EN distinct #306).

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