Skip to content

Commit d8226d3

Browse files
reid-spencerclaude
andcommitted
Leave the repo resumable mid BACKLOG 1a, at a green gate
State a cold session can trust, all re-run here: main clean and level with origin at e446a20; ../bin/riddlc 2.0.0-rc.10-57-e012ebb9 with a matching build.sbt pin; 2.0 gate 171 validated / 55 skipped / 0 failed; 1.31 6/0/0; mkdocs --strict clean; task/ holds only done/. Corrects two stale facts found by running the commands rather than rereading them: BACKLOG said 2.0 was at rc.9-54, and CLAUDE.md said ../bin was rc.9 while PATH was rc.5. PATH is still rc.5 and is the wrong compiler for sites/riddl/; ../bin is rc.10-57. HANDOFF rewritten, not appended, and cut from 104 lines to 75. It had started collecting; the 1a detail it was carrying belongs in BACKLOG, where the analysis of language-reference.md's 32 remaining fences now lives. The resume point is that page, and its 32 skips were restored verbatim on purpose -- the gate is never left red. Checked and found empty, so recorded as such rather than left to the next session to discover: no unexecuted plan in ~/.claude/plans/ holds open work for this repo, and the only TODO strings in the tree are inside RIDDL examples that teach comments. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent e446a20 commit d8226d3

3 files changed

Lines changed: 54 additions & 81 deletions

File tree

BACKLOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ is gone.
129129
`riddl` entry** in `docs-version.yml` decides where `/riddl/` redirects. Move
130130
the entries, not just the alias.
131131

132-
**Blocked on:** RIDDL 2.0 final. Currently `2.0.0-rc.9-54`.
132+
**Blocked on:** RIDDL 2.0 final. `../bin/riddlc` is `2.0.0-rc.10-57-e012ebb9`
133+
(verified 2026-08-10); do not trust a version written here, run it.
133134

134135
---
135136

CLAUDE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,9 +378,10 @@ about the checkout tells you which one is meant — and the `riddlc` on PATH is
378378
neither of them any more, so the wrong pairing reports confident nonsense.
379379

380380
**`../bin/riddlc` is the 2.0 compiler**, staged from riddl's `release/2`. The
381-
Homebrew `riddlc` on PATH lags it (2.0.0-rc.5 while `../bin` is rc.9), and rc.9
382-
deprecated the entity options — so validating the 2.0 docs with the PATH binary
383-
silently passes examples the real compiler rejects.
381+
Homebrew `riddlc` on PATH lags it badly — verified 2026-08-10: PATH is
382+
**2.0.0-rc.5** while `../bin` is **2.0.0-rc.10-57**. rc.9 deprecated the entity
383+
options, so validating the 2.0 docs with the PATH binary silently passes
384+
examples the real compiler rejects. Run both and compare; never assume.
384385

