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. 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 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 `last-name`. `person` and `personnummer` draw apart, so where a name and a number must
number must agree, read both through one bound `sex`: agree, read both through one bound `sex`, `{/sv_SE.sex[f] as s}` for a woman:
```json ```json
{ "format": "{first} {last}, {pnr}", { "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()}" } "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 Renders e.g. `Anne Grönberg, 011012-2389`.
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 Skatteverket's test series is small: a personnummer is one of about 70,000 values, a day
your own. `sv_SE.date` and `en_US.date` are uniform over 1970-01-01 to 2029-12-31, in 1930–2025 against the two birth numbers, so a fixture past a few hundred rows repeats
`misc.datetime` over 2000-01-01 to 2029-12-31. What the two locales do not share: one and a `UNIQUE` column needs a category of your own. `sv_SE.date` and `en_US.date`
`en_US.address` carries a `region` column the Swedish one has no use for, and are uniform over 1970-01-01 to 2029-12-31, `misc.datetime` over 2000-01-01 to 2029-12-31.
`sv_SE.title` has no `parent`, so it is selected as `sv_SE.title[dr]` rather than What the two locales do not share: `en_US.address` carries a `region` column the Swedish
inside a sex. 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 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 [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. 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 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}`, same four columns as `geo.SE.address`. Its format binds one name,
which the format prints whole as `{a}`, so the country's format is written once and `{/geo.SE.address as a}`, and prints it whole as `{a}`. Each column reads one part of it,
every column describes the address printed. A column is spelled the same in both, `{a.street}`, so the country's format is written once and every column describes the
`street-number`, so the two never disagree on a name. Valid while a record cannot read address printed. Valid while a record cannot read another whole and keep its columns.
another whole and keep its columns.
## A postort's kommun comes from its name, its tätort or its codes, never from distance ## 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 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 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 `samordningsnummer` use those. They sit in a `birth-number` table under `sex`, not in a
than as a column of it, so a pick of a sex can read the number; `todo.md` item 28 has column of it, so a pick of a sex can read the number, and `sex` keeps one shape across
`personnummer` read it that way, to agree with a person's sex, and `sex` stays one shape across locales instead of locales. `todo.md` item 28 has `personnummer` read it that way, so the number agrees
collecting every sex-keyed id fact. A samordningsnummer's day, the birthday plus 60, is 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. 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 ## 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 ## 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 | | 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 | | 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 | | 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 | | 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 | | 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 | | 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. - 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. - 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`). - 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. - 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. ### 57. Rewrite `CHANGELOG.md`'s `[Unreleased]` as what v0.1.0 holds.