b17106afab
Record the release checklist and the later data de-duplication
lilleman2026-09-05 12:12:58 +02:00
f75a9be5b4
Frame json as an array and add ndjson
lilleman2026-09-04 10:48:28 +02:00
80524a73b7
Tests: json is an array document and ndjson is one object per line
lilleman2026-09-04 10:48:28 +02:00
2310cb1e1a
Name every spelling the self-reference fence refuses, and cut the doubled comment
lilleman2026-09-04 09:53:46 +02:00
85a4cd4475
Refuse a column pointing back at its record however it is spelled, and qualify the shared-draw claim to path reads
lilleman2026-09-04 09:47:55 +02:00
b99526aeb8
Tests: a record read whole or as an operand still points back at itself, and Record under concurrent use
lilleman2026-09-04 09:46:39 +02:00
79827a66d6
Fence a record once per node, refuse a column reading its own record, and keep a bare reference independent as an operand
lilleman2026-09-04 09:32:29 +02:00
78572ccbbc
Tests: a self-referencing column, a bare reference as an operand, and every route the overlap fence must reach
lilleman2026-09-04 09:27:52 +02:00
c612c9e734
Refuse overlapping reference reads across a record's columns, keep an empty column a CSV row, and reject an empty --table
lilleman2026-09-04 09:10:03 +02:00
be5dfdf977
Tests: overlapping reference columns rejected, every CSV shape round-tripped, an empty column still a row, and an empty --table refused
lilleman2026-09-04 09:08:23 +02:00
83e11074ac
Fix the column set once, drop the unreachable separator override, and name the record predicate apart from the format table
lilleman2026-09-04 08:52:08 +02:00
59159d4f5d
Tests: the record fence reads correctly for an inline record too
lilleman2026-09-04 08:51:00 +02:00
7ee7f1788b
Record the SQL dialect, the newline-in-a-column shape, the fixed column set and the string view's divergence
lilleman2026-09-04 08:43:12 +02:00
8cb8cf6334
Reject a record's top-level repeat, share one record fence between both entry points, and give the renderer one spelling
lilleman2026-09-04 08:40:58 +02:00
54e6865b11
Tests: columns as the record's public name, and a top-level repeat rejected at both record entry points
lilleman2026-09-04 08:38:03 +02:00
ee90337834
Fix the Records examples and pin their seeded output
lilleman2026-09-04 07:39:28 +02:00
d237c15d77
Pin bare-reference independence and tighten the shared-draw comments
lilleman2026-09-03 23:29:10 +02:00
93ac610192
Reject field descent in Record and pin the shared-draw scope
lilleman2026-09-03 23:22:43 +02:00
6a8aa96b20
Quote SQL identifiers and share reference draws across record columns
lilleman2026-09-03 23:12:45 +02:00
7383e8d0ca
Test record output and its serializers
lilleman2026-09-03 22:56:56 +02:00
ca40fe0c2c
Add record output to JSON, CSV and SQL
lilleman2026-09-03 22:56:56 +02:00
19aae8bbfe
Name the workflow in the gate-skip note
lilleman2026-09-03 22:40:31 +02:00
2d28220869
Diff the whole push range and de-duplicate the gate-skip note
lilleman2026-09-03 22:36:48 +02:00
cc15bdd1d9
Run the merge gate only for changes its tests read
lilleman2026-09-03 22:30:02 +02:00
466ed5a4d9
Minor README update
lilleman
2026-09-03 22:09:42 +02:00
ce22c83e7d
Cut the review-found narration: two helper invariants, one line each
lilleman2026-09-03 21:53:51 +02:00
0d2a080b85
Add the fast-enough goal and record the allocation-gate decision
lilleman2026-09-03 21:46:22 +02:00
296058fb80
Tests: allocation ceilings for deeply nested and wide renders
lilleman2026-09-03 21:46:22 +02:00
44601c90ab
Offer the reference hint only where it would render the same value, and name the guard set in the help
lilleman2026-09-03 21:12:04 +02:00
8ed8d9bb51
Tests: no hint where a reference would mean something else, and every reference the help advertises resolves
lilleman2026-09-03 21:11:11 +02:00
1cd422352b
Cut the comments the README already records, and record the cycle-fence and exit-code rules there
lilleman2026-09-03 21:00:42 +02:00
0cdbdb7bf4
Fix the help example, read padding past the shape gate, catch a stray closing brace, and stop the fieldless hint naming a spelling that fails
lilleman2026-09-03 20:58:01 +02:00
d8048df169
Tests: padded and stray-brace arguments, the inline held fence, a template under concurrent use, and the fieldless-token hint
lilleman2026-09-03 20:57:25 +02:00
71cccaf4c9
Reject a leading quote that opens no JSON, and give the inline walk one home
lilleman2026-09-03 20:43:04 +02:00
704d18d109
Tests: a leading quote that opens no JSON names neither a template nor a path
lilleman2026-09-03 20:42:34 +02:00
44c91668f9
Give the inline pipeline its own file, and record the shape, padding and template-API decisions
lilleman2026-09-03 20:37:44 +02:00
6916894ab5
One CLI classifier settling the argument shape before load; JSON strings are templates and a quote is reserved in names
lilleman2026-09-03 20:34:42 +02:00
80e8d72bb7
One fence sequence over a node scope, and inline templates reject the folder sigils
lilleman2026-09-03 20:34:42 +02:00
7c7bee5cd9
Tests: one fence sequence, inline folder sigils rejected, JSON string arguments, quoted names, and shape misuse before load
lilleman2026-09-03 20:31:49 +02:00
841513bb27
Lead the README with what it does and a quick example, move Goals beside Decisions
lilleman2026-09-03 20:14:11 +02:00
873b7678ba
Address reviewer findings: reference hint, consumer-terms type errors, misuse exit code, immutability and parity docs
lilleman2026-09-03 19:21:42 +02:00
4d58c93757
Tests: template misuse exits 2, and a bare token hints its reference spelling
lilleman2026-09-03 19:21:42 +02:00
d8ece597c8
Reserve brackets in names, add compile-once NewTemplate, let --repeat reuse it, record scope artifacts
lilleman2026-09-03 17:48:20 +02:00
47ec883bb0
Tests: reusable NewTemplate, and bracket names rejected at load
lilleman2026-09-03 17:48:20 +02:00
031a3ec7d6
Resolve architect findings: gate [ on json.Valid, fix the root-relative README claim, test isTemplate
lilleman2026-09-03 17:40:29 +02:00
e08435afa7
Document inline templates: goal 4, the CLI and library, the shape-based disambiguation
lilleman2026-09-03 17:30:09 +02:00
3a9f3a4758
Route inline templates to FakeTemplate at the CLI
lilleman2026-09-03 17:29:07 +02:00
4399b8b89f
Tests for inline templates at the CLI
lilleman2026-09-03 17:28:14 +02:00
3bc3e35045
Add FakeTemplate: compile an inline template and render it against the loaded tree
lilleman2026-09-03 17:27:54 +02:00
5ba38a8281
Tests for FakeTemplate: inline format strings, JSON templates, references, and their errors
lilleman2026-09-03 17:27:51 +02:00
addba9abf7
Give maxLen its own literal and repeats MaxRepeat; arg errors name the spelling and the range; write's comment says what Flush reports; assert 64-bit at compile time
lilleman2026-09-02 19:25:19 +02:00
a9552ed966
Tests for every branch of the constant-divisor fold, arg errors naming the spelling, and shell numbers at the CLI
lilleman2026-09-02 19:24:46 +02:00
c5304bb6e7
Record the repeat cap's reach, 64-bit only, the constant-divisor rule and the rejected default spellings; correct the repeat cap comment
lilleman2026-09-02 19:09:50 +02:00
08c7ef9b7f
Keep the real data-path error, reject an empty data path, and report a crypto/rand failure instead of seeding zero
lilleman2026-09-02 19:09:29 +02:00
ae0527a26e
Tests for the real data-path error, an empty data path, and a crypto/rand failure
lilleman2026-09-02 19:09:19 +02:00
4f9285ab5c
Reject non-finite float bounds, unplain integer args, constant samples, a constant zero divisor and the default separator; a binding key is no path segment; ascii keeps DEL; an unheld path panics
lilleman2026-09-02 19:08:32 +02:00
7b28dc36d9
Tests for finite float bounds, plain integer args, constant samples and divisors, the default separator, binding keys in paths, DEL in ascii, and an unheld path
lilleman2026-09-02 19:07:49 +02:00
3d3efbb642
Bound --repeat at MaxRepeat and stream the renders; name an unknown flag by its rune; --list rejects an inert --repeat or --separator
lilleman2026-09-02 19:06:20 +02:00
5a75df8034
Tests for a bounded, streamed --repeat, rune-named flags, and --list with inert flags
lilleman2026-09-02 19:05:54 +02:00
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
lilleman2026-09-02 18:45:31 +02:00
512696722d
Tests for two spellings of one reference being one level, and a slash after a sigil
lilleman2026-09-02 18:45:21 +02:00
1b8768e431
Record the compatibility policy, the override consequence and the deferred data de-duplication
lilleman2026-09-02 18:32:11 +02:00
f9647ff6bb
Decompose compileTemplate, checkBoundLevelsHeld and loadDir; gate cyclomatic complexity at 14
lilleman2026-09-02 18:31:38 +02:00
bcbf044290
One path walk under checkPath, descend, readField, pathLeaves and coverPath; split the hold and the render graph into their own files
lilleman2026-09-02 18:29:45 +02:00
7581587a19
Tests for the path walk; test files named for the modules they exercise
lilleman2026-09-02 18:29:36 +02:00
1bf5470c6f
Reference sigils follow the filesystem: / the root, . this folder, .. the folder above
lilleman2026-09-02 18:26:02 +02:00
5d1e567b8d
Tests for reference sigils: / the root, . this folder, .. the folder above
lilleman2026-09-02 18:24:58 +02:00
1b1b93b35f
Reject weight 0, a never-numeric calc operand and a repeat product past the cap; the CLI classifies ErrNoData
lilleman2026-09-02 18:23:03 +02:00
34c933b2b3
Tests for weight 0, a never-numeric calc operand, the repeat product along a path, and ErrNoData
lilleman2026-09-02 18:22:23 +02:00
c5c06375d8
Reject a repeated bare token of a held name, naming the single-token spelling
lilleman2026-09-02 18:21:03 +02:00
5514b42b7b
Tests for a repeated bare token of a held name
lilleman2026-09-02 18:19:58 +02:00
88e71e666d
Delete the grammar converters; their output is committed and re-running them corrupts it
lilleman2026-09-02 18:18:07 +02:00
0ad88028c4
One path reads a flag's value: short flags attach and bundle, = after one is rejected naming the spelling
lilleman2026-09-02 14:09:48 +02:00
f6782cf477
Tests for attached and bundled short flags, and = after a short flag
lilleman2026-09-02 14:08:58 +02:00
8cd603a2b1
Key the repeated-item check on the string itself; marshal only objects
lilleman2026-09-02 12:59:12 +02:00
00a6160aa4
Restructure the README around the grammar, record the standing decisions, add the contributor rules
lilleman2026-09-02 12:56:11 +02:00
035e51d3e1
Tests that the README examples load, render and print what they claim
lilleman2026-09-02 12:53:29 +02:00
31c2f12098
Hold a reference path like a sibling path; add the lowercase, uppercase and ascii transforms
lilleman2026-09-02 12:52:19 +02:00
8fa33694b9
Tests for references held like siblings and the lowercase, uppercase and ascii transforms
lilleman2026-09-02 12:42:21 +02:00
f0305f191f
Re-pin the seeded outputs now that a one-item choice draws nothing
lilleman2026-09-02 12:39:04 +02:00
054f99c94f
One spelling per shape: reject a one-item choice, a repeated item and an inert object; reshape the data
lilleman2026-09-02 12:38:59 +02:00
de8c1d13e9
Tests for one spelling per shape: no one-item choice, repeated item or inert object
lilleman2026-09-02 12:37:21 +02:00
ff4b243148
Format text is literal; class runs are {digits(n)} {upper(n)} {lower(n)}; a string is a format
lilleman2026-09-02 12:37:21 +02:00
99d8aa0fb7
Tests for literal format text, brace escapes and the class builtins
lilleman2026-09-02 12:26:05 +02:00
f210c7a764
Embed the shipped data, load any fs.FS, New takes options, Fake is safe for concurrent use
lilleman2026-09-01 23:07:15 +02:00
91cbae2a44
Tests for the shipped data layer, New options and concurrent Fake
lilleman2026-09-01 23:03:53 +02:00
cf9de21495
GNU-style flags: --name, short aliases, any position, help on stdout
lilleman2026-09-01 23:02:19 +02:00