From d160de3ee149ba06857e8f54d8aa9bdf1d8d84c3 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Sun, 4 Oct 2026 23:41:25 +0200 Subject: [PATCH] Scrap the flat-package decision, plan item 90's folder restructure before the panel, and suspend scoring until item 5 --- AGENTS.md | 2 +- docs/decisions.md | 10 ++++------ todo.md | 19 +++++++------------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a1918b0..9f0ea48 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -74,7 +74,6 @@ In [docs/decisions.md](docs/decisions.md): - `Column` carries text, not a Go value - A unit takes the stem of what it is, and a file the stem of the units it holds - One name, one meaning -- The package stays flat - The performance gate asserts allocations, not wall-clock time - Rows live in a TSV, the shape in JSON - A selector is bracketed, and a dot inside it is literal @@ -120,3 +119,4 @@ In [docs/decisions.md](docs/decisions.md): - `List` advertises direct descents only - A path draws through its compiled steps - A name lives in the category binding it, or in the repeat binding it, and is drawn on its first read +- comprehension floor: every dimension and the overall at 7.0 or above; items 2, 71, 3, 4 and 90 ship under it with no scoring run, and the nine-seat panel, item 5, measures them diff --git a/docs/decisions.md b/docs/decisions.md index 9a5406e..c30dd74 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -446,12 +446,6 @@ rest. Serves goal 3: names that tell the truth, and reaching the unit behind a s without asking a person. Decided 2026-09-25 by Lilleman; valid while goal 3 counts reading cost. -## The package stays flat - -2026-09-15, Lilleman auf Larv. - -Go ties a package to one directory, so folders would split the API into packages. - ## The performance gate asserts allocations, not wall-clock time 2026-09-03, Lilleman auf Larv. @@ -943,3 +937,7 @@ two draws of it. `todo.md` item 4 ends both: once every `{…}` draws afresh, no the render. Valid while names are read only inside the category binding them. + +## comprehension floor: every dimension and the overall at 7.0 or above; items 2, 71, 3, 4 and 90 ship under it with no scoring run, and the nine-seat panel, item 5, measures them + +2026-10-04, Lilleman auf Larv. Serves goal 3. Nine nine-seat panels held the score between 5.2 and 6.1, Locality lowest at every seat, and the hardest units are the draw fences item 4 deletes. Each step of that restructure would score code the next step removes, so no scoring run or panel runs until items 2, 71, 3, 4 and 90 have merged, in that order. Item 5 then ends the suspension: it runs the nine-seat panel and larv-review's scoring run. Valid until item 5 runs. diff --git a/todo.md b/todo.md index 24aae26..f8680b7 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,7 @@ `Bar = 9` -`Next ID = 90` +`Next ID = 91` | Goal | W | |---|---| @@ -78,6 +78,7 @@ | 5 | 0.1.0 | | **Run the nine-seat comprehension panel after the draw restructure, and file what it names.** | 1 | 3 | 3 | 9 | 3 | 20.4 | | 71 | 0.1.0 | | **Accept a name as a `calc` operand, so `{calc(n * 2)}` computes from the pick `{n}` prints.** | 3 | 4 | 5 | 7 | 5.3 | 17.2 | | 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 | +| 90 | 0.1.0 | | **Restructure the code into folders named for what they hold: the public API stays in the root package, and the implementation moves into `internal/` packages.** | 6 | 9 | 3 | 9 | 3.2, 3.4 | 13.9 | | 79 | 0.1.0 | decision | **Beside a `--data-path`, load in `New` the user's categories, the shipped ones they override or read, and the shipped ones whose reads reach an overridden one; load the rest on first reach.** | 6 | 6 | 7 | 8 | 13 | 12.9 | | 87 | 0.1.0 | | **Split the README's last Records paragraph into one paragraph per rule, name the two shapes "either shape" means, and define or replace "a field hold".** | 1 | 2 | 4 | 6 | 12, 12.3 | 11.9 | | 58 | 0.2.0 | | **Ship prebuilt binaries, a container image, and packages for Homebrew, Scoop and the biggest Linux package managers, so the CLI needs no Go.** | 3 | 7 | 8 | 9 | 1.1, 7 | 29.2 | @@ -117,8 +118,6 @@ | 11 | 0.3.0 | | **Test that every `geo` tree holds the five table names and the `address` columns that port across countries.** | 1 | 2 | 3 | 5 | 4 | 13.0 | | 35 | 0.3.0 | | **Add `{base64url(n)}` for JWT shapes.** | 1 | 2 | 4 | 5 | 8 | 13.0 | | 21 | 0.3.0 | | **List `title` in both locales, and `sv_SE`'s `birth-number`, in the README's Data list of what each locale carries.** | 1 | 1 | 4 | 6 | 12 | 12.2 | -| 8 | 0.3.0 | | **Move `binding`, `bind` and `checkNodeFences` out of `data.go` into a file of their own.** | 1 | 2 | 2 | 5 | 3.1 | 11.5 | -| 9 | 0.3.0 | | **Move `table.route`, `selector`, `step` and `drawStep` from `path.go` to `table.go`.** | 1 | 2 | 2 | 5 | 3.1 | 11.5 | | 30 | 0.3.0 | | **Draw `email.local` from `username`, so the two share one handle list.** | 2 | 2 | 3 | 5 | 5.7 | 11.5 | | 40 | 0.3.0 | | **Parse `defaultTable`'s path with the library's grammar.** | 2 | 2 | 3 | 5 | 5.7 | 11.5 | | 86 | 0.3.0 | | **Read both `en_US.phone` formats' area codes from one category, as their exchange reads `en_US.phone-exchange`.** | 1 | 2 | 2 | 5 | 3.2 | 11.5 | @@ -261,7 +260,7 @@ Nothing has shipped, so "no longer paths", "where it used to fail" and "where it ### 5. Run the nine-seat comprehension panel after the draw restructure, and file what it names. -Needs item 4. +Needs items 2, 71, 3, 4 and 90, in that order. The decision "comprehension floor: every dimension and the overall at 7.0 or above; items 2, 71, 3, 4 and 90 ship under it with no scoring run, and the nine-seat panel, item 5, measures them" holds every scoring run and panel until then. ### 71. Accept a name as a `calc` operand, so `{calc(n * 2)}` computes from the pick `{n}` prints. @@ -271,6 +270,10 @@ Needs item 4. Goal 10.1 has the caller supply the seed, and today `New` without `WithSeed` seeds itself. This item ships in 0.1.0 beside item 77, so `New` breaks once before anyone depends on it. Mark `WithSeed` required in the Library section's options table. +### 90. Restructure the code into folders named for what they hold: the public API stays in the root package, and the implementation moves into `internal/` packages. + +Needs item 4, and comes before item 5's panel. The maintainer scrapped the decision "The package stays flat" on 2026-10-04: its premise, that folders split the API into packages, does not hold for `internal/` packages, which no other module can import. Each package is a folder named for what it holds, and what one package uses from another is exported on purpose. It takes in two file moves the panel asked for: `binding`, `bind` and `checkNodeFences` out of `data.go`, and `table.route`, `selector`, `step` and `drawStep` out of `path.go`. The architect proposes the folders and their names, and the maintainer approves them before code moves. + ### 79. Beside a `--data-path`, load in `New` the user's categories, the shipped ones they override or read, and the shipped ones whose reads reach an overridden one; load the rest on first reach. Needs item 77, which makes an override fail unless it says it replaces. @@ -416,14 +419,6 @@ Needs item 4; recount the switches then. Today ten, from `render` to `columnItem Nothing checks it, and a new country breaks it silently. -### 8. Move `binding`, `bind` and `checkNodeFences` out of `data.go` into a file of their own. - -The greenfield architect found the fence pipeline last. Needs item 4, which shrinks the pipeline. - -### 9. Move `table.route`, `selector`, `step` and `drawStep` from `path.go` to `table.go`. - -The inherited architect's 3am trace crossed four files for one draw. - ### 40. Parse `defaultTable`'s path with the library's grammar. The CLI counts brackets of its own, so a change to the selector grammar desyncs the default `--table` silently.