@@ -10,6 +10,36 @@ Orientation for a session with no memory of this work. **Open work is in
1010` BACKLOG.md ` ** ; durable facts are in ` CLAUDE.md ` ; what things TAUGHT us is in this
1111NOTEBOOK's body. Ask ` git ` for branch, tree and unpushed span.
1212
13+ ** PRETTIFY NOW EMITS ONE SPACE AFTER ` is ` (2026-08-25), so the whole corpus needs
14+ re-prettifying and ` .bast ` regeneration.** riddl-models knows and is not blocked. This
15+ is the change with the widest byte-level reach on the branch — every model in the corpus
16+ had drifted (188 of 188).
17+
18+ ** Whitespace is load-bearing in this project.** riddl-models diffs 190 checked-in ` .bast `
19+ files against source BYTE FOR BYTE, and that can only be exact while the corpus is
20+ precisely what prettify emits. Reid: * "Byte non-identical, especially with mere white
21+ space changes, is a source of frustration at best and a source of errors at worst."*
22+
23+ ** Two causes, two sites, and they are NOT one bug** — ` emitMessageType ` added a leading
24+ space its callers had already supplied (hitting all seven aggregate-use-case keywords but
25+ NOT plain ` type ` ), and ` add(Seq[LiteralString]) ` padded its single-string branch (hitting
26+ ` term ` only, with a trailing space too).
27+
28+ ** The durable lesson is about the TEST, not the spacing: idempotence cannot catch a
29+ formatting defect.** ` prettify(prettify(x)) == prettify(x) ` held the whole time, because
30+ whatever the emitter does is canonical BY CONSTRUCTION — the property is a tautology with
31+ respect to its own output. Only an assertion against a FIXED expectation can contradict
32+ the emitter. Same shape as rc.24-3's stream defect, where nothing asserted which stream a
33+ command wrote to. ** When a component defines its own correctness, self-consistency proves
34+ nothing.**
35+
36+ ** A test that passes alone and fails in company is worse than no test.** Two suites here
37+ called ` System.setOut ` , which is process-global, while sbt runs suites in PARALLEL — so
38+ one captured the other's output and failed with a message that read like a code break.
39+ Both now go through ` StdStreamCapture ` 's JVM-wide lock. ** Any suite redirecting a standard
40+ stream must use it** , or the race is back for everyone.
41+
42+
1343** Constructor arguments are TYPE-CHECKED as of 2026-08-25** , and until then they were
1444not checked for type AT ALL — only arity, duplication, ordering, name validity and
1545` empty ` cardinality. riddl-generator found it by generating Java that would not compile.
0 commit comments