Commit Graph

52 Commits

Author SHA1 Message Date
lilleman 707cd6b203 Move a table's rows, links and pins into internal/rows, and walk every path through one per-step function, so Fake refuses a level carrying a repeat 2026-10-05 22:10:04 +02:00
lilleman dd2fe61b13 Answer architecture round 1: one invariant phrase in internal/invariant, held across every package, Source built by Dir and FS, coverage counted across packages, and file items 112 and 113 2026-10-05 16:30:28 +02:00
lilleman 818a9b56c2 Move the folder walk and the reading of a data tree's JSON and TSV files into internal/datafiles 2026-10-05 16:30:28 +02:00
lilleman 1d0fe9f555 Answer architecture round 1: read the module path from go.mod, keep the randomness behind State's methods, rename the field drawState and the counter Seq, and file items 108 and 109 2026-10-05 12:03:38 +02:00
lilleman 2d9c315e75 Move the seeded randomness and the {seq()} counters into internal/drawstate 2026-10-05 12:03:38 +02:00
lilleman 6eb9880a3f Name the version in every seed promise, and say to regenerate seeded fixtures when it changes 2026-10-04 17:17:46 +02:00
lilleman 53431ab908 Answer prose round 1: plainer decision titles and body, comments that say what the code cannot, and claims New no longer makes 2026-10-03 20:37:07 +02:00
lilleman a9eb337ec7 Say in config.load only what New's godoc does not 2026-10-03 20:37:07 +02:00
lilleman 590681ed24 Answer stability and product-owner: New's godoc says where the load lands, plainer Performance wording, regenerate before re-pinning, and no redundant sort 2026-10-03 20:37:07 +02:00
lilleman cc8797744b Answer architecture round 3: the generated header names go generate, one sorted-keys helper everywhere, one site constructor, and an inline folder reference refused before anything loads 2026-10-03 20:37:07 +02:00
lilleman 3bb8628e39 Answer architecture round 2: one folder walk and one sorted-keys helper, REGENERATE for the index, and the held decisions naming the items that end them 2026-10-03 20:37:07 +02:00
lilleman c3b462ec0a Answer architecture round 1: one inline load-and-bind, go generate for the index, sorted unloaded names, item 79 named in the decision, and the audit's other findings filed 2026-10-03 20:37:07 +02:00
lilleman 8b3bbc4003 Load shipped categories before binding, panic on an index that misses a read, and name the index entry and unloaded category plainly 2026-10-03 20:37:07 +02:00
lilleman 5667cd5dc3 Load a shipped category on the first call reaching it, from an index generated from data/ 2026-10-03 20:37:07 +02:00
lilleman 186443f883 Rename eachToken to eachScanUnit, and narrow generatorState to draw state 2026-09-29 12:47:38 +02:00
lilleman 14194a775d Rename ftoken to scanUnit and session to generatorState 2026-09-29 12:47:38 +02:00
lilleman 83f8c45493 Name the fields mu guards 2026-09-29 04:45:27 +02:00
lilleman 6bd2b155d2 Move the Generator's lock-free-reader invariant from its godoc onto mu 2026-09-29 04:45:27 +02:00
lilleman 16604de74c Name the table lookup the Generator doc's fixed tree excepts, and drop the renders restatement 2026-09-29 04:45:27 +02:00
lilleman c422c9e436 Build the walk root in New, drop the categories copy, and correct the node and renders comments 2026-09-29 04:45:27 +02:00
lilleman 38837b86a8 Panic through internalError on a node kind contained or paths does not list 2026-09-29 02:48:58 +02:00
lilleman 7b01a7fd68 Say what List returns: fields, columns, linked tables, direct descents only 2026-09-29 02:07:40 +02:00
lilleman a9f35a1ab3 Correct List's, reached's and rng's false comments 2026-09-29 02:07:40 +02:00
lilleman 514d738b08 Report every invariant break through internalError 2026-09-29 01:51:44 +02:00
lilleman 3af4526ef6 Give Fake a local hold set, as the other renders have, and drop the done round item 2026-09-29 01:34:57 +02:00
lilleman 77f79de443 Trace a render's reads through the hold set the test makes, dropping session.trace and repeatDepth 2026-09-29 01:27:57 +02:00
lilleman dc0f9fa2d6 Drop the comment claims that name callers and List's gaps 2026-09-28 21:46:24 +02:00
lilleman 21b48c8c41 Correct the false comments and delete dead code 2026-09-28 21:46:24 +02:00
lilleman 1a6111d67d Trace the reads a render makes, gather a render's draws in renderDraws and columnDraws, and drop the done item 2026-09-26 15:17:05 +02:00
lilleman c55c75a29e Give dir, path, structs and r one meaning each, and name the table option indexes keyIndex through parentIndex 2026-09-25 19:31:09 +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 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 d128621fc1 Name a render's holds apart from the draw fence 2026-09-21 22:06:01 +02:00
lilleman f569580077 Define draw, hold, pin, family, whole and fence in the package doc 2026-09-21 10:41:58 +02:00
lilleman ce8ea550a3 Correct what the readers proved false, and lift the file map out of last place
Tests / vet + fmt + tests (pull_request) Successful in 1m26s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
Tests / vet + fmt + tests (push) Successful in 7s
Tests / Gitea release from CHANGELOG.md (push) Successful in 5s
2026-09-20 21:47:17 +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 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 c0b176a839 Struct-filling: FakeStruct fills fake-tagged fields as a record, each field's Go type its datatype, and IsTemplate owns the path-or-template shape rule
Tests / vet + fmt + tests (pull_request) Successful in 1m0s
2026-09-15 16:23:10 +02:00
lilleman 94dc562c6c Typed columns and null: a datatype option, null items, and a load check that every typed render parses
Tests / vet + fmt + tests (pull_request) Successful in 58s
2026-09-15 11:23:57 +02:00
lilleman 79827a66d6 Fence a record once per node, refuse a column reading its own record, and keep a bare reference independent as an operand
Tests / vet + fmt + tests (pull_request) Successful in 1m3s
2026-09-04 09:32:29 +02:00
lilleman 873b7678ba Address reviewer findings: reference hint, consumer-terms type errors, misuse exit code, immutability and parity docs
Tests / vet + fmt + tests (pull_request) Successful in 57s
2026-09-03 19:21:42 +02:00
lilleman 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
Tests / vet + fmt + tests (pull_request) Successful in 59s
Tests / vet + fmt + tests (push) Successful in 6s
2026-09-02 19:25:19 +02:00
lilleman 08c7ef9b7f Keep the real data-path error, reject an empty data path, and report a crypto/rand failure instead of seeding zero
Tests / vet + fmt + tests (pull_request) Successful in 58s
2026-09-02 19:09:29 +02:00
lilleman 3d3efbb642 Bound --repeat at MaxRepeat and stream the renders; name an unknown flag by its rune; --list rejects an inert --repeat or --separator
Tests / vet + fmt + tests (pull_request) Successful in 56s
2026-09-02 19:06:20 +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 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 f210c7a764 Embed the shipped data, load any fs.FS, New takes options, Fake is safe for concurrent use 2026-09-01 23:07:15 +02:00