Name goal 4's check and the rewrite the refusal offers, scope the render-draw decision to unselected paths, and state the step-up clash
This commit is contained in:
@@ -823,12 +823,13 @@ the Development section below, and who ships a register the four above then draw
|
|||||||
3. **Valid by construction** — every value passes the check its real consumer
|
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
|
applies; facts that belong together come from one draw, within a value and
|
||||||
across categories.
|
across categories.
|
||||||
4. **Templates are intuitive, and text means what it says** — a template does what
|
4. **Templates are intuitive, and text means what it says** — a template renders what
|
||||||
its writer expects on first reading. A format renders as written; only `{…}`
|
every writer reading it would expect, judged by simulated writers from the Audience.
|
||||||
varies, random characters included (`{digits(3)}`), and a selected row, `[SE]`,
|
A format renders as written; only `{…}` varies, random characters included
|
||||||
is that row wherever it is written. Where a reader could expect two outputs, the
|
(`{digits(3)}`), and a selected row, `[SE]`, is that row wherever it is written.
|
||||||
template is a load error naming a spelling for each. One spelling per result; the
|
Where two writers could expect different outputs, the template is a load error
|
||||||
wrong one is a load error naming the right one.
|
naming a spelling for each. One spelling per result; the wrong one is a load error
|
||||||
|
naming the right one.
|
||||||
5. **Every mistake is a load error** — `New` rejects the data and `NewTemplate`
|
5. **Every mistake is a load error** — `New` rejects the data and `NewTemplate`
|
||||||
the inline template; on a loaded generator `Fake` fails only for an unknown
|
the inline template; on a loaded generator `Fake` fails only for an unknown
|
||||||
path, `FakeStruct` only for a non-struct argument or a type its tags do not
|
path, `FakeStruct` only for a non-struct argument or a type its tags do not
|
||||||
|
|||||||
+15
-10
@@ -217,7 +217,8 @@ handle is needed, as the cache already compiles once.
|
|||||||
|
|
||||||
## A render shares one reference draw per category, per group
|
## A render shares one reference draw per category, per group
|
||||||
|
|
||||||
Every reference path into a category in one `Fake`, or one record, reads one draw of it,
|
Every reference path into a category that selects no row, in one `Fake` or one record,
|
||||||
|
reads one draw of it,
|
||||||
so a value's facts agree across its fields, nested templates and columns alike —
|
so a value's facts agree across its fields, nested templates and columns alike —
|
||||||
`{/currency.code}` in one field and `{/currency.symbol}` in another name one currency,
|
`{/currency.code}` in one field and `{/currency.symbol}` in another name one currency,
|
||||||
whichever view renders them. A `repeat` iteration is a render of its own, since
|
whichever view renders them. A `repeat` iteration is a render of its own, since
|
||||||
@@ -361,17 +362,21 @@ accepted one changes, so the door stays open for the address records the plan de
|
|||||||
|
|
||||||
## A selected row is fixed, not drawn, and an unnamed read beside it is refused
|
## A selected row is fixed, not drawn, and an unnamed read beside it is refused
|
||||||
|
|
||||||
Decided 2026-09-27 by the maintainer, for goal 4; valid while a selector names exactly one row.
|
Decided 2026-09-27 by the maintainer, for goals 3 and 4; valid while a selector names
|
||||||
|
exactly one row.
|
||||||
|
|
||||||
- Selected rows never conflict: `{/misc.territory[SE].capital} / {/misc.territory[FI].capital}`
|
- Selected rows never conflict: `{/misc.territory[SE].capital} / {/misc.territory[FI].capital}`
|
||||||
renders `Stockholm / Helsinki`, and so may two items of one choice.
|
renders `Stockholm / Helsinki`, and two items of one choice may select different rows.
|
||||||
- What a path draws beneath a selected row is one draw per selection, shared by every
|
- What a path draws beneath a selected row is one draw per selection, per render and
|
||||||
path through it: `{/geo.SE.region[12].locality.name}` twice names one locality.
|
group, shared by every path through it: `{/geo.SE.municipality[1281].locality.name}`
|
||||||
- A read naming no row of a table whose family a selection in the render and group
|
twice names one locality. `[1281]` and `[Lund]` select one row, so they are one
|
||||||
names is refused, naming the selected path and a `drawGroup`: beside
|
selection.
|
||||||
`{/misc.territory[SE].capital}`, a writer reading `{/misc.territory.currency}` expects
|
- A read whose path selects no row is refused beside a selection in its family, in the
|
||||||
`SEK`, and `Stockholm pays in EUR` would pass review. It stays refused beside two
|
same render and group, naming the rewrite through each selection and a `drawGroup`:
|
||||||
selections, since adding `[FI]` to that template would otherwise make it load.
|
beside `{/misc.territory[SE].capital}`, a writer reading `{/misc.territory.currency}`
|
||||||
|
expects `SEK`, so the error names `{/misc.territory[SE].currency}`, since
|
||||||
|
`Stockholm pays in EUR` would pass review. A second selection does not make the
|
||||||
|
unnamed read load.
|
||||||
|
|
||||||
Checked against three simulated template writers from the Audience, who agreed on each
|
Checked against three simulated template writers from the Audience, who agreed on each
|
||||||
case but the last, where two expected a render and all three accepted the refusal.
|
case but the last, where two expected a render and all three accepted the refusal.
|
||||||
|
|||||||
@@ -48,8 +48,9 @@ This round, in order:
|
|||||||
path `Fake` accepts, which a selector is too. Delete the dead `table.descends` and
|
path `Fake` accepts, which a selector is too. Delete the dead `table.descends` and
|
||||||
the redundant `string(key)` in `checkNoRepeatedItem`.
|
the redundant `string(key)` in `checkNoRepeatedItem`.
|
||||||
- Delete the decision "The rows of a table are alternatives": it defines `alternatives`,
|
- Delete the decision "The rows of a table are alternatives": it defines `alternatives`,
|
||||||
which its comment in `family.go` already does, and the README's "which pairs are
|
which its comment in `family.go` already does. Point the README's "which pairs are
|
||||||
weighed against each other" sends a reader to the log for that definition.
|
weighed against each other" at that comment's rule, stated in the README's Table
|
||||||
|
section, where it sends a reader to the log for the definition today.
|
||||||
- Run the nine-seat panel again and file what it names here.
|
- Run the nine-seat panel again and file what it names here.
|
||||||
|
|
||||||
### Data
|
### Data
|
||||||
@@ -174,10 +175,11 @@ by a `data-import/` script, as README goal 12 asks.
|
|||||||
- Render selected rows as the decision "A selected row is fixed, not drawn, and an
|
- Render selected rows as the decision "A selected row is fixed, not drawn, and an
|
||||||
unnamed read beside it is refused" states: `New` refuses
|
unnamed read beside it is refused" states: `New` refuses
|
||||||
`{/misc.territory[SE].capital} / {/misc.territory[FI].capital}` today, and a choice
|
`{/misc.territory[SE].capital} / {/misc.territory[FI].capital}` today, and a choice
|
||||||
whose items select different rows. Have the refusal of an unnamed read name a
|
whose items select different rows. Have the refusal of an unnamed read name the
|
||||||
selected path that loads: beside `{/geo.SE.locality[Lund].name}`,
|
rewrite through each selection, selecting an ancestor of the selected row by key:
|
||||||
`{/geo.SE.municipality.name}` names none today, and the one that holds selects from
|
beside `{/geo.SE.locality[Lund].name}`, `{/geo.SE.municipality.name}` names none
|
||||||
the top, `{/geo.SE.municipality[Lund].name}`.
|
today, where `{/geo.SE.municipality[1281].name}` holds. Scope the README's "A reference
|
||||||
|
path into a category is held" to a path that selects no row.
|
||||||
- Report the same error every load for a table with two bad options, and for a
|
- Report the same error every load for a table with two bad options, and for a
|
||||||
folder with two unnamed rows files: `readTableOptions` and `loadDir` return on the
|
folder with two unnamed rows files: `readTableOptions` and `loadDir` return on the
|
||||||
first in Go's map order.
|
first in Go's map order.
|
||||||
@@ -218,10 +220,13 @@ by a `data-import/` script, as README goal 12 asks.
|
|||||||
|
|
||||||
### Open questions to settle
|
### Open questions to settle
|
||||||
|
|
||||||
- Decide whether a path steps from a row up to its parent, so
|
- Decide how a path steps from a row up to its parent row: three simulated template
|
||||||
`{/geo.SE.locality[Lund].municipality.name}` reads Lund's municipality: three simulated
|
writers expected `{/geo.SE.locality[Lund].municipality.name}` to read Lund's
|
||||||
template writers all expected it to, per goal 4, and today it fails with "municipality
|
municipality, which goal 4 asks for, but `.municipality` after a row is already the
|
||||||
is a column, and a cell holds no fields". Adding it only accepts a refused spelling.
|
link column's cell, `city[Oslo].country` rendering `NO`. So either the name means the
|
||||||
|
cell where it ends a path and the parent row where a segment follows, which the
|
||||||
|
decisions "One name, one meaning" and "`parent` names the link column and the table
|
||||||
|
alike" have to allow, or the step up takes a spelling of its own.
|
||||||
- Decide whether a goal 5 violation joins the comprehension gate's exception list: the
|
- 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
|
`{/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
|
`{/geo.SE.locality}|{/geo.SE.municipality}` mispairs the shipped data meanwhile, though a
|
||||||
|
|||||||
Reference in New Issue
Block a user