From a84997d2f4506475e722f3e821e85ca3b15bf53f Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Mon, 28 Sep 2026 20:26:20 +0200 Subject: [PATCH] Settle the open questions through the goals and audience --- AGENTS.md | 6 ++++-- README.md | 15 ++++++++++----- todo.md | 48 ++++++++++-------------------------------------- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 8fc3f98..6a4caf4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,10 +8,12 @@ only, `gh pr merge --rebase` where the branch is already on top of main. - README goal 2 is gated at 7.0 on the `comprehension-panel` skill, and below it nothing else merges — no feature, no category, no data — bar a security fix, a - dependency bump and the infrastructure the round itself runs on. `todo.md` carries the round: the nine-seat findings run at depth 1, + dependency bump, a repair of a promise goals 3 to 5 make, and the infrastructure + the round itself runs on. `todo.md` carries the round: the nine-seat findings run at depth 1, a PR per item it names, then the run again, until the score passes. At or above 7.0 every pull request scores with the four-seat run and answers it in one run. No merge - lowers the last score. + lowers the last score its own panel recorded: the nine-seat round and the four-seat + run are two ratchets, never compared with each other. - Hard tabs. No comment by default; delete a restatement, a rationale, history, or a file preamble. - One spelling per result: reject the other at `New`, and let the error name the spelling to use. - Prose naming a source states what that source states: read the register's own field diff --git a/README.md b/README.md index 5eb803b..36f9948 100644 --- a/README.md +++ b/README.md @@ -801,9 +801,11 @@ App developers writing tests and fixtures, in Go and at a shell: - a **Go test author**, filling a struct with `FakeStruct` - a **hand fixture author**, one value at a shell - a **validator-facing author**, who needs a value a real checker accepts +- a **data author**, who writes categories under `--data-path` and meets every load + error the fences raise and a **contributor**, who reads [`todo.md`](todo.md), [`AGENTS.md`](AGENTS.md) and -the Development section below, and who ships a register the four above then draw from. +the Development section below, and who ships a register the five above then draw from. ## Goals @@ -819,14 +821,17 @@ the Development section below, and who ships a register the four above then draw holding the rest, names that tell the truth, and a file that stands with no second document open beside it. A simulated reader panel scores those four, the score is a ratchet no release lowers, and [`AGENTS.md`](AGENTS.md) says what each pull request - owes it. -3. **Valid by construction** — every value passes the check its real consumer - applies; facts that belong together come from one draw, within a value and - across categories. + owes it. Below the floor it holds back new capability, never a repair of a promise + goals 3 to 5 already make, as long as the round that lifts the score stays planned. +3. **Valid by construction** — every value passes the check a current release of + its real consumer applies; facts that belong together come from one draw, within + a value and across categories. 4. **Templates are intuitive, and text means what it says** — a template or a path, and every path in a template, renders what every writer reading it would expect, judged by simulated writers from the Audience. A format renders as written; only `{…}` varies, random characters included (`{digits(3)}`), and a selected row, `[SE]`, is that row wherever it is written. + A name is changed whenever a more intuitive one is found; the Versioning table + prices the change, never blocks it. Where two writers could expect different outputs, the template is a load error naming a spelling for each. One spelling per result; the wrong one is a load error naming the right one. diff --git a/todo.md b/todo.md index 296a607..b23ebbd 100644 --- a/todo.md +++ b/todo.md @@ -73,9 +73,8 @@ by a `data-import/` script, as README goal 12 asks. - Give a `sv_SE.personnummer` over 100 the `+` separator Skatteverket spells, or stop drawing birthdates that reach 100: the format hard-codes `-`, and the 1930 floor makes the oldest draws invalid from 2031. -- Settle `en_US.ip` and `sv_SE.ip`, today byte-identical: either one `misc.ip` as the - decision "`misc` is what every locale shares" asks, or a decision saying why an - address that carries no locale stays per-locale. +- Merge `en_US.ip` and `sv_SE.ip`, today byte-identical, into one `misc.ip`, per goal 4's + one spelling per result. - Accept a middle name, and draw a shipped `personnummer` inside a *selected* sex; both want a draw group sharing its family's pins. Stop the conflict error naming a rewrite that returns a different value where the read it conflicts with sits inside @@ -88,8 +87,13 @@ by a `data-import/` script, as README goal 12 asks. goal 12 asks for and the hand-written list they use today does not meet. Keep the handle shape: `username` shortens a surname to `ahl` or `sjo`, and the US one draws unisex given names, neither of which falls out of the tables unaided. -- Decide whether `email.local` and `username` share one list: a reference between - shipped categories breaks a consumer once tagged, so it rides a 0.(x+1).0 after that. +- Draw `email.local` from `username`, so the two share one handle list. +- Rename `misc.territory.country` to `sovereign`, per goal 4: it holds a code, and + `country` collides with the `misc.country` path it replaced. +- Add `misc.browser` as the parent of `misc.useragent`, so + `misc.browser[Chrome].useragent` resolves, per goal 3. +- Group `data/misc` into folders where a group name makes a path easier to guess, per + goal 4. `misc` (locale-neutral) @@ -219,33 +223,6 @@ by a `data-import/` script, as README goal 12 asks. everywhere else. Typing a shipped column changes what `json` and `sql` write, so the capability is a minor and applying it to `misc.httpmethod` is a major. -### Open questions to settle - -- Decide whether a goal 5 violation joins the comprehension gate's exception list: the - `{/sel}|{/sel}` panic waits behind the whole round at 5.9, and - `{/geo.SE.locality}|{/geo.SE.municipality}` mispairs the shipped data meanwhile, though a - repair restoring behaviour the repo already claims may already pass the gate as written. -- Decide whether the README's Audience names the author who writes categories under - `--data-path`: the four personas listed consume the shipped set and the contributor - ships a register upstream, while "Your own data" is a README section, `-d` is a - first-class flag, and every load error the draw fences raise lands on that author. -- Decide whether `data/misc`'s 33 flat files gain a level before v1.0.0: a folder is a - path segment, so `misc/net/tld` is a rename a consumer pays for, and goal 13 promises - the directory keeps growing. -- Decide whether `misc.browser` becomes a parent of `misc.useragent`, so - `misc.browser[Chrome].useragent` resolves. Adding a `parent` after v0.1.0 breaks a - consumer, so it rides a 0.(x+1).0. -- Decide whether `misc.timezone` keeps every zone tzdb names: one added recently, - `Europe/Kyiv` among them, is rejected by a consumer resolving it against older - tzdata, and the population weight makes that zone likelier, not rarer. Today the - README names the action a reader takes instead; narrowing what ships is the - alternative. -- Decide whether `misc.territory.country` is renamed `sovereign`: it holds a code, and - `country` collides with the `misc.country` path it replaced. A rename after v0.1.0 - breaks a consumer, so it rides a 0.(x+1).0. -- Decide whether `parent: territory` stays, given a `--data-path` override of - `misc.territory` now fails `New` unless `misc.timezone` is overridden with it. - ### Release - Read the tag through `git/ref/tags/{tag}` in `publish_release.py`: GitHub answers @@ -303,11 +280,6 @@ because pairing a street with its exact postnummer rewrites shipped rows. - Name goal 2's four criteria with the axes the panel scores, so a recorded score maps back to the clause it came from: the goal spells them out in prose while `todo.md` records `Navigation`, `Locality`, `Shape` and `Self-sufficiency`. -- Put the round's nine-seat score and the four-seat score every later pull request - takes on one scale, or say in `AGENTS.md` that they are two ratchets: it gates the - round on the first and every merge after 7.0 on the second, then holds one "last - score" across both, where the `comprehension-panel` skill has two independent panels - drift unless a calibration seat reads the anchor project without its score. - Delete `doc.go`'s "The draw fences are …" sentence: it names a function, a type and a helper reached only through `drawWalk.check`, and misses `checkDrawGroup`, `checkOwnFamily` and `checkColumnDraws`; the README's Layout indexes the fences by file. @@ -320,7 +292,7 @@ because pairing a street with its exact postnummer rewrites shipped rows. - Scope `AGENTS.md`'s `Hard tabs.` to the Go source, or drop it: `gofmt` already gates Go at `Dockerfile:21`, and the shipped JSON under `data/` is two-space, so the rule as written is one no Go file can break and every data file does. -- Make `gitea.larvit.se/larvit/fejkdata` a pull mirror of GitHub or retire it: +- Make `gitea.larvit.se/larvit/fejkdata` a pull mirror of GitHub: Gitea converts a repository to a mirror only by re-creating it, so until that runs the copy there is a second owner of one history and goes stale from this commit. - Stop `/cache` collecting root-owned files, which today every command documented