documentation cleanse, sprints work and planning. remaining non EF DAL migration to EF

This commit is contained in:
master
2026-02-25 01:24:07 +02:00
parent b07d27772e
commit 4db038123b
9090 changed files with 4836 additions and 2909 deletions

View File

@@ -0,0 +1,28 @@
# HELP linknotmerge_bench_total_ms Link-Not-Merge benchmark total duration metrics (milliseconds).
# TYPE linknotmerge_bench_total_ms gauge
# HELP linknotmerge_bench_correlation_ms Link-Not-Merge benchmark correlation duration metrics (milliseconds).
# TYPE linknotmerge_bench_correlation_ms gauge
# HELP linknotmerge_bench_insert_ms Link-Not-Merge benchmark insert duration metrics (milliseconds).
# TYPE linknotmerge_bench_insert_ms gauge
# HELP linknotmerge_bench_throughput_per_sec Link-Not-Merge benchmark throughput metrics (observations per second).
# TYPE linknotmerge_bench_throughput_per_sec gauge
# HELP linknotmerge_bench_insert_throughput_per_sec Link-Not-Merge benchmark insert throughput metrics (operations per second).
# TYPE linknotmerge_bench_insert_throughput_per_sec gauge
# HELP linknotmerge_bench_allocated_mb Link-Not-Merge benchmark allocation metrics (megabytes).
# TYPE linknotmerge_bench_allocated_mb gauge
linknotmerge_bench_mean_total_ms{scenario="lnm_probe"} 7.0026999999999999
linknotmerge_bench_p95_total_ms{scenario="lnm_probe"} 7.0026999999999999
linknotmerge_bench_max_total_ms{scenario="lnm_probe"} 7.0026999999999999
linknotmerge_bench_threshold_ms{scenario="lnm_probe"} 60000
linknotmerge_bench_mean_correlation_ms{scenario="lnm_probe"} 5.8381999999999996
linknotmerge_bench_mean_insert_ms{scenario="lnm_probe"} 1.1645000000000001
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_probe"} 57120.824824710471
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_probe"} 57120.824824710471
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_probe"} 1
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_probe"} 343495.06225848006
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_probe"} 343495.06225848006
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_probe"} 1
linknotmerge_bench_max_allocated_mb{scenario="lnm_probe"} 0.7712860107421875
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_probe"} 4096
linknotmerge_bench_regression_limit{scenario="lnm_probe"} 1000
linknotmerge_bench_regression_breached{scenario="lnm_probe"} 0

View File

@@ -0,0 +1,25 @@
{
"iterations": 1,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"minInsertThroughputPerSecond": 1,
"maxAllocatedMb": 4096,
"scenarios": [
{
"id": "lnm_probe",
"label": "LNM probe scenario",
"observations": 400,
"aliasGroups": 40,
"purlsPerObservation": 3,
"cpesPerObservation": 2,
"referencesPerObservation": 2,
"tenants": 2,
"batchSize": 100,
"seed": 111,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"minInsertThroughputPerSecond": 1,
"maxAllocatedMb": 4096
}
]
}

View File

