Changelog
All notable changes to this project will be documented in this file.
[1.9.6] - 2026-03-12
Added
- Track 8 messaging and integration runtime coverage:
IMessageRouter<TMessage>andIRoutingDecisionfor redirect / dead-letter decisions- Redis-backed routing table with local cache + pub/sub invalidation
GrpcClientAuthInterceptorfor forwarding bearer token, tenant id, and correlation id fromISystemExecutionContext- mediator-side
[MEmitOnPass]andIRuleNotificationFactory<TContext>for rule-triggered notifications - structured rule execution telemetry with pass/fail result counters and duration histogram tags
Changed
RuleEngineRoutingFilter<T>now supports three routing sources in order:- Redis dynamic routes
- DI-registered
IMessageRouter<T> - legacy
IMessageRoutingRule<T>compatibility adapter
- Messaging documentation now covers Redis FEEL routing, reject semantics, and rule-triggered mediator notifications.
- gRPC documentation now covers per-client
ForwardAuthToken/ForwardTenantIdconfiguration and outbound metadata forwarding behavior.
[1.9.5] - 2026-03-11
Added
- Developer MCP guide for Muonroi local authoring workflows:
muonroi-mcp-devstdio server- mandatory AI workflow for
muonroi://ecosystem/rules, scaffolding, compliance, extract, and register - Claude Code
.claude/mcp.jsonexample for local server registration
- Control-plane MCP decision table version tools:
muonroi_decision_table_get_versionsmuonroi_decision_table_get_versionmuonroi_decision_table_diff_versions
- Rule Studio deep runtime extensions:
GET /api/v1/rule-catalogandGET /api/v1/rule-catalog/{code}for BA palette metadataMRuleCatalogEntrymetadata now flows from authoring manifest into the Control Plane palettemu-rule-flow-designeracceptscatalogApiBaseand renders remote rule palette groups- designer dependency overlay and auto-layout actions for graph readability
- dependency badge click-to-focus navigation inside the inspector
- decision-table inspector schema overview with column and hit-policy hints
- explicit publish confirmation dialog before save/submit/activate begins
Changed
- Rule engine documentation now treats MCP as a first-class developer entry point alongside
muonroi-ruleandMuonroi.DecisionTableGen. - Control-plane MCP decision table coverage now includes version history, version snapshot lookup, and structural diff for tenant-scoped tables.
- Claude Code MCP registration guidance now includes paired
muonroi-cloud+muonroi-devsetup and repo-local.claude/mcp.jsonfiles formuonroi-building-block,muonroi-control-plane, andmuonroi-ui-engine. - Rule Studio host integration now uses split endpoints:
apiBaseUrl=/api/v1/control-planecatalogApiBase=/api/v1/rule-catalog
- Rule Studio remote catalog palette now renders as a dedicated searchable section with loading and empty states in
mu-rule-flow-designer. - Flow-graph runtime now treats
alwaysedges as non-halting branch continuations after upstream failures or exceptions, matchingon-false/on-errorrecovery semantics.
[1.9.4] - 2026-03-07
Added
- Track 4/5 execution continuity plan (
Docs/track4-track5-execution-plan.md) with explicit recovery order after context compaction. - Pre-publish verification matrix for
mr-base-sln,mr-mod-sln, andmr-micro-slnusing LocalNuGet feeds (LocalNuget/LocalNuGetFeed).
Changed
muonroi-control-planeruntime license exposure and bootstrap flow finalized:GET /api/v1/inforeturnsactivationProof.- dashboard bootstrap initializes UI license verifier before rendering.
muonroi-ui-engineOSS boundary hardening:@muonroi/ui-engine-rule-componentsmoved to optional peer dependency in OSS React package.- lockfile + publish workflow adjusted for stable CI.
Fixed
- Template repositories updated for current
MRepositoryconstructor signature by addingIMDateTimeServicein generated repository constructors. - Base template auth wiring updated to current API:
AddValidateBearerToken<BaseTemplateDbContext, Permission>(configuration).
[1.9.3] - 2026-03-07
Added
Messaging Stack — Phase 1 (Core Automation & Tracing)
MuonroiContextPublishFilter<T>andMuonroiContextSendFilter<T>: automatically stamp all context headers (TenantId,UserId,CorrelationId,AccessToken,SourceType,SentAt) on every publish/send viaISystemExecutionContextAccessor. Eliminates the need to callPublishWithAuthContextmanually for standard flows.MaskAccessTokenInHeadersoption: replaces the rawAccessTokenheader with anX-Muonroi-Identity-Sig(SHA-256 ofUserId:TenantId:CorrelationId) to avoid transmitting bearer tokens over the message broker.- ECS logging filters (
EcsConsumeLoggingFilter,EcsPublishLoggingFilter,EcsSendLoggingFilter) now injectISystemExecutionContextAccessor— no more staticTenantContextreads. correlation.idandtenant.idtags added to OTel activities in all three logging filters.KafkaBusConfiguratornow wires SASL (SecurityProtocol,SaslMechanism,SaslUsername,SaslPassword) andClientIdfrom config.RabbitMqBusConfiguratornow wiresHeartbeatSeconds,Port, andUseQuorumQueuesfrom config.
Messaging Stack — Phase 2 (Security & Reliability)
OutboxRelayBackgroundService: pollsIEventOutboxStoreforPendingevents, publishes viaIPublishEndpoint, marksPublishedorFailed. Wired viaservices.AddOutboxRelay().MDbContextOutboxExtensions.SaveWithOutboxAsync<T>: atomic save + outbox row creation in a singleSaveChangesAsynccall.MuonroiConsumerBase<T>: standard base class for MassTransit consumers withIMLog<T>,ILicenseGuard, andISystemExecutionContextAccessorpre-wired.OutboxRelayConfigsadded toMessageBusConfigs:Enabled,PollingIntervalMs,BatchSize.OutboxRelayregistration fixed:AddSingleton<OutboxRelayBackgroundService>ensures the concrete type is resolvable asIOutboxRelayService.
Messaging Stack — Phase 3 (Advanced Integration)
TenantQuotaMessagingFilter<T>: enforcesMessagesPerMinuteandMessagesPerDayquotas per tenant viaITenantQuotaTracker. ThrowsQuotaExceededException(non-retriable) on violation. Activated viaEnableQuotaEnforcement: true.MSagaDbContext: abstractMDbContext-based saga persistence base with automaticTenantIdinjection fromISystemExecutionContextAccessorand timestamp management viaIMDateTimeService.IMuonroiSagainterface: contract for saga state entities withCorrelationId,TenantId,CreationTime,LastModificationTime.RuleEngineRoutingFilter<T>: executesIEnumerable<IMessageRoutingRule<T>>against each incoming message before consumer dispatch. Activated viaEnableRuleEngineRouting: true. OSS-abstraction-only — no dependency onRuleEngine.Core.IMessageRoutingRule<T>: marker interface (extendsIRule<T>) for routing rules inMuonroi.Messaging.Abstractions.IOutboxRelayServiceinterface added toMuonroi.Messaging.Abstractions.QuotaType.MessagesPerMinuteandQuotaType.MessagesPerDayadded toMuonroi.RuleEngine.Abstractions.
Fixed
MuonroiConsumerBase<T>: replacedILoggerFactory/ILoggerwithIMLog<T>(logging standard compliance).OutboxRelayBackgroundService: replacedILogger<T>withIMLog<T>andDateTime.UtcNowwithIMDateTimeService(MBB001 + logging standard compliance).MSagaDbContext: replacedDateTime.UtcNowwithIMDateTimeServicefallback (MBB001) andTenantContext.CurrentTenantIdstatic read withISystemExecutionContextAccessor(coding rule #4).TenantQuotaMessagingFilter: changed thrown exception fromInvalidOperationExceptiontoQuotaExceededExceptionto prevent MassTransit retry loops on quota violations.RuleEngineRoutingFilter: removed undeclaredMuonroi.RuleEngine.Coretransitive dependency; now usesIMessageRoutingRule<T>fromMuonroi.Messaging.Abstractions.
[1.9.2] - 2026-03-06
Added
- Dotnet template options
--tier(oss|enterprise) and--control-plane(true|false) formr-base-sln,mr-mod-sln, andmr-micro-sln. - Enterprise template wiring now conditionally adds
Muonroi.Governance.Enterpriseand callsAddMEnterpriseGovernance(...). - Control plane template wiring now conditionally adds Rule Engine Postgres/Redis integration and appsettings placeholders for
ControlPlaneUrlandConnectionStrings:RuleEngineDb.
[1.9.1] - 2026-02-07
Added
- Tier 2 Security Enhancement: Signed Policy System for Enterprise compliance.
LicensePolicy: RSA-signed data structure defining enforcement rules, feature quotas, and rate limits.PolicyVerifier: Cryptographic verification of policy files using RSA-SHA256.PolicyEnforcer: Runtime enforcement of policy-defined rate limits and feature usage quotas.PolicySignerCLI Tool: Utility for generating and signing license policies for distribution.- Support for
RequireSignedPolicyinLicenseConfigsto mandate valid policies in production.
Changed
- Integrated
PolicyEnforcerintoLicenseGuardto override configuration settings with signed policy rules. - Enhanced
LicenseSaveChangesInterceptorto respect policy-defined database enforcement rules.
[1.9.0] - 2026-02-07
Added
- Tier 1 Security Enhancement: Comprehensive client-side protection.
LicenseExecutionContext: Prevents infinite recursion in database interceptors usingAsyncLocal.AntiTamperDetector: Hardware breakpoint detection (DR0-DR7) and debugger sensing.LicenseEnforcementMode: Explicit control over security strictness (Free, Development, Production).- Integrated
AntiTamperDetectorintoLicenseGuardfor hardened production checks.
Fixed
- Fixed infinite recursion bug in
LicenseSaveChangesInterceptorwhen recording actions during DB saves. - Added missing
SavingChangesAsyncoverride inLicenseSaveChangesInterceptor. - Improved tier-based enforcement: License tier is now the source of truth, reducing reliance on environment variables.
[1.6.6] - 2025-08-17
Added
- Rule Engine with DMN decision tables, complex event processing, feature flags, and governance capabilities.
- Multi-tenancy improvements including isolation, tenant-aware observability, and rate limiting.
- Authentication and authorization enhancements such as OIDC PKCE flow, WebAuthn MFA, DPoP token binding, and rule-driven login.
- OpenTelemetry instrumentation and ECS logging for MassTransit.
Changed
- Refactored project structure and namespaces for clarity and maintainability.
Fixed
- General bug fixes including improved null handling and error messages.
[1.5.8] - 2025-02-11
Added
- Logging enhancements and better token handling across services.
- Task management and file upload functionalities.
Changed
- Updated repository interfaces and middleware behavior.
- Refactored serialization and repository layers.
Fixed
- Resolved various issues in permission and authentication flows.