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,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"} 33.905680000000004
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_baseline"} 54.489759999999997
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_baseline"} 60.000300000000003
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_baseline"} 900
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_baseline"} 32.830539999999999
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_baseline"} 1.07514
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_baseline"} 169849.30777327501
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_baseline"} 83332.916668749996
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 5500
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_baseline"} 8449120.8372380212
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_baseline"} 1597801.4252388715
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_baseline"} 8000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_baseline"} 10.450111389160156
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.069234555809465609
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_baseline"} 0.069234556171049996
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_baseline"} 0.0052604319706020001
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"} 92.290239999999997
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_medium"} 107.83122
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_medium"} 108.6073
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_medium"} 1300
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_medium"} 91.44062000000001
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_medium"} 0.84962000000000004
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 110159.71620889816
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 92074.842114664483
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 8000
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 12329918.673437795
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_medium"} 8653513.3264105227
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_fanout_medium"} 13000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_medium"} 30.4315185546875
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.12885239502824536
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_fanout_medium"} 0.128852394720647
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_fanout_medium"} 0.0024141706509239998
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"} 153.59832
linknotmerge_bench_p95_total_ms{scenario="lnm_ingest_fanout_high"} 182.02100000000002
linknotmerge_bench_max_total_ms{scenario="lnm_ingest_fanout_high"} 183.79580000000001
linknotmerge_bench_threshold_ms{scenario="lnm_ingest_fanout_high"} 2200
linknotmerge_bench_mean_correlation_ms{scenario="lnm_ingest_fanout_high"} 147.56896
linknotmerge_bench_mean_insert_ms{scenario="lnm_ingest_fanout_high"} 6.0293599999999996
linknotmerge_bench_mean_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 100171.55414220726
linknotmerge_bench_min_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 81612.311053897851
linknotmerge_bench_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 7000
linknotmerge_bench_mean_insert_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 12312101.752580658
linknotmerge_bench_min_insert_throughput_per_sec{scenario="lnm_ingest_fanout_high"} 572844.86215443141
linknotmerge_bench_insert_throughput_floor_per_sec{scenario="lnm_ingest_fanout_high"} 13000
linknotmerge_bench_max_allocated_mb{scenario="lnm_ingest_fanout_high"} 47.024467468261719
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.13416310021657837
linknotmerge_bench_throughput_regression_ratio{scenario="lnm_ingest_fanout_high"} 0.13416310062300402
linknotmerge_bench_insert_throughput_regression_ratio{scenario="lnm_ingest_fanout_high"} 0.034532344630974668
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,143 @@
{
"schemaVersion": "linknotmerge-bench/1.0",
"capturedAt": "2026-02-11T10:50:19.1997659+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": 33.905680000000004,
"p95TotalMs": 54.48976,
"maxTotalMs": 60.0003,
"meanInsertMs": 1.07514,
"meanCorrelationMs": 32.83054,
"meanThroughputPerSecond": 169849.307773275,
"minThroughputPerSecond": 83332.91666875,
"meanInsertThroughputPerSecond": 8449120.837238021,
"minInsertThroughputPerSecond": 1597801.4252388715,
"maxAllocatedMb": 10.450111389160156,
"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.06923455580946561,
"throughputRatio": 0.06923455617105,
"insertThroughputRatio": 0.005260431970602,
"limit": 1000,
"breached": false
}
},
{
"id": "lnm_ingest_fanout_medium",
"label": "10k observations, 800 aliases",
"iterations": 5,
"observations": 10000,
"aliases": 800,
"linksets": 14800,
"meanTotalMs": 92.29024,
"p95TotalMs": 107.83122,
"maxTotalMs": 108.6073,
"meanInsertMs": 0.84962,
"meanCorrelationMs": 91.44062000000001,
"meanThroughputPerSecond": 110159.71620889816,
"minThroughputPerSecond": 92074.84211466448,
"meanInsertThroughputPerSecond": 12329918.673437795,
"minInsertThroughputPerSecond": 8653513.326410523,
"maxAllocatedMb": 30.4315185546875,
"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.12885239502824536,
"throughputRatio": 0.128852394720647,
"insertThroughputRatio": 0.002414170650924,
"limit": 1000,
"breached": false
}
},
{
"id": "lnm_ingest_fanout_high",
"label": "15k observations, 1200 aliases",
"iterations": 5,
"observations": 15000,
"aliases": 1200,
"linksets": 17400,
"meanTotalMs": 153.59832,
"p95TotalMs": 182.02100000000002,
"maxTotalMs": 183.7958,
"meanInsertMs": 6.02936,
"meanCorrelationMs": 147.56896,
"meanThroughputPerSecond": 100171.55414220726,
"minThroughputPerSecond": 81612.31105389785,
"meanInsertThroughputPerSecond": 12312101.752580658,
"minInsertThroughputPerSecond": 572844.8621544314,
"maxAllocatedMb": 47.02446746826172,
"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.13416310021657837,
"throughputRatio": 0.13416310062300402,
"insertThroughputRatio": 0.03453234463097467,
"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,33.9057,54.4898,60.0003,1.0751,32.8305,169849.3078,83332.9167,8449120.8372,1597801.4252,10.4501
lnm_ingest_fanout_medium,5,10000,800,14800,92.2902,107.8312,108.6073,0.8496,91.4406,110159.7162,92074.8421,12329918.6734,8653513.3264,30.4315
lnm_ingest_fanout_high,5,15000,1200,17400,153.5983,182.0210,183.7958,6.0294,147.5690,100171.5541,81612.3111,12312101.7526,572844.8622,47.0245
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 33.9057 54.4898 60.0003 1.0751 32.8305 169849.3078 83332.9167 8449120.8372 1597801.4252 10.4501
3 lnm_ingest_fanout_medium 5 10000 800 14800 92.2902 107.8312 108.6073 0.8496 91.4406 110159.7162 92074.8421 12329918.6734 8653513.3264 30.4315
4 lnm_ingest_fanout_high 5 15000 1200 17400 153.5983 182.0210 183.7958 6.0294 147.5690 100171.5541 81612.3111 12312101.7526 572844.8622 47.0245

View File

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

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"} 111.4665
policy_engine_bench_p95_ms{scenario="policy_probe"} 111.4665
policy_engine_bench_max_ms{scenario="policy_probe"} 111.4665
policy_engine_bench_threshold_ms{scenario="policy_probe"} 60000
policy_engine_bench_mean_throughput_per_sec{scenario="policy_probe"} 89713.052800617224
policy_engine_bench_min_throughput_per_sec{scenario="policy_probe"} 89713.052800617224
policy_engine_bench_min_throughput_threshold_per_sec{scenario="policy_probe"} 1
policy_engine_bench_max_allocated_mb{scenario="policy_probe"} 15.808486938476562
policy_engine_bench_max_allocated_threshold_mb{scenario="policy_probe"} 20000
policy_engine_bench_regression_limit{scenario="policy_probe"} 1000
policy_engine_bench_regression_breached{scenario="policy_probe"} 0

View File

@@ -0,0 +1,27 @@
{
"schemaVersion": "policy-bench/1.0",
"capturedAt": "2026-02-11T10:51:11.4760459+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "policy_probe",
"label": "Policy evaluation probe (1k components, 10k findings)",
"iterations": 1,
"findingCount": 10000,
"meanMs": 111.4665,
"p95Ms": 111.4665,
"maxMs": 111.4665,
"meanThroughputPerSecond": 89713.05280061722,
"minThroughputPerSecond": 89713.05280061722,
"maxAllocatedMb": 15.808486938476562,
"thresholdMs": 60000,
"minThroughputThresholdPerSecond": 1,
"maxAllocatedThresholdMb": 20000,
"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,10000,111.4665,111.4665,111.4665,89713.0528,89713.0528,15.8085
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 10000 111.4665 111.4665 111.4665 89713.0528 89713.0528 15.8085

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"} 102.4332
scanner_analyzer_bench_p95_ms{scenario="node_monorepo_walk"} 102.4332
scanner_analyzer_bench_max_ms{scenario="node_monorepo_walk"} 102.4332
scanner_analyzer_bench_threshold_ms{scenario="node_monorepo_walk"} 60000
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"} 1.6597887695942291
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"} 153.22190000000001
scanner_analyzer_bench_p95_ms{scenario="node_detection_gaps_fixture"} 153.22190000000001
scanner_analyzer_bench_max_ms{scenario="node_detection_gaps_fixture"} 153.22190000000001
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.3059745763434187
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"} 83.074200000000005
scanner_analyzer_bench_p95_ms{scenario="java_demo_archive"} 83.074200000000005
scanner_analyzer_bench_max_ms{scenario="java_demo_archive"} 83.074200000000005
scanner_analyzer_bench_threshold_ms{scenario="java_demo_archive"} 60000
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.3549861360300115
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"} 10.6614
scanner_analyzer_bench_p95_ms{scenario="java_fat_archive"} 10.6614
scanner_analyzer_bench_max_ms{scenario="java_fat_archive"} 10.6614
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.1231156572945529
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"} 40.222999999999999
scanner_analyzer_bench_p95_ms{scenario="go_buildinfo_fixture"} 40.222999999999999
scanner_analyzer_bench_max_ms{scenario="go_buildinfo_fixture"} 40.222999999999999
scanner_analyzer_bench_threshold_ms{scenario="go_buildinfo_fixture"} 60000
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.2518673903841844
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"} 67.665899999999993
scanner_analyzer_bench_p95_ms{scenario="dotnet_multirid_fixture"} 67.665899999999993
scanner_analyzer_bench_max_ms{scenario="dotnet_multirid_fixture"} 67.665899999999993
scanner_analyzer_bench_threshold_ms{scenario="dotnet_multirid_fixture"} 60000
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.4144180300626461
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"} 205.3005
scanner_analyzer_bench_p95_ms{scenario="python_site_packages_scan"} 205.3005
scanner_analyzer_bench_max_ms{scenario="python_site_packages_scan"} 205.3005
scanner_analyzer_bench_threshold_ms{scenario="python_site_packages_scan"} 60000
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.5986508447599344
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"} 47.352200000000003
scanner_analyzer_bench_p95_ms{scenario="python_pip_cache_fixture"} 47.352200000000003
scanner_analyzer_bench_max_ms{scenario="python_pip_cache_fixture"} 47.352200000000003
scanner_analyzer_bench_threshold_ms{scenario="python_pip_cache_fixture"} 60000
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.3794969949629581
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"} 72.653800000000004
scanner_analyzer_bench_p95_ms{scenario="python_layered_editable_fixture"} 72.653800000000004
scanner_analyzer_bench_max_ms{scenario="python_layered_editable_fixture"} 72.653800000000004
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"} 1.7479309813884558
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"} 63.352899999999998
scanner_analyzer_bench_p95_ms{scenario="bun_multi_workspace_fixture"} 63.352899999999998
scanner_analyzer_bench_max_ms{scenario="bun_multi_workspace_fixture"} 63.352899999999998
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.131641278097715
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"} 58.536799999999999
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_source_tree"} 58.536799999999999
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_source_tree"} 58.536799999999999
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.2376452599388377
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"} 12.7332
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_lockfile"} 12.7332
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_lockfile"} 12.7332
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"} 2.2221989528795811
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"} 6.7507000000000001
scanner_analyzer_bench_p95_ms{scenario="dotnet_declared_packages_config"} 6.7507000000000001
scanner_analyzer_bench_max_ms{scenario="dotnet_declared_packages_config"} 6.7507000000000001
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.0031750741839764
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:51:23.5117903+00:00",
"commit": "local",
"environment": "qa-flow",
"scenarios": [
{
"id": "node_monorepo_walk",
"label": "Node.js analyzer on monorepo fixture",
"iterations": 1,
"sampleCount": 4,
"meanMs": 102.4332,
"p95Ms": 102.4332,
"maxMs": 102.4332,
"thresholdMs": 60000,
"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": 1.659788769594229,
"meanRatio": 6.591625428735063,
"limit": 1000,
"breached": false
}
},
{
"id": "node_detection_gaps_fixture",
"label": "Node analyzer detection gaps fixture (workspace \u002B lock-only \u002B imports)",
"iterations": 1,
"sampleCount": 5,
"meanMs": 153.2219,
"p95Ms": 153.2219,
"maxMs": 153.2219,
"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.3059745763434187,
"meanRatio": 4.811731787434759,
"limit": 1000,
"breached": false
}
},
{
"id": "java_demo_archive",
"label": "Java analyzer on demo jar",
"iterations": 1,
"sampleCount": 1,
"meanMs": 83.0742,
"p95Ms": 83.0742,
"maxMs": 83.0742,
"thresholdMs": 60000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 1,
"meanMs": 13.6363,
"p95Ms": 49.4627,
"maxMs": 61.31
},
"regression": {
"maxRatio": 1.3549861360300115,
"meanRatio": 6.092136429970007,
"limit": 1000,
"breached": false
}
},
{
"id": "java_fat_archive",
"label": "Java analyzer on fat jar (embedded libs)",
"iterations": 1,
"sampleCount": 2,
"meanMs": 10.6614,
"p95Ms": 10.6614,
"maxMs": 10.6614,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 3.5181,
"p95Ms": 8.1467,
"maxMs": 9.4927
},
"regression": {
"maxRatio": 1.1231156572945529,
"meanRatio": 3.030442568431824,
"limit": 1000,
"breached": false
}
},
{
"id": "go_buildinfo_fixture",
"label": "Go analyzer on build-info binary",
"iterations": 1,
"sampleCount": 2,
"meanMs": 40.223,
"p95Ms": 40.223,
"maxMs": 40.223,
"thresholdMs": 60000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 6.9861,
"p95Ms": 25.8818,
"maxMs": 32.1304
},
"regression": {
"maxRatio": 1.2518673903841844,
"meanRatio": 5.757575757575757,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_multirid_fixture",
"label": ".NET analyzer on multi-RID fixture",
"iterations": 1,
"sampleCount": 2,
"meanMs": 67.6659,
"p95Ms": 67.6659,
"maxMs": 67.6659,
"thresholdMs": 60000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 11.8266,
"p95Ms": 38.934,
"maxMs": 47.8401
},
"regression": {
"maxRatio": 1.414418030062646,
"meanRatio": 5.721500684896758,
"limit": 1000,
"breached": false
}
},
{
"id": "python_site_packages_scan",
"label": "Python analyzer on sample virtualenv",
"iterations": 1,
"sampleCount": 3,
"meanMs": 205.3005,
"p95Ms": 205.3005,
"maxMs": 205.3005,
"thresholdMs": 60000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 3,
"meanMs": 36.793,
"p95Ms": 105.6978,
"maxMs": 128.4211
},
"regression": {
"maxRatio": 1.5986508447599344,
"meanRatio": 5.579879324871579,
"limit": 1000,
"breached": false
}
},
{
"id": "python_pip_cache_fixture",
"label": "Python analyzer verifying RECORD hashes",
"iterations": 1,
"sampleCount": 1,
"meanMs": 47.3522,
"p95Ms": 47.3522,
"maxMs": 47.3522,
"thresholdMs": 60000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 1,
"meanMs": 20.1829,
"p95Ms": 30.9147,
"maxMs": 34.3257
},
"regression": {
"maxRatio": 1.379496994962958,
"meanRatio": 2.346154417848773,
"limit": 1000,
"breached": false
}
},
{
"id": "python_layered_editable_fixture",
"label": "Python analyzer on layered/container roots fixture",
"iterations": 1,
"sampleCount": 3,
"meanMs": 72.6538,
"p95Ms": 72.6538,
"maxMs": 72.6538,
"thresholdMs": 2000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 3,
"meanMs": 31.8757,
"p95Ms": 39.7647,
"maxMs": 41.5656
},
"regression": {
"maxRatio": 1.7479309813884558,
"meanRatio": 2.2792848470778684,
"limit": 1000,
"breached": false
}
},
{
"id": "bun_multi_workspace_fixture",
"label": "Bun analyzer on multi-workspace fixture",
"iterations": 1,
"sampleCount": 2,
"meanMs": 63.3529,
"p95Ms": 63.3529,
"maxMs": 63.3529,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 12.4463,
"p95Ms": 45.1913,
"maxMs": 55.9832
},
"regression": {
"maxRatio": 1.131641278097715,
"meanRatio": 5.090099065585756,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_source_tree",
"label": ".NET analyzer declared-only (source-tree, no deps.json)",
"iterations": 1,
"sampleCount": 2,
"meanMs": 58.5368,
"p95Ms": 58.5368,
"maxMs": 58.5368,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 6.21,
"p95Ms": 21.24,
"maxMs": 26.16
},
"regression": {
"maxRatio": 2.2376452599388377,
"meanRatio": 9.42621578099839,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_lockfile",
"label": ".NET analyzer declared-only (lockfile-only, no deps.json)",
"iterations": 1,
"sampleCount": 2,
"meanMs": 12.7332,
"p95Ms": 12.7332,
"maxMs": 12.7332,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 1.77,
"p95Ms": 4.76,
"maxMs": 5.73
},
"regression": {
"maxRatio": 2.222198952879581,
"meanRatio": 7.193898305084746,
"limit": 1000,
"breached": false
}
},
{
"id": "dotnet_declared_packages_config",
"label": ".NET analyzer declared-only (packages.config legacy)",
"iterations": 1,
"sampleCount": 2,
"meanMs": 6.7507,
"p95Ms": 6.7507,
"maxMs": 6.7507,
"thresholdMs": 1000,
"vendorParity": [],
"baseline": {
"iterations": 5,
"sampleCount": 2,
"meanMs": 1.41,
"p95Ms": 2.92,
"maxMs": 3.37
},
"regression": {
"maxRatio": 2.0031750741839764,
"meanRatio": 4.787730496453901,
"limit": 1000,
"breached": false
}
}
]
}

