Skip to content

Commit 582a136

Browse files
reid-spencerclaude
andcommitted
Prune NOTEBOOK: graduate 12 facts to CLAUDE.md, file 4 backlog items
NOTEBOOK.md had reached 4,876 lines, roughly 85 dated entries. A notebook entry mixes a story with a fact, and the two have different lifespans: the story is scaffolding, valuable while the work is fresh; the fact is a constraint someone needs again. This separates them. NOTEBOOK 4,876 -> 547 lines. Removed: ~60 entries covering 2026-07-24 -> 2026-08-20, plus the JSON-input roadmap (all 9 phases done), the stale "Open Tasks in task/" list, and four Design Nuances subsections already duplicated in CLAUDE.md -- one of which, AIHelperPass, described a pass DELETED in 1.24.0. Entries were kept whole or removed whole; nothing was summarised or rewritten in place. Graduated to CLAUDE.md, each verified live in the tree rather than taken from the narrative: - GBNF is GONE (deleted 2026-08-20 for measured performance, not quality); a grammar change touches two artifacts, not three - TatSu's nameguard refuses a bare letter token touching a digit -- why `("e"|"E")` fails on `1e3` and an inline regex does not - a new .riddl fixture is a grammar-surface change: INCLUDE_FRAGMENTS, and the Scala suites cannot speak for the Python validators - validateType skips its walk for a TOP-LEVEL aggregate, so a family of checks fires only on nested inline ones (ValidationPass.scala:2752) - Finder.fieldChildren: 27 field-held sites were unreachable, and the arm it still ends in means arm 12 of Value will be invisible - BAST writeContents writes a count and trusts a distant caller for the items -- a contract that has failed four times; plus positionsKnown - Keywords.keyword ends in a cut, so factor the prefix, never reorder; and test a fastparse alternation rather than reading it - never @JSExport an overridden toString (breaks JS ToPrimitive) - three JSON codec traps: upickle $type, hand-written codecs, $kind - ThirdPartyNotices.scala is a hand-maintained constant, stale in silence - run sbt --server when you need to read its output - a case class reaching a document has an O(document) hashCode, and only Scala.js notices Two corrections, both places CLAUDE.md was wrong today: - it said scala.yml caches target/out. It must NOT be cached and is not; scala.yml:165 carries the ban and its reason. - the predefined-module inventory omitted GeneratorError, which is live at PredefinedModule.scala:83 and is half of what "both records are unused" refers to. Three NOTEBOOK sections carried open work that existed nowhere else. Per CLAUDE.md, if it is not in BACKLOG.md it is not tracked -- so they were filed rather than deleted: [2.7] put/get UI-boundary statements, [2.8] single failure point per saga do-block, [2.9] TypeScript AST declarations, [2.10] repo housekeeping (three items, each verified still outstanding; a fourth was dropped as already resolved). HANDOFF was stale in two ways and is corrected: the RC6 upgrade is committed, not uncommitted, and task/ is not empty -- riddl-models filed the saga/tell boundary request today. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 334c491 commit 582a136

3 files changed

Lines changed: 328 additions & 4370 deletions

File tree

BACKLOG.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1691,6 +1691,71 @@ that needs a ruling before either can be fixed.
16911691
this branch, and the second where the stale claim was a promissory note about
16921692
work that had since landed.
16931693

