Answer prose round 1: show binding a selected sex, split the test-series paragraph, give the birth-number layout both reasons, and say which item the round leaves

This commit is contained in:
2026-10-05 00:47:20 +02:00
committed by Lillem4n
parent 60b3cb20ca
commit 19cbbe56f6
3 changed files with 22 additions and 22 deletions
+11 -10
View File
@@ -238,8 +238,8 @@ too, so a person's prefix never contradicts it. A `personnummer`'s birth number,
for a man, which no real person is ever given.
A person of a chosen sex is assembled from the tables — `sex[f].first-name` beside
`last-name`. `person` and `personnummer` each draw their own sex, so where a name and a
number must agree, read both through one bound `sex`:
`last-name`. `person` and `personnummer` draw apart, so where a name and a number must
agree, read both through one bound `sex`, `{/sv_SE.sex[f] as s}` for a woman:
```json
{ "format": "{first} {last}, {pnr}",
@@ -248,14 +248,15 @@ number must agree, read both through one bound `sex`:
"pnr": "{date(1930-01-01,2025-12-31,'060102')}-{s.birth-number.number}{luhn()}" }
```
Renders e.g. `Anne Grönberg, 011012-2389`. Skatteverket's test series is also small: a personnummer
is one of about 70,000 values, a day in 1930–2025 against the two birth numbers, so a
fixture past a few hundred rows repeats one and a `UNIQUE` column needs a category of
your own. `sv_SE.date` and `en_US.date` are uniform over 1970-01-01 to 2029-12-31,
`misc.datetime` over 2000-01-01 to 2029-12-31. What the two locales do not share:
`en_US.address` carries a `region` column the Swedish one has no use for, and
`sv_SE.title` has no `parent`, so it is selected as `sv_SE.title[dr]` rather than
inside a sex.
Renders e.g. `Anne Grönberg, 011012-2389`.
Skatteverket's test series is small: a personnummer is one of about 70,000 values, a day
in 1930–2025 against the two birth numbers, so a fixture past a few hundred rows repeats
one and a `UNIQUE` column needs a category of your own. `sv_SE.date` and `en_US.date`
are uniform over 1970-01-01 to 2029-12-31, `misc.datetime` over 2000-01-01 to 2029-12-31.
What the two locales do not share: `en_US.address` carries a `region` column the Swedish
one has no use for, and `sv_SE.title` has no `parent`, so it is selected as
`sv_SE.title[dr]` rather than inside a sex.
A `geo` folder holds one tree per country under its alpha-2 code: five
[linked tables](#linked-tables) named alike, and an `address` record binding one locality
+9 -10
View File
@@ -662,11 +662,10 @@ Withdrawn by the maintainer on 2026-10-03; `todo.md` item 78 replaces it.
2026-09-18, Lilleman auf Larv; revised 2026-10-05. Goal 4.1.
A record cannot read another whole and keep its columns, so `sv_SE.address` names the
same four columns as `geo.SE.address`. Each reads one name, `{/geo.SE.address as a}`,
which the format prints whole as `{a}`, so the country's format is written once and
every column describes the address printed. A column is spelled the same in both,
`street-number`, so the two never disagree on a name. Valid while a record cannot read
another whole and keep its columns.
same four columns as `geo.SE.address`. Its format binds one name,
`{/geo.SE.address as a}`, and prints it whole as `{a}`. Each column reads one part of it,
`{a.street}`, so the country's format is written once and every column describes the
address printed. Valid while a record cannot read another whole and keep its columns.
## A postort's kommun comes from its name, its tätort or its codes, never from distance
@@ -860,10 +859,10 @@ name is an error listing both keys; select by type instead.
A Luhn-valid personnummer over a random birth number may be a living person's; 238 and
239 after any date are blocked from assignment, so the shipped `personnummer` and
`samordningsnummer` use those. They sit in a `birth-number` table under `sex` rather
than as a column of it, so a pick of a sex can read the number; `todo.md` item 28 has
`personnummer` read it that way, to agree with a person's sex, and `sex` stays one shape across locales instead of
collecting every sex-keyed id fact. A samordningsnummer's day, the birthday plus 60, is
`samordningsnummer` use those. They sit in a `birth-number` table under `sex`, not in a
column of it, so a pick of a sex can read the number, and `sex` keeps one shape across
locales. `todo.md` item 28 has `personnummer` read it that way, so the number agrees
with the person's sex. A samordningsnummer's day, the birthday plus 60, is
drawn from 61 to 88, valid in every month, rather than computed from the date drawn.
## The US given names come from a mirror of the SSA file
@@ -928,4 +927,4 @@ Valid while names are read only inside the category binding them.
## comprehension floor: every dimension and the overall at 7.0 or above; items 71, 4 and 90 ship with no scoring run, and item 5 scores them
2026-10-04, Lilleman auf Larv. Serves goal 3. The nine-seat panels in `todo.md`'s git history, 2026-09-22 to 2026-09-30, held the score between 5.2 and 6.1, with Locality lowest at every seat, and the hardest units are the draw fences item 4 deletes. Items 4 and 90 delete or move what the earlier items touch, so a scoring run before item 90 merges would score code about to go. Items 71, 4 and 90 finish the round `AGENTS.md`'s comprehension rule lets merge below the floor, a restructure the maintainer approved. No scoring run or panel runs until item 5, which runs the nine-seat panel and larv-review's scoring run. The scoring run writes this entry's first scores. Valid until item 5 runs.
2026-10-04, Lilleman auf Larv. Serves goal 3. The nine-seat panels in `todo.md`'s git history, 2026-09-22 to 2026-09-30, held the score between 5.2 and 6.1, with Locality lowest at every seat, and the hardest units are the draw fences item 4 deletes. Items 4 and 90 delete or move what item 71 touches, so a scoring run before item 90 merges would score code about to go. Items 71, 4 and 90 finish the round `AGENTS.md`'s comprehension rule lets merge below the floor, a restructure the maintainer approved. No scoring run or panel runs until item 5, which runs the nine-seat panel and larv-review's scoring run. The scoring run writes this entry's first scores. Valid until item 5 runs.
+2 -2
View File
@@ -86,7 +86,7 @@
| 88 | 0.2.0 | | **Add a 12-digit `YYYYMMDDNNNC` form of `sv_SE.personnummer` and `sv_SE.samordningsnummer`, the form Skatteverket's testpersonnummer series and many systems store.** | 2 | 3 | 6 | 6 | 4 | 19.4 |
| 41 | 0.2.0 | | **Key every table by one key column, as the decision "A table selects by one key column, a code, never a free-form name" states.** | 6 | 7 | 7 | 8 | 5.7 | 19.1 |
| 52 | 0.2.0 | | **Name the file a link error comes from beside its category path, `sub.x (/d/a/sub/x.json): …`.** | 1 | 2 | 5 | 7 | 6 | 19.0 |
| 28 | 0.2.0 | | **Accept a middle name, and draw a `personnummer` whose sex matches a sex selected through a named pick.** | 4 | 4 | 6 | 7 | 4.1 | 18.9 |
| 28 | 0.2.0 | decision | **Accept a middle name, and draw a `personnummer` whose sex matches a sex selected through a named pick.** | 4 | 4 | 6 | 7 | 4.1 | 18.9 |
| 24 | 0.2.0 | defect | **Stop `misc.territory[EH].tld` rendering `.eh`, the one shipped TLD `misc.tld` does not hold.** | 1 | 1 | 4 | 7 | 4 | 18.6 |
| 53 | 0.2.0 | | **Let a table column carry a `datatype`, so `--format json` writes `"safe": true` and `--format sql` a boolean.** | 4 | 5 | 6 | 6 | 4 | 16.9 |
| 55 | 0.2.0 | | **Document `NewRecordTemplate`, `ErrNoColumns`, `ErrNoData` and `MaxRepeat` in the README's Library section.** | 1 | 2 | 6 | 7 | 12 | 16.8 |
@@ -231,7 +231,7 @@ Shape: T = table, t = template, c = choice.
- Fixes on the way: `{/sel}|{/sel}` panics out of `Fake` today where two draws land on rows whose cells select different rows of another table; it must render.
- Rewrites the README's References, Draw group, Correlated fields, Linked tables, Names and "One draw, one spelling" sections; the Linked tables section says which pick's weights govern a family, since the bound row decides.
- Widens the refusal of a name read once to every binding, a path into it or a reference path bound included, since `{n.x}` read once is then `{/ref.x}`, and deletes the names fence over draw groups and nested repeats (`checkUses`, `readsHeld`).
- Say how a record's columns and a struct's tags read one pick, so `sv_SE.person.first` and `sv_SE.person.sex` beside each other still describe one person.
- Say how a record's columns and a struct's tags read one pick, so the `first` and `sex` columns of one `sv_SE.person` record, or one struct's tags reading them, still describe one person.
- Re-pin seeded output and `testdata/shipped_shape.txt` in their own commits; the CHANGELOG names the grammar change.
### 57. Rewrite `CHANGELOG.md`'s `[Unreleased]` as what v0.1.0 holds.