From 46895151c84c2d8ab7aa50bc269633c17fdef4db Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Mon, 5 Oct 2026 11:57:58 +0200 Subject: [PATCH] Answer prose round 1: plainer sentences in the two decisions, no provenance in items 108 and 109, and shorter comments in drawstate, render and format --- docs/decisions.md | 13 +++++++------ format.go | 3 +-- internal/drawstate/drawstate.go | 3 +-- render.go | 2 +- todo.md | 8 ++++---- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/decisions.md b/docs/decisions.md index 0367ad0..fa8be9d 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -827,7 +827,7 @@ Valid while names are read only inside the category binding them. ## comprehension floor: every dimension and the overall at 7.0 or above; the change making every `{…}` draw afresh, the move of the draw state and items 98 to 106 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 were the draw fences that change deleted. The change making every `{…}` draw afresh, the move of the draw state into `internal/drawstate` and `todo.md` items 98 to 106 delete or move what the earlier chunks of the below-floor round touched, so a scoring run before item 106 merges would score code about to go; the calc change accepting a name as an operand shipped unscored on 2026-10-05 for that reason. With the change making every `{…}` draw afresh, the move of the draw state and items 98 to 106 are the restructure the maintainer approved, which `AGENTS.md`'s comprehension rule lets merge below the floor. 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 `todo.md` 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. The hardest units were the draw fences, which the change making every `{…}` draw afresh deleted. The change making every `{…}` draw afresh, the move of the draw state into `internal/drawstate` and `todo.md` items 98 to 106 delete or move what the earlier chunks of the below-floor round touched, so a scoring run before item 106 merges would score code about to go; the calc change accepting a name as an operand shipped unscored on 2026-10-05 for that reason. The change making every `{…}` draw afresh, the move of the draw state and items 98 to 106 are the restructure the maintainer approved, which `AGENTS.md`'s comprehension rule lets merge below the floor. 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 `todo.md` item 5 runs. ## The template engine stays the root package until item 107; the draw state sits in `internal/`, and items 98 to 103 move what else stands alone there @@ -836,8 +836,9 @@ engine's types, `template`, `table`, `arm`, `op` and `nameBinding`, bound in one because several passes each write part of the same structs; the template language's recursion reads few of those types. Moving the engine before items 101 and 104 to 106 give each value one writer would spread that knot across packages, behind forwarding calls from -every public method. The draw state read no engine type, so it moved into -`internal/drawstate` first, behind an import list a test checks. `DataType` reads none either, -and moves with `proven`, what a proof knows of a value, which is keyed by it; the grammar, the -reading of data files, `proven`, the builtins and a table's rows stop reading any engine type -once items 98 to 103 remove those reads, so they move now, each added to that list. Valid until `todo.md` item 107 moves the engine. +every public method. The draw state reads no engine type, so it sits in `internal/drawstate`, +behind an import list a test checks. `DataType` reads none either. `proven`, what a proof +knows of a value, is keyed by `DataType`, so the two move together. The grammar, the reading +of data files, `proven`, the builtins and a table's rows stop reading any engine type once +items 98 to 103 remove those reads, and each of those items moves its part and adds it to +that list. Valid until `todo.md` item 107 moves the engine. diff --git a/format.go b/format.go index 39f531f..604abe0 100644 --- a/format.go +++ b/format.go @@ -124,8 +124,7 @@ func parseFormat(format string) ([]formatToken, error) { // draw state, the output emitted so far in the current expansion (for derivations // such as a checksum over preceding digits), and the values of the operands it named // (calc and the transforms name them). All must stay pure over (draw state, emitted, operands) so -// seeded output is reproducible; seq advances per-generator counter state, which is -// itself deterministic. arity is the exact arg count, or -1 for variadic (then +// seeded output is reproducible. arity is the exact arg count, or -1 for variadic (then // checkArgs does all the validation). type builtin struct { arity int diff --git a/internal/drawstate/drawstate.go b/internal/drawstate/drawstate.go index 98fec3a..806b2d1 100644 --- a/internal/drawstate/drawstate.go +++ b/internal/drawstate/drawstate.go @@ -1,5 +1,4 @@ -// Package drawstate holds a generator's seeded randomness, which its draws and builtin -// samples read, and its {seq()} counters. +// Package drawstate holds a generator's seeded randomness and its {seq()} counters. package drawstate import "math/rand/v2" diff --git a/render.go b/render.go index 047a450..3b03d7c 100644 --- a/render.go +++ b/render.go @@ -8,7 +8,7 @@ import ( ) // rng is the randomness a builtin sample draws from, which *drawstate.State satisfies. The -// render path takes the concrete type instead, which keeps the draws of the walk off the heap. +// render path takes the concrete type instead, which keeps its draws off the heap. type rng interface { IntN(n int) int Float64() float64 diff --git a/todo.md b/todo.md index b12cb61..e8db649 100644 --- a/todo.md +++ b/todo.md @@ -137,7 +137,7 @@ | 95 | 0.3.0 | principle | **Hold a struct's columns and the field each fills in one slice.** | 1 | 2 | 1 | 5 | 3.2 | 9.5 | | 19 | 0.3.0 | | **Fill the 398 Swedish localities weighted 200 from SCB småorter.** | 2 | 4 | 4 | 6 | 14.1 | 9.2 | | 56 | 0.3.0 | defect | **Build on a manual run of `test.yml`.** | 1 | 1 | 1 | 4 | 1 | 8.8 | -| 109 | 0.3.0 | principle | **Indent every script under `data-import/` with hard tabs, as `AGENTS.md` and `release-tooling/` do.** | 2 | 4 | 1 | 4 | 3 | 6.2 | +| 109 | 0.3.0 | principle | **Indent every script under `data-import/` with hard tabs, as `AGENTS.md` requires and `release-tooling/` does.** | 2 | 4 | 1 | 4 | 3 | 6.2 | | 63 | 0.4.0 | | **Pair a street with its exact postnummer.** | 3 | 6 | 5 | 8 | 4.1 | 19.1 | | 62 | 0.4.0 | | **Add `{btc()}` and `{eth()}`.** | 2 | 4 | 4 | 6 | 4 | 15.2 | | 59 | 0.4.0 | | **Promise in `Generator`'s godoc that its renders run one at a time.** | 1 | 1 | 5 | 5 | 12 | 13.2 | @@ -402,7 +402,7 @@ Both spellings load and draw alike, against goal 5.7. Widen the read-once refusa ### 108. Name item 26 in the decision "No builtin reads the clock, so a date is bounded by days, never by an age", as the item that ends its conflict with goal 4. -Found by the goals audit of item 97's chunk. Without the clock, `sv_SE.personnummer` never takes the `+` Skatteverket writes from the year the holder turns 100, so the oldest draws turn invalid from 2030. Item 26 revises the decision, but the decision does not point back to it. +Item 26 revises the decision, but the decision does not point back to it. ### 14. Spell `misc.creditcard`'s digit runs `{digits(n)}`. @@ -476,9 +476,9 @@ Its doc says render failure, and it wraps what `NewTemplate` and `NewRecordTempl `workflow_dispatch` leaves `github.event.before` empty, so the diff compares `HEAD` with itself and skips `docker build`. -### 109. Indent every script under `data-import/` with hard tabs, as `AGENTS.md` and `release-tooling/` do. +### 109. Indent every script under `data-import/` with hard tabs, as `AGENTS.md` requires and `release-tooling/` does. -Found by the technical-principles audit of item 97's chunk. Technical principle: indent with hard tabs. All 19 scripts indent with four spaces, so an edit there either keeps the wrong style or rewrites the whole file. +Technical principle: indent with hard tabs. All 19 scripts indent with four spaces, so an edit there either keeps the wrong style or rewrites the whole file. ### 63. Pair a street with its exact postnummer.