fix(ci): address PR #35 review comments

- Document non-blocking receive contract in perf_bench.rs docstring,
  confirming no TCP deadlock race (Hoshe #1, critical)
- Make shadowcast parser order-independent — flush on new config header
  instead of requiring Recursive after Symmetric (Hoshe #2)
- Fix p95 calculation: use floor(0.95*(N-1)) nearest-rank instead of
  ceil(0.95*N)-1 which was off-by-one at N=50 (Hoshe #4)
- Error on --compare when no baseline file exists (Hoshe #5)
- Add D-031 10tps assumption comment to TICK_BUDGET_US (Tyre #1)
- Strengthen snapshot assertion: require warmup + half measurement
  window instead of warmup + 1 (Tyre #2)
- Regenerate baseline with corrected p95 (356µs, was 526µs)

Hoshe #3 (.PHONY) was already addressed — perf-baseline is in the
.PHONY declaration on Makefile line 10.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-18 13:07:46 +01:00
co-authored by Claude Opus 4.6
parent c1d7c072ae
commit d0596d2763
3 changed files with 72 additions and 52 deletions
+43 -43
View File
@@ -1,15 +1,15 @@
{
"timestamp": "2026-02-18T11:39:46.913254+00:00",
"timestamp": "2026-02-18T12:07:18.546680+00:00",
"git": {
"commit": "b4a3784",
"commit": "c1d7c07",
"branch": "ci"
},
"tick_timing": {
"max_us": 537,
"mean_us": 366,
"max_us": 363,
"mean_us": 332,
"measured_ticks": 50,
"min_us": 314,
"p95_us": 526,
"min_us": 310,
"p95_us": 356,
"warmup_ticks": 5
},
"entities": {
@@ -17,7 +17,7 @@
"max_per_snapshot": 21
},
"memory": {
"rss_kb": 6972
"rss_kb": 6900
},
"shadowcast": {
"configs": [
@@ -26,90 +26,90 @@
"density": "open field",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 62.2,
"symmetric_per_call_us": 62.2,
"recursive_total_ms": 107.25,
"recursive_per_call_us": 107.25
"symmetric_total_ms": 57.86,
"symmetric_per_call_us": 57.86,
"recursive_total_ms": 97.97,
"recursive_per_call_us": 97.97
},
{
"map_size": 32,
"density": "moderate corridors",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 60.15,
"symmetric_per_call_us": 60.15,
"recursive_total_ms": 211.61,
"recursive_per_call_us": 211.61
"symmetric_total_ms": 52.29,
"symmetric_per_call_us": 52.29,
"recursive_total_ms": 189.99,
"recursive_per_call_us": 189.99
},
{
"map_size": 32,
"density": "dense rooms",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 24.28,
"symmetric_per_call_us": 24.28,
"recursive_total_ms": 107.95,
"recursive_per_call_us": 107.95
"symmetric_total_ms": 21.31,
"symmetric_per_call_us": 21.31,
"recursive_total_ms": 98.47,
"recursive_per_call_us": 98.47
},
{
"map_size": 64,
"density": "open field",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 75.38,
"symmetric_per_call_us": 75.38,
"recursive_total_ms": 108.22,
"recursive_per_call_us": 108.22
"symmetric_total_ms": 60.5,
"symmetric_per_call_us": 60.5,
"recursive_total_ms": 98.33,
"recursive_per_call_us": 98.33
},
{
"map_size": 64,
"density": "moderate corridors",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 48.72,
"symmetric_per_call_us": 48.72,
"recursive_total_ms": 202.49,
"recursive_per_call_us": 202.49
"symmetric_total_ms": 47.41,
"symmetric_per_call_us": 47.41,
"recursive_total_ms": 184.87,
"recursive_per_call_us": 184.87
},
{
"map_size": 64,
"density": "dense rooms",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 14.5,
"symmetric_per_call_us": 14.5,
"recursive_total_ms": 90.33,
"recursive_per_call_us": 90.33
"symmetric_total_ms": 14.35,
"symmetric_per_call_us": 14.35,
"recursive_total_ms": 79.6,
"recursive_per_call_us": 79.6
},
{
"map_size": 150,
"density": "open field",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 59.7,
"symmetric_per_call_us": 59.7,
"recursive_total_ms": 103.09,
"recursive_per_call_us": 103.09
"symmetric_total_ms": 56.65,
"symmetric_per_call_us": 56.65,
"recursive_total_ms": 97.8,
"recursive_per_call_us": 97.8
},
{
"map_size": 150,
"density": "moderate corridors",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 43.64,
"symmetric_per_call_us": 43.64,
"recursive_total_ms": 178.09,
"recursive_per_call_us": 178.09
"symmetric_total_ms": 40.49,
"symmetric_per_call_us": 40.49,
"recursive_total_ms": 158.81,
"recursive_per_call_us": 158.81
},
{
"map_size": 150,
"density": "dense rooms",
"range": 20,
"iterations": 1000,
"symmetric_total_ms": 12.63,
"symmetric_per_call_us": 12.63,
"recursive_total_ms": 79.87,
"recursive_per_call_us": 79.87
"symmetric_total_ms": 12.88,
"symmetric_per_call_us": 12.88,
"recursive_total_ms": 77.98,
"recursive_per_call_us": 77.98
}
]
}