tools(i18n): unified gated apply-spec Fallacies i18n-hierarchy gap (consolidates #712 + #716, dispatch h2utyb) - #721
Merged
Conversation
#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>
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Dispatch
h2utybPRIMARY (ai-01 2026-07-06 07:09) — consolidate the two i18n-propagation gap inventories (#712 family-gap + #716 subsubfamily-gap) into ONE post-tag apply spec + gated byte-targeted script. Base master7ebeda18. GATED: 0 write to prod CSV (release freeze onCards/until v0.9.0 tag) — script + tests ship and run,--applyis post-tag.Why consolidate
The 48 rows from #712 (empty Family/Subfamily) are the exact same 48 rows #716 found with empty Subsubfamily (overlap 48/48). Each is a pure i18n-propagation gap: FR
Soussousfamillefilled, all three EN hierarchy columns empty. 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 asmnemonics_to_latin.py(chore(i18n): mnémoniques Virtues — normalisation (DEFER post-tag, scope à arbitrer) #654): BOM preserved, CRLF, QUOTE_MINIMAL, only empty target cells change. Re-derives the canonical FR→EN 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 preserved, never overwrites filled cells), + real-CSV grounding (asserts 144 cells = 48×3, 0 conflict, 0 novel on master).docs/taxonomy/i18n-hierarchy-apply-spec.md— the unified spec: gap, 6-tuple canonical map, script usage, 5 validation gates, post-tag apply procedure, impact, relationship to thelink_fr→link_engap (24 URLs, human-research, out of scope).Dry-run on
7ebeda18(the report)144 cells (48 rows × 3 EN columns), 0 conflict, 0 novel key, canonical map 63 FR keys (consensus). The 6 gap FR keys → tuples:
Validation gates (enforced in code, abort exit 2)
Post-tag apply = one command
python tools/fallacies_i18n_hierarchy_apply.py --csv <PATH> --apply(after dry-run confirms 144/0/0 + tests pass). Supersedes #712 + #716 as the single authoritative apply spec.DoD
docs/taxonomy/i18n-hierarchy-apply-spec.mdtools/fallacies_i18n_hierarchy_apply.pyGate boundaries (HARD — spec + gated script, NOT executed)
--applyexecution during release freeze.Relates: dispatch
h2utyb(PRIMARY), #712, #716, #654 (byte-targeted discipline), #587 (CSV hygiene), #707 §1. Base7ebeda18.🤖 Generated with Claude Code