PR #17 shipped the extracted word lists (2,138 rows of the Issue 9 dictionary). The standard forbids reproduction without written authority from ASD, so the lists do not land. The extractor does: parse_dict.py and emit.py rebuild approved.txt and not-approved.tsv from a pdftotext dump of the free PDF, byte-identical to the PR files on 2026-09-04. The generated files are in .gitignore. ste_dict_lint.py reads those local lists and evals/slop.tsv and reports not-approved words with their approved alternatives. Self-test passes against freshly generated lists. COMPRESSION-RESEARCH.md keeps the survey of prompt-compression methods. Not taken: ste-core.md and its benchmark. The benchmark rested on the claude-opus-4-8 baseline that #24 showed does not reproduce, and the 2.0.1 SKILL.md already sits at 1,746 tokens on reader-visible evidence. The PR's edits to SKILL.md, the prompts, and the README are superseded. Claude-Session: https://claude.ai/code/session_018LyDhBTHmY3mTwD5dBoEsm
ASD-STE100 word lists, made on your machine
This directory holds an extractor and a word-choice linter. It holds no dictionary content. ASD-STE100 Issue 9 states on page 2 that no reproduction of the standard, in whole or in part, is permitted without written authority from ASD. So the repository ships the tool, and you make the word lists from your own copy of the free PDF.
Make the word lists
- Request the free PDF at https://www.asd-ste100.org/request.html.
- Convert it to text:
pdftotext -layout ASD-STE100_ISSUE9.pdf ste9.txt. - Parse the dictionary:
python3 parse_dict.py ste9.txt. This writesdict.json. - Emit the lists:
python3 emit.py .. This writesapproved.txt(841 rows) andnot-approved.tsv(1,297 rows).
The output is deterministic. On 2026-09-04 the two files matched the reference
run byte for byte. All four generated files are in .gitignore. Do not commit
them.
Lint word choice
evals/ste_lint.py measures the mechanical rules. It does not see word choice.
This linter reads not-approved.tsv and reports each word that the standard
does not approve, with the approved alternatives. It also counts the LLM-tell
words from evals/slop.tsv as a separate number.
python3 ste_dict_lint.py file.md
python3 ste_dict_lint.py --self-test
Known limit: the match is on the base form and simple inflections, with no part-of-speech disambiguation. Numbers from this tool compare two texts run through the same version. They are not a compliance verdict.
COMPRESSION-RESEARCH.md records why the lists are plain text and not a
symbolic notation: symbolic schemes did not transfer across model families in
the surveyed studies.