Adaptech/les
59.4
Adequate · 21 September 2026
3.1k
lines of production code
Go
primary language
4
measurements over time
What this system is
Features
Add EML compliance test suite for user registration and validation
Added a new compliance test suite for the Event Markup Language (EML) specification, located in the cmd/compliance-test directory. This includes a Go-based test runner (main.go) and associated YAML definitions that verify the behavior of a generated API, specifically testing user registration, validation, and deletion workflows. The test suite also includes a reference implementation for EMD (Event Markdown) to ensure compatibility with the EML specification.
cmd/compliance-test · high confidence
Add TODO List sample with event sourcing schema and eventstorming
A new 'TODO List' sample has been added to the repository, providing a complete event-sourcing example. This includes an 'Eventsourcing.eml.yaml' file that defines the domain model (User, Todo), commands (Register, AddTODOListItem, MarkComplete, DeleteItem), events, and readmodels (UserLookup, TODOList). Additionally, an 'Eventstorming.emd' file is included to illustrate the event storming process for the TODO list feature.
samples/todolist · high confidence
Added shopping cart sample with event-sourcing model
A new 'Shopping Cart' sample was added to the codebase, providing a reference implementation for an online ordering system. This includes a generated event-sourcing model (.generated.eventsourcing.eml.yaml) defining streams for Orders, Payments, and Inventory, alongside an event-storming diagram (Eventstorming.emd) and a README explaining the example.
samples/shopping · high confidence
Automated release and installation instructions generation
The release tooling now includes a Makefile and associated shell scripts to automate the build and publishing process. Users can generate installation instructions for Linux, macOS, and Windows via the new \make-installation-instructions.sh\ script, and the \make github-release\ target automates uploading the compiled \les\ and \les-node\ binaries to GitHub releases for each platform.
tools · high confidence
Introduce les-viz tool for generating GraphViz diagrams from Event Markdown
The les-viz command-line utility is introduced to convert Event Markdown (.emd) files into GraphViz digraphs, enabling users to visualize event storming diagrams. The tool includes a Dockerfile for containerized execution, a .gitignore configuration, and Go source files (main.go, emdToGraphVizDigraph.go, fileio.go) that handle file reading and GraphViz output generation. The release is tagged as version 0.10.7-alpha.
cmd/les-viz · high confidence
Behavioural changes
9 commits (3 fixes) modifying releases
A change to existing behaviour in releases — 9 commits (3 fixs), 21 files.
releases · medium confidence · unverified
Corrected casing for stream and aggregate IDs in generated EML
The conversion logic for generating EML (Event Model) now uses a new helper function to produce consistent camelCase IDs (e.g., 'timesheetHoursId') instead of the previous all-lowercase format. This change ensures that stream names and aggregate IDs in the output match the expected casing, and the associated tests have been updated to reflect these corrected identifiers.
pkg/convert · medium confidence
EML validation rules for commands, events, and read models
The EML (Event Modeling Language) validation logic has been expanded to enforce stricter structural and behavioral constraints. Commands now require valid preconditions (MustHaveHappened, MustNotHaveHappened) that must reference existing events in the stream. Events must be the result of a command (postcondition) and must include an aggregate/stream ID property. Read models are now validated to ensure their keys correspond to actual event properties. These changes introduce new validation errors like UnknownCommandPreconditionType, EventMustBeCommandPostcondition, and ReadModelKeyDoesNotExist.
pkg/eml · medium confidence
Improved parsing of EMD properties with trailing commas and spaces
The EMD parser now tolerates trailing commas and extra whitespace in property lists for commands, events, and documents. This prevents validation errors when users enter properties like 'userId, ' or 'userId, ' with trailing commas or spaces. Additionally, the parser now supports commands with parameters specified without the '//' separator (e.g., 'command -\> param1, param2'), making the input format more user-friendly. A new file, graphViz.go, was added to handle the conversion of EMD data into GraphViz diagrams, supporting the visualization of event storming models.
pkg/emd · high confidence
Node.js code generator: Adds event counting and command preconditions
The Node.js code generator now tracks event occurrences in the generated aggregate classes, enabling new command preconditions (MustHaveHappened, MustNotHaveHappened) that validate event history before execution. Additionally, generated controllers now use try/catch blocks for better error handling, and read model handlers are refactored to use a new createOrUpdate pattern that handles both creation and updates.
pkg/eml/generate · high confidence
Refined user domain model and file naming
The user sample has been refocused from a generic 'Subscriptions' context to a specific 'User Registration' domain. The underlying event-sourcing schema (Eventsourcing.eml.yaml) now defines user-centric commands (RegisterUser, MarkAsAuthenticated, DeleteUser) and events (UserRegistered, UserAuthenticated, UserDeleted) with appropriate preconditions. Additionally, the default EML and EMD file names have been updated to be more descriptive, and the .gitignore configuration has been adjusted to reflect the new file naming convention.
samples/users · medium confidence
Renamed EventStorming sample and updated generated file patterns
The EventStorming sample file has been renamed from Eventmarkdown.emd to Eventstorming.emd to better reflect its contents, and a typo in the event name has been corrected. Additionally, the .gitignore file has been updated to ignore the newly named .generated.eventsourcing.eml.yaml file.
samples/veggiesgalore · high confidence
Renamed and restructured email sample files to reflect domain concepts
The email sample files have been renamed to better reflect their content: \Eventmarkdown.emd\ is now \Eventstorming.emd\, and \Emlfile.yaml\ is now \Eventstorming.eml.yaml\. The YAML file was also restructured to move the User stream and its associated commands (Register, LogIn) and events (UserRegistered, UserAuthenticated) from the bottom of the file to the top, aligning with the Eventstorming domain model. Additionally, the \.gitignore\ file was updated to ignore \.generated.eventsourcing.eml.yaml\ instead of \.generated.eml.yaml\.
samples/email · medium confidence
Renamed and updated Eventstorming sample files to reflect domain terminology
The Eventstorming sample files have been renamed from 'Eventmarkdown.emd' and 'Emlfile.yaml' to 'Eventstorming.emd' and 'Eventstorming.eml.yaml' respectively, aligning the file names with the content. The underlying domain model has been updated to use 'Administrator' instead of 'Administer' (e.g., 'AdministratorRegistered' event, 'Administrator' stream), and the 'Administer' stream has been renamed to 'Administrator'. Additionally, the .gitignore file has been updated to ignore the new generated file '.generated.eventsourcing.eml.yaml' instead of the old '.generated.eml.yaml'.
samples/consentaur · high confidence
Renamed event files and added preconditions to inventory commands
The sample files in the helloworld and inventory directories have been renamed to better reflect their content (e.g., Eventmarkdown.emd to Eventstorming.emd). In the inventory sample's Eventstorming.eml.yaml, a new 'RemoveItemFromInventory' command has been added alongside existing commands, and 'Preconditions' fields have been introduced for various commands. Additionally, the .gitignore files have been updated to exclude the new .generated.eventsourcing.eml.yaml files.
samples/helloworld · medium confidence
Renamed subscription sample and updated default file names
The subscription sample file has been renamed from Eventmarkdown.emd to Eventstorming.emd. Additionally, the default file names for EML and EMD outputs have been updated to better reflect their contents, and the .gitignore configuration has been adjusted to exclude the new .generated.eventsourcing.eml.yaml file.
samples/subscriptions · medium confidence
Timesheets sample refactored and standardized
The timesheets sample has been refactored to improve clarity and compliance. The generated EML file was removed, and the primary EML definition was renamed from Emlfile.yaml to Eventsourcing.eml.yaml, with all commands now explicitly declaring empty Preconditions. The event subscription order in the Timesheets read model was adjusted so that TimesheetEntryLogged is subscribed to before the other events. Additionally, the Eventmarkdown.emd file was renamed to Eventstorming.emd, and the .gitignore was updated to exclude the new generated file.
samples/timesheets · high confidence
Updated default file naming and improved validation logic
The default output file names for EMD and EML conversions have been changed to be more descriptive (e.g., 'Eventstorming.emd' instead of 'Eventmarkdown.emd'). The validation logic has been refactored: the \validateFile\ function was renamed to \isFileValidEmdOrEml\ and now returns a boolean to indicate validity, allowing the \validate\ command to exit with an error code if validation fails. Additionally, the \convert\ command now generates output files with a \.eml.yaml\ extension based on the input file name.
cmd/les · high confidence
les-node updates template source and default input file
The les-node command now fetches the latest template release from GitHub instead of a static Azure URL, and the default EML input file has been renamed from 'Emlfile.yaml' to 'Eventstorming.eml.yaml'.
cmd/les-node · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 55 → 59 (+4.7)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 82 → 87 (+5.0)
- Architecture 100 → 100 (+0.0)
- Maturity 41 → 44 (+3.0)
- Readiness 46 → 58 (+12.5)
- Security 94 → 86 (-7.9)
Resolved (15)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- Duplicated block (11 lines × 2) (pkg/eml/validateCommands.go)
- Duplicated block (13 lines × 2) (cmd/les-node/getDirectories.go)
- Duplicated block (13 lines × 2) (cmd/les/checkIfFileContainsValidEml.go)
- Duplicated block (13 lines × 3) (cmd/les-node/fileio.go)
- Duplicated block (21 lines × 2) (cmd/les/checkIfFileContainsValidEml.go)
- Duplicated block (9 lines × 2) (pkg/eml/validateCommands.go)
- Medium IaC: DS-0001 (cmd/les-node/Dockerfile)
- Medium IaC: DS-0001 (cmd/les-viz/Dockerfile)
- Medium IaC: DS-0001 (cmd/les/Dockerfile)
- No exposed public API
- Scanner failed to run — not a clean result
- Test reliability not included
- dormant codebase — no living knowledge left to concentrate
New (30)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (11 lines × 3) (cmd/les-viz/fileio.go)
- Duplicated block (12 lines × 2) (pkg/eml/validateCommands.go)
- Duplicated block (12 lines × 3) (cmd/les-node/fileio.go)
- Duplicated block (13 lines × 3) (cmd/les-node/fileio.go)
- Duplicated block (16 lines × 2) (cmd/les-node/checkIfFileContainsValidEml.go)
- Duplicated block (18 lines × 2) (cmd/les-node/getDirectories.go)
- Duplicated block (35 lines × 2) (cmd/les-node/checkIfFileContainsValidEml.go)
- Duplicated block (7 lines × 3) (cmd/les-node/fileio.go)
- Duplicated block (8 lines × 2) (pkg/convert/emdToEml.go)
- Duplicated block (8 lines × 2) (pkg/eml/generate/nodejs/commandjs.go)
- Duplicated block (8 lines × 3) (pkg/eml/generate/nodejs/commandjs.go)
- Duplicated block (8–9 lines × 2) (pkg/eml/validateCommands.go)
- Duplicated block (9 lines × 2) (pkg/convert/emdToEml.go)
- Duplicated block (9 lines × 2) (pkg/emd/parseDocument.go)
- High: security finding (details withheld)
- Medium IaC: DS-0001 (cmd/les-node/Dockerfile)
- Medium IaC: DS-0001 (cmd/les-node/Dockerfile)
- Medium IaC: DS-0001 (cmd/les-viz/Dockerfile)
- …and 10 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Adaptech/les was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d05ecc4fae65fa96ae297384f24b837154dbdfc1 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.