Record that a cell may read a reference, and plan the round as the approved restructure

This commit is contained in:
2026-09-29 20:11:47 +02:00
committed by Lillem4n
parent 85cc000d23
commit 45bdd10c9b
3 changed files with 58 additions and 25 deletions
+4 -2
View File
@@ -12,8 +12,9 @@
- README goal 2 is gated at 7.0 on the `comprehension-panel` skill, and below it - 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 nothing else merges — no feature, no category, no data — bar a security fix, a
dependency bump, a repair of a promise goals 3 to 5 make, and the infrastructure 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, the round itself runs on. `todo.md` carries the round: a PR per item it plans, the nine-seat
a PR per item it names, then the run again, until the score passes. At or above 7.0 findings at depth 1 or a restructure the maintainer approved, then the nine-seat 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 every pull request scores with the four-seat run and answers it in one run. No merge
lowers the last score its own panel recorded: the nine-seat round and the four-seat 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. run are two ratchets, never compared with each other.
@@ -85,6 +86,7 @@ In [docs/decisions.md](docs/decisions.md):
- The key map is built at load, the rest on first draw - The key map is built at load, the rest on first draw
- Two categories may name one TSV - Two categories may name one TSV
- A table never reaches its own family, by any route - A table never reaches its own family, by any route
- A cell may read a reference, and each row its own
- Tables carrying token cells stay small - Tables carrying token cells stay small
- A path is walked once without drawing before it is walked for real - A path is walked once without drawing before it is walked for real
- A country's postal codes and streets are siblings under its locality - A country's postal codes and streets are siblings under its locality
+9
View File
@@ -559,6 +559,15 @@ A `repeat` iteration and a `drawGroup` each draw apart on purpose, but a row tha
three localities from other regions is the output the family exists to prevent, so the three localities from other regions is the output the family exists to prevent, so the
own-family fence walks through both rather than stopping where the draw fences do. own-family fence walks through both rather than stopping where the draw fences do.
## A cell may read a reference, and each row its own
2026-09-29, Lilleman auf Larv.
Goal 3: facts that belong together come from one draw, so a shop row's `phone` cell reads
`{/sv_SE.phone}` on a Swedish shop and `{/en_US.phone}` on a US one, and the table's
format, the same for every row, cannot say that. A restructure for goal 2 keeps the fences
that prove such cells safe. Valid while a table's rows need generators of their own.
## Tables carrying token cells stay small ## Tables carrying token cells stay small
2026-09-17, Lilleman auf Larv. 2026-09-17, Lilleman auf Larv.
+45 -23
View File
@@ -7,11 +7,10 @@ Ordered as the releases that ship it.
### Comprehension, until the panel scores 7.0 ### Comprehension, until the panel scores 7.0
Nothing else ships while the score is under 7.0 — no feature, no category, no data — bar Nothing else ships while the score is under 7.0 — no feature, no category, no data — bar
what `AGENTS.md` excepts, per README goal 2. This section is one what `AGENTS.md` excepts, per README goal 2. Nine rounds of the nine-seat findings held
round, replayed: the `comprehension-panel` skill's nine-seat findings run at depth 1, the score between 5.7 and 6.1, so this round is a restructure the maintainer approved on
a PR per item it names, then the run again, until the score passes. The run is the 2026-09-29: a PR per item, then the nine-seat run again. The run is the nine-seat one,
nine-seat one: the round is meant to buy architectural change, and the four-seat since the four-seat scoring run names too little to steer an architectural change.
scoring run names too little to steer one. A fresh run replaces the items below.
Scores, newest last: 5.9 on 2026-09-20 (Navigation 7.0, Locality 5.2, Shape 5.9, Scores, newest last: 5.9 on 2026-09-20 (Navigation 7.0, Locality 5.2, Shape 5.9,
Self-sufficiency 5.7); 5.8 on 2026-09-22 (Navigation 6.7, Locality 5.0, Shape 5.9, Self-sufficiency 5.7); 5.8 on 2026-09-22 (Navigation 6.7, Locality 5.0, Shape 5.9,
@@ -37,37 +36,60 @@ on 2026-09-29 a fifth time (Navigation 6.9, Locality 5.2, Shape 6.1, Self-suffic
This round, in order: This round, in order:
- Give `surveyAt`'s whole read one field, its table and pins together, rename - Compute what rendering a node reads as a fold memoised per node, `reads(n)`, deduped
`alternatives` for what it answers, two reads that never render together, and say at per node, and have `surveyRender` and `surveyColumns` call it, deleting
`check` why a level landing on a row may sit beside a path into it: five seats held `readSurvey.walk`, `edge`, `nodeVisit` and `seen`: every run's seats named the walk
`surveyAt`'s five fields at once, two misread `alternatives`, and two found no reason hardest. Prototyped green with the allocation gate held; without the per-node dedup
for the `landsRow` exemption. `TestADeepDiamondChainLoads` doubles its list per level.
- Have `checkDrawGroup`, `checkDraws` and `checkRecordDraws` query the fold, deleting
`drawFence.hasRead`, its helpers and the decision "Each entry point to
`drawFence.hasRead` says what its caller gets".
- Move the fold to `reads.go` and the verdicts to `drawfence.go`, deleting
`readsurvey.go`; name a read's context its `group`, `route` and `branches`, deleting
`surveyAt`, and let the README's Layout and `doc.go` follow.
- Name what a read sits under `branches`, the rows pinned with their ancestors and the
rows of whole draws without, both load-bearing, and fold `check`, `checkFamilies`,
`replayPairs`, `checkFamilyPair` and `alternatives` into one pairwise loop over
`coRender` and `conflict`. Report a pin clash lowest by route and spelling, so which of
two is named stops following the walk, and say at `conflict` why a level landing on a
row may sit beside a path into it.
- Compile each path once at link into steps holding no pointer, with its leaves and
cover, and have `renderEdges`, `heldNodes`, `valueProof` and `tableReadOf` read them,
deleting `pathCover`, `coverPath` and `pathLeaves`. Prototyped green, allocations
identical.
- Draw every path through one interpreter over those steps, `drawSteps`, with `descend`
probing into a stack buffer, deleting `pathDraw`, and replace the decision "The four
path walks are four loops": the prototype held `perf_test.go` once a step held no
pointer, the probe returned its slice and the interpreter took `levels`.
- Fold `checkNoOverlap` and `checkNoRepeatedRead` into `heldCheck`, so `compileFormat`
compiles and nothing more.
- Fix at compile how `readField` reads an arm, `arm.kind`, deleting its two panics and
its `held` lookup per read.
- Switch `disagreement` on the fixed item's kind, with the other item inside each arm, - Switch `disagreement` on the fixed item's kind, with the other item inside each arm,
and rename its `proven` local, which shadows the `proven` type: seven seats read the and rename its `proven` local, which shadows the `proven` type: seven seats read the
seven-arm switch as a truth table without the table. seven-arm switch as a truth table without the table.
- Say at `checkNodeFences` that its walks recurse unguarded, so a caller runs - Say at `checkNodeFences` that its walks recurse unguarded, so a caller runs
`checkNoCycles` first, and compute `refs` apart from `checkDrawGroup`'s pass: five `checkNoCycles` first: five seats reconstructed the order, and the inline binding runs
seats reconstructed the order, and the inline binding runs no cycle check. no cycle check.
- Give `tableSite` an `isFormat` beside `isCell`, so `renderRecord` and `traceRead` stop - Give `tableSite` an `isFormat` beside `isCell`, so `renderRecord` and `traceRead` stop
comparing `row` with `formatRow` alone, which holds only because a template outside a comparing `row` with `formatRow` alone, which holds only because a template outside a
table has row 0: four seats found the invariant unstated. table has row 0: four seats found the invariant unstated.
- Move each unit to its owner's file, `valueProof.checkField` to `valueproof.go` and - Move `valueProof.checkField` to `valueproof.go`, and rename `checkPath`, which differs
`coverPath` and `pathLeaves` beside their walks in `path.go`, and rename `checkPath`, from the `pathCheck` type it wraps by word order alone: both architects placed them
which differs from the `pathCheck` type it wraps by word order alone: both architects wrong.
placed them wrong.
- Correct the claims readers followed wrong: `IsTemplate`'s doc says an argument holding - Correct the claims readers followed wrong: `IsTemplate`'s doc says an argument holding
a bracket that is not valid JSON errors, where `misc.territory[SE]` is a path; the README says rows are indexed on the first draw, where `New` builds the key a bracket that is not valid JSON errors, where `misc.territory[SE]` is a path; the
map; and `loadDir`'s says it builds the tree deterministically, where it reports an README says rows are indexed on the first draw, where `New` builds the key map; and
unnamed rows file in map order. `loadDir`'s says it builds the tree deterministically, where it reports an unnamed
rows file in map order.
- Delete the comments the panel found restating their code or arranging the file: - Delete the comments the panel found restating their code or arranging the file:
`node`'s second sentence, `op`'s "compile builds these so render never re-scans the `node`'s second sentence, `op`'s "compile builds these so render never re-scans the
format", `checkCalc`'s last sentence, `calcVar.eval`'s four lines, `checkNoCycles`' format", `checkCalc`'s last sentence, `calcVar.eval`'s four lines, `checkNoCycles`'
grey and black, and the docs on `expand`, `readRows`, `splitOutside`, `reservedList` grey and black, and the docs on `expand`, `readRows`, `splitOutside`, `reservedList`
and `writesRecords`. and `writesRecords`.
- Delete `doc.go`'s "The draw fences are …" sentence: it names a function, a type and - Delete `doc.go`'s "The draw fences are …" sentence, which misses `checkDrawGroup`,
a helper reached only through `readSurvey.check`, and misses `checkDrawGroup`, `checkOwnFamily` and `checkNestedDrawGroup`; the README's Layout indexes the fences by
`checkOwnFamily` and `checkNestedDrawGroup`; the README's Layout indexes the fences by file. file. Say "fences" in the `pin` entry then, which names the draw fences too.
Say "fences" in the `pin` entry then, which names the draw fences too.
- 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