fix(ai-file): correct two wrong verdicts in the memprobe report
Ran the report against a full load window pulled from Loki (4,992 samples, 10 pods) instead of pasted excerpts, and it got two things wrong.
Last field swallowed on JSON logs. Collector-wrapped lines end with
cg_file_mb=0.02"}, and float() on that raises, so the field silently
became na. Page cache read as zero for every pod - it actually reached
79.6MB on one. Parse the leading numeric token instead.
Cold-start climb reported as a Python leak. blocks rises once after startup
into its steady band (measured 1.093M -> 1.130M, +3%) and then only sawtooths
inside it. Comparing the first sample to the last flagged 7 of 10 pods as
leaking; the steady-state slope was 0.5~9.0 blocks/req, effectively zero.
Judge on the tail-half slope, and require both a per-request rate and growth
within that tail.
Also print the tail-half RSS slope next to the overall slope: 7 of 10 pods had a positive overall slope but a flat tail (e.g. 0.392 overall, -0.007 tail), i.e. the ratchet saturates rather than running away. The overall slope alone reads as unbounded growth.
Tests cover both fixed verdicts, that sustained block growth is still flagged, and that a plateau hidden by the overall slope shows up in the tail. Full suite 496 passed.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com