Files
git.stella-ops.org/docs/workflow/engine/14-signal-driver-backend-matrix-2026-03-17.json
master f5b5f24d95 Add StellaOps.Workflow engine: 14 libraries, WebService, 8 test projects
Extract product-agnostic workflow engine from Ablera.Serdica.Workflow into
standalone StellaOps.Workflow.* libraries targeting net10.0.

Libraries (14):
- Contracts, Abstractions (compiler, decompiler, expression runtime)
- Engine (execution, signaling, scheduling, projections, hosted services)
- ElkSharp (generic graph layout algorithm)
- Renderer.ElkSharp, Renderer.ElkJs, Renderer.Msagl, Renderer.Svg
- Signaling.Redis, Signaling.OracleAq
- DataStore.MongoDB, DataStore.PostgreSQL, DataStore.Oracle

WebService: ASP.NET Core Minimal API with 22 endpoints

Tests (8 projects, 109 tests pass):
- Engine.Tests (105 pass), WebService.Tests (4 E2E pass)
- Renderer.Tests, DataStore.MongoDB/Oracle/PostgreSQL.Tests
- Signaling.Redis.Tests, IntegrationTests.Shared

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:14:44 +02:00

138 lines
3.8 KiB
JSON

{
"date": "2026-03-17",
"type": "signal-driver-backend-matrix",
"sourcePolicy": "artifact-driven-only",
"generatedMatrixArtifact": {
"markdown": "C:\\dev\\serdica-backend4\\src\\Serdica\\Ablera.Serdica.Workflow\\__Tests\\Ablera.Serdica.Workflow.IntegrationTests\\bin\\Release\\net9.0\\TestResults\\workflow-performance\\WorkflowPerfComparison\\20260317T210643496-workflow-backend-signal-roundtrip-six-profile-matrix.md",
"json": "C:\\dev\\serdica-backend4\\src\\Serdica\\Ablera.Serdica.Workflow\\__Tests\\Ablera.Serdica.Workflow.IntegrationTests\\bin\\Release\\net9.0\\TestResults\\workflow-performance\\WorkflowPerfComparison\\20260317T210643496-workflow-backend-signal-roundtrip-six-profile-matrix.json"
},
"profiles": [
"Oracle",
"PostgreSQL",
"Mongo",
"Oracle+Redis",
"PostgreSQL+Redis",
"Mongo+Redis"
],
"serialLatency": {
"endToEndAvgMs": {
"Oracle": 3091.73,
"PostgreSQL": 3101.57,
"Mongo": 151.36,
"Oracle+Redis": 3223.22,
"PostgreSQL+Redis": 3073.70,
"Mongo+Redis": 3099.51
},
"endToEndP95Ms": {
"Oracle": 3492.73,
"PostgreSQL": 3143.39,
"Mongo": 308.90,
"Oracle+Redis": 3644.66,
"PostgreSQL+Redis": 3090.75,
"Mongo+Redis": 3162.04
},
"startAvgMs": {
"Oracle": 105.88,
"PostgreSQL": 16.35,
"Mongo": 38.39,
"Oracle+Redis": 110.03,
"PostgreSQL+Redis": 8.32,
"Mongo+Redis": 21.77
},
"signalPublishAvgMs": {
"Oracle": 23.39,
"PostgreSQL": 11.47,
"Mongo": 14.30,
"Oracle+Redis": 23.90,
"PostgreSQL+Redis": 7.55,
"Mongo+Redis": 10.43
},
"signalToFirstCompletionAvgMs": {
"Oracle": 76.15,
"PostgreSQL": 37.56,
"Mongo": 55.06,
"Oracle+Redis": 81.46,
"PostgreSQL+Redis": 31.77,
"Mongo+Redis": 40.88
},
"signalToCompletionAvgMs": {
"Oracle": 2985.81,
"PostgreSQL": 3085.21,
"Mongo": 112.92,
"Oracle+Redis": 3113.11,
"PostgreSQL+Redis": 3065.38,
"Mongo+Redis": 3077.73
},
"drainToIdleOverhangAvgMs": {
"Oracle": 2909.65,
"PostgreSQL": 3047.65,
"Mongo": 57.86,
"Oracle+Redis": 3031.66,
"PostgreSQL+Redis": 3033.61,
"Mongo+Redis": 3036.85
}
},
"parallelThroughput": {
"throughputOpsPerSecond": {
"Oracle": 24.17,
"PostgreSQL": 26.28,
"Mongo": 119.51,
"Oracle+Redis": 21.88,
"PostgreSQL+Redis": 25.51,
"Mongo+Redis": 25.14
},
"endToEndAvgMs": {
"Oracle": 3740.84,
"PostgreSQL": 3546.11,
"Mongo": 688.57,
"Oracle+Redis": 4147.82,
"PostgreSQL+Redis": 3643.70,
"Mongo+Redis": 3701.72
},
"endToEndP95Ms": {
"Oracle": 3841.33,
"PostgreSQL": 3554.13,
"Mongo": 701.92,
"Oracle+Redis": 4243.83,
"PostgreSQL+Redis": 3675.15,
"Mongo+Redis": 3721.14
},
"startAvgMs": {
"Oracle": 47.44,
"PostgreSQL": 11.32,
"Mongo": 17.89,
"Oracle+Redis": 55.82,
"PostgreSQL+Redis": 17.07,
"Mongo+Redis": 17.04
},
"signalPublishAvgMs": {
"Oracle": 15.62,
"PostgreSQL": 15.11,
"Mongo": 10.85,
"Oracle+Redis": 23.80,
"PostgreSQL+Redis": 10.53,
"Mongo+Redis": 12.27
},
"signalToCompletionAvgMs": {
"Oracle": 3525.84,
"PostgreSQL": 3469.46,
"Mongo": 590.78,
"Oracle+Redis": 3872.54,
"PostgreSQL+Redis": 3564.43,
"Mongo+Redis": 3598.14
}
},
"integrity": {
"allProfilesPassed": true,
"requiredChecks": [
"Failures = 0",
"DeadLetteredSignals = 0",
"RuntimeConflicts = 0",
"StuckInstances = 0",
"WorkflowsStarted = OperationCount",
"SignalsPublished = OperationCount",
"SignalsProcessed = OperationCount"
]
}
}