From 07a0498c5ea654130f777e523bc409d09e6c0a74 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Wed, 7 Oct 2026 23:44:17 +0200 Subject: [PATCH] Revise the decisions on an unnamed TSV, an embedded tag's name and the zero divisor, and file the five spellings goal 5.7 leaves open --- docs/decisions.md | 12 +++++------- todo.md | 7 ++++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/decisions.md b/docs/decisions.md index bb2697b..3252ae1 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -287,7 +287,8 @@ assumes a 64-bit int; on a 32-bit target it could overflow and panic. ## A constant zero divisor is a load error; in a string column a divisor that is not constant prints `Inf` -2026-09-24, Lilleman auf Larv. +2026-09-24, Lilleman auf Larv. Serves goal 6.1: a value that is always `NaN` or `Inf` is +no valid value. `1/0` and a fixed `"0"` field are decidable, so they join the never-numeric operand as a load error; the fold stops where an operand varies, so `a/(b*c)` with `b` fixed at `0` @@ -329,8 +330,7 @@ The fields an embedded struct promotes are the struct's own — `e.First`, as its names: one tag may bind `{/person as p}{p.first}` and another read `{p.sex}` (goal 4.1), while a path tag draws afresh as `{/path}` does (goal 5.2). -A tag binding a name only an embedding type reads is refused on the embedded type alone, as -any name nothing reads is, so the embedder binds it in a tag of its own. A tagged field that +A tagged field that another field hides is refused, not dropped. A named struct field is another entity and a record of its own. `fake:"-"` leaves any struct field unfilled, so no name may be `-`; a pointer back to a struct @@ -439,7 +439,7 @@ heap through `pickKey.under`, holds at its baseline with no margin: from a basel objects would cost it a second; a TSV is one allocation whose cells are substrings, and the JSON says only how a row is composed. The TSV sits beside its category file, named by `rows`, so a data directory stays a directory of categories, and one nothing names is -a load error. +ignored. ## A selector is bracketed, and a dot inside it is literal @@ -538,9 +538,7 @@ kept building the lookup on first draw, once per table. 2026-09-17, Lilleman auf Larv. Each is a view of the file with its own format and options, at the cost of holding the -rows twice, which is what a category over a register with two natural formats asks for; -a TSV nothing names stays a load error, since that one is a file forgotten rather than -shared. +rows twice, which is what a category over a register with two natural formats asks for. ## A cell may read a reference, and each row its own diff --git a/todo.md b/todo.md index dd3633e..65ddc55 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,7 @@ `Bar = 9` -`Next ID = 162` +`Next ID = 163` | Goal | W | |---|---| @@ -78,6 +78,7 @@ | 89 | 0.1.0 | | **Fail `New` without `WithSeed`, naming the option, and seed the CLI from the system.** | 3 | 3 | 6 | 7 | 10.1 | 16.0 | | 145 | 0.1.0 | | **Move `doc.go`'s definitions of a level, a pick key and an addressed key, with their worked example, to `pickKey` in `pick.go`, and gather `levelKeys`, `addressedKeys`, `renderEnv.keeps` and `readField`'s kept read beside `readUnder`, so a reader follows a named read in one file.** | 2 | 3 | 1 | 9 | 3.4, 3.2 | 15.4 | | 127 | 0.1.0 | | **Give a Swedish street only postal codes whose delivery digit means street or rural delivery, dropping codes whose delivery digit is 9, or record why they stay.** | 3 | 3 | 4 | 6 | 4 | 14.4 | +| 162 | 0.1.0 | question | **Decide whether each of five spellings loads under goal 5.7: a binding in a table's format or cell, a path through a name that selects a row, an unknown key in a table object, a table `name` with neither `key` nor `parent`, and a key or name no selector can spell.** | 1 | 2 | 3 | 6 | 5.7 | 14.1 | | 110 | 0.1.0 | | **Refuse an empty segment in a path `Fake` and `FakeRecord` take, as a reference does: `sv_SE.person.` reports `path has an empty segment`.** | 1 | 1 | 3 | 6 | 6 | 13.8 | | 10 | 0.1.0 | | **Test that every node kind reaches each switch over node kinds.** | 1 | 3 | 2 | 6 | 3.2 | 13.1 | | 148 | 0.1.0 | | **State in `geo.py` the locality row each country's script hands it, and meet the fence that every parent row has a child row in one shared step.** | 2 | 3 | 2 | 6 | 2.1, 3.2 | 12.6 | @@ -288,6 +289,10 @@ All 13 seats of the 2026-10-07 panel and scoring run on ad59967 again named the `docs/research/research-geo-se.md` reads delivery digit 0 or 1 as boxes, 2–4 and 6–7 as street, 5 as rural, 8 as reply mail and 9 as competitions or temporary, with exceptions in big cities. `street_delivery` drops 0, 1 and 8 and keeps 9. The panel of 2026-10-05 found it; whether a shipped street carries a 9 code is unchecked. +### 162. Decide whether each of five spellings loads under goal 5.7: a binding in a table's format or cell, a path through a name that selects a row, an unknown key in a table object, a table `name` with neither `key` nor `parent`, and a key or name no selector can spell. + +Each stays refused today. Goal 5.7 loads whatever is well-formed and means one thing; for each, what it would mean is not settled. An unknown key such as `repeat` on a table object would silently not repeat. Found while dropping the refusals that guessed at mistakes. + ### 110. Refuse an empty segment in a path `Fake` and `FakeRecord` take, as a reference does: `sv_SE.person.` reports `path has an empty segment`. Today `Fake("sv_SE.person.")` reports `no field ""`, while `{/sv_SE.person.}` reports `path has an empty segment`. `grammar.CheckSegments` is the check a reference, a sibling path and a step up `..` run.