WORDWARD GERMAN WORD DATA — DECK V1
Prepared 2026-10-24/25. Assistant editorial review; native review pending.

PLAY POLICY
3–7 cells; NFC normalization; replace ß with ẞ before uppercasing. Ä, Ö, Ü and
ẞ are distinct single letters. SS stays two letters. No AE/OE/UE substitutions.
German de_DE spelling: this does not claim complete Swiss or Austrian coverage.
Noun capitalization is preserved while validating sources; the board is uppercase.
The selected answer list is fixed, independent of player performance. A run never
reuses a normalized answer. Shared combat and word-length odds are unchanged.

SOURCES AND ATTRIBUTION
Morphy (Wolfgang Lezius), with corrections/extensions distributed by Daniel Naber
and LanguageTool; many additions from korrekturen.de.
https://www.danielnaber.de/morphologie/
https://github.com/languagetool-org/german-pos-dict
The source publisher states CC BY-SA 4.0 for these morphology data.
Pinned artifact: german-pos-dict 1.2.4, from Maven Central:
https://repo.maven.apache.org/maven2/de/danielnaber/german-pos-dict/1.2.4/german-pos-dict-1.2.4.jar
SHA256: 56f0b00adb704cbc1e86776b45f6890efe90685ab370a34b5b299593cdcaae22
Original german.dict/german.info are included, as is the original JAR.
LICENSE-CC-BY-SA-4.0.txt and upstream-README.txt were retrieved from commit
a0d7adc94c13c0532e087b839159452663f7ea93 (2026-10-24 retrieval).

Modern spelling validation uses LibreOffice de_DE_frami, based on igerman98.
Copyright (C) 1998–2016 Björn Jacke; additions by Franz Michael Baumann.
Original files/encoding/attributions are retained here. The README explicitly
notes that additional frami entries are unchecked: spelling acceptance alone
does not qualify a word as an answer.
https://www.j3e.de/ispell/igerman98/
https://github.com/LibreOffice/dictionaries/tree/31bc2a1104a1cd175f900902f994c76dea35c763/de
spelling-source.json records each exact URL, byte count and SHA256.
Original choice GPLv2 or GPLv3; this adaptation chooses GPLv3.

Derived German word data and this selection are GPL-3.0-only. CC BY-SA 4.0
allows GPLv3 adaptations in one direction; original morphology data stay under
their original CC BY-SA 4.0 terms. Both original license texts are included.
https://creativecommons.org/compatible-licenses/
assets/word-list-de-license.txt carries attribution and full license notices.
No proprietary Wordle answer list or dictionary definitions were used.

REPRODUCIBLE SOURCE EXPORT
Use Java and Morfologik 2.1.9 (tools, fsa, fsa-builders, stemming) with
jcommander 1.78, all available from Maven Central. The command used was:
  java -cp ".qa/german/tools/*" morfologik.tools.Launcher dict_decompile
    -i assets/german-source/german.dict -o .qa/german/morphology.input
(One command line; german.info must be next to german.dict.)
The direct Morfologik export is lemma_form_POS, not LanguageTool's separate
form/lemma export convention. Actual output was inspected and hashed.
4,988,730 rows, 248,852,818 bytes; full SHA256:
da702f0b8ee51ec1813792b892e2b95df18c08b0789d307e4bf70fc247f0a220

forms-3-7.input.gz retains EVERY original export row whose second underscore
field has 3–7 Unicode characters, preserving original order and LF endings.
188,218 rows; 6,396,327 uncompressed bytes. Compress with Python gzip.GzipFile
(filename='', mtime=0, default compresslevel=9) over those UTF-8 bytes.
The source JAR makes the initial filtering reproducible; full export need not be
shipped twice. Exact export/filter hashes are in export-evidence.json.

REBUILD THE PLAYABLE DATA OFFLINE
One-time build dependency (not required to play or run Node simulations):
  python -m pip install --target .qa/german/python spylls==0.1.7
Then, with no network:
  python scripts/build-german-words.py
The generator verifies input hashes/schema/counts and positive/negative spelling
controls before writing outputs. It reads only the pinned source files and the
explicit answer/supplement files; it does not reselect answers from frequency.
Generated outputs: assets/words-de.txt, src/german-words.js,
assets/word-list-de-license.txt and validation-report.json.

FILTERING AND REVIEW
Keep ordinary lower-case or initial-capital forms with A–Z/äöüß, 3–7 cells.
Exclude EIG (proper name), ABK (abbreviation), ZUS (fragment), IG categories,
punctuation and internal capitals. Include inflections, participles and numbers.
POS tags are imperfect: some proper-name/common-noun homographs survive in the
broad guess list. Explicit answer review removes identified names/brands.
37,393 canonical morphology forms survive the structural filter. Validate each
original-case form against pinned de_DE_frami with Spylls 0.1.7. This leaves
28,250 modern forms and removes pre-reform spellings such as daß/muß/Fluß.
Do not blindly convert ß to ss: Maße/Masse and schoß/schoss can be distinct.
Nine explicit modern-source supplements cover familiar nouns absent from the
morphology source. Only attestable 3–7-cell entries are included; no automatic
compound expansion. The accepted guess dictionary therefore has 28,259 entries.

answers-de.txt is the frozen 2,969-answer selection: 180 three-cell, 503 four-cell,
693 five-cell, 812 six-cell and 781 seven-cell words. Initial candidates were
modern forms with base-form analyses and German wordfreq 3.1.1 Zipf >= 3.8.
Nominalized-adjective/infinitive-only analyses were excluded from that candidate
pass. Every candidate list was read; selection-review.json records explicit
exclusions and familiar lower-frequency additions. Common inflections remain
possible answers, and broader inflections remain legal guesses.

Frequency is an editorial aid and synthetic prior, not proof of familiarity.
wordfreq German uses casefolded keys: ß and ss share a frequency estimate. The
simulator maps this estimate back to each accepted spelling while keeping
distinct puzzle identities. It reads the guess dictionary, never this selection.
Frequency source/hash/method are in scripts/simulation/data/frequency-de.json;
the frequency table retains its separate CC BY-SA 4.0 notice.

REMAINING LIMITS
Spelling sources and morphology are not an exhaustive or error-free dictionary.
Assistant curation/translation and synthetic tests are not native-speaker review.
German native-player word familiarity, regional expectations, enjoyment, and
physical-device keyboard/IME behaviour still need observed sessions. No claim
that simulation predicts real retention or human difficulty is made.

ORTHOGRAPHY REFERENCES
https://grammis.ids-mannheim.de/rechtschreibung/6144 (alphabet, umlauts, sharp S)
https://grammis.ids-mannheim.de/rechtschreibung/6193 (noun capitalization)
https://grammis.ids-mannheim.de/rechtschreibung/6175 (umlaut spelling)
