Skip to content

Releases: mmmnt/mmmnt

v1.0.0 — Moment is stable

Choose a tag to compare

@listenrightmeow listenrightmeow released this 06 Apr 04:07
Immutable release. Only release title and notes can be modified.
c056f39

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 assertionType for 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 SimulationTopology with lanes, frames, connections, eventRouting, branchPredicates, contextMap
  • Command routing via SimProcess.* keys
  • Saga earlyExitStates for happy path preemption
  • Node IDs aligned between scenarios and topologies

Facet output pipeline

  • moment simulate --all --out-dir produces 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/flowName for manifest-free topology resolution
  • Pre-commit hook auto-regenerates on .moment file 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 scenarios
  • moment simulate --out-dir — per-flow topology + scenario files
  • moment cucumber-json — Cucumber JSON for Xray import

Infrastructure

  • Langium 4, ESLint 10, Astro 6, Vite 7
  • LaneDefinition preserved in IR (FlowDefinition.lanes)
  • Dependabot CI fixes, Vercel auto-deploy restricted to main
  • Node >= 20.19.0 engines 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

Choose a tag to compare

@listenrightmeow listenrightmeow released this 03 Apr 18:35
Immutable release. Only release title and notes can be modified.
ca53b06

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 .moment DSL
  • Parser producing IntermediateRepresentation (IR) from spec files
  • Unified .moment files — 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 @deprecated JSDoc 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-path tags
  • 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/*.jsonl JSONL 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/derive

License

FSL-1.1-Apache-2.0

v0.1.0-m3 — Milestone 3: Derivation + Generation Pipeline

Choose a tag to compare

@listenrightmeow listenrightmeow released this 27 Mar 22:19
Immutable release. Only release title and notes can be modified.
b1eb4bf

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
  • Integration tests close Epic 3.1 gate (28 tests, 98% coverage)

Epic 3.2: Generation (@mmmnt/generate)

  • GherkinGenerator: topology → .feature files (GN-01/GN-02/GN-03)
    • @cucumber/gherkin parse validation, DataTable rendering for schema contracts
  • SpecificationDocumentGenerator: IR → specification.md, architecture-palette.md, per-context inventories
  • GenerateGherkinOnTopologyDerived policy with handle() conforming to TopologyDerivedHook

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.ts scaffolds (TG-03)
    • Per-aggregate unit, per-flow integration, per-crossing contract scaffolds
  • EmitTypeScriptOnTopologyDerived policy with handle() conforming to TopologyDerivedHook

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.sh with 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/any in public APIs
  • ADR-016 v5 workflow enforced: A→B→C→D for every story

v0.1.0-m2 — Sprint 2: M2 Specification Parsing Complete

Choose a tag to compare

@listenrightmeow listenrightmeow released this 27 Mar 03:59
Immutable release. Only release title and notes can be modified.
1f6911a

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 Done
  • test-traceability-verification (ADR-016 §9) — blocks PR without D subtask Done + test links
  • close-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

Choose a tag to compare

@listenrightmeow listenrightmeow released this 25 Mar 04:23
Immutable release. Only release title and notes can be modified.
628996b

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

New Contributors

Full Changelog: https://github.com/mmmnt/mmmnt/commits/v0.0.1