diff --git a/README.md b/README.md index 2046fae..98b894f 100644 --- a/README.md +++ b/README.md @@ -959,8 +959,9 @@ Where the project is heading; the sections before Audience document what ships t 6. If two people could read a template differently, loading it fails, and the error shows how to write each meaning. 7. Each result has one obvious way to write it. A spelling with a part that doesn't - change anything — a default written out, a repeated item, a wrapper around what - could stand alone — fails to load, and the error shows it without that part. + change anything — a default written out, an item listed twice in a choice, a + wrapper around what could stand alone — fails to load, and the error shows the + spelling to write instead. 8. When a clearer name turns up, it replaces the old one, even if that needs a new major version. 6. **Mistakes are caught when the data loads, and the error says plainly what is diff --git a/docs/decisions.md b/docs/decisions.md index 584de4a..7ae1777 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -532,8 +532,8 @@ Valid until item 4 makes every `{…}` draw afresh, which revises the shared ste ## A table selects by one key column, a code, never a free-form name -Decided 2026-09-27 by the maintainer, for goal 5.5: `[SE]` means one row wherever it is -written. Valid while +Decided 2026-09-27 by the maintainer, for goal 5.5: a name may repeat across rows or change +with its register, while a code selects one row for good. Valid while the key is the code a user writes, as a database keys a table. `country[NO]` loads, and `country[Norway]` is refused naming `[NO]`, found by the row whose cell spells the selector. The key is the friendliest code the register holds, `misc.territory[SE]` and diff --git a/todo.md b/todo.md index 1678aea..fe1009e 100644 --- a/todo.md +++ b/todo.md @@ -106,7 +106,7 @@ | 27 | 0.2.0 | | **Merge `en_US.ip` and `sv_SE.ip`, today byte-identical, into one `misc.ip`.** | 3 | 2 | 4 | 6 | 5.7 | 14.1 | | 22 | 0.2.0 | | **Give `url` and `email` a path that draws only domains nobody can register, keeping the wide set as the default.** | 3 | 4 | 7 | 8 | 16 | 14.0 | | 46 | 0.2.0 | | **Report the same error every load for a table with two bad options, and for a folder with two unnamed rows files.** | 2 | 2 | 3 | 7 | 6, 10 | 14.0 | -| 14 | 0.3.0 | | **Spell `misc.creditcard`'s digit runs `{digits(n)}`, and refuse a repeat over a lone `{digits(1)}` at `New`, naming that spelling.** | 3 | 3 | 4 | 6 | 5.7 | 13.9 | +| 14 | 0.3.0 | | **Spell `misc.creditcard`'s digit runs `{digits(n)}`.** | 2 | 2 | 4 | 6 | 5.7 | 15.1 | | 38 | 0.3.0 | defect | **Compare `calcParser.binary`'s operator as a rune.** | 1 | 1 | 3 | 6 | 6 | 13.8 | | 45 | 0.3.0 | | **Name the node a selector follows in `stepInto`'s refusal.** | 1 | 1 | 3 | 6 | 6 | 13.8 | | 49 | 0.3.0 | | **Report a CRLF rows file holding only its header as having no rows.** | 1 | 1 | 3 | 6 | 6 | 13.8 | @@ -372,9 +372,9 @@ Require the path step to reach a sibling category. `readTableOptions` and `loadDir` return on the first in Go's map order. -### 14. Spell `misc.creditcard`'s digit runs `{digits(n)}`, and refuse a repeat over a lone `{digits(1)}` at `New`, naming that spelling. +### 14. Spell `misc.creditcard`'s digit runs `{digits(n)}`. -A repeat of 14 over `{digits(1)}` draws every 14-digit run with the odds `{digits(14)}` does, so under goal 5.7 the repeat is a wrapper that changes nothing. +A `"repeat": 14` over `{digits(1)}` draws every 14-digit run with the odds `{digits(14)}` does. Both load, since neither has a part that changes nothing; the shipped data writes the obvious one. Re-pin seeded output in its own commit. ### 38. Compare `calcParser.binary`'s operator as a rune.