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
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
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
the round itself runs on. `todo.md` carries the round: a PR per item it plans, the nine-seat
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
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.
@@ -85,6 +86,7 @@ In [docs/decisions.md](docs/decisions.md):
- The key map is built at load, the rest on first draw
- Two categories may name one TSV
- 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
- 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
+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
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
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
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
round, replayed: the `comprehension-panel` skill's nine-seat findings run at depth 1,
a PR per item it names, then the run again, until the score passes. The run is the
nine-seat one: the round is meant to buy architectural change, and the four-seat
scoring run names too little to steer one. A fresh run replaces the items below.
what `AGENTS.md` excepts, per README goal 2. Nine rounds of the nine-seat findings held
the score between 5.7 and 6.1, so this round is a restructure the maintainer approved on
2026-09-29: a PR per item, then the nine-seat run again. The run is the nine-seat one,
since the four-seat scoring run names too little to steer an architectural change.
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,
@@ -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:
- Give `surveyAt`'s whole read one field, its table and pins together, rename
`alternatives` for what it answers, two reads that never render together, and say at
`check` why a level landing on a row may sit beside a path into it: five seats held
`surveyAt`'s five fields at once, two misread `alternatives`, and two found no reason
for the `landsRow` exemption.
- Compute what rendering a node reads as a fold memoised per node, `reads(n)`, deduped
per node, and have `surveyRender` and `surveyColumns` call it, deleting
`readSurvey.walk`, `edge`, `nodeVisit` and `seen`: every run's seats named the walk
hardest. Prototyped green with the allocation gate held; without the per-node dedup
`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,
and rename its `proven` local, which shadows the `proven` type: seven seats read the
seven-arm switch as a truth table without the table.
- Say at `checkNodeFences` that its walks recurse unguarded, so a caller runs
`checkNoCycles` first, and compute `refs` apart from `checkDrawGroup`'s pass: five
seats reconstructed the order, and the inline binding runs no cycle check.
`checkNoCycles` first: five seats reconstructed the order, and the inline binding runs
no cycle check.
- Give `tableSite` an `isFormat` beside `isCell`, so `renderRecord` and `traceRead` stop
comparing `row` with `formatRow` alone, which holds only because a template outside a
table has row 0: four seats found the invariant unstated.
- Move each unit to its owner's file, `valueProof.checkField` to `valueproof.go` and
`coverPath` and `pathLeaves` beside their walks in `path.go`, and rename `checkPath`,
which differs from the `pathCheck` type it wraps by word order alone: both architects
placed them wrong.
- Move `valueProof.checkField` to `valueproof.go`, and rename `checkPath`, which differs
from the `pathCheck` type it wraps by word order alone: both architects placed them
wrong.
- 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
map; and `loadDir`'s says it builds the tree deterministically, where it reports an
unnamed rows file in map order.
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 map; and
`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:
`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`'
grey and black, and the docs on `expand`, `readRows`, `splitOutside`, `reservedList`
and `writesRecords`.
- Delete `doc.go`'s "The draw fences are …" sentence: it names a function, a type and
a helper reached only through `readSurvey.check`, and misses `checkDrawGroup`,
`checkOwnFamily` and `checkNestedDrawGroup`; the README's Layout indexes the fences by file.
Say "fences" in the `pin` entry then, which names the draw fences too.
- Delete `doc.go`'s "The draw fences are …" sentence, which misses `checkDrawGroup`,
`checkOwnFamily` and `checkNestedDrawGroup`; the README's Layout indexes the fences by
file. 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.
### Data