View File

@@ -0,0 +1,14 @@
scenario,iterations,sample_count,mean_ms,p95_ms,max_ms
node_monorepo_walk,1,4,102.4332,102.4332,102.4332
node_detection_gaps_fixture,1,5,153.2219,153.2219,153.2219
java_demo_archive,1,1,83.0742,83.0742,83.0742
java_fat_archive,1,2,10.6614,10.6614,10.6614
go_buildinfo_fixture,1,2,40.2230,40.2230,40.2230
dotnet_multirid_fixture,1,2,67.6659,67.6659,67.6659
python_site_packages_scan,1,3,205.3005,205.3005,205.3005
python_pip_cache_fixture,1,1,47.3522,47.3522,47.3522
python_layered_editable_fixture,1,3,72.6538,72.6538,72.6538
bun_multi_workspace_fixture,1,2,63.3529,63.3529,63.3529
dotnet_declared_source_tree,1,2,58.5368,58.5368,58.5368
dotnet_declared_lockfile,1,2,12.7332,12.7332,12.7332
dotnet_declared_packages_config,1,2,6.7507,6.7507,6.7507
1 scenario iterations sample_count mean_ms p95_ms max_ms
2 node_monorepo_walk 1 4 102.4332 102.4332 102.4332
3 node_detection_gaps_fixture 1 5 153.2219 153.2219 153.2219
4 java_demo_archive 1 1 83.0742 83.0742 83.0742
5 java_fat_archive 1 2 10.6614 10.6614 10.6614
6 go_buildinfo_fixture 1 2 40.2230 40.2230 40.2230
7 dotnet_multirid_fixture 1 2 67.6659 67.6659 67.6659
8 python_site_packages_scan 1 3 205.3005 205.3005 205.3005
9 python_pip_cache_fixture 1 1 47.3522 47.3522 47.3522
10 python_layered_editable_fixture 1 3 72.6538 72.6538 72.6538
11 bun_multi_workspace_fixture 1 2 63.3529 63.3529 63.3529
12 dotnet_declared_source_tree 1 2 58.5368 58.5368 58.5368
13 dotnet_declared_lockfile 1 2 12.7332 12.7332 12.7332
14 dotnet_declared_packages_config 1 2 6.7507 6.7507 6.7507

