Scope the held-reference decision to a draw group, and give both hold decisions their goal

This commit is contained in:
2026-09-29 16:27:44 +02:00
committed by Lillem4n
parent acbc6943b8
commit e84522f244
+11 -11
View File
@@ -83,12 +83,12 @@ still lives in `data/` as JSON; `--data-path` layers over it.
## A bare reference draws each time; a reference path is held ## A bare reference draws each time; a reference path is held
`{/p} {/p}` is two draws, as `{word} {word}` is, while every `{/p.first}` in one render Goal 4: `{/p} {/p}` is two draws, as `{word} {word}` is, while every `{/p.first}` in
reads one draw, and a bare `{/p}` beside them is a load error: a bare token is by one render and draw group reads one draw, and a bare `{/p}` beside them is a load error,
contract an independent draw, a path pins its level, and a fresh draw of a pinned level as `{p}` beside `{p.first}` is: a bare token is by contract an independent draw, a path
could show another row. A builtin's operand holds what it reads for its expansion, pins its level, and a fresh draw of a pinned level could show another row. A builtin's
references included, so `{uppercase(/p)} {/p}` is one draw — the rule every operand operand holds what it reads for its expansion, references included, so
follows. `{uppercase(/p)} {/p}` is one draw, and `{/p}` written twice beside it is a load error.
## Reference sigils follow the filesystem ## Reference sigils follow the filesystem
@@ -236,11 +236,11 @@ across categories must agree.
## The expansion hold and the render's draws are two fences ## The expansion hold and the render's draws are two fences
One proves a sibling path or an operand is reached only by its readers within an Goal 2: one proves a sibling path or an operand is reached only by its readers within
expansion, the other does the same for reference paths across a render and its draw an expansion, the other that reference paths, whole-table reads and a table family's
groups. They pin different things — an operand pins the value its own render produced rows agree across a render and its draw groups. Their scopes differ and only the second
and stops at a reference, a path pins every level it passes through — so one walk would tracks rows and pins, so one walk would carry both scopes and tell them apart at every
carry both rules and both scopes anyway, and tell them apart at every step. step.
## A render's draws make their maps on the first read ## A render's draws make their maps on the first read