Skip to content

Commit 2c2b5ab

Browse files
respencer-nclclaude
andcommitted
Complete documentation editorial review
Major changes across 40 files: Concepts section (26 files): - Rewrote application.md: clarified applications are contexts with groups - Rewrote processor.md: explained abstract concept and concrete types - Fixed RIDDL syntax: any of vs one of for enumerations - Changed Actor→User terminology per Use Cases 2.0 - Fixed numerous typos, grammar, and broken links - Removed unimplemented features (Subscriptions in connector.md) Guides section (7 files): - Updated riddlc references to validation-only - Added Synapify links for documentation/code generation - Fixed JDK 21→25, Scala 3.6.x→3.3.x LTS versions - Fixed sbt stage→sbt riddlc/stage commands - Removed outdated Hugo command references Tools section (3 files): - Updated riddlc capabilities to validation-only - Removed hugo command documentation - Updated HOCON config examples for validate command OSS section (2 files): - Fixed enumeration syntax in authoring guide - Updated JDK version requirements Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent bf16d12 commit 2c2b5ab

40 files changed

Lines changed: 381 additions & 332 deletions

NOTEBOOK.md

Lines changed: 124 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,69 @@ All changes pushed to origin/main.
1313

1414
## Work Completed (Recent)
1515

16+
### 2026-01-28: Documentation Editorial Review (Continued)
17+
18+
Comprehensive editorial review of all documentation sections:
19+
20+
- [x] **Concepts Section** (all files reviewed and fixed)
21+
- adaptor.md: Added missing "from", fixed link spacing
22+
- application.md: Complete rewrite - clarified applications are contexts with groups
23+
- case.md: Fixed "too"→"to" typo
24+
- connector.md: Removed unimplemented Subscriptions section
25+
- constant.md: Simplified to reference vital.md
26+
- definition.md: Removed outdated Hugo reference
27+
- description.md: Removed Hugo formatter reference
28+
- element.md: Fixed "Occurs In" and self-reference issues
29+
- entity.md: Fixed actor→user model, Eric Brewer, event-sourced hyphenation
30+
- epic.md: Fixed "an user"→"a user" (3 instances)
31+
- function.md: Fixed wrong handler link
32+
- group.md: Fixed broken Hugo icon shortcode
33+
- handler.md: Fixed Projection→Projector
34+
- interaction.md: Fixed "an Use Case"→"a Use Case"
35+
- message.md: Removed duplicate application line, fixed principal→principle,
36+
Projections→Projectors
37+
- onclause.md: Fixed receipient→recipient, whenthe→when the
38+
- option.md: Fixed link spacing, added missing period
39+
- output.md: Fixed "an user"→"a user"
40+
- processor.md: Complete rewrite explaining abstract concept and concrete types
41+
- projector.md: Fixed projections→projectors
42+
- repository.md: Fixed wrong anchor links (#query→#command, #result→#event)
43+
- sagastep.md: Fixed examples→clauses
44+
- type.md: Fixed Hugo TOC shortcode, RIDDL syntax (any of/one of)
45+
- user.md: Changed Actor→User per Use Cases 2.0 terminology
46+
- vital.md: Fixed truncation, removed Applications, added Streamlets
47+
48+
- [x] **Guides Section** (all files reviewed and fixed)
49+
- authors/index.md: Fixed event-sourced hyphenation, updated doc generation
50+
to reference Synapify
51+
- developers/index.md: Updated JDK 21→25, Scala 3.6.x→3.3.x LTS, noted hugo
52+
migration to Synapify, fixed sbt stage→sbt riddlc/stage
53+
- domain-experts/duties.md: Fixed "context or"→"context of"
54+
- domain-experts/index.md: Replaced Hugo toc-tree shortcode
55+
- domain-experts/relating-to-riddl.md: Fixed Riddl→RIDDL in title
56+
- implementors/index.md: Replaced Hugo toc-tree shortcode
57+
- implementors/ways-to-use-riddl.md: Fixed sbt stage commands, updated HOCON
58+
example for validate-only, removed hugo references, added Synapify links
59+
60+
- [x] **Tools Section** (all files reviewed and fixed)
61+
- index.md: Updated riddlc description to validation-only, added Synapify link
62+
- riddlc/index.md: Fixed sbt stage, removed hugo command sections, updated
63+
HOCON config to use common section, added Synapify links
64+
- riddl-idea-plugin/index.md: Updated JDK 21→25
65+
- riddl-mcp-server/index.md: Clean, no issues
66+
67+
- [x] **OSS Section** (all files reviewed and fixed)
68+
- authoring-riddl.md: Fixed "one of"→"any of" for enumerations (2 instances)
69+
- intellij-plugin/index.md: Updated JDK 21→25
70+
- vscode-extension/index.md: Clean, no issues
71+
- index.md: Clean, no issues
72+
73+
- [x] **MCP Section** (all files reviewed)
74+
- All files clean, no issues found
75+
76+
- [x] **References Section** (reviewed)
77+
- index.md: Clean, no issues
78+
1679
### 2026-01-27: Documentation Editorial Review
1780

1881
Grammar, style, spelling, and accuracy review of documentation:
@@ -34,15 +97,6 @@ Grammar, style, spelling, and accuracy review of documentation:
3497
- Added Hugo remnant removal guidance
3598
- Documented RIDDL syntax validation rules for examples
3699

37-
- [ ] **Concepts Section** (in progress, 3 files uncommitted)
38-
- Fixed Hugo shortcode in index.md
39-
- Fixed icon syntax and grammar in domain.md
40-
- Fixed apostrophe and punctuation in context.md
41-
42-
**Pending for next session:**
43-
- entity.md: "user model" → "actor model", "Erik" → "Eric" Brewer, typos
44-
- Continue through remaining ~85 concept and other files
45-
46100
### 2026-01-26: Synapify User Guide Expansion
47101

48102
Comprehensive expansion of Synapify documentation based on product discussion:
@@ -160,12 +214,7 @@ Completed all 6 phases of the comprehensive documentation improvement:
160214

161215
## In Progress
162216

163-
### Documentation Editorial Review
164-
- Reviewing all docs/ markdown files for grammar, style, accuracy
165-
- Validating RIDDL syntax examples against EBNF grammar
166-
- Removing outdated technology references
167-
- Ensuring consistent tone (light, accessible, technically precise)
168-
- **Next**: Continue with concepts section (entity.md and beyond)
217+
Editorial review complete. All sections reviewed and fixed. Ready to commit.
169218

170219
## Pending Tasks
171220

@@ -180,9 +229,69 @@ Completed all 6 phases of the comprehensive documentation improvement:
180229

181230
| Task | File | Notes |
182231
|------|------|-------|
232+
| RIDDL Pygments lexer | New file | Custom syntax highlighting for code blocks |
183233
| Type examples | `references/language-reference.md` | Add specialized examples |
184234
| Future work review | `future-work/` | Update for current roadmap |
185235
| Quick-start tutorial | New file | Optional getting started guide |
236+
| EBNF grammar validation | `references/ebnf-grammar.md` | See details below |
237+
238+
#### Synapify Generation Configuration Documentation
239+
240+
When documenting Synapify's documentation/code generation features, use this
241+
HOCON configuration example as a starting point (preserved from riddlc hugo):
242+
243+
```hocon
244+
hugo {
245+
input-file = "ReactiveBBQ.riddl"
246+
output-dir = "target/hugo/ReactiveBBQ"
247+
project-name = "Reactive BBQ"
248+
site-title = "Reactive BBQ Generated Specification"
249+
site-description = "Generated specification for the Reactive BBQ application"
250+
site-logo-path = "images/RBBQ.png"
251+
erase-output = true
252+
base-url = "https://bbq.riddl.tech"
253+
source-url = "https://github.com/ossuminc/riddl"
254+
edit-path = "/-/blob/main/src/riddl/ReactiveBBQ"
255+
}
256+
```
257+
258+
#### RIDDL Pygments Lexer Task
259+
260+
Create a custom Pygments lexer for RIDDL syntax highlighting in MkDocs code
261+
blocks. Currently `riddl` fenced code blocks render without syntax coloring.
262+
263+
**Implementation approach:**
264+
1. Create `riddl_lexer.py` with a `RiddlLexer` class extending `RegexLexer`
265+
2. Define token patterns for RIDDL keywords, types, strings, comments, etc.
266+
3. Register the lexer in `mkdocs.yml` or via a plugin
267+
4. Test with existing code examples in documentation
268+
269+
**Key token categories:**
270+
- Keywords: `domain`, `context`, `entity`, `handler`, `type`, `command`,
271+
`event`, `query`, `result`, `is`, `of`, `to`, `from`, `inlet`, `outlet`, etc.
272+
- Predefined types: `String`, `Number`, `Boolean`, `Date`, `Time`, `UUID`, etc.
273+
- Operators: `=`, `:`, `{`, `}`, `(`, `)`, `[`, `]`
274+
- Comments: `//` line comments, `/* */` block comments
275+
- Strings: quoted literals
276+
277+
#### EBNF Grammar Validation Task
278+
279+
The EBNF grammar (`docs/riddl/references/ebnf-grammar.md`) is derived from the
280+
official fastparse grammar in the riddl module and is intended for AI tools to
281+
quickly understand RIDDL syntax. It must accurately reflect the rules accepted
282+
by the fastparse parser.
283+
284+
**Known discrepancies found during editorial review:**
285+
- Missing `=` as alternative to `is` in type definitions
286+
- Missing `:` as alternative to `is` in field definitions (Scala-style syntax)
287+
288+
**Validation approach:**
289+
1. Create a functional parser from the EBNF grammar
290+
2. Run it against all example RIDDL sources in the test suite
291+
3. Compare results with the fastparse parser
292+
4. Revise EBNF until there are no discrepancies
293+
294+
This ensures the EBNF remains a reliable reference for AI-assisted RIDDL work.
186295

187296
## Design Decisions Log
188297

docs/OSS/authoring-riddl.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ Define domain-specific types:
171171
type OrderId is Id(Order)
172172
173173
// Enumeration
174-
type OrderStatus is one of { Pending, Confirmed, Shipped, Delivered, Cancelled }
174+
type OrderStatus is any of { Pending, Confirmed, Shipped, Delivered, Cancelled }
175175
176176
// Aggregation (record)
177177
type Address is {
@@ -182,8 +182,8 @@ type Address is {
182182
country: String
183183
}
184184
185-
// Alternation (union)
186-
type PaymentMethod is one of {
185+
// Enumeration
186+
type PaymentMethod is any of {
187187
CreditCard, DebitCard, BankTransfer, DigitalWallet
188188
}
189189
```

docs/OSS/intellij-plugin/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Marketplace:
3434
### Requirements
3535

3636
- IntelliJ IDEA 2024.1 or later (Community or Ultimate Edition)
37-
- JDK 21 or later
37+
- JDK 25 or later
3838

3939
---
4040

docs/riddl/concepts/adaptor.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ draft: false
55

66
An adaptor's purpose is to _adapt_ one [Context](context.md)
77
to another [Context](context.md). In Domain-Driven Design,
8-
this concept is known as an _anti-corruption layer_ that keeps the
9-
ubiquitous language of one context "corrupting" the language of another
8+
this concept is known as an _anti-corruption layer_ that keeps the
9+
ubiquitous language of one context from "corrupting" the language of another
1010
context. The authors of RIDDL didn't like that term for a variety of reasons
1111
so we have renamed the concept as _adaptor_ in RIDDL. Same idea, different name.
1212

1313
## Message Translation
1414
Adaptors do their work at the level of messages sent between
15-
[Contexts](context.md). This is done using one or
16-
more [Handlers]( handler.md ). Each handler specifies
17-
how messages are translated into other messages and forwarded to the target
18-
[context](context.md).
15+
[Contexts](context.md). This is done using one or
16+
more [Handlers](handler.md). Each handler specifies
17+
how messages are translated into other messages and forwarded to the target
18+
[context](context.md).
1919

2020
## Target Context
2121
Adaptors are only definable within a containing

docs/riddl/concepts/application.md

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,44 @@ title: "Application"
33
draft: false
44
---
55

6-
An application in RIDDL is represented by a [Context](context.md) that has
7-
[Group](group.md)s in its definition. represents an interface
8-
portion of a system where an
9-
user (human or machine) initiates an action on the system. Applications
10-
only define the net result of the interaction between the user and the
11-
application. They are abstract on purpose. That is, there is nothing in RIDDL
12-
that defines how information is provided to a user nor received from a user.
13-
This gives free latitude to the user interface
14-
designer to manage the entire interaction between human and machine.
15-
16-
There are also no assumptions about the technology used for the
17-
implementation of an application. RIDDL's notion of an application is general
18-
and abstract, but they can be implemented as any of the following:
6+
An application in RIDDL is not a separate definition type—it is simply a
7+
[Context](context.md) that contains [Group](group.md)s. When a context has
8+
groups, it represents an interface portion of a system where a user (human
9+
or machine) initiates actions.
10+
11+
Applications only define the net result of the interaction between the user
12+
and the system. They are abstract on purpose. There is nothing in RIDDL that
13+
defines how information is provided to a user or received from a user. This
14+
gives free latitude to the user interface designer to manage the entire
15+
interaction between human and machine.
16+
17+
There are also no assumptions about the technology used for implementation.
18+
RIDDL's notion of an application is general and abstract, but can be
19+
implemented as any of the following:
1920

2021
* Mobile Application On Any Platform
2122
* Web Application
2223
* Native Operating System Application (graphical or command line)
2324
* Interactive Voice Recognition
2425
* Virtual Reality with Haptics
25-
* and other things yet to be invented.
26+
* and other things yet to be invented
2627

27-
This means a RIDDL application specification can be used as the basis for
28-
creating multiple implementations of the specification using a variety of
29-
technologies.
28+
This means a RIDDL application specification can be used as the basis for
29+
creating multiple implementations using a variety of technologies.
3030

3131
## Groups
32-
Applications abstractly design a user interface by containing a set of
33-
[groups](group.md). Groups can be nested which allows them
34-
to define the structure of a user interface.
32+
33+
Applications abstractly design a user interface by containing a set of
34+
[groups](group.md). Groups can be nested, which allows them to define the
35+
hierarchical structure of a user interface.
3536

3637
## Handlers
37-
Applications have message [handlers](handler.md) like many other RIDDL definitions.
38-
However, application handlers only receive their messages from [actors](user.md),
39-
unlike other handlers. Typically, the handling of messages in handlers will
40-
ultimately send further messages to other components, like a [context](context.md) or
41-
[entity](entity.md)
42-
43-
## Occurs In
44-
* [Domain](domain.md)
45-
46-
## Contains
47-
* [Type](type.md)
48-
* [Group](element.md)
49-
* [Handler](handler.md)
38+
39+
Application contexts have message [handlers](handler.md) like other contexts.
40+
These handlers receive messages from [users](user.md) and typically forward
41+
messages to other components like [entities](entity.md).
42+
43+
## See Also
44+
45+
* [Context](context.md) — The definition type used to model applications
46+
* [Group](group.md) — UI structure within application contexts

docs/riddl/concepts/case.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ The following table shows the pairings recognized:
2222
| subscribe | any | pipe | Subscribe to a pipe |
2323
| saga | any | saga | Initiate a saga |
2424
| select | user | element | Select an item from application element |
25-
| provide | user | element | Provide input data too application |
25+
| provide | user | element | Provide input data to application |
2626
| present | user | element | Cause an application to present info |
27-
27+
2828

2929
## Occurs In
3030
* [Epic](epic.md)

docs/riddl/concepts/connector.md

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,29 +80,17 @@ connecting two pipes together. Producers provide the data, consumers consume
8080
the data. Sometimes we call producers *sources* because they originate the data.
8181
Sometimes we call consumers *sinks* because they terminate the data.
8282

83-
{{< mermaid align="left" >}}
83+
```mermaid
8484
graph LR;
8585
Producers --> P{{Pipe}} --> Consumers
8686
Source --> P1{{Pipe 1}} --> Flow --> P2{{Pipe 2}} --> Sink
87-
{{< /mermaid >}}
87+
```
8888

8989
Pipes may have multiple publishers (writers of data to the pipe) and multiple
9090
consumers (readers of data from the pipe). In fact, because of the
9191
_partitioned consumption_ principle, there can be multiple groups of consumers,
9292
each group getting each data item from the pipe.
9393

94-
## Subscriptions
95-
96-
{{< hint type=warning icon=gdoc_dangerous title="Not Implemented" >}}
97-
This feature is not implemented as of 0.16.1
98-
{{< /hint >}}
99-
100-
When a pipe has multiple consumers, they are organized into subscriptions.
101-
Each subscription gets every datum the pipe carries. Consumers attach to a
102-
subscription and there is generally one consumer per partition of the
103-
subscription. Sometimes subscriptions are known as *consumer groups* as is the
104-
case for Kafka.
105-
10694
## Occurs In
10795

10896
* [Streamlets](streamlet.md)

docs/riddl/concepts/constant.md

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,11 @@ draft: false
44
---
55

66
A constant is simply a definition that names an unchanging value. This is
7-
useful for modeling technical domains that utilize constant values
7+
useful for modeling technical domains that utilize constant values.
88

99
## Occurs In
1010

11-
All [vital](vital.md) definitions may contain constants.
12-
13-
* [Adaptors](adaptor.md),
14-
* [Applications](application.md),
15-
* [Contexts](context.md),
16-
* [Domains](domain.md),
17-
* [Functions](function.md),
18-
* [Entities](entity.md),
19-
* [Epic](epic.md).
20-
* [Processors](processor.md),
21-
* [Projectors](projector.md),
22-
* [Repositories](repository.md)
23-
* [Sagas](saga.md), and
11+
All [vital definitions](vital.md) may contain constants.
2412

2513
## Contains
2614

docs/riddl/concepts/definition.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ All definitions have some common attributes:
2020
the documentation output and the glossary.
2121
* _description_: A block of
2222
[Markdown](https://www.markdownguide.org/getting-started/) that
23-
fully describes the definition. All the facilities provided by the
24-
[hugo-geekdoc](https://geekdocs.de/) template for hugo are supported.
23+
fully describes the definition.
2524

2625
These attributes merely provide supplemental information about the
2726
definition but are not part of the definition.

docs/riddl/concepts/description.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ draft: false
44
---
55

66
Descriptions describe definitions. You can add a description to any kind of
7-
definition. Descriptions are written in Markdown format and can include any
8-
of the capabilities provided by the
9-
[GeekDoc hugo formatter](https://geekdocs.de/usage/getting-started/)
10-
including [mermaid](https://mermaid-js.github.io/mermaid/#/README)
11-
based diagrams. Descriptions can also be provided in separate files and via
7+
definition. Descriptions are written in Markdown format and can include
8+
[mermaid](https://mermaid-js.github.io/mermaid/#/README) diagrams and other
9+
Markdown features supported by the documentation renderer. Descriptions can also be provided in separate files and via
1210
public (no password required) HTTP URLs.
1311

1412
## Occurs On

0 commit comments

Comments
 (0)