WORDWARD SPANISH VOCABULARY — DECK VERSION 1
Prepared 2026-10-24

Source and license
------------------
The main source is the RLA-ES international Spanish spelling dictionary, release
2.9 (2025-01-02), developed initially by Santiago Bosio and its contributors.
This is the international es distribution, rather than Spain-only es_ES. Its
regional variants broaden accepted guesses; they are not all suitable answers.

Project: https://github.com/sbosio/rla-es
Release: https://github.com/sbosio/rla-es/releases/tag/v2.9
Exact archive: https://github.com/sbosio/rla-es/releases/download/v2.9/es.xpi
Included archive: assets/spanish-source/rla-es-2.9.xpi (306,823 bytes)
SHA-256: 95f9e3f59f99d17f32414ac9aa6b488d6b0673e5334c67bbca3cba4909e91ad5

Inside that archive:
  dictionaries/es.aff (171,524 bytes)
  SHA-256: 674c5a4b4d39fd3b4452f045a4e6e0649db4a2ce23f5903df8c311e21f1a757c
  dictionaries/es.dic (835,300 bytes)
  SHA-256: 0a788c01b1447915c7721e96a6e2183700e9b5f9ee8974320295188ed24822e3

The dictionary itself, not just a wrapper package, offers GPL-3.0-or-later OR
LGPL-3.0-or-later OR MPL-1.1-or-later. Wordward selects MPL 1.1 for these derived
vocabulary data files. The original author notice and full MPL 1.1 text are in
assets/word-list-es-license.txt, and all original license files remain in the
source archive. Preserve that notice, source archive, generator, answer source,
reviewed additions and provenance when distributing these data. The choice does
not relicense unrelated game code.

The initial additions BRÓCOLI and BRÉCOL were checked against FundéuRAE:
https://www.fundeu.es/consulta/brocoli-2087/
A follow-up audit corrected rejected guesses such as YOGA, JUDO, PALTA, GUAGUA,
CEVICHE, TOFU, OÍD and REÍD using RAE/ASALE/Fundéu entries and conjugation tables.
Regular plurals of the verified nouns use RAE's plural rules. Some are ordinary
count nouns (YOGUIS, JUDOCAS, PALTAS, GUAGUAS); plurals of mass nouns are permitted
in suitable contexts such as varieties or portions. This is not a claim of
individual dictionary attestation or everyday frequency for every plural.
https://www.rae.es/dpd/plural
https://www.rae.es/gtg/nombre-no-contable

All 41 exact additions and their primary-source links are listed in
reviewed-additions-es.txt. The follow-up added 39 display spellings / 37 canonical
guesses. The answer module is byte-identical to its initial v1 build: these are
guess-list corrections, not answer-deck expansion or adaptive difficulty.
No definitions or source prose were copied. Future additions must also be checked
and documented. No frequency corpus was imported. SUSHI is a verified unadapted
borrowing; its plural remains outside these additions for lack of primary evidence.

Reproduction
------------
Use Python 3.10 or later; no third-party module or network connection is needed:
  python scripts/build-spanish-words.py

The generator verifies the exact archive hash, parses only affix directives
present in this pinned release, checks its entry/rule counts, expands authorized
suffixes and cross-product prefixes, and fails on unknown rules or flags. It
handles RLA-ES's multi-codepoint telephone prefix flag and the one exact upstream
entry rosar/RED/ with a redundant trailing slash. This is a pinned-source parser,
not a general Hunspell engine. Re-audit it before changing dictionary versions.

It excludes roots with capitals, punctuation, spaces or other non-Spanish
letters. It retains lowercase Spanish alphabetic forms of 3–7 letters, including
inflections. Each form becomes NFC uppercase; only ÁÉÍÓÚÜ fold to AEIOUU. Ñ stays
distinct from N. It merges equal canonical spellings and sorts the result.

The selected answers in answers-es.txt must have valid exact display spellings
in the expanded dictionary or explicit additions. The first display spelling
selected for a canonical word wins. Every answer must be accepted as a guess.
Generated outputs are src/spanish-words.js, assets/words-es.txt,
assets/word-list-es-license.txt and assets/spanish-source/build-report.json.
The report records exact counts, collision groups and output hashes.

Counts for version 1
--------------------
                    3       4       5       6       7       Total
Accepted guesses    482     2,541   9,138   21,635  43,330  77,126
Selected answers    132       303     683      582     293   1,993

