The narrative that doesn’t fit a changelog entry: root-cause archaeology, failed approaches, verification details, and the traps the next person would otherwise rediscover. Generated from the entries in record/devlog.d/ — file one with luria new.
Currently — September 2026
- 20 Sep 07:01 — A document’s prose reaches luria through —body
- 19 Sep 07:57 — A backend for the record turned out to be a view
- 17 Sep 09:45 — Two tags, and the one that nearly said nothing
- 17 Sep 05:42 — The generated reference had a hand-kept list inside it
- 16 Sep 19:00 — The code cited the argument, not the decision
- 16 Sep 16:05 — The description belongs to the set, and firing it on a real record is what proved it
- 16 Sep 05:49 — The bug was not the refusal, it was what happened when you worked around it
- 16 Sep 04:27 — A crash in the chain walker was the wrong feature in the right place
- 16 Sep 03:52 — A rule can carry its own alert
- 15 Sep 05:26 — Naming a code in the reason is how you create the citation you are excusing
- 15 Sep 03:30 — Firing the new guard on the case that motivated it
- 15 Sep 03:08 — One stale code silently un-acknowledged four others
- 15 Sep 02:46 — The report said so for seven days: eleven decisions the merge never flipped
- 15 Sep 02:23 — The 36 scans were 8 corpora and one render done twice
- 15 Sep 01:06 — A frozen dataclass that cannot be hashed, and a test that cited three ghosts
- 15 Sep 00:30 — The lint’s time was in re-reading, not reading
- 14 Sep 20:02 — Three comment-carry bugs the examples passed and the property caught
- 14 Sep 18:35 — Quartz 5 builds, and the popover bug was already fixed there
- 14 Sep 17:17 — Owning somebody else’s algorithm, checked against their output
- 14 Sep 15:15 — Every fragment link in the record worked everywhere except where it is read
- 14 Sep 04:20 — The config migration’s two silent failures were both about indentation
- 13 Sep 20:35 — The same-scheme converse rule was an assumption, not a constraint
- 13 Sep 19:58 — The retries were paying nine seconds an identifier to learn nothing
- 13 Sep 19:53 — The record was parsed twenty-three times per document per lint
- 12 Sep 21:59 — Two halves of one fix: a page to cite, and a citation that points at it
- 11 Sep 05:41 — Lint only column-0 HTML comments in YAML frontmatter
- 11 Sep 01:23 — Reserving a namespace instead of blanking three suites
- 10 Sep 22:10 — Grouping the pending report, and being caught twice by the specimen-code hazard
- 10 Sep 15:47 — Firing the reference derivation on 281 real documents
- 9 Sep 18:53 — A mute dial, because fail_on only changes the consequence
- 9 Sep 02:49 — Merging a stack bottom-up under squash makes a conflict out of nothing
- 9 Sep 01:41 — tree-sitter 0.26.0 segfaults; the extra pins below it
- 8 Sep 23:30 — A docstring is one block, the way a fence already was
- 8 Sep 23:04 — One template vocabulary, and the take grammar that went away
- 8 Sep 21:01 — Alias inference, and the map that was never wired up
- 8 Sep 18:57 — Identity moved into the document
- 8 Sep 16:59 — Derived fields, and the ADR-066 rule they invert
- 8 Sep 15:49 — A relation asserts an invariant; the check asks which field names it
- 7 Sep 20:08 — Firing a two-relation spine on a real record, and what hid a config error
- 7 Sep 16:55 — The chain page encoded depth but not parentage
- 7 Sep 05:35 — A temporary code is a code to link, and was not one to check
- 7 Sep 04:40 — The link that resolved to the wrong project
- 7 Sep 03:02 — A title is data, and this record has one that reads as syntax
- 7 Sep 01:53 — The properties panel cannot show what the record line is for
- 7 Sep 00:58 — Three copies of a region, and a link nobody derived
- 7 Sep 00:35 — One fact, one bit: two duplications the record line grew
- 6 Sep 21:32 — Migrating status onto the mechanism it was generalized from
- 6 Sep 21:08 — The form’s own words reached the published index
- 6 Sep 20:24 — What the vocabulary migration hits
- 6 Sep 18:38 — The constraint was about the field, not the direction
- 6 Sep 18:15 — The symmetry check became a fixer
- 6 Sep 04:39 — The mechanism was built on a premise it did not enforce
- 6 Sep 00:38 — The rebase was the wrong fix; the field was already split
- 6 Sep 00:30 — Every fixture passed and every rendered link was broken
- 6 Sep 00:15 — A line is a DAG, and a rival that succeeds nothing still belongs to it
- 6 Sep 00:09 — A status says what a record believes; nothing said what would change its mind
- 6 Sep 00:01 — The form was the only file stating the schema that nothing compared to it
- 5 Sep 20:55 — A working link to the wrong paper is invisible to every check that asks whether links work — and the first fix had the same shape as the bug
- 5 Sep 20:29 — A guard that a single exception can switch off is a guard about unanimity, not about information
- 5 Sep 16:57 — A remote code in superseded_by, and a directive with nowhere to stand
- 5 Sep 06:19 — The uncited principles, and the file the reference machinery could not see
- 5 Sep 03:18 — Publishing the examples, and the third hand-written link the fixer would have got right
- 5 Sep 01:16 — A record with no code in it, and two failures only staging could see
- 3 Sep 22:50 — The published site was one bot commit behind
- 3 Sep 22:39 — The lint reads sources; nobody regenerates a view to check a branch
- 3 Sep 22:23 — An ADR closed in review: the constraint was the token’s, not the file’s
- 3 Sep 21:57 — A temporary code in a workflow file breaks the generation job
- 3 Sep 19:42 — Six conflicts on files nobody wrote
- 3 Sep 19:21 — Requiring arxiv was requiring the wrong thing
- 3 Sep 18:00 — One field was two types, and had been for sixty decisions
- 3 Sep 16:22 — A field that was neither a reference, a tag nor a status
- 3 Sep 14:25 — A list in a reference field was read as its first code, silently
- 3 Sep 04:43 — Provenance goes into the finding, not into a command
- 3 Sep 04:09 — Three facts the record already stated, read as edges
- 3 Sep 03:58 — Three lint passes compile into one contract per scheme
All books
121 entries across 2 books, newest first.