From ad7a62b67d05256b4a55d0ea5c63f72ad9a37968 Mon Sep 17 00:00:00 2001 From: Lilleman auf Larv Date: Mon, 21 Sep 2026 16:56:19 +0200 Subject: [PATCH] Bound the alternatives claim to one read, and point the grammar at it --- CHANGELOG.md | 6 +++--- README.md | 26 +++++++++++++------------- todo.md | 15 ++++++++++----- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdf85f5..ded2c19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,9 +18,9 @@ replacement, and each removed path, column or flag. `parent`, a name repeating inside one parent row, a name spelling another row's key, a table named like a column of any table above it, a table whose format or cell references its own family, and, within one render and draw group, a path drawing a table another path selects a - row of, or two paths pinning different rows of one table. A read inside a cell is - weighed against another only where both rows can render together, which two rows of - one table, or rows under two different rows of an ancestor a path pinned, never can. + row of, or two paths pinning different rows of one table. Two cells are weighed + against each other only where they can render together: not two rows of one table, and + not rows under different rows of a table a path pinned. - `New` refuses a root choice of templates sharing one format and one set of string fields, naming the rows TSV to write instead. - `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and diff --git a/README.md b/README.md index 502c753..f215461 100644 --- a/README.md +++ b/README.md @@ -546,7 +546,8 @@ to, a chain of parents that closes, a table named like a column of any table abo it, and a cell or format of a table that references a table of its own family, through any template, a `repeat` or a `drawGroup` included, since a row rendered whole would draw the family apart from itself: read the family from a template beside it, or add -the value as a column. +the value as a column. Which reads a render must reconcile, a cell's included, is +under [Decisions](#decisions). ### Options and fields @@ -1106,10 +1107,10 @@ the Development section below, and who ships a register the four above then draw - **A table read into is pinned; a table read whole draws afresh.** A path into a table pins its row, and the ancestor rows it links to, for the render and group, as a reference path pins its level, and a bare `{/city}` draws a row each time and pins no - row of its family, as a bare reference does; so a bare table - beside a path into its family is refused like a bare reference beside a path into - it. A bare table reference still counts as a read for a `drawGroup`, since the group - is what draws it apart from the family's pins. + row of its family, as a bare reference does; so a bare table beside a path into its + family is refused like a bare reference beside a path into it. A bare table reference + still counts as a read for a `drawGroup`, since the group is what draws it apart from + the family's pins. - **Every reference path into one family selects the same rows, per render and group.** A selector pins rows for the render, and a read that draws freely before it could pin a row the selector contradicts, so accepting both would make the result @@ -1138,14 +1139,13 @@ the Development section below, and who ships a register the four above then draw 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. -- **The rows of a table are alternatives.** Only one row renders, so a cell in one - row and a cell in another never meet, and each may select its own row of another - table; the cells of one row, and whatever they reach, do meet, and so does the - format beside them. The rule the fence applies is that two reads meet unless they sit - in rows that never render together: two rows of one table, or rows under two different - rows of an ancestor a path pinned. A - choice's items get no such treatment yet: two items selecting different rows - are still refused. +- **The rows of a table are alternatives.** Only one row renders per read, so within one + read a cell in one row and a cell in another never meet, and each may select its own + row of another table; the cells of one row, and whatever they reach, do meet, and so + does the format beside them. The rule the fence applies is that two reads meet unless + they sit in rows that never render together: rows falling under different rows of a + table a path pinned, two rows of that table itself included. A choice's items get no + such treatment yet: two items selecting different rows are still refused. - **A table never reaches its own family, by any route.** A `repeat` iteration and a `drawGroup` each draw apart on purpose, but a row that lists three localities from other regions is the output the family exists to prevent, so the own-family fence diff --git a/todo.md b/todo.md index a49dbf9..e768f7c 100644 --- a/todo.md +++ b/todo.md @@ -158,11 +158,13 @@ by a `data-import/` script, as README goal 12 asks. at New" where the two draws land on rows whose cells select different rows of another table, and `{/geo.SE.locality}|{/geo.SE.municipality}` renders a locality outside the municipality beside it. Each read draws its own row, so cells of two rows render - together, where the fence counts them alternatives and compares neither. -- Name the cell a refused read sits in: where both reads come from TSV cells the overlap - error says `{area} with {/addr} renders a level that {where} with {/addr.city} reads a - path into`, naming neither table, row nor column, so the author greps a register-sized - file — and "name the fields you want instead" rewrites a cell that is not the one to fix. + together, where the fence counts them alternatives and compares neither. Have the error + name the path spelling that holds, `{/geo.SE.locality.name}|{/geo.SE.municipality.name}`, + as the README's rule on a rejected spelling asks. +- Name the row a refused read sits in: where both reads come from TSV cells the overlap + error names the category and the two columns but no row, so the author greps a + register-sized file for the cell — and "name the fields you want instead" rewrites a + cell that is not the one to fix. - Stop the family fence naming a rewrite that cannot work: where the drawn table's rows select more than one row of the family, every `write {/terr[NO].name}` it offers fails the same way, and only the `drawGroup` it also names is left. @@ -184,6 +186,9 @@ by a `data-import/` script, as README goal 12 asks. ### Open questions to settle +- Decide whether a goal 5 violation joins the comprehension gate's exception list, beside + a security fix and a dependency bump: the panic above waits behind the whole round at + 5.9, and `{/geo.SE.locality}|{/geo.SE.municipality}` mispairs the shipped data meanwhile. - 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