|
| 1 | +# 01 — Fix remaining 13 deep equivalence differences |
| 2 | + |
| 3 | +## Priority: HIGH |
| 4 | + |
| 5 | +## Current State |
| 6 | +- 274/289 deep equivalent |
| 7 | +- 2 IMP-fail (ISC parses, Ruby DSL can't — ISC is strictly more capable) |
| 8 | +- 13 differ (cosmetic / edge cases) |
| 9 | + |
| 10 | +## Remaining Differences |
| 11 | + |
| 12 | +### Description whitespace normalization (5 maps) |
| 13 | +- `alalc-kor-Hang-Latn-1997`: description quoted value spans multiple lines |
| 14 | +- `gki-bel-Cyrl-Latn-2000`: description has relative indentation preserved by DSL |
| 15 | +- `var-pra-Deva-Latn-iast-1912`, `var-san-Deva-Latn-iast-1912`: description content truncation |
| 16 | + |
| 17 | +**Fix:** The `normalize_heredoc` in `DocumentBuilder` strips ALL leading whitespace. |
| 18 | +The DSL strips only the COMMON indent (YAML dedent). Need a proper dedent |
| 19 | +algorithm that: |
| 20 | +1. Finds the minimum indent across all non-blank lines |
| 21 | +2. Strips only that amount, preserving relative indentation |
| 22 | +3. Handles the first line specially (grammar consumed its indent after `{`) |
| 23 | + |
| 24 | +### Codemod edge cases (6 maps) |
| 25 | +- `alalc-tir-Ethi-Latn-1997/2011`: description includes `implementation_notes:` text |
| 26 | +- `bgnpcgn-fas-Arab-Latn-1956`: `TODO: Add tests from PDF` treated as metadata field |
| 27 | +- `mext-jpn-Hrkt-Latn-1954`: metadata name has CJK text, description mismatch |
| 28 | +- `odni-ara/fas/prs-Arab-Latn-2004`: description `[]` or `notes:` text leaking |
| 29 | + |
| 30 | +**Fix:** Audit each .imp file's metadata block structure and extend the codemod |
| 31 | +to handle the specific patterns. Most are multi-line description values where |
| 32 | +the codemod's handler chain misidentifies the field boundaries. |
| 33 | + |
| 34 | +### Rule count (2 maps) |
| 35 | +- `din-san-Deva-Latn-33904-2018`: imp=155 isc=154 (off by 1) |
| 36 | +- `var-ara-Arab-Arab-rababa`: imp=1 isc=0 (rababa directive — expected, not a bug) |
| 37 | + |
| 38 | +**Fix for din-san:** Compare the stage body item-by-item between .imp and .isc |
| 39 | +to find the missing rule. Likely a `run` or `deep`/`compose` directive not counted. |
0 commit comments