Skip to content

comments: the m* sweep — a Russian word in a Macedonian rule, and two truncated sentences - #708

Merged
christopherthompson81 merged 2 commits into
mainfrom
sweep-m
Aug 7, 2026
Merged

comments: the m* sweep — a Russian word in a Macedonian rule, and two truncated sentences#708
christopherthompson81 merged 2 commits into
mainfrom
sweep-m

Conversation

@christopherthompson81

Copy link
Copy Markdown
Owner

Continues the alphabetical comment sweep. 42 files (4,880 lines) across macedonian, madurese, magahi, maithili, malagasy, malay, malayalam, maltese, mandarin, maori, marathi, mindong, minnan, mongolian, mossi.

Comment-only. Verified by transpiling both revisions with --removeComments and diffing the emitted JS: byte-identical. Typecheck clean, 3118 tests pass.

Real defects

macedonian/normalize.ts documented its date rule as `N месяц`. месяц is Russian — Macedonian is месец. And the rule does not match the word for "month" at all; it matches a month name from the MONTHS set. Two errors in four characters, in a comment that reads perfectly fluently until you check it against the code.

The same file numbered its steps 0–5, 7–16 — 6 missing, 11 used twice. One 11) was a one-line placeholder noting that the range rule lives at step 5; the other was REGNAL ORDINALS. Renumbered 0–15 sequentially, with the one internal step N cross-reference re-pointed.

malay/normalize.ts ended a header sentence mid-clause:

a Malay file that re-states Indonesian for no measured reason is worse than the alias. What was NOT duplicated, and why, is in.

…and spliced two half-sentences with an orphan close-paren:

Malay reads the point as perpuluhan; round-tripped through this repo's g2p**)**, and the fraction digit by digit

minnan.ts restarted a sentence lowercase after a full stop, inside the note about which capitals the inventory class must list.

Phase chronology for work that shipped

mandarin.ts described itself as "Phase 1: the pinyin input path … Phase 2 adds the Hanzi front-end … Phase 3 numbers + normalization", and minnan.ts as "Phase 1: segmental + CITATION tone" — but all of it is present and working. Both now describe what the file does rather than the order it was built in. (Same defect class as the arabic.ts header that called a shipped diacritizer "Phase 2".)

The standing standard

Dropped: raw decode transcripts (malayalam/normalize.ts carried phoneme-recognizer output — `… n j uː l t i s iː p l a s o n n ə …`), cross-language surveys, self-assessment ("the funniest instance of it so far"), corpus counts that merely record rather than license a decision, and issue numbers.

Kept, and in several places promoted to , the findings that are genuinely load-bearing — they read better as traps than as history:

  • a bound morpheme cannot be token-counted: Malayalam's -എക്കാൾ is ×0 by construction, not by absence;
  • the substring trap: ഹരണം's corpus hits are all inside അപഹരണം, "abduction";
  • a cognate tells you where to look, not which sense the borrowing settled intoസമം is the wrong equality word though its Tamil/Kannada/Telugu cognates are the right one;
  • searching only inside maths articles hides the arithmetic vocabulary, because those articles write notation instead of reading it;
  • attestation must be judged per sentence, not per hit — Devanagari wikis quote each other, so half of Maithili's बजकर hits are one Hindi passage quoted whole.

The /🔷/ glyphs and the ellipsis-truncated trap N (…) references are now gone from m* as from al.

Cross-cutting note

A ± comment block — "zero new sourcing … bg/da/is/nb/ro/sv all juxtapose with no conjunction" — appears in 21 files repo-wide, one of them here. I left it, as I left it in l, since fixing one copy per letter would let the wording drift. Same for the NOT QUITE VERBATIM block (maltese.ts here, 5 remaining). Both would be better done as a single uniform pass than dribbled across letters — say the word and I'll do them in one go rather than at n.

christopherthompson81 and others added 2 commits August 6, 2026 22:17
… truncated sentences (#708)

Continues the alphabetical comment sweep. 42 files across macedonian,
madurese, magahi, maithili, malagasy, malay, malayalam, maltese, mandarin,
maori, marathi, mindong, minnan, mongolian, mossi.
Comment-only: the emitted code is byte-identical with --removeComments.

Real defects, not just tightening:

  · macedonian/normalize.ts documented its DATE rule as `N месяц` — месяц is
    RUSSIAN. Macedonian is месец, and the rule does not match the word for
    "month" at all: it matches a MONTH NAME from the MONTHS set. Two errors
    in four characters.
  · the same file numbered its steps 0-5, 7-16, with 6 MISSING and 11 used
    TWICE — once for a one-line note saying the range rule lives at step 5,
    once for REGNAL ORDINALS. Renumbered 0-15, sequential, and the one
    internal cross-reference re-pointed.
  · malay/normalize.ts ended a header sentence mid-clause: "What was NOT
    duplicated, and why, is in."
  · the same file spliced two half-sentences with an orphan close-paren:
    "reads the point as `perpuluhan`; round-tripped through this repo's
    g2p), and the fraction digit by digit".
  · minnan.ts had a sentence restarting lowercase after a full stop, inside
    the note about which capitals the inventory must list.