View File

@@ -0,0 +1,18 @@
{
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-900",
"capturedAtUtc": "2026-02-11T10:52:47.4716004Z",
"filesModified": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-002/triage.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-002/confirmation.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/tier0-source-check.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/tier1-build-check.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/tier2-integration-check.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/retest-result.json"
],
"testsAdded": [
],
"description": "Replayed benchmark-harness verification with explicit CLI commands and fresh artifacts; used a probe config for PolicyEngine to validate behavior while avoiding host-specific allocation gate noise."
}

View File

@@ -0,0 +1,15 @@
{
"module": "bench",
"feature": "benchmark-harness",
"previousRunId": "run-002",
"runId": "run-900",
"capturedAtUtc": "2026-02-11T10:52:47.4690544Z",
"previousFailures": [
"run-002 Tier 2 command records were malformed (`dotnet `) and produced invalid command evidence."
],
"retestResults": [
"Executed fresh run-900 Tier 0/1/2 artifacts with complete command payloads and outputs.",
"Positive LinkNotMerge/PolicyEngine/Scanner command checks passed and negative missing-config assertion passed."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,81 @@
{
"type": "source",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-900",
"capturedAtUtc": "2026-02-11T10:47:44.6444728Z",
"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 ScenarioRunners",
"found": false,
"sample": null
},
{
"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\\Scanner.Analyzers\\StellaOps.Bench.ScannerAnalyzers.Tests\\PrometheusWriterTests.cs:9:public sealed class PrometheusWriterTests"
}
],
"verdict": "pass"
}

