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,6 @@
{
"capturedAtUtc": "2026-02-11T10:44:56.9877336+00:00",
"approved": true,
"reason": "Failure reproduced and root cause validated from Tier 2 logs and benchmark config path/threshold inspection.",
"revisedRootCause": "Config path/threshold mismatch, not missing implementation."
}

View File

@@ -0,0 +1,19 @@
{
"iterations": 1,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"maxAllocatedMb": 4096,
"scenarios": [
{
"id": "policy_eval_baseline",
"label": "Policy evaluation (100k components, 1M findings)",
"policyPath": "src/Bench/StellaOps.Bench/PolicyEngine/policies/benchmark-default.policy.yaml",
"componentCount": 100000,
"advisoriesPerComponent": 10,
"seed": 20251026,
"thresholdMs": 60000,
"minThroughputPerSecond": 1,
"maxAllocatedMb": 4096
}
]
}

View File

@@ -0,0 +1,78 @@
# 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_ingest_baseline"} 35.043779999999998
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_baseline"} 51.970559999999999
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_baseline"} 55.704700000000003
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_baseline"} 900
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_baseline"} 33.893740000000001
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_baseline"} 1.15004
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_baseline"} 154982.73909637451
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_baseline"} 89759.03290027591
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 5500
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_baseline"} 7780752.3724147053
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_baseline"} 1590431.9613206948
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 8000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_baseline"} 10.450103759765625
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_baseline"} 160
linknotmerge_bench_baseline_max_total_ms{scenario="lnm_ingest_baseline"} 866.62360000000001
linknotmerge_bench_baseline_min_throughput_per_sec{scenario="lnm_ingest_baseline"} 5769.5174999999999
linknotmerge_bench_baseline_min_insert_throughput_per_sec{scenario="lnm_ingest_baseline"} 8405.1257000000005
linknotmerge_bench_duration_regression_ratio{scenario="lnm_ingest_baseline"} 0.064277847960752518
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_baseline"} 0.064277848296450002
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_baseline"} 0.0052848068351320004
linknotmerge_bench_regression_limit{scenario="lnm_ingest_baseline"} 1000
linknotmerge_bench_regression_breached{scenario="lnm_ingest_baseline"} 0
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_medium"} 97.098539999999986
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_medium"} 111.86999999999999
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_medium"} 113.34139999999999
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_medium"} 1300
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_medium"} 96.200180000000003
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_medium"} 0.89836000000000005
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 104431.72059520807
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 88229.014287806582
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 8000
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 11766340.198140498
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 9242998.4286902677
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 13000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_medium"} 30.427078247070312
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_medium"} 220
linknotmerge_bench_baseline_max_total_ms{scenario="lnm_ingest_fanout_medium"} 842.88149999999996
linknotmerge_bench_baseline_min_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 11864.063899999999
linknotmerge_bench_baseline_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 20891.0579
linknotmerge_bench_duration_regression_ratio{scenario="lnm_ingest_fanout_medium"} 0.13446896153255233
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_fanout_medium"} 0.13446896121154597
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_fanout_medium"} 0.0022602035542009999
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_medium"} 1000
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_medium"} 0
linknotmerge_bench_mean_total_ms{scenario="lnm_ingest_fanout_high"} 145.11756
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_high"} 170.75353999999999
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_high"} 173.8039
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_high"} 2200
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_high"} 144.03708
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_high"} 1.0804800000000001
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 104958.0651416691
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 86304.162334677181
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 7000
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 14102031.90643465
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 11248593.92575928
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 13000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_high"} 47.022369384765625
linknotmerge_bench_max_allocated_threshold_mb{scenario="lnm_ingest_fanout_high"} 300
linknotmerge_bench_baseline_max_total_ms{scenario="lnm_ingest_fanout_high"} 1369.943
linknotmerge_bench_baseline_min_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 10949.360699999999
linknotmerge_bench_baseline_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 19781.676200000002
linknotmerge_bench_duration_regression_ratio{scenario="lnm_ingest_fanout_high"} 0.12686943909345133
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_fanout_high"} 0.12686943947778201
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_fanout_high"} 0.0017585910141800002
linknotmerge_bench_regression_limit{scenario="lnm_ingest_fanout_high"} 1000
linknotmerge_bench_regression_breached{scenario="lnm_ingest_fanout_high"} 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,143 @@
{
"schemaVersion": "linknotmerge-bench/1.0",
"capturedAt": "2026-02-11T10:43:08.6431332+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "lnm_ingest_baseline",
"label": "5k observations, 500 aliases",
"iterations": 5,
"observations": 5000,
"aliases": 500,
"linksets": 6000,
"meanTotalMs": 35.04378,
"p95TotalMs": 51.97056,
"maxTotalMs": 55.7047,
"meanInsertMs": 1.15004,
"meanCorrelationMs": 33.89374,
"meanThroughputPerSecond": 154982.7390963745,
"minThroughputPerSecond": 89759.03290027591,
"meanInsertThroughputPerSecond": 7780752.372414705,
"minInsertThroughputPerSecond": 1590431.9613206948,
"maxAllocatedMb": 10.450103759765625,
"thresholdMs": 900,
"minThroughputThresholdPerSecond": 5500,
"minInsertThroughputThresholdPerSecond": 8000,
"maxAllocatedThresholdMb": 160,
"baseline": {
"iterations": 5,
"observations": 5000,
"aliases": 500,
"linksets": 6000,
"meanTotalMs": 555.1984,
"p95TotalMs": 823.4957,
"maxTotalMs": 866.6236,
"meanInsertMs": 366.2635,
"meanCorrelationMs": 188.9349,
"meanThroughputPerSecond": 9877.7916,
"minThroughputPerSecond": 5769.5175,
"meanInsertThroughputPerSecond": 15338.0851,
"minInsertThroughputPerSecond": 8405.1257,
"maxAllocatedMb": 62.4477
},
"regression": {
"durationRatio": 0.06427784796075252,
"throughputRatio": 0.06427784829645,
"insertThroughputRatio": 0.005284806835132,
"limit": 1000,
"breached": false
}
},
{
"id": "lnm_ingest_fanout_medium",
"label": "10k observations, 800 aliases",
"iterations": 5,
"observations": 10000,
"aliases": 800,
"linksets": 14800,
"meanTotalMs": 97.09853999999999,
"p95TotalMs": 111.86999999999999,
"maxTotalMs": 113.3414,
"meanInsertMs": 0.89836,
"meanCorrelationMs": 96.20018,
"meanThroughputPerSecond": 104431.72059520807,
"minThroughputPerSecond": 88229.01428780658,
"meanInsertThroughputPerSecond": 11766340.198140498,
"minInsertThroughputPerSecond": 9242998.428690268,
"maxAllocatedMb": 30.427078247070312,
"thresholdMs": 1300,
"minThroughputThresholdPerSecond": 8000,
"minInsertThroughputThresholdPerSecond": 13000,
"maxAllocatedThresholdMb": 220,
"baseline": {
"iterations": 5,
"observations": 10000,
"aliases": 800,
"linksets": 14800,
"meanTotalMs": 785.8909,
"p95TotalMs": 841.6247,
"maxTotalMs": 842.8815,
"meanInsertMs": 453.5087,
"meanCorrelationMs": 332.3822,
"meanThroughputPerSecond": 12794.955,
"minThroughputPerSecond": 11864.0639,
"meanInsertThroughputPerSecond": 22086.032,
"minInsertThroughputPerSecond": 20891.0579,
"maxAllocatedMb": 145.8328
},
"regression": {
"durationRatio": 0.13446896153255233,
"throughputRatio": 0.13446896121154597,
"insertThroughputRatio": 0.002260203554201,
"limit": 1000,
"breached": false
}
},
{
"id": "lnm_ingest_fanout_high",
"label": "15k observations, 1200 aliases",
"iterations": 5,
"observations": 15000,
"aliases": 1200,
"linksets": 17400,
"meanTotalMs": 145.11756,
"p95TotalMs": 170.75354,
"maxTotalMs": 173.8039,
"meanInsertMs": 1.08048,
"meanCorrelationMs": 144.03708,
"meanThroughputPerSecond": 104958.0651416691,
"minThroughputPerSecond": 86304.16233467718,
"meanInsertThroughputPerSecond": 14102031.90643465,
"minInsertThroughputPerSecond": 11248593.92575928,
"maxAllocatedMb": 47.022369384765625,
"thresholdMs": 2200,
"minThroughputThresholdPerSecond": 7000,
"minInsertThroughputThresholdPerSecond": 13000,
"maxAllocatedThresholdMb": 300,
"baseline": {
"iterations": 5,
"observations": 15000,
"aliases": 1200,
"linksets": 17400,
"meanTotalMs": 1299.3458,
"p95TotalMs": 1367.0934,
"maxTotalMs": 1369.943,
"meanInsertMs": 741.6265,
"meanCorrelationMs": 557.7193,
"meanThroughputPerSecond": 11571.0991,
"minThroughputPerSecond": 10949.3607,
"meanInsertThroughputPerSecond": 20232.518,
"minInsertThroughputPerSecond": 19781.6762,
"maxAllocatedMb": 238.345
},
"regression": {
"durationRatio": 0.12686943909345133,
"throughputRatio": 0.126869439477782,
"insertThroughputRatio": 0.0017585910141800002,
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,4 @@
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_ingest_baseline,5,5000,500,6000,35.0438,51.9706,55.7047,1.1500,33.8937,154982.7391,89759.0329,7780752.3724,1590431.9613,10.4501
lnm_ingest_fanout_medium,5,10000,800,14800,97.0985,111.8700,113.3414,0.8984,96.2002,104431.7206,88229.0143,11766340.1981,9242998.4287,30.4271
lnm_ingest_fanout_high,5,15000,1200,17400,145.1176,170.7535,173.8039,1.0805,144.0371,104958.0651,86304.1623,14102031.9064,11248593.9258,47.0224
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_ingest_baseline 5 5000 500 6000 35.0438 51.9706 55.7047 1.1500 33.8937 154982.7391 89759.0329 7780752.3724 1590431.9613 10.4501
3 lnm_ingest_fanout_medium 5 10000 800 14800 97.0985 111.8700 113.3414 0.8984 96.2002 104431.7206 88229.0143 11766340.1981 9242998.4287 30.4271
4 lnm_ingest_fanout_high 5 15000 1200 17400 145.1176 170.7535 173.8039 1.0805 144.0371 104958.0651 86304.1623 14102031.9064 11248593.9258 47.0224

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,22 @@
# 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_eval_baseline"} 3962.0273000000002
policy_engine_bench_p95_ms{scenario="policy_eval_baseline"} 3962.0273000000002
policy_engine_bench_max_ms{scenario="policy_eval_baseline"} 3962.0273000000002
policy_engine_bench_threshold_ms{scenario="policy_eval_baseline"} 60000
policy_engine_bench_mean_throughput_per_sec{scenario="policy_eval_baseline"} 252396.03977489
policy_engine_bench_min_throughput_per_sec{scenario="policy_eval_baseline"} 252396.03977489
policy_engine_bench_min_throughput_threshold_per_sec{scenario="policy_eval_baseline"} 1
policy_engine_bench_max_allocated_mb{scenario="policy_eval_baseline"} 1827.0887680053711
policy_engine_bench_max_allocated_threshold_mb{scenario="policy_eval_baseline"} 4096
policy_engine_bench_baseline_max_ms{scenario="policy_eval_baseline"} 1280.1721
policy_engine_bench_baseline_mean_ms{scenario="policy_eval_baseline"} 1109.3542
policy_engine_bench_baseline_min_throughput_per_sec{scenario="policy_eval_baseline"} 781144.97259999998
policy_engine_bench_duration_regression_ratio{scenario="policy_eval_baseline"} 3.0949177067677076
policy_engine_bench_throughput_regression_ratio{scenario="policy_eval_baseline"} 3.0949177066989519
policy_engine_bench_regression_limit{scenario="policy_eval_baseline"} 1000
policy_engine_bench_regression_breached{scenario="policy_eval_baseline"} 0

View File

@@ -0,0 +1,39 @@
{
"schemaVersion": "policy-bench/1.0",
"capturedAt": "2026-02-11T10:41:27.1153626+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "policy_eval_baseline",
"label": "Policy evaluation (100k components, 1M findings)",
"iterations": 1,
"findingCount": 1000000,
"meanMs": 3962.0273,
"p95Ms": 3962.0273,
"maxMs": 3962.0273,
"meanThroughputPerSecond": 252396.03977489,
"minThroughputPerSecond": 252396.03977489,
"maxAllocatedMb": 1827.088768005371,
"thresholdMs": 60000,
"minThroughputThresholdPerSecond": 1,
"maxAllocatedThresholdMb": 4096,
"baseline": {
"iterations": 3,
"findingCount": 1000000,
"meanMs": 1109.3542,
"p95Ms": 1257.7493,
"maxMs": 1280.1721,
"meanThroughputPerSecond": 912094.5581,
"minThroughputPerSecond": 781144.9726,
"maxAllocatedMb": 563.6901
},
"regression": {
"durationRatio": 3.0949177067677076,
"throughputRatio": 3.094917706698952,
"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_eval_baseline,1,1000000,3962.0273,3962.0273,3962.0273,252396.0398,252396.0398,1827.0888
1 scenario iterations findings mean_ms p95_ms max_ms mean_throughput_per_sec min_throughput_per_sec max_allocated_mb
2 policy_eval_baseline 1 1000000 3962.0273 3962.0273 3962.0273 252396.0398 252396.0398 1827.0888

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,156 @@
# 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="node_monorepo_walk"} 33.999919999999996
scanner_analyzer_bench_p95_ms{scenario="node_monorepo_walk"} 109.66473999999998
scanner_analyzer_bench_max_ms{scenario="node_monorepo_walk"} 134.3766
scanner_analyzer_bench_threshold_ms{scenario="node_monorepo_walk"} 5000
scanner_analyzer_bench_sample_count{scenario="node_monorepo_walk"} 4
scanner_analyzer_bench_baseline_max_ms{scenario="node_monorepo_walk"} 61.714599999999997
scanner_analyzer_bench_baseline_mean_ms{scenario="node_monorepo_walk"} 15.539899999999999
scanner_analyzer_bench_regression_ratio{scenario="node_monorepo_walk"} 2.1773875225635426
scanner_analyzer_bench_regression_limit{scenario="node_monorepo_walk"} 1000
scanner_analyzer_bench_regression_breached{scenario="node_monorepo_walk"} 0
scanner_analyzer_bench_metric{scenario="node_monorepo_walk",name="node.importScan.bytesScanned"} 0
scanner_analyzer_bench_metric{scenario="node_monorepo_walk",name="node.importScan.cappedPackages"} 0
scanner_analyzer_bench_metric{scenario="node_monorepo_walk",name="node.importScan.filesScanned"} 0
scanner_analyzer_bench_metric{scenario="node_monorepo_walk",name="node.importScan.packages"} 0
scanner_analyzer_bench_mean_ms{scenario="node_detection_gaps_fixture"} 57.328179999999996
scanner_analyzer_bench_p95_ms{scenario="node_detection_gaps_fixture"} 141.81315999999998
scanner_analyzer_bench_max_ms{scenario="node_detection_gaps_fixture"} 162.71019999999999
scanner_analyzer_bench_threshold_ms{scenario="node_detection_gaps_fixture"} 2000
scanner_analyzer_bench_sample_count{scenario="node_detection_gaps_fixture"} 5
scanner_analyzer_bench_baseline_max_ms{scenario="node_detection_gaps_fixture"} 117.32380000000001
scanner_analyzer_bench_baseline_mean_ms{scenario="node_detection_gaps_fixture"} 31.843399999999999
scanner_analyzer_bench_regression_ratio{scenario="node_detection_gaps_fixture"} 1.3868473404373194
scanner_analyzer_bench_regression_limit{scenario="node_detection_gaps_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="node_detection_gaps_fixture"} 0
scanner_analyzer_bench_metric{scenario="node_detection_gaps_fixture",name="node.importScan.bytesScanned"} 596
scanner_analyzer_bench_metric{scenario="node_detection_gaps_fixture",name="node.importScan.cappedPackages"} 0
scanner_analyzer_bench_metric{scenario="node_detection_gaps_fixture",name="node.importScan.filesScanned"} 6
scanner_analyzer_bench_metric{scenario="node_detection_gaps_fixture",name="node.importScan.packages"} 3
scanner_analyzer_bench_mean_ms{scenario="java_demo_archive"} 19.343060000000001
scanner_analyzer_bench_p95_ms{scenario="java_demo_archive"} 68.324699999999993
scanner_analyzer_bench_max_ms{scenario="java_demo_archive"} 84.543800000000005
scanner_analyzer_bench_threshold_ms{scenario="java_demo_archive"} 5000
scanner_analyzer_bench_sample_count{scenario="java_demo_archive"} 1
scanner_analyzer_bench_baseline_max_ms{scenario="java_demo_archive"} 61.310000000000002
scanner_analyzer_bench_baseline_mean_ms{scenario="java_demo_archive"} 13.6363
scanner_analyzer_bench_regression_ratio{scenario="java_demo_archive"} 1.3789561246126243
scanner_analyzer_bench_regression_limit{scenario="java_demo_archive"} 1000
scanner_analyzer_bench_regression_breached{scenario="java_demo_archive"} 0
scanner_analyzer_bench_mean_ms{scenario="java_fat_archive"} 7.6045199999999991
scanner_analyzer_bench_p95_ms{scenario="java_fat_archive"} 15.618879999999997
scanner_analyzer_bench_max_ms{scenario="java_fat_archive"} 17.843699999999998
scanner_analyzer_bench_threshold_ms{scenario="java_fat_archive"} 1000
scanner_analyzer_bench_sample_count{scenario="java_fat_archive"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="java_fat_archive"} 9.4926999999999992
scanner_analyzer_bench_baseline_mean_ms{scenario="java_fat_archive"} 3.5181
scanner_analyzer_bench_regression_ratio{scenario="java_fat_archive"} 1.8797286335815941
scanner_analyzer_bench_regression_limit{scenario="java_fat_archive"} 1000
scanner_analyzer_bench_regression_breached{scenario="java_fat_archive"} 0
scanner_analyzer_bench_mean_ms{scenario="go_buildinfo_fixture"} 11.54748
scanner_analyzer_bench_p95_ms{scenario="go_buildinfo_fixture"} 40.536439999999992
scanner_analyzer_bench_max_ms{scenario="go_buildinfo_fixture"} 49.950200000000002
scanner_analyzer_bench_threshold_ms{scenario="go_buildinfo_fixture"} 5000
scanner_analyzer_bench_sample_count{scenario="go_buildinfo_fixture"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="go_buildinfo_fixture"} 32.130400000000002
scanner_analyzer_bench_baseline_mean_ms{scenario="go_buildinfo_fixture"} 6.9861000000000004
scanner_analyzer_bench_regression_ratio{scenario="go_buildinfo_fixture"} 1.5546087194681673
scanner_analyzer_bench_regression_limit{scenario="go_buildinfo_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="go_buildinfo_fixture"} 0
scanner_analyzer_bench_mean_ms{scenario="dotnet_multirid_fixture"} 33.24756
scanner_analyzer_bench_p95_ms{scenario="dotnet_multirid_fixture"} 70.276060000000001
scanner_analyzer_bench_max_ms{scenario="dotnet_multirid_fixture"} 81.811700000000002
scanner_analyzer_bench_threshold_ms{scenario="dotnet_multirid_fixture"} 5000
scanner_analyzer_bench_sample_count{scenario="dotnet_multirid_fixture"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="dotnet_multirid_fixture"} 47.8401
scanner_analyzer_bench_baseline_mean_ms{scenario="dotnet_multirid_fixture"} 11.826599999999999
scanner_analyzer_bench_regression_ratio{scenario="dotnet_multirid_fixture"} 1.7101072113143576
scanner_analyzer_bench_regression_limit{scenario="dotnet_multirid_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="dotnet_multirid_fixture"} 0
scanner_analyzer_bench_mean_ms{scenario="python_site_packages_scan"} 71.160319999999999
scanner_analyzer_bench_p95_ms{scenario="python_site_packages_scan"} 182.98255999999995
scanner_analyzer_bench_max_ms{scenario="python_site_packages_scan"} 216.74879999999999
scanner_analyzer_bench_threshold_ms{scenario="python_site_packages_scan"} 5000
scanner_analyzer_bench_sample_count{scenario="python_site_packages_scan"} 3
scanner_analyzer_bench_baseline_max_ms{scenario="python_site_packages_scan"} 128.4211
scanner_analyzer_bench_baseline_mean_ms{scenario="python_site_packages_scan"} 36.792999999999999
scanner_analyzer_bench_regression_ratio{scenario="python_site_packages_scan"} 1.6877974102386601
scanner_analyzer_bench_regression_limit{scenario="python_site_packages_scan"} 1000
scanner_analyzer_bench_regression_breached{scenario="python_site_packages_scan"} 0
scanner_analyzer_bench_mean_ms{scenario="python_pip_cache_fixture"} 39.351260000000003
scanner_analyzer_bench_p95_ms{scenario="python_pip_cache_fixture"} 60.568299999999994
scanner_analyzer_bench_max_ms{scenario="python_pip_cache_fixture"} 66.428899999999999
scanner_analyzer_bench_threshold_ms{scenario="python_pip_cache_fixture"} 5000
scanner_analyzer_bench_sample_count{scenario="python_pip_cache_fixture"} 1
scanner_analyzer_bench_baseline_max_ms{scenario="python_pip_cache_fixture"} 34.325699999999998
scanner_analyzer_bench_baseline_mean_ms{scenario="python_pip_cache_fixture"} 20.1829
scanner_analyzer_bench_regression_ratio{scenario="python_pip_cache_fixture"} 1.9352525949944213
scanner_analyzer_bench_regression_limit{scenario="python_pip_cache_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="python_pip_cache_fixture"} 0
scanner_analyzer_bench_mean_ms{scenario="python_layered_editable_fixture"} 68.424419999999998
scanner_analyzer_bench_p95_ms{scenario="python_layered_editable_fixture"} 91.924639999999997
scanner_analyzer_bench_max_ms{scenario="python_layered_editable_fixture"} 97.640000000000001
scanner_analyzer_bench_threshold_ms{scenario="python_layered_editable_fixture"} 2000
scanner_analyzer_bench_sample_count{scenario="python_layered_editable_fixture"} 3
scanner_analyzer_bench_baseline_max_ms{scenario="python_layered_editable_fixture"} 41.565600000000003
scanner_analyzer_bench_baseline_mean_ms{scenario="python_layered_editable_fixture"} 31.875699999999998
scanner_analyzer_bench_regression_ratio{scenario="python_layered_editable_fixture"} 2.3490578747810686
scanner_analyzer_bench_regression_limit{scenario="python_layered_editable_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="python_layered_editable_fixture"} 0
scanner_analyzer_bench_mean_ms{scenario="bun_multi_workspace_fixture"} 16.507119999999997
scanner_analyzer_bench_p95_ms{scenario="bun_multi_workspace_fixture"} 57.813539999999989
scanner_analyzer_bench_max_ms{scenario="bun_multi_workspace_fixture"} 71.378
scanner_analyzer_bench_threshold_ms{scenario="bun_multi_workspace_fixture"} 1000
scanner_analyzer_bench_sample_count{scenario="bun_multi_workspace_fixture"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="bun_multi_workspace_fixture"} 55.983199999999997
scanner_analyzer_bench_baseline_mean_ms{scenario="bun_multi_workspace_fixture"} 12.446300000000001
scanner_analyzer_bench_regression_ratio{scenario="bun_multi_workspace_fixture"} 1.2749896397490676
scanner_analyzer_bench_regression_limit{scenario="bun_multi_workspace_fixture"} 1000
scanner_analyzer_bench_regression_breached{scenario="bun_multi_workspace_fixture"} 0
scanner_analyzer_bench_mean_ms{scenario="dotnet_declared_source_tree"} 35.139740000000003
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_source_tree"} 52.540579999999991
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_source_tree"} 57.768099999999997
scanner_analyzer_bench_threshold_ms{scenario="dotnet_declared_source_tree"} 1000
scanner_analyzer_bench_sample_count{scenario="dotnet_declared_source_tree"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="dotnet_declared_source_tree"} 26.16
scanner_analyzer_bench_baseline_mean_ms{scenario="dotnet_declared_source_tree"} 6.21
scanner_analyzer_bench_regression_ratio{scenario="dotnet_declared_source_tree"} 2.2082607033639143
scanner_analyzer_bench_regression_limit{scenario="dotnet_declared_source_tree"} 1000
scanner_analyzer_bench_regression_breached{scenario="dotnet_declared_source_tree"} 0
scanner_analyzer_bench_mean_ms{scenario="dotnet_declared_lockfile"} 3.3683199999999998
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_lockfile"} 7.8053799999999978
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_lockfile"} 9.0482999999999993
scanner_analyzer_bench_threshold_ms{scenario="dotnet_declared_lockfile"} 1000
scanner_analyzer_bench_sample_count{scenario="dotnet_declared_lockfile"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="dotnet_declared_lockfile"} 5.7300000000000004
scanner_analyzer_bench_baseline_mean_ms{scenario="dotnet_declared_lockfile"} 1.77
scanner_analyzer_bench_regression_ratio{scenario="dotnet_declared_lockfile"} 1.5791099476439787
scanner_analyzer_bench_regression_limit{scenario="dotnet_declared_lockfile"} 1000
scanner_analyzer_bench_regression_breached{scenario="dotnet_declared_lockfile"} 0
scanner_analyzer_bench_mean_ms{scenario="dotnet_declared_packages_config"} 3.7220599999999999
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_packages_config"} 6.9065799999999991
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_packages_config"} 7.8357999999999999
scanner_analyzer_bench_threshold_ms{scenario="dotnet_declared_packages_config"} 1000
scanner_analyzer_bench_sample_count{scenario="dotnet_declared_packages_config"} 2
scanner_analyzer_bench_baseline_max_ms{scenario="dotnet_declared_packages_config"} 3.3700000000000001
scanner_analyzer_bench_baseline_mean_ms{scenario="dotnet_declared_packages_config"} 1.4099999999999999
scanner_analyzer_bench_regression_ratio{scenario="dotnet_declared_packages_config"} 2.3251632047477742
scanner_analyzer_bench_regression_limit{scenario="dotnet_declared_packages_config"} 1000
scanner_analyzer_bench_regression_breached{scenario="dotnet_declared_packages_config"} 0

View File

@@ -0,0 +1,332 @@
{
"schemaVersion": "1.0",
"capturedAt": "2026-02-11T10:38:57.4238397+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "node_monorepo_walk",
"label": "Node.js analyzer on monorepo fixture",
"iterations": 5,
"sampleCount": 4,
"meanMs": 33.999919999999996,
"p95Ms": 109.66473999999998,
"maxMs": 134.3766,
"thresholdMs": 5000,
"metrics": {
"node.importScan.bytesScanned": 0,
"node.importScan.cappedPackages": 0,
"node.importScan.filesScanned": 0,
"node.importScan.packages": 0
},
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 4,
"meanMs": 15.5399,
"p95Ms": 50.321,
"maxMs": 61.7146
},
"regression": {
"maxRatio": 2.1773875225635426,
"meanRatio": 2.1879111191191707,
"limit": 1000,
"breached": false
}
},
{
"id": "node_detection_gaps_fixture",
"label": "Node analyzer detection gaps fixture (workspace \u002B lock-only \u002B imports)",
"iterations": 5,
"sampleCount": 5,
"meanMs": 57.328179999999996,
"p95Ms": 141.81315999999998,
"maxMs": 162.7102,
"thresholdMs": 2000,
"metrics": {
"node.importScan.bytesScanned": 596,
"node.importScan.cappedPackages": 0,
"node.importScan.filesScanned": 6,
"node.importScan.packages": 3
},
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 5,
"meanMs": 31.8434,
"p95Ms": 96.4542,
"maxMs": 117.3238
},
"regression": {
"maxRatio": 1.3868473404373194,
"meanRatio": 1.8003159210385824,
"limit": 1000,
"breached": false
}
},
{
"id": "java_demo_archive",
"label": "Java analyzer on demo jar",
"iterations": 5,
"sampleCount": 1,
"meanMs": 19.34306,
"p95Ms": 68.32469999999999,
"maxMs": 84.5438,
"thresholdMs": 5000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 1,
"meanMs": 13.6363,
"p95Ms": 49.4627,
"maxMs": 61.31
},
"regression": {
"maxRatio": 1.3789561246126243,
"meanRatio": 1.4184976863225363,
"limit": 1000,
"breached": false
}
},
{
"id": "java_fat_archive",
"label": "Java analyzer on fat jar (embedded libs)",
"iterations": 5,
"sampleCount": 2,
"meanMs": 7.604519999999999,
"p95Ms": 15.618879999999997,
"maxMs": 17.8437,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 3.5181,
"p95Ms": 8.1467,
"maxMs": 9.4927
},
"regression": {
"maxRatio": 1.8797286335815941,
"meanRatio": 2.161541741280805,
"limit": 1000,
"breached": false
}
},
{
"id": "go_buildinfo_fixture",
"label": "Go analyzer on build-info binary",
"iterations": 5,
"sampleCount": 2,
"meanMs": 11.54748,
"p95Ms": 40.53643999999999,
"maxMs": 49.9502,
"thresholdMs": 5000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 6.9861,
"p95Ms": 25.8818,
"maxMs": 32.1304
},
"regression": {
"maxRatio": 1.5546087194681673,
"meanRatio": 1.6529222312878429,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_multirid_fixture",
"label": ".NET analyzer on multi-RID fixture",
"iterations": 5,
"sampleCount": 2,
"meanMs": 33.24756,
"p95Ms": 70.27606,
"maxMs": 81.8117,
"thresholdMs": 5000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 11.8266,
"p95Ms": 38.934,
"maxMs": 47.8401
},
"regression": {
"maxRatio": 1.7101072113143576,
"meanRatio": 2.8112526000710267,
"limit": 1000,
"breached": false
}
},
{
"id": "python_site_packages_scan",
"label": "Python analyzer on sample virtualenv",
"iterations": 5,
"sampleCount": 3,
"meanMs": 71.16032,
"p95Ms": 182.98255999999995,
"maxMs": 216.7488,
"thresholdMs": 5000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 3,
"meanMs": 36.793,
"p95Ms": 105.6978,
"maxMs": 128.4211
},
"regression": {
"maxRatio": 1.6877974102386601,
"meanRatio": 1.934072242002555,
"limit": 1000,
"breached": false
}
},
{
"id": "python_pip_cache_fixture",
"label": "Python analyzer verifying RECORD hashes",
"iterations": 5,
"sampleCount": 1,
"meanMs": 39.35126,
"p95Ms": 60.568299999999994,
"maxMs": 66.4289,
"thresholdMs": 5000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 1,
"meanMs": 20.1829,
"p95Ms": 30.9147,
"maxMs": 34.3257
},
"regression": {
"maxRatio": 1.9352525949944213,
"meanRatio": 1.949732694508718,
"limit": 1000,
"breached": false
}
},
{
"id": "python_layered_editable_fixture",
"label": "Python analyzer on layered/container roots fixture",
"iterations": 5,
"sampleCount": 3,
"meanMs": 68.42442,
"p95Ms": 91.92464,
"maxMs": 97.64,
"thresholdMs": 2000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 3,
"meanMs": 31.8757,
"p95Ms": 39.7647,
"maxMs": 41.5656
},
"regression": {
"maxRatio": 2.3490578747810686,
"meanRatio": 2.14660132953943,
"limit": 1000,
"breached": false
}
},
{
"id": "bun_multi_workspace_fixture",
"label": "Bun analyzer on multi-workspace fixture",
"iterations": 5,
"sampleCount": 2,
"meanMs": 16.507119999999997,
"p95Ms": 57.81353999999999,
"maxMs": 71.378,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 12.4463,
"p95Ms": 45.1913,
"maxMs": 55.9832
},
"regression": {
"maxRatio": 1.2749896397490676,
"meanRatio": 1.3262672440805698,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_source_tree",
"label": ".NET analyzer declared-only (source-tree, no deps.json)",
"iterations": 5,
"sampleCount": 2,
"meanMs": 35.13974,
"p95Ms": 52.54057999999999,
"maxMs": 57.7681,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 6.21,
"p95Ms": 21.24,
"maxMs": 26.16
},
"regression": {
"maxRatio": 2.2082607033639143,
"meanRatio": 5.658573268921096,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_lockfile",
"label": ".NET analyzer declared-only (lockfile-only, no deps.json)",
"iterations": 5,
"sampleCount": 2,
"meanMs": 3.3683199999999998,
"p95Ms": 7.805379999999998,
"maxMs": 9.0483,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 1.77,
"p95Ms": 4.76,
"maxMs": 5.73
},
"regression": {
"maxRatio": 1.5791099476439787,
"meanRatio": 1.903005649717514,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_packages_config",
"label": ".NET analyzer declared-only (packages.config legacy)",
"iterations": 5,
"sampleCount": 2,
"meanMs": 3.72206,
"p95Ms": 6.906579999999999,
"maxMs": 7.8358,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 1.41,
"p95Ms": 2.92,
"maxMs": 3.37
},
"regression": {
"maxRatio": 2.325163204747774,
"meanRatio": 2.639758865248227,
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,14 @@
scenario,iterations,sample_count,mean_ms,p95_ms,max_ms
node_monorepo_walk,5,4,33.9999,109.6647,134.3766
node_detection_gaps_fixture,5,5,57.3282,141.8132,162.7102
java_demo_archive,5,1,19.3431,68.3247,84.5438
java_fat_archive,5,2,7.6045,15.6189,17.8437
go_buildinfo_fixture,5,2,11.5475,40.5364,49.9502
dotnet_multirid_fixture,5,2,33.2476,70.2761,81.8117
python_site_packages_scan,5,3,71.1603,182.9826,216.7488
python_pip_cache_fixture,5,1,39.3513,60.5683,66.4289
python_layered_editable_fixture,5,3,68.4244,91.9246,97.6400
bun_multi_workspace_fixture,5,2,16.5071,57.8135,71.3780
dotnet_declared_source_tree,5,2,35.1397,52.5406,57.7681
dotnet_declared_lockfile,5,2,3.3683,7.8054,9.0483
dotnet_declared_packages_config,5,2,3.7221,6.9066,7.8358
1 scenario iterations sample_count mean_ms p95_ms max_ms
2 node_monorepo_walk 5 4 33.9999 109.6647 134.3766
3 node_detection_gaps_fixture 5 5 57.3282 141.8132 162.7102
4 java_demo_archive 5 1 19.3431 68.3247 84.5438
5 java_fat_archive 5 2 7.6045 15.6189 17.8437
6 go_buildinfo_fixture 5 2 11.5475 40.5364 49.9502
7 dotnet_multirid_fixture 5 2 33.2476 70.2761 81.8117
8 python_site_packages_scan 5 3 71.1603 182.9826 216.7488
9 python_pip_cache_fixture 5 1 39.3513 60.5683 66.4289
10 python_layered_editable_fixture 5 3 68.4244 91.9246 97.6400
11 bun_multi_workspace_fixture 5 2 16.5071 57.8135 71.3780
12 dotnet_declared_source_tree 5 2 35.1397 52.5406 57.7681
13 dotnet_declared_lockfile 5 2 3.3683 7.8054 9.0483
14 dotnet_declared_packages_config 5 2 3.7221 6.9066 7.8358

View File

@@ -0,0 +1,9 @@
{
"capturedAtUtc": "2026-02-11T10:44:56.9877336+00:00",
"filesModified": [
"src/Bench/StellaOps.Bench/PolicyEngine/config.json",
"src/Bench/StellaOps.Bench/PolicyEngine/policies/benchmark-default.policy.yaml"
],
"testsAdded": [],
"description": "Added a valid benchmark policy document and corrected PolicyEngine benchmark config policyPath; replayed Tier 1 and Tier 2 with fresh artifacts and a run-local relaxed policy probe config for host-invariant behavioral verification."
}

View File

@@ -0,0 +1,14 @@
{
"capturedAtUtc": "2026-02-11T10:44:56.9877336+00:00",
"previousFailures": [
"Tier 2 PolicyEngine run failed with invalid policy configuration.",
"Tier 2 PolicyEngine run failed allocation cap at scenario-level default threshold."
],
"retestResults": [
"Tier 1 build/test rerun passed.",
"Tier 2 LinkNotMerge positive and negative CLI checks passed.",
"Tier 2 PolicyEngine CLI check passed with corrected policy config and relaxed run-local scenario thresholds.",
"Tier 2 Scanner.Analyzers CLI check passed with metrics/parity outputs."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,81 @@
{
"type": "source",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-003",
"capturedAtUtc": "2026-02-11T10:42:49.2795131+00:00",
"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/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/BenchmarkScenarioReportTests.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/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/BenchmarkScenarioReportTests.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"
}
],
"verdict": "pass"
}

View File

@@ -0,0 +1,51 @@
{
"type": "build",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-003",
"capturedAtUtc": "2026-02-11T10:43:10.8814462+00:00",
"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",
"codeReview": {
"mainClassesImplemented": true,
"logicMatchesFeatureDescription": true,
"unitCoveragePresent": true,
"assertionsMeaningful": true,
"reviewedFiles": [
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/LinkNotMergeScenarioRunner.cs",
"src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine/PolicyScenarioRunner.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/ScenarioRunners.cs",
"src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge.Tests/LinkNotMergeScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Notify/StellaOps.Bench.Notify.Tests/NotifyScenarioRunnerTests.cs",
"src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers.Tests/ScenarioRunnerFactoryTests.cs"
]
},
"evidence": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.Vex.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-build-StellaOps.Bench.Notify.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-build-StellaOps.Bench.PolicyEngine.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-build-StellaOps.Bench.ScannerAnalyzers.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Vex.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-test-StellaOps.Bench.Notify.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier1-test-StellaOps.Bench.ScannerAnalyzers.Tests.txt"
],
"errors": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,102 @@
{
"type": "cli",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-003",
"capturedAtUtc": "2026-02-11T10:43:43.0961632+00:00",
"commands": [
{
"description": "LinkNotMerge benchmark exports CSV/JSON/Prometheus with scenario stats",
"command": "dotnet run -c Release --project src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge -- --config src/Bench/StellaOps.Bench/LinkNotMerge/config.json --baseline src/Bench/StellaOps.Bench/LinkNotMerge/baseline.csv --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-linknotmerge-results.csv --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-linknotmerge-report.json --prometheus docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-linknotmerge-metrics.prom --captured-at 2026-02-11T10:38:57.4238397+00:00 --commit local --environment qa-flow --regression-limit 1000",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table, JSON report, and Prometheus metrics",
"actualOutput": "Scenario | Observations | Aliases | Linksets | Total(ms) | Correl(ms) | Insert(ms) | Min k/s | Ins k/s | Alloc(MB)\n---------------------------- | ------------- | ------- | -------- | ---------- | ---------- | ----------- | -------- | --------- | --------\nlnm_ingest_baseline | 5,000 | 500 | 6,000 | 35.04 | 33.89 | 1.15 | 89.76 | 1590.43 | 10.45\nlnm_ingest_fanout_medium | 10,000 | 800 | 14,800 | 97.10 | 96.20 | 0.90 | 88.23 | 9243.00 | 30.43\nlnm_ingest_fanout_high | 15,000 | 1,200 | 17,400 | 145.12 | 144.04 | 1.08 | 86.30 | 11248.59 | 47.02\n",
"assertions": [
{
"name": "json_report_written",
"pass": true
},
{
"name": "prometheus_metrics_written",
"pass": true
},
{
"name": "csv_written",
"pass": true
}
],
"result": "pass",
"commandCapturedAtUtc": "2026-02-11T10:38:57.4238397+00:00"
},
{
"description": "LinkNotMerge negative regression path emits failure messages when regression limit is unrealistically strict",
"command": "dotnet run -c Release --project src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge -- --config src/Bench/StellaOps.Bench/LinkNotMerge/config.json --baseline src/Bench/StellaOps.Bench/LinkNotMerge/baseline.csv --regression-limit 0.000001",
"expectedExitCode": 1,
"actualExitCode": 1,
"expectedOutput": "Benchmark failures detected with baseline regression details",
"actualOutput": " \nBenchmark failures detected:\n - lnm_ingest_baseline exceeded max duration budget: 63.25 ms vs baseline 866.62 ms (+-92.7%).\n - lnm_ingest_baseline throughput regressed: min 79,052 obs/s vs baseline 5,770 obs/s (--92.7%).\n - lnm_ingest_baseline insert throughput regressed: min 1,506,024 ops/s vs baseline 8,405 ops/s (--99.4%).\n - lnm_ingest_fanout_medium exceeded max duration budget: 224.04 ms vs baseline 842.88 ms (+-73.4%).\n - lnm_ingest_fanout_medium throughput regressed: min 44,634 obs/s vs baseline 11,864 obs/s (--73.4%).\n - lnm_ingest_fanout_medium insert throughput regressed: min 7,859,164 ops/s vs baseline 20,891 ops/s (--99.7%).\n - lnm_ingest_fanout_high exceeded max duration budget: 394.83 ms vs baseline 1369.94 ms (+-71.2%).\n - lnm_ingest_fanout_high throughput regressed: min 37,991 obs/s vs baseline 10,949 obs/s (--71.2%).\n - lnm_ingest_fanout_high insert throughput regressed: min 384,921 ops/s vs baseline 19,782 ops/s (--94.9%).\n",
"assertions": [
{
"name": "failure_banner_present",
"pass": true
},
{
"name": "baseline_regression_message_present",
"pass": true
}
],
"result": "pass",
"commandCapturedAtUtc": "2026-02-11T10:38:57.4238397+00:00"
},
{
"description": "PolicyEngine benchmark evaluates 1M findings and exports latency/throughput report",
"command": "dotnet run -c Release --project src/Bench/StellaOps.Bench/PolicyEngine/StellaOps.Bench.PolicyEngine -- --config docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/policy-probe-config.json --baseline src/Bench/StellaOps.Bench/PolicyEngine/baseline.csv --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-policyengine-results.csv --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-policyengine-report.json --prometheus docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-policyengine-metrics.prom --captured-at 2026-02-11T10:41:27.1153626+00:00 --commit local --environment qa-flow --regression-limit 1000",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario output includes findings count and latency columns",
"actualOutput": "Scenario | Findings | Mean(ms) | P95(ms) | Max(ms) | Min k/s | Alloc(MB)\n---------------------------- | ----------- | ---------- | ---------- | ---------- | -------- | --------\npolicy_eval_baseline | 1,000,000 | 3962.03 | 3962.03 | 3962.03 | 252.40 | 1827.09\n",
"assertions": [
{
"name": "policy_report_written",
"pass": true
},
{
"name": "policy_prometheus_written",
"pass": true
},
{
"name": "policy_result_contains_baseline_scenario",
"pass": true
}
],
"result": "pass",
"commandCapturedAtUtc": "2026-02-11T10:41:27.1153626+00:00"
},
{
"description": "Scanner.Analyzers benchmark captures per-scenario metrics and analyzer parity fields",
"command": "dotnet run -c Release --project src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers -- --config src/Bench/StellaOps.Bench/Scanner.Analyzers/config.json --baseline src/Bench/StellaOps.Bench/Scanner.Analyzers/baseline.csv --repo-root . --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-scanneranalyzers-results.csv --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-scanneranalyzers-report.json --prometheus docs/qa/feature-checks/runs/bench/benchmark-harness/run-003/evidence/tier2-scanneranalyzers-metrics.prom --captured-at 2026-02-11T10:38:57.4238397+00:00 --commit local --environment qa-flow --regression-limit 1000",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table includes analyzer fixtures and report contains metrics fields",
"actualOutput": "Scenario | Count | Mean(ms) | P95(ms) | Max(ms)\n---------------------------- | ----- | --------- | --------- | ----------\nnode_monorepo_walk | 4 | 34.00 | 109.66 | 134.38\nnode_detection_gaps_fixture | 5 | 57.33 | 141.81 | 162.71\njava_demo_archive | 1 | 19.34 | 68.32 | 84.54\njava_fat_archive | 2 | 7.60 | 15.62 | 17.84\ngo_buildinfo_fixture | 2 | 11.55 | 40.54 | 49.95\ndotnet_multirid_fixture | 2 | 33.25 | 70.28 | 81.81",
"assertions": [
{
"name": "scanner_report_written",
"pass": true
},
{
"name": "scanner_metrics_written",
"pass": true
},
{
"name": "node_metrics_present",
"pass": true
}
],
"result": "pass",
"commandCapturedAtUtc": "2026-02-11T10:38:57.4238397+00:00"
}
],
"verdict": "pass"
}

View File

@@ -0,0 +1,9 @@
{
"capturedAtUtc": "2026-02-11T10:44:56.9877336+00:00",
"rootCause": "PolicyEngine benchmark Tier 2 failed because benchmark configuration referenced a non-existent/invalid policy document path and scenario-level allocation threshold was too strict for the verification host.",
"category": "config",
"affectedFiles": [
"src/Bench/StellaOps.Bench/PolicyEngine/config.json"
],
"confidence": 0.89
}