• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ossuminc / riddl / 28683750100
65%

Build:
DEFAULT BRANCH: main
Ran 03 Jul 2026 09:19PM UTC
Jobs 1
Files 140
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

03 Jul 2026 09:08PM UTC coverage: 65.248% (+0.5%) from 64.721%
28683750100

push

reid-spencer
Add compareRoots — Root-AST structural similarity API

Adds a deterministic, model-free similarity/diff API for comparing two
RIDDL Root ASTs, requested by ossum-gen for its compositional-fidelity
benchmark (regression guard: does a model generated from a README have
the same rough shape as the hand-authored corpus model?).

New in passes/analysis/RootComparison.scala (Native-safe, no regex or
java formatting):
- compareRoots(a, b) -> RootSimilarity: per-kind counts (Map[String,
  (Int,Int)]), fuzzy matched/unmatched name pairs per kind, structural
  metrics (max depth, breadth), and an overall weighted score in
  [0.0, 1.0] (exactly 1.0 for identical roots).
- similarityMarkdown(a, b): human/AI-readable report.
- Both surfaced on the RiddlLib trait and object (additive only; no
  existing signature changed).

Counts/names/breadth are taken from OutlinePass (records containers AND
leaves, so leaf kinds such as Invariant/Constant are included, and
counts stay consistent with the names being matched); depth is taken
from StatsPass.maximum_depth. Structural wrappers (Root, Nebula) are
excluded so breadth reflects real top-level containers. Matching is on
kind + fuzzy name (lowercase-alphanumeric normalization, greedy best
Levenshtein-ratio pairing) — location- and case-independent — never on
Definition.equals/hashCode (which include loc).

Scoring: per kind 0.6*countComparability + 0.4*nameOverlap; overall
0.7*weightedMean + 0.3*countVectorCosine, weighting DDD-structural
kinds above incidental ones.

10 tests (JVM + Native): identical=1.0, empty=1.0, counts match a manual
StatsPass reading, breadth counts domains not Root, depth matches
StatsPass, case/location independence, renamed-but-equal stays high,
ordering identical > case-only > renamed > unrelated, markdown render,
and a real-model pair (dokn vs rbbq).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

147 of 156 new or added lines in 1 file covered. (94.23%)

39 existing lines in 20 files now uncovered.

7679 of 11769 relevant lines covered (65.25%)

0.65 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
94.23
passes/shared/src/main/scala/com/ossuminc/riddl/passes/analysis/RootComparison.scala

Coverage Regressions

Lines Coverage ∆ File
6
77.06
-0.24% passes/shared/src/main/scala/com/ossuminc/riddl/passes/validate/ValidationPass.scala
4
60.51
-0.42% language/shared/src/main/scala/com/ossuminc/riddl/language/AST.scala
4
72.44
-0.63% passes/shared/src/main/scala/com/ossuminc/riddl/passes/resolve/ResolutionPass.scala
3
91.1
-1.27% passes/shared/src/main/scala/com/ossuminc/riddl/passes/stats/StatsPass.scala
2
57.54
-0.07% language/shared/src/main/scala/com/ossuminc/riddl/language/bast/BASTReader.scala
2
59.16
-0.18% language/shared/src/main/scala/com/ossuminc/riddl/language/bast/BASTWriter.scala
2
74.62
3.08% passes/shared/src/main/scala/com/ossuminc/riddl/passes/analysis/AnalysisResult.scala
2
80.65
-6.45% passes/shared/src/main/scala/com/ossuminc/riddl/passes/prettify/PrettifyState.scala
2
60.12
-1.19% passes/shared/src/main/scala/com/ossuminc/riddl/passes/validate/BasicValidation.scala
2
90.65
-1.44% passes/shared/src/main/scala/com/ossuminc/riddl/passes/validate/StreamingValidation.scala
1
87.67
-1.37% language/shared/src/main/scala/com/ossuminc/riddl/language/Finder.scala
1
81.78
0.44% language/shared/src/main/scala/com/ossuminc/riddl/language/Messages.scala
1
60.82
0.0% language/shared/src/main/scala/com/ossuminc/riddl/language/parsing/ExtensibleTopLevelParser.scala
1
80.0
-20.0% language/shared/src/main/scala/com/ossuminc/riddl/language/parsing/RootParser.scala
1
31.25
0.0% passes/jvm-native/src/main/scala/com/ossuminc/riddl/passes/translate/TranslatingState.scala
1
19.59
-1.03% passes/shared/src/main/scala/com/ossuminc/riddl/passes/analysis/DependencyAnalysisPass.scala
1
75.26
0.0% passes/shared/src/main/scala/com/ossuminc/riddl/passes/diagrams/DiagramsPass.scala
1
68.14
-0.34% passes/shared/src/main/scala/com/ossuminc/riddl/passes/prettify/PrettifyVisitor.scala
1
62.76
0.0% passes/shared/src/main/scala/com/ossuminc/riddl/passes/prettify/RiddlFileEmitter.scala
1
72.5
-2.5% passes/shared/src/main/scala/com/ossuminc/riddl/passes/symbols/SymbolsPass.scala
Jobs
ID Job ID Ran Files Coverage
1 28683750100.1 03 Jul 2026 09:19PM UTC 140
65.25
Source Files on build 28683750100
  • Tree
  • List 140
  • Changed 25
  • Source Changed 0
  • Coverage Changed 25
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 802867ba on github
  • Prev Build on main (#28611035274)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc