lilleman
23e426016d
Bind a pick to a name with {ref as n}, and read it with {n} and {n.path}
2026-10-03 14:23:58 +02:00
lilleman
0b5124d4d5
Rename checkResolves to checkPathResolves
2026-09-30 21:49:05 +02:00
lilleman
698ac036d5
Move checkField to valueproof.go and rename checkPath to checkResolves
2026-09-30 21:49:05 +02:00
lilleman
26b35abe70
Fix at compile how readField reads an arm, deleting its two panics and its held lookup per read
2026-09-30 20:49:58 +02:00
lilleman
317486df0a
Fold checkNoOverlap and checkNoRepeatedRead into heldCheck, so compileFormat compiles and nothing more
2026-09-30 20:32:35 +02:00
lilleman
d279408ba5
Step a table's routes past its selector, and panic on an arm with no bound head
2026-09-30 20:02:16 +02:00
lilleman
6b9755b3ef
Compile each path's steps, leaves and cover once at link, deleting pathCover, coverPath and pathLeaves
2026-09-30 20:02:16 +02:00
lilleman
8793681d8a
Test a table cell through tableSite.isCell, and trace no row outside a table
2026-09-29 12:28:22 +02:00
lilleman
6275c6d41e
Rename refBinding.key to head, and the stale key wording beside it
2026-09-29 10:28:15 +02:00
lilleman
a7d77bd3ad
Rename arm.key to head, give renderScope.row its own type, and value.go to valueproof.go
2026-09-29 10:28:15 +02:00
lilleman
29f3821a21
Rename pinnedRow, table.category, checkRenders, fieldAlternation and referenceFence to what they are
2026-09-29 04:31:25 +02:00
lilleman
e9cdfe9edd
Keep a template's table in one field, tableSite
2026-09-29 03:34:48 +02:00
lilleman
e257dc0e6e
Return link's and format compile's outputs as templateLink and formatOps, assigned once in linkTemplate
2026-09-28 23:55:22 +02:00
lilleman
8f86de2187
Name pathKeys, pathKeyReaders, proveKeys and readValue's hold for what they hold, and give no token kind to the zero value
2026-09-28 12:06:03 +02:00
lilleman
affbb9ac6f
Give head, index, bound and draw one meaning each, name familyRoot, and type the token kinds
2026-09-28 12:06:03 +02:00
lilleman
ecb90f828f
Correct the comments and decision around link-time compilation
2026-09-28 03:23:27 +02:00
lilleman
aee932dc93
Rewrap the linkRefs comment
2026-09-28 03:23:27 +02:00
lilleman
306b88ef56
Compile every format at link
2026-09-28 03:23:27 +02:00
lilleman
94eb7aa81f
Split walkPath's four modes into walkers of their own, sharing how a path steps
2026-09-28 00:55:48 +02:00
lilleman
d6ac8ed9fd
Give check, children, column, columns, draw, drawn, fields, format, head, index, key, n, name, named, names, null, number, op, reads, record, root, row, t and whole one meaning each
2026-09-25 19:31:09 +02:00
lilleman
467cb6fb18
Parse a format once into tokens, and have the fences read its ops
2026-09-24 23:36:27 +02:00
lilleman
2e778f3b31
Name a cell's line in its link-time errors, and say where a format holding a reference compiles
2026-09-24 22:45:36 +02:00
lilleman
5aae86638b
Keep reference bindings out of template.fields, in template.refHeads
2026-09-24 19:38:10 +02:00
lilleman
9f00ad039e
Move the decisions to docs/decisions.md, indexed in AGENTS.md and linked from the fences they back
2026-09-24 13:44:06 +02:00
lilleman
67ff2b258e
Delete the duplicated recompile note and a miscount beside named
2026-09-21 11:43:58 +02:00
lilleman
7abd3e2d95
Refuse a blank TSV line, fence a table's family through any template, resolve a path before drawing, clamp the weighted pick, and say which countries and currencies the tables hold
Tests / vet + fmt + tests (pull_request) Successful in 1m8s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
2026-09-17 13:15:33 +02:00
lilleman
047237f361
Replay each path's selectors through the walk for the family fence, require a key for a name, refuse a name shadowing a key, a table reading its own family and an ancestor's column clash, add the row node and family.go, and pin eight rows inline
Tests / vet + fmt + tests (pull_request) Successful in 1m8s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
2026-09-17 12:54:24 +02:00
lilleman
f6b54c8ae6
Add the table node: rows TSV, key and name selection, linked tables drawn consistently, and the choice-of-rows fence
2026-09-17 12:28:46 +02:00
lilleman
a995aba4e9
Refuse a reference into the category it sits in, and run a record's column fences at load
Tests / vet + fmt + tests (pull_request) Successful in 1m8s
2026-09-16 09:42:36 +02:00
lilleman
68d2461704
Name the draw option drawGroup, refuse one whose reads all sit behind a nested draw group, and record why the two fences stay apart
Tests / vet + fmt + tests (pull_request) Successful in 1m7s
2026-09-16 08:55:55 +02:00
lilleman
d3f430bf53
Render a repeat iteration in no group, refuse a group that names nothing, key group names by category, and own reference overlap in one fence
Tests / vet + fmt + tests (pull_request) Successful in 1m6s
2026-09-15 23:31:48 +02:00
lilleman
5ed45cc55c
Rename the folder node type from group to folder, freeing group for the draw option
2026-09-15 23:25:39 +02:00
lilleman
b4ebab5abf
Keep a read's null with its draw, share the lone-reference check, name a JSON-string item's object form again, prove each column once per pass, and read a record off template.record
Tests / vet + fmt + tests (pull_request) Successful in 1m3s
2026-09-15 20:42:13 +02:00
lilleman
2b2010bdd6
Take the datatype and null of the column a lone reference reads, and check a column's datatypes once its references are linked
Tests / vet + fmt + tests (pull_request) Successful in 1m3s
2026-09-15 20:20:25 +02:00
lilleman
8cb8cf6334
Reject a record's top-level repeat, share one record fence between both entry points, and give the renderer one spelling
2026-09-04 08:40:58 +02:00
lilleman
44c91668f9
Give the inline pipeline its own file, and record the shape, padding and template-API decisions
Tests / vet + fmt + tests (pull_request) Successful in 55s
2026-09-03 20:37:44 +02:00
lilleman
80e8d72bb7
One fence sequence over a node scope, and inline templates reject the folder sigils
2026-09-03 20:34:42 +02:00
lilleman
3bc3e35045
Add FakeTemplate: compile an inline template and render it against the loaded tree
2026-09-03 17:27:54 +02:00
lilleman
fdbbf94d2c
Compare and cache a read by its one spelling, so two spellings of one reference are one level; reject a slash after a sigil naming the spelling
Tests / vet + fmt + tests (pull_request) Successful in 55s
2026-09-02 18:45:31 +02:00
lilleman
bcbf044290
One path walk under checkPath, descend, readField, pathLeaves and coverPath; split the hold and the render graph into their own files
Tests / vet + fmt + tests (pull_request) Successful in 53s
2026-09-02 18:29:45 +02:00
lilleman
1bf5470c6f
Reference sigils follow the filesystem: / the root, . this folder, .. the folder above
Tests / vet + fmt + tests (pull_request) Successful in 53s
2026-09-02 18:26:02 +02:00
lilleman
1b1b93b35f
Reject weight 0, a never-numeric calc operand and a repeat product past the cap; the CLI classifies ErrNoData
Tests / vet + fmt + tests (pull_request) Successful in 52s
2026-09-02 18:23:03 +02:00
lilleman
c5c06375d8
Reject a repeated bare token of a held name, naming the single-token spelling
Tests / vet + fmt + tests (pull_request) Successful in 53s
2026-09-02 18:21:03 +02:00
lilleman
31c2f12098
Hold a reference path like a sibling path; add the lowercase, uppercase and ascii transforms
2026-09-02 12:52:19 +02:00
lilleman
054f99c94f
One spelling per shape: reject a one-item choice, a repeated item and an inert object; reshape the data
2026-09-02 12:38:59 +02:00
lilleman
ff4b243148
Format text is literal; class runs are {digits(n)} {upper(n)} {lower(n)}; a string is a format
2026-09-02 12:37:21 +02:00
lilleman
05dc042e49
Rename the project to fejkdata and record the fork source
Tests / vet + fmt + tests (pull_request) Failing after 6s
2026-09-01 20:24:03 +02:00
M
4b3dd011fc
Pin the per-head walk, and say where the hold stops
...
Sharing renders' seen set across heads left the suite green while silently
under-rejecting: the first head's walk marks the only route to the second
head's draw. This PR widens heads from the bound levels to every held name,
so two heads in one template is now the ordinary case; a rejected case whose
violation sits on the later head pins the scoping.
An operand rendering one field twice covers the revisit guard, taking
coverage to 97.8% against main's 97.4%.
The README said the two spellings are rejected alike without saying what the
hold follows, which is not true where the operand reaches its own field
through a reference. It now names the plain {field} tokens the walk follows.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00
M
21e7af6c1f
Hold what a calc operand's render settled, up to a reference
...
The fence pinned only the operand node, so a reference reaching into it drew
that value again: {net.v} was a load error while {..cat.net.v} loaded and
disagreed in 20 of 40 renders. The hold now covers what rendering the operand
settles inside itself, so both spellings of that shape are rejected.
The walk stops at a {..path} edge, where the operand's own value ends and a
shared source begins. cover stops there too, through named, so both halves of
the fence end at the same boundary — and two names drawing from one referenced
category stay two draws.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00
M
39d59aec23
Pin the prep-time guards, and say why an operand's set is the narrow one
...
The guards report an invariant break instead of computing around it, and no
data reaches them, so they are called directly: coverage 97.4% -> 97.7%,
which also covers the empty-cover skip through a literal operand.
operandDraw's doc keeps why neither wider set works, since both were tried
here — containment reaches a sibling the operand never renders, the render
closure reaches a source two operands share — and drops the rest.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00