You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consolidate session documentation into top-level NOTEBOOK.md
- Move bast/NOTEBOOK.md to top-level NOTEBOOK.md
- Merge SESSION_HANDOFF.md content into NOTEBOOK.md
- Update CLAUDE.md with BAST test counts (54 tests)
- Add deprecation note about bast/jvm/src/test/ directory
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
**Note**: There is a legacy standalone `bast/` directory at the project root. This is deprecated - all authoritative BAST code lives in the `language` module's `bast` package.
70
+
71
+
**Key files** (all in `language/shared/src/main/scala/com/ossuminc/riddl/language/bast/`):
72
+
-`package.scala` - Constants and node type tags (NODE_*, TYPE_*, STREAMLET_*, etc.)
**DEPRECATED**: The `bast/jvm/src/test/` directory contains older test files that use the deprecated `BASTWriter.creator()` instead of `BASTWriterPass.creator()`. These should NOT be used - all authoritative tests are in the passes module.
444
454
445
455
#### Key Implementation Notes
446
456
@@ -465,6 +475,14 @@ sbt riddlc/stage
465
475
- Checksum validation on load
466
476
- Graceful degradation for unknown node types
467
477
478
+
5.**CRITICAL: readNode() vs readTypeExpression() in BASTReader**:
-**These are DISJOINT sets** - readNode() does NOT handle TYPE_* tags!
482
+
- When reading contents that contain type expressions (e.g., `Alternation.of` which contains `AliasedTypeExpression`), you MUST use `readTypeExpression()`, not `readNode()` via `readContentsDeferred()`
483
+
-**Bug pattern**: If you see "Invalid string table index" errors with huge counts like `metadata[1000009]`, it usually means the reader is misaligned because it tried to read a TYPE_* tag as a NODE_* tag
484
+
-**Fix pattern**: Create specialized reader methods like `readTypeExpressionContents()` that read count + call `readTypeExpression()` for each item
This is the central engineering notebook for the RIDDL project. It tracks current status, work completed, design decisions, and next steps across all modules.
4
+
5
+
---
6
+
7
+
## Current Status
8
+
9
+
**Last Updated**: January 16, 2026
10
+
11
+
The RIDDL project is a mature compiler and toolchain for the Reactive Interface to Domain Definition Language. Recent work has focused on BAST (Binary AST) serialization for fast module imports.
12
+
13
+
---
14
+
15
+
## BAST Module (Binary AST Serialization)
16
+
17
+
### Status
18
+
19
+
**BAST serialization is fully integrated into the language and passes modules.**
20
+
21
+
The standalone `bast/` module has been **removed from build.sbt** and code reorganized:
0 commit comments