385386
```bash
386387
# 2.0 -- sites/riddl/, validated by the STAGED compiler, not the one on PATH

NOTEBOOK.md

Lines changed: 48 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -13,104 +13,75 @@ to the task file and note completion in this notebook.
1313

1414
## HANDOFF — as of 2026-08-10
1515

16-
**State (verified this session, not recalled):** branch `main`, tree clean,
17-
**unpushed commits ahead of `origin/main`** — check with `git status` and push
18-
when ready. HEAD is the last of six 1a commits.
16+
**All figures below were run in this session, not recalled.**
1917

20-
**Compiler:** `../bin/riddlc` is **`2.0.0-rc.10-57-e012ebb9`** and `build.sbt`'s
21-
`With.Riddl.library` pin matches it exactly. Both checked by command. It is
22-
restaged often — re-check both and keep them equal, or the docs describe a
23-
grammar the examples were never validated against.
18+
**State:** branch `main`, tree clean, **0 commits ahead of `origin/main`**,
19+
HEAD `e446a20`. Everything is pushed; CI has deployed from it.
2420

25-
**Gate, re-run this session:** 2.0 — **171 validated / 55 skipped / 0 failed,
26-
exit 0**; 1.31 — 6/0/0. `mkdocs build --strict` on `sites/riddl` clean.
21+
**Compiler:** `../bin/riddlc` is **`2.0.0-rc.10-57-e012ebb9`** and `build.sbt`'s
22+
`With.Riddl.library` pin matches exactly. The Homebrew `riddlc` on PATH is
23+
**2.0.0-rc.5** and is the WRONG compiler for the 2.0 docs. riddlc is restaged
24+
often — re-check the binary against the pin at session start.
2725

28-
**The gate's scope is a FILE LIST, and it is now written down** in CLAUDE.md
29-
§ "Compiling RIDDL examples". Compare a figure only against one taken over the
30-
same scope; if one fails to reproduce, re-measure the baseline against the
31-
parent commit rather than trusting it.
26+
**Gates:** 2.0 — **171 validated / 55 skipped / 0 failed, exit 0**; 1.31 —
27+
6/0/0. `mkdocs build --strict` on `sites/riddl` clean.
3228

33-
**`task/` is empty** (only `done/`). Nothing awaits triage here.
29+
**`task/` holds only `done/`.** Nothing awaits triage.
3430

3531
### In flight — BACKLOG 1a
3632

37-
**49 blanket skips remain**, from 118 at the start of the session.
38-
`concepts/` and `introduction/` are **finished**. `language-reference.md` has
39-
had a first slice (23/52 → 35/40, 12 retired); its remaining **32 are restored
40-
verbatim**, so the page is green and the work is still tracked.
33+
Retiring the blanket `"illustrative fragment"` skips. **49 remain**, from 118
34+
at session start. `concepts/` and `introduction/` are **finished**.
4135

42-
**BACKLOG 1a now carries the measured analysis of those 32** — which want
43-
`in-handler`, which want `in-domain` plus a domain prelude the page does not
44-
yet have, which are genuinely unskippable, and which hide known content bugs.
45-
Read it before touching the page; it cost a full pass to derive.
36+
`references/language-reference.md` is **half-done and is where to resume**: 12
37+
of its 44 retired (page 23/52 → 35/40), and **the other 32 were restored
38+
verbatim** so the page is green. That restore is deliberate, not abandoned
39+
work — the gate must never be left red.
4640

47-
The other 17 sit in `migration/` and `guides/`, **outside the gate scope**,
48-
whose trees carry 4 pre-existing failures. Starting them starts BACKLOG 1b —
49-
decide that deliberately.
41+
**BACKLOG 1a carries the measured analysis of those 32** — which want
42+
`in-handler`, which want `in-domain` plus a domain prelude the page still
43+
lacks, which are genuinely unskippable, and which hide known content bugs.
44+
Read it first; it cost a full pass to derive.
5045

51-
Nothing is half-edited; every page is committed at a green gate.
46+
The other 17 sit in `migration/` and `guides/`, **outside the gate scope**,
47+
in trees carrying 4 pre-existing failures. Starting them starts BACKLOG 1b.
5248

5349
### Traps
5450

55-
- **Most pages hide real errors** — 13 found so far by compiling. Three pages
56-
hid none, so it is not a law, but budget for content repair.
57-
- **Re-run the FULL gate after any wrapper edit**, never just the page in hand.
58-
Wrapper changes regressed other pages three times. Wrapper-internal names must
59-
keep the `Example` prefix: a record named `OrderData` collided with
60-
`language-reference.md`'s own prelude.
61-
- **A page prelude must be self-contained.** It must not name anything a
62-
*fence* defines either, not just anything the wrapper defines — that breaks
63-
every other fence on the page, with errors pointing at innocent lines.
64-
- **Never name a prelude entry `Tax`.** The `in-function` wrapper supplies a
65-
sibling `context Tax`; a prelude `function Tax` makes every `Tax.…` path
66-
ambiguous and breaks that page's in-function fences. The known rule was the
67-
mirror image — wrapper names colliding with prelude names — the same wall
68-
from the other side.
51+
- **The gate's scope is a FILE LIST, not a directory** — exact command in
52+
CLAUDE.md § "Compiling RIDDL examples". A figure is only comparable within
53+
one scope; if one fails to reproduce, re-measure against the parent commit
54+
rather than trusting it. That is why the inherited "108/107" was discarded.
55+
- **The gate truncates diagnostics** to a position. For the real message,
56+
import the script as a module, re-wrap with `wrap()` (mirroring any
57+
`no-prelude`), and run `../bin/riddlc validate <file>` — a bare path, there
58+
is no `--input-file` flag.
59+
- **Re-run the FULL gate after any wrapper or script edit.** Wrapper changes
60+
have regressed unrelated pages four times.
6961
- **`annotate-riddl-examples.py` places a fence against the prelude AS IT
70-
WAS**, so extending the prelude afterwards can invalidate earlier
71-
placements. It silently invalidated 8 on `language-reference.md`.
72-
- **A context-level prelude cannot supply a sibling context**, and contexts do
73-
NOT nest (verified rc.10-57). A fence naming `Other.SomeEvent` must either
74-
show its enclosing context (making it `in-domain`, which reads the
75-
domain-prelude) or resolve the name locally. Injecting the domain-prelude
76-
into every wrapper was tried and reverted: it collides with the epic
77-
wrappers, which already define `user Customer`.
78-
- **A dotted path is anchor-then-DIRECT-child, not a deep search.**
79-
`Storefront.Credentials` fails when `Credentials` sits inside a page; it must
80-
be `Storefront.LoginPage.Credentials`.
81-
- **A fence naming an outlet cannot be fixed by a prelude.** An outlet lives in
82-
a processor and a prelude lands at context level, so no statement wrapper can
83-
reach one. Show the owning processor, or skip with a precise reason.
84-
- **`scratchpad/dump.py` ignores `no-prelude`**, so its output is not what the
85-
gate sees; a "duplicate name" error from it is an artifact. Get the gate's own
86-
error before diagnosing.
87-
- **The gate truncates diagnostics.** It prints the `[error]` position and
88-
little else. To read the real message, re-wrap with `wrap()` (import the
89-
script as a module, mirror the `no-prelude` logic) and run
90-
`../bin/riddlc validate <file>` yourself. Note the subcommand takes a bare
91-
path — there is no `--input-file` flag.
92-
- **Annotate fences by LINE NUMBER.** Matching on a fence's first line put two
93-
directives on one fence and left two bare — two fences both began
94-
`entity Account is {`.
62+
WAS.** Extending the prelude afterwards silently invalidated 8 placements.
63+
- **Prelude/wrapper name collisions run both ways.** Wrapper names keep an
64+
`Example` prefix; equally, a prelude must not take a name a wrapper supplies
65+
`function Tax` broke every in-function fence on its own page.
66+
- **Annotate fences by LINE NUMBER**, never by matching a fence's first line.
9567

9668
### Certainty
9769

98-
**Verified by command this session:** branch/push state, compiler version, pin
99-
agreement, both gates, `mkdocs build --strict` on `sites/riddl`. Every gate
100-
figure quoted above was measured, including the pre-change baselines.
101-
**Verified by compiling:** every example on the six pages changed; that an
102-
entity-level handler satisfies a state's handler requirement; that a query
103-
declares its response with `replies` and that `yields` on a query is an Error;
104-
that predefined types do not resolve as alternation members; that
105-
`BottomlessPit`/`ForeverEmpty` need no import.
70+
**Verified by command this session:** git state, both compiler versions, the
71+
pin, both gates, the strict build, that `task/` is empty, and that no
72+
unexecuted plan in `~/.claude/plans/` holds open work for this repo.
73+
74+
**Verified by compiling:** every example on the 25 pages changed, plus the
75+
rules recorded in BACKLOG 1a and in the pass entries below.
76+
10677
**Assumed, not re-verified:** BACKLOG item 5's 18 site items were carried over
107-
as written and none was re-checked against the current site.
78+
as written and none was re-checked against the current site. The gh-pages
79+
deploy triggered by the last push was not inspected.
10880

10981
### Pointers
11082

111-
Open work is **BACKLOG.md** — 1a is the live one. Durable facts are
112-
**CLAUDE.md**, notably § "Things that will bite" for the grammar protocol
113-
(**always `sbt extractGrammar`, never `cp`**).
83+
Open work is **BACKLOG.md** — 1a is live. Durable facts are **CLAUDE.md**,
84+
notably § "Things that will bite" and § "Compiling RIDDL examples".
11485

11586
**Run `/ossuminc-skills:check-tasks` in the new session.**
11687

0 commit comments

Comments
 (0)