From 4bf1ee292a48476786d7ef2557053ab165492d63 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Sun, 4 Oct 2026 19:34:40 +0200 Subject: [PATCH] Answer prose round 3 and product-owner round 2: one reading per step, no birthdate after the given date, and the 12-digit claim scoped to testpersonnummer --- todo.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/todo.md b/todo.md index b6227d4..a10d061 100644 --- a/todo.md +++ b/todo.md @@ -71,7 +71,7 @@ | 26 | 0.2.0 | defect | **Spell `sv_SE.personnummer` with the `+` Skatteverket uses from the year the holder turns 100, judged by a date the caller gives.** | 4 | 6 | 7 | 8 | 4 | 22.1 | | 81 | 0.2.0 | decision | **Refuse at load every `calc` operand not proven numeric and every divisor not proven nonzero, in a string column too.** | 4 | 4 | 6 | 8 | 6.1, 4 | 20.6 | | 36 | 0.2.0 | | **Report every mistake a load finds in one error, as the decision "A load reports every mistake at once" states.** | 5 | 6 | 7 | 8 | 6 | 19.5 | -| 88 | 0.2.0 | | **Add a 12-digit `YYYYMMDDNNNC` form of `sv_SE.personnummer` and `sv_SE.samordningsnummer`, the form Skatteverket's test 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 | | 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 | @@ -259,11 +259,11 @@ GoReleaser attaches the binaries to the release the tag workflow publishes, and The format hard-codes `-`, and its earliest birthdate, 1930-01-01, makes the oldest draws invalid from 2030. A system holding Swedish personnummer often breaks on the `+`, so a fixture carrying one is a valuable test. Whether a number takes `+` depends on the date it is read, and the decision "No builtin reads the clock, so a date is bounded by days, never by an age" forbids a builtin from reading that date off the clock. Steps: - Explore how a caller passes data, such as the date a number is read on, to a render: in the template, as a plain option, or both. Bench the spelling; `--now` reads like the clock, and only the year counts. -- Decide and document what renders when the caller gives no date, keeping seeded output stable. -- Reach birthdates back past 100 years, as Skatteverket's test series does from 1890, so a `+` ships before 2030, and decide what share of draws carries one. +- Decide and document what renders when the caller gives no date, so the output never depends on the day it runs. +- Reach birthdates back past 100 years, as Skatteverket's test series does from 1890, with birth numbers 980/981 before 1900, so a `+` ships before 2030; draw no birthdate after the given date, and decide what share of draws carries a `+`, such as enough that a few hundred rows hold one. - Give a path that always draws a `+` number for the date given, so a test can ask for a centenarian. -- Spell the separator with a builtin or construct a data author's own category can use too, and update the README's personnummer recipe and its "a day in 1930–2025" count. -- Check whether Lag (2022:1697) om samordningsnummer gives `sv_SE.samordningsnummer`, which also hard-codes `-` from 1930, the same `+`; Skatteverket's SKV 704 states the rule for personnummer only. +- Spell the separator with a builtin, or another construct, that a data author's own category can use too, and update the README's personnummer recipe and its "a day in 1930–2025" count. +- `sv_SE.samordningsnummer` also hard-codes `-` and draws from 1930. Check whether Lag (2022:1697) om samordningsnummer gives it the same `+`; folkbokföringslagen 18 § states the rule for personnummer only. ### 81. Refuse at load every `calc` operand not proven numeric and every divisor not proven nonzero, in a string column too. @@ -273,9 +273,9 @@ The decision "A constant zero divisor is a load error; in a string column a divi `New` and `NewTemplate` stop at the first, so data holding two mistakes takes two runs to fix. Split it into items before starting, one of them the shape a Go caller iterates and the CLI prints, and the order of an inline template's mistakes, which name no path; reword the README's "`New` refuses a mistake in the data" to every mistake. -### 88. Add a 12-digit `YYYYMMDDNNNC` form of `sv_SE.personnummer` and `sv_SE.samordningsnummer`, the form Skatteverket's test series and many systems store. +### 88. Add a 12-digit `YYYYMMDDNNNC` form of `sv_SE.personnummer` and `sv_SE.samordningsnummer`, the form Skatteverket's testpersonnummer series and many systems store. -A system storing the century avoids the `+` altogether, so a fixture in that form tests the other half of the problem item 26 tests. +A system that stores the 12-digit form never meets the `+`, so it needs a fixture in that form. ### 41. 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.