Release 1.7.0: Analysis passes, validation enhancements, diagram extensions#720
Merged
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix three bugs: SagaStep checked doStatements twice instead of undoStatements for revert validation, SagaStep shape check compared getClass of identical types (always true), and validateState called checkMetadata twice. Add validation for previously unvalidated definitions: Schema (kind vs structure compatibility, data/link/index ref resolution) and Relationship (processor ref resolution). Add semantic validations: streamlet shape vs inlet/outlet count, handler requirements for streamlets/adaptors/repositories, adaptor empty handler warning, projector repository ref resolution, epic/usecase user story user ref resolution, and function input/output type expression validation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three new CollectingPass subclasses in passes/shared/.../analysis/: - MessageFlowPass: builds directed message flow graph (producers, consumers, message types, flow mechanisms) - EntityLifecyclePass: extracts entity state machines (states, transitions, initial/terminal states) - DependencyAnalysisPass: builds cross-context and cross-entity dependency graphs (contextDeps, entityDeps, typeDeps, adaptorBridges) Each requires ResolutionPass and runs via Pass.standardPasses :+ XxxPass.creator(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… and streaming checks ValidationOutput: Add HandlerCompleteness and BehaviorCategory enum to classify handlers as Executable, PromptOnly, or Empty. ValidationPass: Collect handler-parent mappings during processing and classify handlers in postProcess(). Add new validations for: - Entity handler command/query handling - FSM entity morph/become statement check - Repository handler command/query handling - Projector handler event handling - Adaptor message type cross-referencing - Schema relational link validation - SagaStep do/undo compensation symmetry DefinitionValidation: Add RecognizedOptions registry (~25 options) with OptionSpec for name, arity, and parent type validation. Unrecognized options produce StyleWarning (not Error) to keep extensible. StreamingValidation: Implement checkStreamingUsage with isolated streamlet detection and source-to-sink reachability via BFS. Update everything.check and saga.check with expected new warnings. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Populate DataFlowDiagramData with resolved connections (outlet→inlet via connectors), streamlets, and message types per context. Add DomainDiagramData case class with processors, subdomains, contexts, and epics. Add DataFlowConnection case class for resolved edges. Replace DomainDiagramData type alias with proper case class. Add domainDiagrams map to DiagramsPassOutput. Update DiagramsPassTest to expect non-empty dataFlowDiagrams. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unnecessary braces in wildcard import (AST.{*} → AST.*)
- Simplify unnecessary case pattern match to plain lambda
- Add private modifier to setOfStatements (unused outside trait)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Classify statements into prompt (prompt "...") and executable (tell, send, morph, set, become, error, code) categories. Add numPromptStatements and numExecutableStatements fields to DefinitionStats and KindStats. Refactor computeNumStatements into computeStatementCounts returning a StatementCounts case class that accumulates totals, prompts, and executables. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
RiddlLib (shared trait + object): Add getHandlerCompleteness(), getMessageFlow(), and getEntityLifecycles() methods. Each parses source, runs the appropriate pass pipeline, and returns typed results. RiddlAPI (JS facade): Add corresponding @JSExport methods that delegate to RiddlLib and convert results to plain JS objects for TypeScript consumers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CLAUDE.md: Add notes 38-42 covering analysis passes, RecognizedOptions registry, RiddlLib analysis API, HandlerCompleteness, and downstream integration plans. NOTEBOOK.md: Document February 8 session work (phases 4-5), update changes-since-release section, reorder release history chronologically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
scala-steward
pushed a commit
to scala-steward/riddl-1
that referenced
this pull request
Feb 20, 2026
Release 1.7.0: Analysis passes, validation enhancements, diagram extensions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
passes/shared/.../analysis/getHandlerCompleteness(),getMessageFlow(),getEntityLifecycles()methods on shared trait + JS facadeAll changes are additive (no breaking API changes). 734 tests, 0 failures.
Test plan
sbt clean cJVMcompiles successfullysbt tJVM— 734 tests pass, 0 failures🤖 Generated with Claude Code