diff --git a/TODO.sota/89-remaining-encodings-sota.md b/TODO.sota/89-remaining-encodings-sota.md
new file mode 100644
index 0000000..e7ee7ce
--- /dev/null
+++ b/TODO.sota/89-remaining-encodings-sota.md
@@ -0,0 +1,214 @@
+# WO89 — Master list: every unencoded system, model requirement, and the graph path to SOTA
+
+Status: PLAN (2026-10-28) — supersedes ad-hoc inventory; work orders created per batch
+Goal: encode every remaining reference table in the reference collection; drive all six
+Track B model lines to their SOTA targets; no system left unencoded or model-blocked
+without an owner decision recorded.
+
+## Classification legend
+
+- **D** — deterministic: the source table fully specifies the output; one `.isc` map
+ achieves conformance. No model involved.
+- **D+M** — map is deterministic, but real-world text carries less information than
+ the table assumes (unwritten vowels, polyphones, unvocalized abjad). Ship the map
+ now; a model companion is the recorded follow-up for unvocalized input.
+- **M** — output is not a character-wise function of the input (lexical readings,
+ unvocalized scripts as the primary input form). Requires a model.
+- **X** — blocked: no Unicode-representable source encoding, no obtainable source
+ document, or an owner decision is the gate. Only partial sub-items exist today
+ (the two raster columns inside BGN/PCGN Inuktitut, documented in PR #214).
+
+Two tracks, never conflated:
+- **Track A (conformance):** transcribe the authority's table; the map is the artifact;
+ CI gates = strict parse + embedded tests + cross-runtime parity.
+- **Track B (SOTA):** the conversion of natural, imperfectly written text; the model
+ is the artifact; CI gates = external-protocol metrics + quantization delta + release.
+
+## A. Track A inventory — 72 remaining items
+
+### A1. BGN/PCGN — 15 systems + 1 revision (all D except noted)
+
+Reference collection: 55 PDFs; 40 systems encoded (56 maps). Inuktitut closed in PR #214.
+
+| # | System | lang | Class | Notes / work order |
+|---|--------|------|-------|--------------------|
+| 1 | Adyghe | ady | D | Cyrillic table; WO90 batch 1 |
+| 2 | Avar | ava | D | Cyrillic table; WO90 batch 1 |
+| 3 | Chuvash | chv | D | Cyrillic table; WO90 batch 1 |
+| 4 | Kabardian | kbd | D | Cyrillic table; WO90 batch 1 |
+| 5 | Karachay-Balkar | krc | D | Cyrillic table; WO90 batch 1 |
+| 6 | Ossetian | oss | D | Cyrillic table; WO90 batch 1 |
+| 7 | Udmurt | udm | D | Cyrillic table; WO90 batch 1 |
+| 8 | Yakut | sah | D | Cyrillic table; WO90 batch 1 |
+| 9 | Kurdish 2012 revision | kur | D | diff against odni-kur-Arab-Latn-2007/2011; WO90 batch 1 |
+| 10 | Hebrew | heb | D+M | table is deterministic on pointed text; unvocalized input → existing [[heb-vocalized-plane]] lineage is the companion |
+| 11 | Modern Syriac | aii/syc | D+M | pointed table D; primary real-world input is unvocalized → M companion later; resolve syc vs syr/aii codes at encoding |
+| 12 | Burmese | mya | D | table deterministic on written form (stacked consonants are explicit); real-world D+M follow-up |
+| 13 | Dzongkha | dzo | D | orthographic transliteration table |
+| 14 | Lao | lao | D | table deterministic; polyphone disambiguation is a D+M follow-up |
+| 15 | Shan | shn | D | table deterministic |
+| 16 | Khmer | khm | D+M | table deterministic on written form; subnational vowel/polyphony → existing khm model line is the companion |
+
+### A2. ALA-LC — 47 catalog gaps (official catalog: 78 tables; 30 encoded)
+
+Class on the table itself; D+M noted where unvocalized/unsegmented input is the norm.
+
+| # | System | Class | # | System | Class |
+|---|--------|-------|---|--------|-------|
+| 1 | Armenian (hye/arm) | D | 25 | Malay (Jawi-Arabic) | D+M |
+| 2 | Balinese | D | 26 | Manchu | D |
+| 3 | Batak | D | 27 | Mandekan (N'ko) | D |
+| 4 | Burmese | D | 28 | Manipuri (Meitei) | D |
+| 5 | Cham | D | 29 | Moplah | D+M |
+| 6 | Cherokee | D | 30 | Moroccan Tamazight | D |
+| 7 | Chinese (Wade-Giles) | D | 31 | Non-Slavic Cyrillic | D |
+| 8 | Church Slavic | D | 32 | Ottoman Turkish | D+M |
+| 9 | Coptic | D | 33 | Pushto | D+M |
+| 10 | Deseret | D | 34 | Romanian (Cyrillic) | D |
+| 11 | Hebrew and Yiddish | D+M | 35 | Rusyn | D |
+| 12 | Inuktitut | D | 36 | Santali (Ol) | D |
+| 13 | Japanese (McCune-Reischauer) | D (kana) / M (kanji readings) | 37 | Shan | D |
+| 14 | Javanese/Sundanese/Madurese | D | 38 | Sindhi | D |
+| 15 | Jawi-Pegon | D | 39 | Syriac | D+M |
+| 16 | Judeo-Arabic | D+M | 40 | Tamashek | D |
+| 17 | Kashmiri | D | 41 | Thai | D |
+| 18 | Kazakh (Arabic script) | D+M | 42 | Tibetan | D |
+| 19 | Khmer | D | 43 | Tod-Oirat-Old Kalmyk | D |
+| 20 | Kurdish | D | 44 | Uighur | D+M |
+| 21 | Ladino | D | 45 | Urdu | D+M |
+| 22 | Lao | D | 46 | Uzbek | D |
+| 23 | Lepcha | D | 47 | Vai | D |
+| 24 | Limbu | D | | | |
+
+### A3. DIN — 5 documents (all D)
+
+Reference collection: 8 DIN PDFs; 4 encoded (32706, 32707, 33903, 33904).
+
+| Doc | Class | Notes |
+|-----|-------|-------|
+| DIN 1460-2 | D | subject confirmed against the document at encoding |
+| DIN 31635 | D | Arabic |
+| DIN 31636 | D | Hebrew column SHIPPED — maps PR #217; Yiddish column still open |
+| DIN 32706 | D | SHIPPED — maps PR #216 (Armenian; also closes the ISO 9985 scope gap in A6) |
+| DIN 32708 | D | subject confirmed at encoding |
+
+### A4. BSI — 2 documents (reclassified D -> X, 2026-10-28)
+
+| Doc | Class | Notes |
+|-----|-------|-------|
+| BS 2979:1958 | D (via visual reading) | unblocked by owner directive; Russian column SHIPPED — maps PR #219; remaining: ukr/bel/bul/srp columns + Tables D, E, G (WO91) |
+| PD 6505:1982 | D (via visual reading) | unblocked by owner directive; scan readable visually, not yet transcribed (WO91) |
+
+### A5. ICS 630-01 — Annex D Chinese (D)
+
+29 documents in the reference collection; Annexes encoded through WO-series
+(Annex G = PR #213). Annex D (Chinese personal names, pinyin) remains.
+
+### A6. ISO scope gaps (all D tables; scope, not new authorities)
+
+| Gap | Class | Notes |
+|-----|-------|-------|
+| ISO 9 non-Russian Cyrillic coverage | D | verify per-letter coverage of the 1995 table vs corpus |
+| ISO 259 Hebrew | D | letter mapping; unvocalized input is Track B |
+| ISO 7098 Chinese (pinyin) | D | large per-character table |
+| ISO 9985 Armenian | D | closed by DIN 32706 map (maps PR #216), which is aligned with ISO 9985:1996 |
+| ISO 15919 Indic remainder | D | enumerate the script set vs corpus; encode the missing scripts |
+
+### A7. Source-acquisition diffs
+
+| Item | Class |
+|------|-------|
+| ICAO systems: obtain current source docs, diff vs corpus | D |
+| UNGEGN systems: obtain source docs, diff vs corpus | D |
+
+**Track A totals: 72 items — 63 D, 8 D+M, 1 M-part (Japanese kanji), 0 X (the two
+scan-only BSI documents were unblocked by the owner directive to read the scans
+visually). Every remaining table is encodable as a deterministic map.**
+
+## B. Track B matrix — model lines vs SOTA targets
+
+| Line | Model / metric | Current | Target | WO | Levers (graph edges) |
+|------|----------------|---------|--------|----|----------------------|
+| Hebrew vocalization | heb-vocalized-plane-2.0 DER | 8.18 | **DER < 5** (int8 < 6) | 63 | data: additional labeled corpora (Dicta machine labels precedent); plane-conditioning scale; decode policy |
+| Arabic vocalization | ara-vocalized-2.0 DER / WikiNews | 2.2864 / 11.83 | **DER < 2.0 / WER < 8** | 64 | r6-morph knowledge injection on v2 lineage; news-domain data; oracle-target quality (r8 noisy-student NEGATIVE — do not retry) |
+| Persian registers | fas-phonemic-1.0 CER | 1.6 | **CER < 0.7 all registers** | 66 | register-balanced corpora; G2P lineage (tha-g2p template) |
+| Thai phonemic | tha v6a PER (clean split) | 19.29 | **PER < 2** | 67 | lexicon (v6a shipped-candidate line; curriculum NEGATIVE), schedule-matched controls, tha-small 2.85 lineage as student template |
+| Khmer Latin | khm-latn-1.0 CER / dict arm | 27.42 / 15.02 (dict-internal) | **CER < 15 + hit-rate** | 68 | lineage recovery (secryst corpus re-derivation, now concrete); owner-gated SEAlang / full Chuon Nath IPA |
+| Urdu diac | urd-diac CER | 3.57 | **CER < 3** | 65 | decorrelated teachers only; VRR |
+| Urdu G2P | urd-ipa-1.0 CER | 14.77 | license gate green | 65 | BLOCKED-OWNER: commercial-license data selection (option drafts in WO50) |
+
+Standing negatives — never retry as written: RL distillation, LLM-teacher labels,
+noisy-student relabel on correlated teachers, curriculum on full mixes, beam decode
+on flat byte students, direct-division Sinkhorn.
+
+## C. Graph path — reference to SOTA
+
+```mermaid
+flowchart TD
+ subgraph TrackA[Track A: conformance — 72 items]
+ REF[reference document
PDF/scan/doc] -->|full transcription| ISC[.isc map
ISO 24229 name]
+ ISC --> T1[embedded tests
every table row + examples]
+ ISC --> P1[strict parse
Ruby + TypeScript]
+ T1 --> CI1[CI: tests + parity green]
+ P1 --> CI1
+ CI1 --> PR[PR to interscript/maps]
+ PR --> REL[release artifact
maps gem + index]
+ end
+
+ subgraph TrackB[Track B: SOTA — 6 active lines]
+ MAPD[conformant map] -->|apply to raw corpus| SILVER[silver pairs
unvocalized → vocalized]
+ LEX[lexicon / gazetteer / Wikidata] --> GOLD[gold pairs + holdout]
+ SILVER --> TRAIN[ByT5 train
HF Jobs --detach ≥4h, step ckpts]
+ GOLD --> EVAL[external protocol eval
DER/CER/PER + VRR]
+ TRAIN --> EVAL
+ EVAL -->|meets target| QUANT[int8/fp16 export
delta gate]
+ QUANT --> PUB[publish_model → GH Releases
+ HF + models.yaml]
+ PUB --> RUN[runtime: npm gem worker
parity fixtures]
+ EVAL -->|misses| FB[feedback levers:
data · supervision · features · decode]
+ FB --> SILVER
+ FB --> TRAIN
+ end
+
+ REL -.->|map silver| TrackB
+ RUN -.->|error mining| FB
+```
+
+Dependency edges that matter:
+
+1. Track A maps are the silver-data generators for every Track B line with a
+ deterministic surface (Hebrew map ↔ vocalization pairs; Urdu ALA-LC ↔ diac pairs;
+ Khmer BGN/PCGN ↔ latn pairs). Encoding a map feeds its model line.
+2. Lexicons gate three targets: Thai (PER < 2 runs through lexicon + schedule controls),
+ Khmer (open phoneme supply exhausted at ~3.3k gold pairs), Persian (registers).
+3. Owner decisions gate two: Urdu G2P license; Khmer SEAlang/Chuon-Nath licensing.
+4. The Thai PER < 2 target additionally needs the length-prior mechanism solved
+ (v6b curriculum NEGATIVE) — filtered fine-tune or compound downweighting.
+
+## D. Execution order
+
+- **P0 — deterministic batches, unblocked now (Track A):**
+ 1. WO90: 8 BGN/PCGN Cyrillic systems + Kurdish 2012 revision (9 maps).
+ 2. WO91: DIN 5 + BSI 2 + ICS Annex D (8 maps).
+ 3. WO92: ALA-LC batches — alphabets/syllabaries first (Cherokee, Deseret, Vai,
+ N'ko, Ol, Meitei, Lepcha, Limbu, …), Arabic-script tables next, Chinese/Japanese last.
+ 4. WO93: ISO scope gaps + ICAO/UNGEGN acquisition diffs.
+ 5. Housekeeping: merge PRs #211–#214 (owner authorization); migrate #166/#167
+ `.imp` → `.isc`; TS/Python strict-parse port; PyPI trusted publisher.
+- **P1 — D+M companions:** after each map ships, open the model-companion work
+ order only for lines with an existing Track B lineage (heb, aii, khm, urd, ottoman/jawi
+ as future lines).
+- **P2 — Track B pushes (parallel with P0):**
+ - B1 Hebrew → data lever first (63).
+ - B3 Arabic → r6-morph injection on v2 + news data (64).
+ - B4 Urdu diac → decorrelated teacher arms (65).
+ - B5 Persian → register-balanced corpora (66).
+ - B6 Thai → schedule-matched controls + lexicon filtering (67).
+ - B7 Khmer → lineage recovery then owner licensing decision (68).
+- **P3 — owner-gated:** Urdu G2P license; Khmer licensing; any new minor version.
+
+## Acceptance
+
+- Every row of section A has a merged PR or a recorded blocker with owner decision.
+- Every row of section B is at or past its target with external-protocol numbers,
+ quantization delta green, and runtime parity fixtures shipped.
+- No negative lever retried as written; every miss recorded in its WO.
diff --git a/TODO.sota/90-wo90-bgnpcgn-cyrillic-batch.md b/TODO.sota/90-wo90-bgnpcgn-cyrillic-batch.md
new file mode 100644
index 0000000..b2cf190
--- /dev/null
+++ b/TODO.sota/90-wo90-bgnpcgn-cyrillic-batch.md
@@ -0,0 +1,74 @@
+# WO90 — BGN/PCGN Cyrillic batch: 8 systems + Kurdish 2012 verdict
+
+Status: SHIPPED (2026-10-28) — PR #215
+Goal: encode the eight remaining BGN/PCGN Cyrillic systems from the reference
+collection; resolve the "Kurdish 2012 revision" item.
+Method: transcribe each table in full (every row and note), embed per-row tests plus
+the source examples, verify under the Ruby interpreter, strict-parse the corpus,
+ship as one PR.
+Reference collection: `interscript-references/bgn-pcgn/` (text extracted to
+/tmp/wo90-{0..8}.txt; glyph anomalies verified against the PDF text layer).
+
+## Systems
+
+| File | Source doc | System date | Checked | Entries | Context rules |
+|------|-----------|-------------|---------|---------|---------------|
+| bgnpcgn-ady-Cyrl-Latn-2012 | ROMANIZATION OF ADYGHE.pdf | 2012 | 2017-10 | 68 | У word-initial w |
+| bgnpcgn-ava-Cyrl-Latn-2011 | ROMANIZATION OF AVAR.pdf | 2011 | 2017-10 | 47 | Е word-initial + post-vowel ye |
+| bgnpcgn-chv-Cyrl-Latn-2011 | ROMANIZATION OF CHUVASH.pdf | 2011 | 2017-10 | 37 | Е/Ё initial + post-vowel/post-й-ъ-ь ye/yë |
+| bgnpcgn-kbd-Cyrl-Latn-2011 | ROMANIZATION OF KABARDIAN.pdf | 2011 | 2017-10 | 59 | У word-initial w |
+| bgnpcgn-krc-Cyrl-Latn-2008 | TABLE OF CORRESPONDENCES FOR KARACHAY-BALKAR.pdf | 2008 | 2017-10 | 38 | У post-vowel w; ъ/ь omitted outside digraphs |
+| bgnpcgn-oss-Cyrl-Latn-2009 | ROMANIZATION OF OSSETIAN.pdf | 2009 | 2017-11 | 43 | У three-way (adjacent vowel / post-labializing / u) |
+| bgnpcgn-udm-Cyrl-Latn-2011 | ROMANIZATION OF UDMURT.pdf | 2011 | 2017-11 | 38 | Е ye initial, post-vowel, post-йъь, post-дзлнст |
+| bgnpcgn-sah-Cyrl-Latn-2012 | ROMANIZATION OF YAKUT.pdf | 2012 | 2017-11 | 40 | Е/Ё initial + post-vowel ye/yë |
+
+## Source anomalies (documented in the maps, not silently corrected)
+
+- ADYGHE + KABARDIAN note 4 prints the H̱ inventory codepoint as "0048+0031";
+ the glyph shown is h + combining macron below (U+0331) and the tables render the
+ romanization as the precomposed ẖ (U+1E96). The maps output ẖ (U+1E96) and quote
+ the note as printed.
+- CHUVASH presents Ҫ/ҫ with the Latin Ç codepoints U+00C7/U+00E7 in the document's
+ text layer. The map accepts both those codepoints and the standard Chuvash
+ Cyrillic U+04AA/U+04AB, all to ś.
+- YAKUT pairs capital Ѳ (text-layer U+0472, FITA) with lowercase ө (U+04E9). The
+ standard Yakut pair is Ө/ө (U+04E8/U+04E9). The map accepts both capitals to Ö
+ and records the source pairing.
+- OSSETIAN note 2's example output prints "Respublikӕ" with the CYRILLIC ӕ where
+ the Roman æ (U+00E6) belongs. The embedded test uses Respublikæ and the map
+ records the source typo.
+- YAKUT prints the lowercase form of НЬ as the ligature њ (U+045A). The map maps
+ нь (U+043D+044C), НЬ, and U+045A to ny and records the presentation.
+
+## Kurdish "2012 revision" — VERDICT: reissue, no new map
+
+`Kurdish_system_30April2012.pdf` is headed "ROMANIZATION SYSTEM FOR KURDISH
+BGN/PCGN 2007" — the 30 April 2012 file restates the 2007 system already encoded as
+`bgnpcgn-kur-Arab-Latn-2007.isc` (all 32 consonant rows, 10 vowel rows, notes 1-7,
+special rules 1-7, inventory). No separate system exists; the A1 inventory item
+closes as "reissue of 2007".
+
+Observation recorded for a separate owner decision: in the existing 2007 map the
+vowel row 9 (و with macron above, romanized ö, "rare") appears as
+`sub "و" "ö"` after `sub "و" "u"` in the same parallel block — dead code
+under first-match; the rare row is not reachable. Fix candidate for a dedicated PR;
+not bundled here.
+
+## Acceptance
+
+- 8 new maps, each with the full table + all notes transcribed and embedded tests
+ covering every row (upper and lower) plus the source examples.
+- All tests pass under the Ruby interpreter; corpus strict-parses (293 files).
+- One PR to interscript/maps; coverage docs updated after merge.
+
+## Result (2026-10-28)
+
+- 8 maps encoded, 777 embedded tests, all passing under the Ruby interpreter:
+ ady 137/137, ava 97/97, chv 84/84, kbd 118/118, krc 80/80, oss 90/90,
+ udm 82/82, sah 89/89.
+- Corpus strict parse: 300/300 .isc files.
+- Branch `feat/bgnpcgn-cyrillic-batch`, commit 9ef9448, PR
+ https://github.com/interscript/maps/pull/215
+- Kurdish verdict recorded above (reissue of 2007; no new map).
+- Latent-gap observation on bgnpcgn-kur-Arab-Latn-2007 (dead و→ö row)
+ recorded for a separate owner decision; not bundled here.
diff --git a/TODO.sota/91-wo91-din-bsi-ics-batch.md b/TODO.sota/91-wo91-din-bsi-ics-batch.md
new file mode 100644
index 0000000..16b3c65
--- /dev/null
+++ b/TODO.sota/91-wo91-din-bsi-ics-batch.md
@@ -0,0 +1,62 @@
+# WO91 — DIN + BSI + ICS Annex D batch
+
+Status: IN_PROGRESS (2026-10-28) — 4 of 8 items shipped (maps PRs #216, #217, #218, #219)
+Goal: encode the five DIN gaps, the two BSI documents, and ICS Annex D;
+A1 items D-classes all deterministic (WO89 section A3/A4/A5).
+Reference collection: `interscript-private-references/{din,bsi,ics-630-01}/`;
+text extracted to /tmp/wo91-*.txt.
+
+## Item states
+
+| Item | Doc | Contents | State |
+|------|-----|----------|-------|
+| DIN 32706 Armenian | din-32706.pdf (8 pp) | 39-row table aligned with ISO 9985 | **SHIPPED — maps PR #216** (also closes the ISO 9985 scope gap in WO89 A6) |
+| BS 2979:1958 | BS-2979-1958.pdf (24 pp) | FIVE systems in one document: "British" Cyrillic (Table A/B), "International" Cyrillic (= ISO/R9, Table C), Church Slavonic (Table D), Rumanian Cyrillic (Table E), Greek (Table G) | **UNBLOCKED by owner directive (visual reading of the scans). Table A Russian column SHIPPED — maps PR #219 (48 rows; examples as tests; rows 45-47 little-yus/fita/izhitsa not rendered — parenthesized cells not legible beyond doubt). Remaining columns of Table A: Ukrainian, Byelorussian (ў→w), Bulgarian (щ→sht, ъ→ŭ), Serbian/Macedonian (latinica: đ for both ђ and ѓ per the footnote, ć for ћ and ќ, dž, dz, lj, nj). Table B/F are back-transliterations (skip; A2 territory). Table C = ISO/R9 (cite). Table D = pdf page 16, Table E = pdf 17, Table G = pdf 20+ (legacy-font text; now also readable visually). Document examples page (pdf 7) gives British+International renderings of 17 periodical titles - test material.** |
+| PD 6505:1982 | PD-6505-1982.pdf (49 pp) | Greek transliteration | **UNBLOCKED by owner directive — read visually; not yet transcribed.** |
+| DIN 1460-2 | din-1460-2.pdf (29 pp) | Cyrillic alphabets of NON-SLAVIC languages (part 2), 2011-10 | PENDING — 52.8k chars |
+| DIN 31635 | din-31635.pdf (29 pp) | Arabic | PENDING — 35.8k chars |
+| DIN 31636 Hebrew column | din-31636.pdf (14 pp) | HEBREW (2018-10): **SHIPPED — maps PR #217** (tables 1-6 + section 8 rules over vocalized input; Unicode mark-order normalization; reading-side items documented: matres lectionis, qamats qatan, furtive patah, sheva root exceptions, 8h/8j-k) |
+| DIN 31636 Yiddish column | din-31636.pdf (14 pp) | Yiddish vowel table (Table 4), ayin as e, tav as s-with-grave, double forms | **SHIPPED — maps PR #218** (Table 4 spellings as sequence rules; reading-dependent cells resolve first-listed with alternative documented; loshn-koydesh = composition point) |
+| DIN 32708 | din-32708.pdf (19 pp) | JAPANESE (2014-08) | PENDING — kana rows deterministic; kanji readings are the one true M-part (WO89 A2) |
+| ICS 630-01 Annex D | ANNEX D + Appendices A/B/C | Main annex is name-formatting policy (pinyin; title case; surname first; ü→u; no apostrophes/hyphens; STC codes); the transliteration table is Appendix A | PENDING — Appendix A is a large Hanzi→pinyin table; Appendix B is the Wade-Giles/Gwoyeu/Yale conversion table; Appendix C is the surname list; scope decision: encode Appendix A as the map (large table), record B/C as reference notes |
+
+## Method notes
+
+- BS 2979's four encodable systems each become their own map; the document's
+ "International" Cyrillic table is ISO/R9 and is cited against the existing
+ iso corpus maps rather than duplicated (WO89 A6 convention).
+- PD 6505 has no text layer; options: OCR pass, or manual transcription from
+ page images. Owner picks the tooling before work starts.
+- The ICS Annex D map's input script is Hans/Hant with the Appendix A table;
+ the name-formatting rules (title case per word, no apostrophe) apply as
+ post-rules per the main annex text.
+
+## Vision reading (2026-10-28, third pass) — owner directive
+
+The owner directed visual reading of scan-only sources. Both BSI documents are
+therefore unblocked; no OCR tooling decision is needed. Table A (Russian column)
+and the DIN Yiddish column were read from high-resolution page crops
+(3x-9x via PyMuPDF clip renders). Recording for the continuation:
+
+- Table A structure: 48 rows x 5 language columns (Russian, Ukrainian,
+ Byelorussian, Bulgarian, Serbian & Macedonian); parenthesized cells = obsolete
+ characters; footnotes: dj/gj alternate to đ; final ъ disregarded.
+- Key cross-column cells (from the scans): Г→g/h/h/g/g; Ґ→(g) for ukr/bel;
+ и: ru i / ukr ȳ; ы→ȳ (ru, bel); й→ĭ; Ў→w (bel); Щ: shch/shch/-/sht;
+ ъ: “or”/(“or”)/(“or”)/ŭ; Ё→ě (ru, bel); Э→é (ru, bel); ѣ→(ě) rus/ukr/bel/bulg;
+ Х→kh×4 then h (srp); Ц→ts×4 then c; Ч→č; Ж/Ш→zh/š, sh/š; Тс→t-s ×4, ts (srp);
+ Ђ→đ, Ѓ→đ, ћ→ć, ќ→ć, Џ→dž, Ѕ→dz, Љ→lj, Њ→nj, Ј→j.
+- Rows 45-47 (Ѧ, Ѳ, Ѵ): Bulgarian/Russian cells render only as parenthesized
+ obsolete marks not legible beyond doubt — not encoded, not guessed.
+- Uncertain-by-design choices documented in the maps: ъ→” (of ” or "), ь→’
+ (of ' or '), Bulgarian Щ→sht, the BS example diacritic-dropping (NOTE 1).
+
+## Negative / blocker record (2026-10-28, second pass)
+
+- BS 2979 and PD 6505 are NOT encodable from their text layers: both documents
+ present their tables as page images (BS 2979 additionally stores its Greek
+ table in a legacy 8-bit font). WO89 section A4's class-D assumption for the
+ BSI pair is corrected to X (owner-gated on OCR/manual-transcription tooling).
+ No map is written for them; nothing is fabricated from the mojibake.
+- DIN subjects confirmed from title pages: 31636 = Hebrew (2018), 32708 =
+ Japanese (2014), 1460-2 = non-Slavic Cyrillic (2011).