@@ -0,0 +1,34 @@
{
"schemaVersion": "linknotmerge-bench/1.0",
"capturedAt": "2026-02-11T10:48:45.0577862+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "lnm_probe",
"label": "LNM probe scenario",
"iterations": 1,
"observations": 400,
"aliases": 40,
"linksets": 480,
"meanTotalMs": 7.0027,
"p95TotalMs": 7.0027,
"maxTotalMs": 7.0027,
"meanInsertMs": 1.1645,
"meanCorrelationMs": 5.8382,
"meanThroughputPerSecond": 57120.82482471047,
"minThroughputPerSecond": 57120.82482471047,
"meanInsertThroughputPerSecond": 343495.06225848006,
"minInsertThroughputPerSecond": 343495.06225848006,
"maxAllocatedMb": 0.7712860107421875,
"thresholdMs": 60000,
"minThroughputThresholdPerSecond": 1,
"minInsertThroughputThresholdPerSecond": 1,
"maxAllocatedThresholdMb": 4096,
"regression": {
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,2 @@
scenario,iterations,observations,aliases,linksets,mean_total_ms,p95_total_ms,max_total_ms,mean_insert_ms,mean_correlation_ms,mean_throughput_per_sec,min_throughput_per_sec,mean_insert_throughput_per_sec,min_insert_throughput_per_sec,max_allocated_mb
lnm_probe,1,400,40,480,7.0027,7.0027,7.0027,1.1645,5.8382,57120.8248,57120.8248,343495.0623,343495.0623,0.7713
1 scenario iterations observations aliases linksets mean_total_ms p95_total_ms max_total_ms mean_insert_ms mean_correlation_ms mean_throughput_per_sec min_throughput_per_sec mean_insert_throughput_per_sec min_insert_throughput_per_sec max_allocated_mb
2 lnm_probe 1 400 40 480 7.0027 7.0027 7.0027 1.1645 5.8382 57120.8248 57120.8248 343495.0623 343495.0623 0.7713

View File

@@ -0,0 +1 @@
policy-bench error: Benchmark configuration 'C:\dev\New folder\git.stella-ops.org\docs\qa\feature-checks\runs\bench\benchmark-harness\run-005\evidence\missing-policy-config.json' was not found.

View File

@@ -0,0 +1,17 @@
# HELP policy_engine_bench_duration_ms Policy Engine benchmark duration metrics (milliseconds).
# TYPE policy_engine_bench_duration_ms gauge
# HELP policy_engine_bench_throughput_per_sec Policy Engine benchmark throughput metrics (findings per second).
# TYPE policy_engine_bench_throughput_per_sec gauge
# HELP policy_engine_bench_allocation_mb Policy Engine benchmark allocation metrics (megabytes).
# TYPE policy_engine_bench_allocation_mb gauge
policy_engine_bench_mean_ms{scenario="policy_probe"} 21.2606
policy_engine_bench_p95_ms{scenario="policy_probe"} 21.2606
policy_engine_bench_max_ms{scenario="policy_probe"} 21.2606
policy_engine_bench_threshold_ms{scenario="policy_probe"} 60000
policy_engine_bench_mean_throughput_per_sec{scenario="policy_probe"} 18814.144473815413
policy_engine_bench_min_throughput_per_sec{scenario="policy_probe"} 18814.144473815413
policy_engine_bench_min_throughput_threshold_per_sec{scenario="policy_probe"} 1
policy_engine_bench_max_allocated_mb{scenario="policy_probe"} 0.6075286865234375
policy_engine_bench_max_allocated_threshold_mb{scenario="policy_probe"} 4096
policy_engine_bench_regression_limit{scenario="policy_probe"} 1000
policy_engine_bench_regression_breached{scenario="policy_probe"} 0

View File

@@ -0,0 +1,19 @@
{
"iterations": 1,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"maxAllocatedMb": 4096,
"scenarios": [
{
"id": "policy_probe",
"label": "Policy probe scenario",
"policyPath": "src/Bench/StellaOps.Bench/PolicyEngine/policies/benchmark-default.yaml",
"componentCount": 200,
"advisoriesPerComponent": 2,
"seed": 222,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"maxAllocatedMb": 4096
}
]
}

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": "policy-bench/1.0",
"capturedAt": "2026-02-11T10:48:45.0577862+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "policy_probe",
"label": "Policy probe scenario",
"iterations": 1,
"findingCount": 400,
"meanMs": 21.2606,
"p95Ms": 21.2606,
"maxMs": 21.2606,
"meanThroughputPerSecond": 18814.144473815413,
"minThroughputPerSecond": 18814.144473815413,
"maxAllocatedMb": 0.6075286865234375,
"thresholdMs": 60000,
"minThroughputThresholdPerSecond": 1,
"maxAllocatedThresholdMb": 4096,
"regression": {
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,2 @@
scenario,iterations,findings,mean_ms,p95_ms,max_ms,mean_throughput_per_sec,min_throughput_per_sec,max_allocated_mb
policy_probe,1,400,21.2606,21.2606,21.2606,18814.1445,18814.1445,0.6075
1 scenario iterations findings mean_ms p95_ms max_ms mean_throughput_per_sec min_throughput_per_sec max_allocated_mb
2 policy_probe 1 400 21.2606 21.2606 21.2606 18814.1445 18814.1445 0.6075

View File

@@ -0,0 +1,27 @@
# HELP scanner_analyzer_bench_duration_ms Analyzer benchmark duration metrics in milliseconds.
# TYPE scanner_analyzer_bench_duration_ms gauge
# HELP scanner_analyzer_bench_sample_count Analyzer benchmark sample counts (component/file counts).
# TYPE scanner_analyzer_bench_sample_count gauge
# HELP scanner_analyzer_bench_metric Additional analyzer benchmark metrics.
# TYPE scanner_analyzer_bench_metric gauge
# HELP scanner_analyzer_vendor_parity_score Scanner finding parity score against vendor findings.
# TYPE scanner_analyzer_vendor_parity_score gauge
# HELP scanner_analyzer_vendor_overlap_percent Scanner overlap percentage against vendor findings.
# TYPE scanner_analyzer_vendor_overlap_percent gauge
# HELP scanner_analyzer_vendor_overlap_count Scanner overlap finding count against vendor findings.
# TYPE scanner_analyzer_vendor_overlap_count gauge
# HELP scanner_analyzer_vendor_stella_only_count Scanner-only findings against vendor findings.
# TYPE scanner_analyzer_vendor_stella_only_count gauge
# HELP scanner_analyzer_vendor_vendor_only_count Vendor-only findings compared to scanner findings.
# TYPE scanner_analyzer_vendor_vendor_only_count gauge
# HELP scanner_analyzer_vendor_finding_count Finding counts by source for scanner/vendor comparison.
# TYPE scanner_analyzer_vendor_finding_count gauge
scanner_analyzer_bench_mean_ms{scenario="scanner_probe"} 89.508600000000001
scanner_analyzer_bench_p95_ms{scenario="scanner_probe"} 89.508600000000001
scanner_analyzer_bench_max_ms{scenario="scanner_probe"} 89.508600000000001
scanner_analyzer_bench_threshold_ms{scenario="scanner_probe"} 60000
scanner_analyzer_bench_sample_count{scenario="scanner_probe"} 4
scanner_analyzer_bench_metric{scenario="scanner_probe",name="node.importScan.bytesScanned"} 0
scanner_analyzer_bench_metric{scenario="scanner_probe",name="node.importScan.cappedPackages"} 0
scanner_analyzer_bench_metric{scenario="scanner_probe",name="node.importScan.filesScanned"} 0
scanner_analyzer_bench_metric{scenario="scanner_probe",name="node.importScan.packages"} 0

View File

@@ -0,0 +1,15 @@
{
"thresholdMs": 60000,
"iterations": 1,
"scenarios": [
{
"id": "scanner_probe",
"label": "Scanner analyzer probe scenario",
"root": "samples/runtime/npm-monorepo",
"analyzers": [
"node"
],
"thresholdMs": 60000
}
]
}

View File

@@ -0,0 +1,29 @@
{
"schemaVersion": "1.0",
"capturedAt": "2026-02-11T10:48:45.0577862+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "scanner_probe",
"label": "Scanner analyzer probe scenario",
"iterations": 1,
"sampleCount": 4,
"meanMs": 89.5086,
"p95Ms": 89.5086,
"maxMs": 89.5086,
"thresholdMs": 60000,
"metrics": {
"node.importScan.bytesScanned": 0,
"node.importScan.cappedPackages": 0,
"node.importScan.filesScanned": 0,
"node.importScan.packages": 0
},
"vendorParity": [],
"regression": {
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,2 @@
scenario,iterations,sample_count,mean_ms,p95_ms,max_ms
scanner_probe,1,4,89.5086,89.5086,89.5086
1 scenario iterations sample_count mean_ms p95_ms max_ms
2 scanner_probe 1 4 89.5086 89.5086 89.5086

View File

@@ -0,0 +1,88 @@
{
"type": "source",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-005",
"capturedAtUtc": "2026-02-11T10:47:06.7056506Z",
"filesChecked": [
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/LinkNotMergeScenarioRunner.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/LinksetAggregator.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex/VexScenarioRunner.cs",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify/NotifyScenarioRunner.cs",
"src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/PolicyScenarioRunner.cs",
"src/Bench/StellaOps.Bench/PolicyEngine/policies/benchmark-default.yaml",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/ScenarioRunners.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/Reporting/BenchmarkJsonWriter.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/Reporting/PrometheusWriter.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge.Tests/LinkNotMergeScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex.Tests/VexScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify.Tests/NotifyScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers.Tests/BenchmarkHarnessPolicyConfigTests.cs"
],
"found": [
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/LinkNotMergeScenarioRunner.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/LinksetAggregator.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex/VexScenarioRunner.cs",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify/NotifyScenarioRunner.cs",
"src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/PolicyScenarioRunner.cs",
"src/Bench/StellaOps.Bench/PolicyEngine/policies/benchmark-default.yaml",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/ScenarioRunners.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/Reporting/BenchmarkJsonWriter.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/Reporting/PrometheusWriter.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge.Tests/LinkNotMergeScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex.Tests/VexScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify.Tests/NotifyScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers.Tests/BenchmarkHarnessPolicyConfigTests.cs"
],
"missing": [
],
"declarationChecks": [
{
"pattern": "class LinkNotMergeScenarioRunner",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\LinkNotMerge\\StellaOps.Bench.LinkNotMerge.Tests\\LinkNotMergeScenarioRunnerTests.cs:9:public sealed class LinkNotMergeScenarioRunnerTests"
},
{
"pattern": "class LinksetAggregator",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\LinkNotMerge\\StellaOps.Bench.LinkNotMerge\\LinksetAggregator.cs:3:internal sealed class LinksetAggregator"
},
{
"pattern": "class VexScenarioRunner",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\LinkNotMerge.Vex\\StellaOps.Bench.LinkNotMerge.Vex.Tests\\VexScenarioRunnerTests.cs:8:public sealed class VexScenarioRunnerTests"
},
{
"pattern": "class NotifyScenarioRunner",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\Notify\\StellaOps.Bench.Notify.Tests\\NotifyScenarioRunnerTests.cs:7:public sealed class NotifyScenarioRunnerTests"
},
{
"pattern": "class PolicyScenarioRunner",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\PolicyEngine\\StellaOps.Bench.PolicyEngine\\PolicyScenarioRunner.cs:9:internal sealed class PolicyScenarioRunner"
},
{
"pattern": "class ScenarioRunnerFactory",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\Scanner.Analyzers\\StellaOps.Bench.ScannerAnalyzers.Tests\\ScenarioRunnerFactoryTests.cs:7:public sealed class ScenarioRunnerFactoryTests"
},
{
"pattern": "class BenchmarkJsonWriter",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\Scanner.Analyzers\\StellaOps.Bench.ScannerAnalyzers.Tests\\BenchmarkJsonWriterTests.cs:11:public sealed class BenchmarkJsonWriterTests"
},
{
"pattern": "class PrometheusWriter",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\Notify\\StellaOps.Bench.Notify.Tests\\PrometheusWriterTests.cs:9:public sealed class PrometheusWriterTests"
},
{
"pattern": "class BenchmarkHarnessPolicyConfigTests",
"found": true,
"sample": "src/Bench/StellaOps.Bench\\Scanner.Analyzers\\StellaOps.Bench.ScannerAnalyzers.Tests\\BenchmarkHarnessPolicyConfigTests.cs:8:public sealed class BenchmarkHarnessPolicyConfigTests"
}
],
"verdict": "pass"
}

View File

@@ -0,0 +1,40 @@
{
"type": "build",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-005",
"capturedAtUtc": "2026-02-11T10:47:07.1529639Z",
"buildProjects": [
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/StellaOps.Bench.LinkNotMerge.csproj",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex.csproj",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify/StellaOps.Bench.Notify.csproj",
"src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/StellaOps.Bench.PolicyEngine.csproj",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/StellaOps.Bench.ScannerAnalyzers.csproj"
],
"buildResult": "pass",
"testProjects": [
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge.Tests/StellaOps.Bench.LinkNotMerge.Tests.csproj",
"src/Bench/StellaOps.Bench/LinkNotMerge.Vex/StellaOps.Bench.LinkNotMerge.Vex.Tests/StellaOps.Bench.LinkNotMerge.Vex.Tests.csproj",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify.Tests/StellaOps.Bench.Notify.Tests.csproj",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers.Tests/StellaOps.Bench.ScannerAnalyzers.Tests.csproj"
],
"testResult": "pass",
"evidence": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.Vex.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-build-StellaOps.Bench.Notify.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-build-StellaOps.Bench.PolicyEngine.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-build-StellaOps.Bench.ScannerAnalyzers.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Vex.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-test-StellaOps.Bench.Notify.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier1-test-StellaOps.Bench.ScannerAnalyzers.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/docker-info.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/docker-ps.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/dotnet-version.txt"
],
"errors": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,92 @@
{
"type": "integration",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-005",
"capturedAtUtc": "2026-02-11T10:48:45.0577862Z",
"commands": [
{
"description": "Run LinkNotMerge benchmark harness probe and capture CSV/JSON/Prometheus artifacts",
"command": "dotnet run --project src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/StellaOps.Bench.LinkNotMerge.csproj -c Release -- --config docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-linknotmerge-probe-config.json --iterations 1 --threshold-ms 60000 --min-throughput 1 --min-insert-throughput 1 --max-allocated-mb 4096 --regression-limit 1000 --csv docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-linknotmerge-results.csv --json docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-linknotmerge-report.json --prometheus docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-linknotmerge-metrics.prom --captured-at 2026-02-11T10:48:45.0577862Z --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table plus generated CSV/JSON/Prometheus artifacts.",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:48:45.0966249Z",
"finishedAtUtc": "2026-02-11T10:48:48.7792218Z",
"result": "pass"
},
{
"description": "Run PolicyEngine benchmark harness probe and capture CSV/JSON/Prometheus artifacts",
"command": "dotnet run --project src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/StellaOps.Bench.PolicyEngine.csproj -c Release -- --config docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-policy-probe-config.json --iterations 1 --threshold-ms 60000 --min-throughput 1 --max-allocated-mb 4096 --regression-limit 1000 --csv docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-policy-results.csv --json docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-policy-report.json --prometheus docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-policy-metrics.prom --captured-at 2026-02-11T10:48:45.0577862Z --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table plus generated CSV/JSON/Prometheus artifacts.",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:48:48.8322432Z",
"finishedAtUtc": "2026-02-11T10:48:56.2820714Z",
"result": "pass"
},
{
"description": "Run Scanner.Analyzers benchmark harness probe and capture CSV/JSON/Prometheus artifacts",
"command": "dotnet run --project src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/StellaOps.Bench.ScannerAnalyzers.csproj -c Release -- --config docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-scanner-probe-config.json --iterations 1 --threshold-ms 60000 --regression-limit 1000 --repo-root . --csv docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-scanner-results.csv --json docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-scanner-report.json --prometheus docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\tier2-scanner-metrics.prom --captured-at 2026-02-11T10:48:45.0577862Z --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table plus generated CSV/JSON/Prometheus artifacts.",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:48:56.3144104Z",
"finishedAtUtc": "2026-02-11T10:49:14.6683580Z",
"result": "pass"
},
{
"description": "Run PolicyEngine benchmark with missing config path (negative-path validation)",
"command": "dotnet run --project src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/StellaOps.Bench.PolicyEngine.csproj -c Release -- --config docs\\qa\\feature-checks\\runs\\bench\\benchmark-harness\\run-005\\evidence\\missing-policy-config.json --iterations 1",
"expectedExitCode": 1,
"actualExitCode": 1,
"expectedOutput": "CLI exits non-zero and reports missing configuration.",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-negative-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:49:14.6797387Z",
"finishedAtUtc": "2026-02-11T10:49:29.8222322Z",
"result": "pass"
}
],
"behaviorVerified": [
"LinkNotMerge benchmark CLI executes and emits fresh CSV/JSON/Prometheus artifacts from a probe scenario.",
"PolicyEngine benchmark CLI executes against benchmark policy fixture and emits fresh CSV/JSON/Prometheus artifacts.",
"Scanner.Analyzers benchmark CLI executes from user surface with explicit repo root and emits fresh CSV/JSON/Prometheus artifacts.",
"PolicyEngine benchmark CLI returns non-zero exit for missing config path (negative-path behavior)."
],
"evidence": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-negative-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-linknotmerge-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-policy-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-005/evidence/tier2-scanner-results.csv"
],
"verdict": "pass"
}