Phase chronology for work that shipped: mandarin.ts described itself as
"Phase 1 … Phase 2 adds … Phase 3", and minnan.ts as "Phase 1", though all
of it is present. Both now describe what the file does.

The rest is the standing standard: drop decode transcripts (malayalam
carried raw phoneme-recognizer output), cross-language surveys, corpus
counts that record rather than license a decision, and issue numbers; keep
the invariants and the traps. The ★/🔷/⛔ glyphs and the ellipsis-truncated
`trap N (…)` references are gone from m* as they are from a-l.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Lc3WnUgogC7okV7n53vjr
…example word

Both found by checking the comments against the RUNNING ENGINE rather than
re-reading them.

  · macedonian/normalize.ts's ORDERING COUPLINGS claimed "the ordinal-suffix
    rule BEFORE ... the range rule". It never was: ranges were step 5 and the
    ordinal suffix step 8 on main, so the header asserted the opposite of the
    code, and asserted it in the same list as the (true) claim that ranges run
    before the clock. Pre-existing — the renumbering in the previous commit
    did not move either rule. There is no real coupling to state: the range
    regex requires digits on BOTH sides, so `1970-тите` cannot match it.
    The century/date half of the claim IS true and is kept.

  · malay/normalize.ts illustrated its digit-by-digit decimal with "the
    tokenizer says *lima kosong*". The engine says *lima nol* — both are
    Malay for zero, but the inherited number path emits nol.

The other five macedonian ordering claims were verified by running them:
de-grouping (400.000 → четиристотини илјади), era before year (356 г. п.н.е.
→ … година пред нашата ера), range before clock (22:00-23:00 → … до …),
ordinal suffix (17-ти век → седумнаесетти век), personal initials before the
initialism pass (Н. Вејн → ен вејн).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Lc3WnUgogC7okV7n53vjr
@christopherthompson81

Copy link
Copy Markdown
Owner Author

Review pass, in d625259. I checked the comments against the running engine rather than re-reading them, which found two things:

A false ordering claim, pre-existing. macedonian/normalize.ts's ORDERING COUPLINGS list asserted "the ordinal-suffix rule BEFORE the century/date rules and the range rule". It never was — on main ranges were step 5 and the ordinal suffix step 8, so the header stated the opposite of the code, in the same bulleted list as the (true) claim that ranges run before the clock. My renumbering didn't move either rule; the contradiction was already there and the broken numbering is presumably why nobody spotted it.

There is also no real coupling to state: the range regex requires digits on both sides, so 1970-тите can't match it. The century/date half of the claim is true and is kept.

A wrong example word. malay/normalize.ts illustrated its digit-by-digit decimal with "the tokenizer says lima kosong". The engine says lima nol — both are Malay for zero, but the inherited Indonesian number path emits nol. My first rewrite carried the wrong word forward before I ran it.

The remaining five ordering claims verified by running them:

400.000 луѓе   → t͡ʃɛtiristˈɔtini ˈiljadi ɫˈuɟɛ          de-grouping first
356 г. п.н.е.  → trˈista … ɡˈɔdina prˈɛt nˈaʃata ˈɛra   era before year
22:00-23:00    → dvˈaɛsɛt ˈi dvˈa dˈɔ dvˈaɛsɛt ˈi trˈi  range before clock
17-ти век      → sɛdumnaˈɛsɛtti vˈɛk                     ordinal suffix
на 6 октомври  → nˈa ʃˈɛsti ˈɔktɔmvri                    date → ordinal
НАСА, Н. Вејн  → nˈasa , ˈɛn vˈɛjn                       initials before initialisms

And the two rewritten headers, likewise checked rather than asserted — 一千ji˥˩ t͡ɕʰiɛn˥˥ (一 sandhi), 你好ni˧˥ xɑᵘ˨˩˦ (third-tone sandhi), 20℃ → 二十摄氏度, 802.11g… tˈitiʔ səbəlˈas ɡ.

Still token-identical after the fixes; 3118 tests pass.

@christopherthompson81
christopherthompson81 merged commit fe67238 into main Aug 7, 2026
2 checks passed
@christopherthompson81
christopherthompson81 deleted the sweep-m branch August 7, 2026 04:20
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