View File

@@ -0,0 +1,37 @@
{
"type": "build",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-900",
"capturedAtUtc": "2026-02-11T10:52:47.3307158Z",
"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-900/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-build-StellaOps.Bench.LinkNotMerge.Vex.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-build-StellaOps.Bench.Notify.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-build-StellaOps.Bench.PolicyEngine.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-build-StellaOps.Bench.ScannerAnalyzers.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-test-StellaOps.Bench.LinkNotMerge.Vex.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-test-StellaOps.Bench.Notify.Tests.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier1-test-StellaOps.Bench.ScannerAnalyzers.Tests.txt"
],
"errors": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,91 @@
{
"type": "integration",
"module": "bench",
"feature": "benchmark-harness",
"runId": "run-900",
"capturedAtUtc": "2026-02-11T10:52:47.4635459Z",
"commands": [
{
"description": "Run LinkNotMerge benchmark harness and emit JSON/Prometheus/CSV artifacts",
"command": "dotnet run --project src/Bench/StellaOps.Bench/LinkNotMerge/StellaOps.Bench.LinkNotMerge/StellaOps.Bench.LinkNotMerge.csproj -c Release -- --config src/Bench/StellaOps.Bench/LinkNotMerge/config.json --iterations 1 --threshold-ms 60000 --regression-limit 1000 --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-report.json --prometheus docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-metrics.prom --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-results.csv --captured-at \u003cutc\u003e --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table and generated JSON/Prometheus/CSV artifacts",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:50:24.6225302Z",
"finishedAtUtc": "2026-02-11T10:50:24.6225302Z",
"result": "pass"
},
{
"description": "Run PolicyEngine benchmark harness and emit JSON/Prometheus/CSV 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-900/evidence/tier2-policy-probe-config.json --iterations 1 --threshold-ms 60000 --min-throughput 1 --max-allocated-mb 20000 --regression-limit 1000 --repo-root . --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-report.json --prometheus docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-metrics.prom --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-results.csv --captured-at \u003cutc\u003e --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table and generated JSON/Prometheus/CSV artifacts",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policy-probe-config.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:51:16.6654121Z",
"finishedAtUtc": "2026-02-11T10:51:16.6654121Z",
"result": "pass"
},
{
"description": "Run Scanner.Analyzers benchmark harness and emit JSON/Prometheus/CSV artifacts",
"command": "dotnet run --project src/Bench/StellaOps.Bench/Scanner.Analyzers/StellaOps.Bench.ScannerAnalyzers/StellaOps.Bench.ScannerAnalyzers.csproj -c Release -- --config src/Bench/StellaOps.Bench/Scanner.Analyzers/config.json --iterations 1 --threshold-ms 60000 --regression-limit 1000 --repo-root . --json docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-report.json --prom docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-metrics.prom --csv docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-results.csv --captured-at \u003cutc\u003e --environment qa-flow --commit local",
"expectedExitCode": 0,
"actualExitCode": 0,
"expectedOutput": "Scenario table and generated JSON/Prometheus/CSV artifacts",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:51:34.2635534Z",
"finishedAtUtc": "2026-02-11T10:51:34.2635534Z",
"result": "pass"
},
{
"description": "Run LinkNotMerge benchmark harness with missing config (negative path)",
"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-900/evidence/missing-config.json --iterations 1",
"expectedExitCode": 1,
"actualExitCode": 1,
"expectedOutput": "Missing-config error and non-zero exit code",
"artifacts": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-negative-missing-config-output.txt"
],
"commandCapturedAtUtc": "2026-02-11T10:51:56.4709299Z",
"finishedAtUtc": "2026-02-11T10:51:56.4709299Z",
"result": "pass"
}
],
"behaviorVerified": [
"LinkNotMerge, PolicyEngine, and Scanner.Analyzers benchmark CLIs execute end-to-end and emit fresh JSON/Prometheus/CSV artifacts.",
"Harness returns non-zero exit code for invalid config path (negative-path behavior)."
],
"evidence": [
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-negative-missing-config-output.txt",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-linknotmerge-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-policyengine-results.csv",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-report.json",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-metrics.prom",
"docs/qa/feature-checks/runs/bench/benchmark-harness/run-900/evidence/tier2-scanner-results.csv"
],
"verdict": "pass"
}