1694+
- **[2.7]** `put`/`get` UI-boundary statements. **Graduated out of NOTEBOOK
1695+
2026-08-26, where it had sat as a "Deferred — do NOT start yet" section since
1696+
before 2.0; filing it here so it is tracked rather than remembered.** Design as
1697+
discussed: `put <value> to output <outputRef>` pushes to a UI Output from an
1698+
on-clause; `get` is `let <id> = get from input <inputRef>` — its OWN statement
1699+
kind, not an extension of `LetStatement`. Both keywords existed long ago as
1700+
storage statements and were removed when `repository` sufficed. This completes
1701+
the boundary-statement census: send/tell = streaming, call = function, put/get
1702+
= UI. **Both CAN FAIL** (put when the UI is absent/headless, get when the input
1703+
is unset), so model it as `def canFail: Boolean` on `Statement` — one source of
1704+
truth shared with [2.8]. Witnessing is greenfield: a `ShowOutputInteraction` is
1705+
witnessed by a `put` to that output, a `TakeInputInteraction` by a handler on
1706+
the input's message type OR a `get` naming it; an unwitnessed step draws a
1707+
CompletenessWarning. **Prerequisite: the UI / application
1708+
(output-input-triplet) model must land first** — that is why it was deferred,
1709+
and the prerequisite has not moved. Open question for when it unblocks: which
1710+
handler statement-sets may contain put/get. Note `get from input` is ALREADY
1711+
partly present (`GetValue.source` is `InputRef | StateRef`) — check what exists
1712+
before designing, per the standing "a plan cannot notice the work happening"
1713+
rule.
1714+
1715+
- **[2.8]** Single failure point per saga do-block. **Graduated out of NOTEBOOK
1716+
2026-08-26 with [2.7]; same provenance.** A saga step's do-block is
1717+
all-or-nothing (undo assumes all-or-none happened), so warn when it contains
1718+
more than one potential failure point. **Blocked on the complete can-fail
1719+
census**, via the shared `Statement.canFail` in [2.7]. The census as filed:
1720+
send, tell, call, yield, put, get CAN fail; let, set, when, match, foreach
1721+
CANNOT. **Deferred rather than shipped-partial deliberately** — with only
1722+
send/tell counted it would give false "single failure point" passes that flip
1723+
to warnings later, which is worse than waiting. **The census itself needs
1724+
re-deriving before use**: it predates `forward`, `initiate`, `terminate` and
1725+
`error`-is-terminal, and this repo's standing lesson is that a predicate
1726+
borrowed or inherited wholesale stops answering its own question (see
1727+
CLAUDE.md on A23 vs A26).
1728+
1729+
- **[2.9]** TypeScript AST declarations for the JS side. Low priority. The full
1730+
AST hierarchy (Domain, Context, Entity, …) is still OPAQUE to TypeScript; only
1731+
the public `RiddlAPI` methods are declared. JS consumers are expected to use
1732+
the facade rather than the raw AST, which is why this has never blocked
1733+
anyone — file it, do not schedule it. Graduated out of NOTEBOOK's "Active Work
1734+
Queue" 2026-08-26.
1735+
1736+
- **[2.10]** Repo housekeeping — three items, all VERIFIED still outstanding
1737+
2026-08-26, all independent and each a few minutes:
1738+
1. **Delete the `development` and `old-development` branches** (local +
1739+
remote). `development` is fully contained in `main` — 0 commits ahead as of
1740+
1.31.0 — so nothing is lost. `git branch -a` confirms `development` and
1741+
`origin/development` still exist. Deferred pending an explicit go-ahead,
1742+
which is the only thing missing.
1743+
2. **Fix `.claude/skills/ship/SKILL.md`** — it still prescribes the GitFlow
1744+
pre-flight (fast-forward `main` from `development`, `SKILL.md:21-30`) and
1745+
the post-release merge-back. Both contradict current policy (CLAUDE.md
1746+
§ Branch Strategy: `main` IS the working and release branch) and were
1747+
skipped for 1.30.0 and 1.31.0. A skill that documents a process nobody
1748+
follows is a trap for the next session that trusts it.
1749+
3. **Delete the stray `help` git tag** (`git tag --list help` confirms it).
1750+
Almost certainly a typo'd `git tag help`. Harmless, except that it sorts to
1751+
the top of `git tag --sort=-v:refname` and so LEADS the tag list when
1752+
working out the latest release.
1753+
1754+
Dropped from this list as already resolved: *"verify the `unset GITHUB_TOKEN`
1755+
guidance for `gh`"* — settled 2026-07-29 and recorded in `../CLAUDE.md`
1756+
§ GitHub CLI Integration (both credentials work; prefer plain `gh`, and never
1757+
unset the token in a shell that also runs sbt).
1758+
16941759
### 3. Owed to other repos
16951760

16961761
- ~~**[3.1]** riddl-generator's `Finder` incompleteness.~~**CLOSED by THEM

0 commit comments

Comments
 (0)