Releases: mmmnt/mmmnt
Release list
v1.0.0 — Moment is stable
Moment is functionally complete. The full pipeline works end-to-end: specification → parse → derive → generate → emit. All 10 packages are published on npm under @mmmnt.
Packages
| Package | Description |
|---|---|
@mmmnt/core |
Langium parser, AST-to-IR transform, manifest management |
@mmmnt/derive |
Test topology, simulation scenarios, event catalog, impact analysis, saga state machines, topology emitter |
@mmmnt/emit-ts |
TypeScript types, aggregates, test scaffolds |
@mmmnt/generate |
Gherkin features, specification docs, AsyncAPI, Cucumber JSON |
@mmmnt/harness |
TestRunner (structural validation for payload, saga, policy), EventReplayEngine, ContractAssertionEngine |
@mmmnt/schema |
Schema lifecycle governance, codex rule evaluation |
@mmmnt/sync |
AST diff engine, cascade reconciliation, Sift event watching |
@mmmnt/viz |
Context map + timeline rendering, VizDataEnvelope |
@mmmnt/cli |
20+ commands including simulate --all --out-dir |
@mmmnt/mcp |
Model Context Protocol server (7 tools, fully offline) |
Key capabilities since v0.1.0-m6
Structural validation (ADR-030, MMNT-4369)
- TestRunner dispatches on
assertionTypefor saga, policy-chain, and payload test cases - Saga: trigger event existence, state adjacency, compensation/timeout validation
- Policy: trigger event + chainsTo command existence in IR
- Vet-clinic: 29/29, TicketWave: 152/152, ordering: 2/2
TopologyEmitter (ADR-023 §2, MMNT-4480)
- Per-flow
SimulationTopologywith lanes, frames, connections, eventRouting, branchPredicates, contextMap - Command routing via
SimProcess.*keys - Saga
earlyExitStatesfor happy path preemption - Node IDs aligned between scenarios and topologies
Facet output pipeline
moment simulate --all --out-dirproduces per-flow topology files, individual scenario files,manifest.json, and ADR-029 artifacts (event-catalog.json, impact-analysis.json, saga-state-machines.json, asyncapi.yaml)- Manifest groups scenarios under flows with topology references
- Scenarios carry
flowId/flowNamefor manifest-free topology resolution - Pre-commit hook auto-regenerates on
.momentfile changes - CI staleness check verifies committed files match spec
TicketWave consumer example
- 7 bounded contexts, 4 flows, 50 scenarios, 561 events
- Full generated output in
examples/ticketwave/facet/
CLI enhancements
moment simulate --all— all branch combinations + negative scenariosmoment simulate --out-dir— per-flow topology + scenario filesmoment cucumber-json— Cucumber JSON for Xray import
Infrastructure
- Langium 4, ESLint 10, Astro 6, Vite 7
LaneDefinitionpreserved in IR (FlowDefinition.lanes)- Dependabot CI fixes, Vercel auto-deploy restricted to main
- Node
>= 20.19.0engines constraint
ADRs authored
- ADR-030: Structural Validation of Saga and Policy Test Cases in the Test Harness
- FACET-ADR-018: Behavioral Validation of Sagas and Policies — Moment Structural Guarantee Adoption
Test results
- 1050 unit tests passing
- 21 E2E tests (63 assertions)
- 33 infra tests
- 95.17% branch coverage on
@mmmnt/core
Moment v0.1.0-m6 — Milestone 6: Application Layer + Release
First public release of the Moment domain specification language and implementation toolchain. Completes the full vertical stack from DSL grammar through CLI, MCP server, and npm publishing.
This release spans Milestones 3 through 6 — the domain layer (M3), test harness (M4), implementation sync (M5), and application layer (M6) are all delivered.
What is Moment?
Moment is a domain specification language (DSL) and implementation toolchain for domain-driven design. You describe your domain in .moment files — bounded contexts, aggregates, commands, events, policies, sagas, and temporal flows — and Moment generates TypeScript types, Gherkin BDD scenarios, specification documents, AsyncAPI contracts, and more.
Moment works standalone with no external dependencies. Hand-author .moment files and run the full pipeline offline. For Complai users, Moment also integrates with Sift (AI-driven domain analysis) via JSONL event stream import.
Milestone 3 — Domain Layer (Foundation)
@mmmnt/core
- Langium-based grammar for the
.momentDSL - Parser producing IntermediateRepresentation (IR) from spec files
- Unified
.momentfiles — spatial (contexts) + temporal (flows) in one file (ADR-027) - Field deprecation modifier:
[deprecated "reason" -> "replacement"] - Context descriptions
- Validation rules V1-V12
- Sift specification importer (ADR-017)
- Manifest scaffolder and updater
@mmmnt/derive
- Test suite topology derivation with crossing assertions
- Multi-scenario simulation (8 path combinations from branch points)
- Saga state transitions injected into simulations
- Negative scenario derivation from precondition violations
- Event catalog with producer/consumer/temporal tracing
- Impact analysis (command→event→policy→saga dependency graph)
- Saga state machine generation with reachability analysis
@mmmnt/emit-ts
- TypeScript interface generation from IR
- Aggregate root interfaces with
@deprecatedJSDoc stubs - Event union types per context
- Root barrel exports
- Test scaffold generation
- Dry-run mode for file listing without writing
@mmmnt/generate
- Gherkin BDD scenario generation with Rule blocks per context
- Background blocks with shared preconditions
- Saga transition and compensation scenarios
- Terminal branch scenarios with
@terminal @failure-pathtags - Specification document generation with Mermaid diagrams (context map + sequence)
- Data glossary with value object field tables
- AsyncAPI 3.0 YAML generation from crossing contracts
- Deprecated field indicators in all output formats
Milestone 4 — Test Harness & Visualization
@mmmnt/harness
- TestRunner orchestrating derived test suite execution
- EventReplayEngine for temporal event sequence replay
- ContractAssertionEngine for crossing contract validation
- Traceability mapping from test results to specification assertions
@mmmnt/viz
- Context map rendering with node/edge layout
- Flow timeline rendering with moment entries
- VizEmitter producing VizDataEnvelope for visualization clients
- File watcher integration for live updates
Milestone 5 — Implementation Sync & Schema Governance
@mmmnt/sync
- ASTDiffEngine for detecting drift between specification and implementation
- SyncState aggregate with proposal accept/reject lifecycle
- PushFlowSaga (Idle→Diffing→Proposing→AwaitingConfirmation→Recording→Complete)
- ReconciliationState with cascade classification (Category 1/2/3)
- LocalGitArtifactStore for reading implementation files from git
- SiftEventStreamReader — reads
.domain/*.jsonlJSONL event files (ADR-028) - 8 Sift Published Language event types (BoundedContextDefined, AggregateAdded, CommandDefined, EventDefined, ValueObjectDefined, InvariantDefined, PolicyDefined, SagaDefined)
- Layered credential resolution (env, gh CLI, OAuth device flow)
@mmmnt/schema
- SchemaRegistry with four-phase lifecycle (Active→Deprecated→EndOfLife→Removed)
- ConsumptionManifest tracking which consumers use which event fields
- CodexRuleEvaluator for schema governance policy enforcement
- Field-level deprecation integrated with DSL grammar
Milestone 6 — Application Layer + Release
@mmmnt/cli (16 commands)
| Command | Description |
|---|---|
moment init |
Scaffold new project with .manifest.yaml |
moment parse |
Parse and validate .moment files |
moment watch |
Watch for file changes, auto-regenerate |
moment derive |
Derive test topology from specification |
moment generate |
Generate Gherkin + docs + TypeScript |
moment emit-ts |
Generate TypeScript types only |
moment test |
Run derived test suites |
moment viz |
Generate visualization data |
moment simulate |
Run simulation scenarios |
moment sync status |
Show implementation drift report |
moment sync propose |
Generate implementation change proposals |
moment sync accept |
Accept proposals by ID or --all |
moment schema status |
Show schema lifecycle table |
moment lint |
Cross-context diagnostic orchestrator |
moment import --from-sift |
Import Sift JSONL event streams |
moment status |
Unified project status dashboard |
moment reconcile |
Cascade reconciliation (APPLIED/DRIFT/BREAKING) |
moment auth login/status/logout |
GitHub OAuth device flow |
@mmmnt/mcp (7 MCP tools)
| Tool | Category | Description |
|---|---|---|
moment_validate |
Read | Parse and validate .moment files |
moment_status |
Read | Unified project status |
moment_viz |
Read | Generate visualization data |
moment_get_events |
Read | Read local event signals |
moment_import |
Write | Import Sift JSONL event streams |
moment_emit_ts |
Write | Generate TypeScript with dry-run |
moment_reconcile |
Write | Cascade reconciliation |
Configured for Claude Code, Claude Desktop, VS Code Copilot, and Cursor.
Release Infrastructure
- esbuild single-file CLI bundle (1.9MB)
- E2E test harness: 21 tests, 63 assertions
- Changesets for monorepo versioning (fixed across all 10 packages)
- GitHub Actions release workflow with OIDC trusted publishers
- npm provenance attestation via Sigstore
Architecture Decisions
| ADR | Decision |
|---|---|
| ADR-017 | Sift-to-Moment import translation |
| ADR-022 | Cascade execution architecture |
| ADR-027 | Unified .moment file format |
| ADR-028 | Sift JSONL event stream architecture |
Quality
- Build: 11/11 turbo tasks
- Lint: 10/10 packages, zero warnings
- Tests: all coverage thresholds met (90%+ core/derive/generate, 75%+ CLI/MCP)
- E2E: 21/21 harness tests, 63/63 assertions
- MCP: 57 tests (45 unit + 12 integration)
Install
# CLI
npm install -g @mmmnt/cli
moment init
moment parse my-domain.moment
# MCP Server
npx @mmmnt/mcp
# Library
npm install @mmmnt/core @mmmnt/deriveLicense
FSL-1.1-Apache-2.0
v0.1.0-m3 — Milestone 3: Derivation + Generation Pipeline
v0.1.0-m3 — Milestone 3: Derivation + Generation Pipeline
M3 delivers the complete derive → generate → emit-ts pipeline across three new packages (@mmmnt/derive, @mmmnt/generate, @mmmnt/emit-ts).
15 stories across 3 epics, 79 commits, PRs #30–#46.
Epic 3.1: Derivation (@mmmnt/derive)
- TestSuiteTopology value objects (8 types)
- DerivationEngine: IR flows → TestSuiteTopology (DV-01–DV-04)
- Each flow → one TestSuiteDefinition, each frame → TestCaseDefinition(s), each crossing → AssertionPoint
- Branch frames → variant test cases, deterministic with optional
derivedAt
- DeriveOnSpecificationParsed policy with callback-based hooks
- Fires GenerateGherkin + EmitTypeScript in parallel via
Promise.all
- Fires GenerateGherkin + EmitTypeScript in parallel via
- Integration tests close Epic 3.1 gate (28 tests, 98% coverage)
Epic 3.2: Generation (@mmmnt/generate)
- GherkinGenerator: topology →
.featurefiles (GN-01/GN-02/GN-03)@cucumber/gherkinparse validation, DataTable rendering for schema contracts
- SpecificationDocumentGenerator: IR →
specification.md,architecture-palette.md, per-context inventories - GenerateGherkinOnTopologyDerived policy with
handle()conforming toTopologyDerivedHook
Epic 3.3: TypeScript Generation (@mmmnt/emit-ts)
- TypeScriptEmitter: IR →
.types.ts,.aggregate.ts,index.ts(TG-01/TG-02/TG-04/TG-05)- Safe identifiers, JSDoc sanitization, import deduplication
- TestScaffoldEmitter: IR + topology →
.spec.tsscaffolds (TG-03)- Per-aggregate unit, per-flow integration, per-crossing contract scaffolds
- EmitTypeScriptOnTopologyDerived policy with
handle()conforming toTopologyDerivedHook
Full Pipeline (M3 Gate)
IR → DeriveOnSpecificationParsed → TestSuiteTopology
→ [GenerateGherkin + EmitTypeScript] (parallel via hooks)
Design Principle #2: every temporal flow produces BOTH a .feature file AND a .spec.ts file. 8 full pipeline integration tests verify end-to-end correctness and determinism.
CI/CD Improvements
- Shared
jira-search.shwith cursor-based pagination (nextPageToken) - Xray JUnit import with paginated GraphQL queries, sprint scoping, Test Execution lifecycle management
- Per-request curl timeouts, empty JUnit filtering, board-based sprint fallback
Quality
- All packages ≥90% coverage, zero
eslint-disable/ts-ignore/anyin public APIs - ADR-016 v5 workflow enforced: A→B→C→D for every story
v0.1.0-m2 — Sprint 2: M2 Specification Parsing Complete
Sprint 2 — M2: Specification Parsing Complete
Milestone Gate: M2 complete. .moment files parse to validated IntermediateRepresentation. All Specification Parsing invariants pass (SP-01–SP-06, SI-01, SI-02). Grammar validates in Langium. ManifestReader functional with watch configuration support.
Stories Delivered: 13/13
| Epic | Stories |
|---|---|
| 2.1 Langium Grammar | MMNT-25, 26, 27 |
| 2.2 Parser & Validation | MMNT-29, 30, 32, 35, 37 |
| 2.3 SiftSpecificationImporter | MMNT-212, 213, 214 |
| 2.4 File Watching | MMNT-215, 216 |
Code Metrics
| Metric | Value |
|---|---|
| Tests passing | 258 |
| Test files | 13 |
| Source files | 25 |
| IR type interfaces | 30+ |
| Langium grammar constructs | 21 |
| Validation rules | 16 |
Fixture .moment files |
9 |
| PRs merged | 29 |
Coverage
| Metric | Value | Threshold |
|---|---|---|
| Statements | 99.48% | 95% |
| Branches | 95.16% | 95% |
| Functions | 98.79% | 95% |
| Lines | 99.48% | 95% |
Packages Delivered
@mmmnt/core — grammar, parser, IR, validators, services, manifest reader, file watcher, import, policies
CI/CD
input-gate-verification(ADR-016 §5) — blocks PR without A+B subtasks Donetest-traceability-verification(ADR-016 §9) — blocks PR without D subtask Done + test linksclose-test-issues— auto-transitions Test issues to Done on merge
QMS Traceability
- 300+ Xray Test issues linked to parent stories
- 240 tests wired into 4 Test Sets (MMNT-591–594)
- ADR-016 evolved v1→v5
Process Improvements
- ADR-016 v2: Mandatory Jira issue links for Test issues
- ADR-016 v3: Subtask naming verification at session start
- ADR-016 v4: Post-CI traceability linking
- ADR-016 v5: New Subtask D (Traceability Verification) + CI gate
v0.0.1 - M1 Infrastructure
M1 has no domain deliverable — its sole purpose is to make every subsequent milestone buildable with zero friction. Epic 1.1 creates the repository structure: LICENSE.md, CONTRIBUTING.md, Turborepo and pnpm workspace configuration, scaffolding for all 11 packages (core, derive, generate, harness, viz, emit-ts, sync, schema, cli, mcp), and shared ESLint, Prettier, Commitlint, and Vitest configurations.
Epic 1.2 handles environment provisioning: the @mmmnt npm org and all 11 package names are reserved, GitHub repository secrets are provisioned per ADR-011, and Snyk is configured for SCA, SAST, and license scanning. Epic 1.3 builds the full CI pipeline across five workflows: build (install → generate → typecheck → lint → build), Tier 1 checks (tests, coverage, Gherkin, snapshots), security (Snyk + gitleaks), quality (complexity, bundle size, dependency audit), and Xray import for JUnit XML and Cucumber JSON results. Pre-commit hooks cover lint-staged, gitleaks, and commitlint.
Epic 1.4 enforces branch protection with all 16 required checks and linear history. Epic 1.5 completes the QMS setup: Xray API credentials provisioned, Test Plans created for all six milestones, and Test Sets created per epic for M2–M6. The M1 gate is met when CI passes on the empty monorepo and branch protection is active.
What's Changed
- Add foundational documents: LICENSE, CONTRIBUTING, and README by @listenrightmeow in #1
- feat(MMNT-7): initialize Turborepo + pnpm workspace by @listenrightmeow in #2
- feat(scaffold): scaffold 10 monorepo packages (MMNT-8) by @listenrightmeow in #3
- feat(scaffold): configure shared tooling (MMNT-9) by @listenrightmeow in #4
- ci: add build pipeline workflow (MMNT-13) by @listenrightmeow in #5
- ci: add Tier 1 check steps (MMNT-14) by @listenrightmeow in #6
- ci: add security checks (MMNT-15) by @listenrightmeow in #7
- ci: add quality check steps (MMNT-16) by @listenrightmeow in #8
- ci: configure test result reporters (MMNT-18) by @listenrightmeow in #9
- ci: add Xray test result import (MMNT-17) by @listenrightmeow in #10
- ci: add pre-commit hooks (MMNT-19) by @listenrightmeow in #11
- M1 QMS: Xray test structure, infra smoke tests, multipart CI import by @listenrightmeow in #12
New Contributors
- @listenrightmeow made their first contribution in #1
Full Changelog: https://github.com/mmmnt/mmmnt/commits/v0.0.1