The source has 71,198 dictionary entries. Of these, 59,671 lowercase alphabetic
roots were eligible for expansion. There are 96,669 exact expanded spellings
before the 41 reviewed additions, or 96,710 afterward. Canonicalization explains the
smaller accepted count. Thirty-one selected answers contain Ñ, including CIGÜEÑA,
which also demonstrates the correct written diaeresis.

Two different selected spellings collided after accent folding:
  SABANA / SÁBANA -> SÁBANA
  HACIA / HACÍA   -> HACÍA
Each becomes only one answer in a run. Accepted guesses intentionally also merge
accent-equivalent spellings such as QUE/QUÉ and AUN/AÚN. This does not merge
AÑO/ANO or UÑA/UNA. Accents are shown in solved answer spellings, not required as
distinct guessing letters. Repeated identical answer-source entries also merge.

Validation completed on 2026-10-24
---------------------------------
The generator checks known short words, plurals and conjugations (including AÑO,
UÑA, NIÑO, ÁRBOL, ÁRBOLES, LÁPICES, PECES, NUECES, CANTABA, COMÍAN, FUISTE, TENÉS,
REHACER and DESHACE), rejects invented controls QZX/ZZZZ/HOLAA/AÑOO, preserves
the Ñ distinction and normalizes decomposed CAFÉ. It checks supported lengths,
alphabet, answer membership and canonical uniqueness.
Two consecutive builds produced byte-identical output files. Deliberately
substituting an incorrect archive hash stopped source loading, and injecting an
unsupported FORBIDDENWORD directive stopped affix parsing. The independently
recorded results and final file hashes are in validation-report.json.

An independent development-only check loaded the pinned aff/dic through Spylls
0.1.7 and tested every one of the 96,669 generated exact source spellings. All
were accepted. The check first accepted casa, cantaba, árbol, árboles, lápices,
niño, tenés, rehacer and deshace and rejected qzx, zzzz, holaa and añoo. These
controls establish that the checker loaded the intended dictionary and could
reject words. The reviewed additions are not claimed as source matches; their evidence is
recorded separately. The source-expanded set has not changed since that check.
Spylls is not bundled or required by the generator or game. This checks that the
expander did not invent unsupported forms; it is not independent linguistic
approval of the underlying dictionary and does not prove exhaustive coverage.
Validator documentation: https://spylls.readthedocs.io/en/latest/hunspell/dictionary.html

One control distinction is useful: the source accepts podes but does not accept
podés as an exact display form. Both canonicalize to PODES, so users can enter
either in the game. The game therefore accepts that voseo spelling, but the
upstream exact-spelling check must not claim it verified podés. It is not in the
selected answer deck.

Curation limits and follow-up
----------------------------
The development assistant selected and reviewed the answer spellings by topic.
This is NOT native-speaker review, a native-speaker playtest, a frequency-ranked
deck or a measured assessment of familiarity across all Spanish-speaking regions.
The answer pool was not produced by translating English answers or by accepting
unfiltered frequency tokens. Counts are a consequence of selection, not quotas.

The accepted-guess dictionary deliberately includes less common, regional,
historical and inflected forms. A spelling dictionary can also contain errors;
acceptance is not a promise of an ideal answer. Capital filtering removes named
roots, not all words that can also be personal names. Guesses are not a profanity
filter. Anatomical vocabulary and ordinary words with regional double meanings
remain valid. The narrower answer deck includes ordinary inflected verbs and
function words as well as nouns, so it should not be presented as a nouns-only
game.

Three-letter Spanish has a genuinely limited familiar pool. Its 132 answers
include short function words (CON, DEL, POR), common conjugations (FUE, HAY, VEO),
and a few less everyday but established words such as BOL, COZ, HOZ, REO, RES and
ZAR. These deserve particular attention in native-speaker playtests; do not pad
this deck with obscure spellings solely to increase its size. Examples with
regional differences include JERSEY, GRIFO, NEVERA, PATATA, CARRO, BALDE and JUGO.
They are valid words, but the current curation does not establish equal regional
familiarity. A small, observed difficulty list is preferable to hidden changes
based on how well a particular player is doing.

The engine now retains answer history for the whole run. When one length is
exhausted it draws from the remaining supported lengths using their relative
fixed depth weights. After the last available word, the run completes with a
bankable earned haul instead of recycling answers. The answer deck remains
finite. An old save cannot recover history that the previous recycling policy
already deleted. Nothing in these assets performs adaptive difficulty tuning.
