Failure gallery

Words this implementation gets wrong, with the failure mode. The gallery recomputes every entry against the shipped dictionary on load, so an entry that has quietly started passing shows up as such instead of hiding.

  • beruanggenuine ambiguity
    returns beruangshould be beruangvalid readings beruang, ruang, uang

    Two roots are equally valid: the root beruang, or ber- + uang. The algorithm stops at the first dictionary lookup and never sees the alternative. The error is not the answer, it is the silence.

  • mengupasgenuine ambiguity
    returns upasshould be kupasvalid readings kupas, upas

    Aturan 17 has two readings, meng- + upas and meng- + kupas, and both are in the dictionary. The first wins because it comes first, not because it is more correct.

  • berapaover-stemming
    returns apashould be berapa

    berapa is a root, but it is missing from the shipped dictionary. The berV rule then strips ber- and finds apa, which happens to be there. A dictionary gap wearing the costume of a rule success.

  • menyanyiunder-stemming
    returns menyanyishould be nyanyi

    The correct analysis is me- + nyanyi, but aturan 18 reads meny- as an s that assimilated and produces sanyi. The root nyanyi is in the dictionary and still is not reached: the rule set cannot express that reading.

  • bertemuwrong analysis
    returns bertemushould be temu

    Inflectional removal is greedy: -mu goes first as a possessive, leaving berte, and the algorithm never returns to try without it. Adding a backtrack here would fix the answer — and would be a rule we invented.

  • terpercayaunder-stemming
    returns terpercayashould be percaya

    No ter- rule fires: aturan 8 excludes P = er and aturan 7 requires a vowel after er, so the word comes back untouched. See data/rules/GAPS.md.