Part 3 of the StyloBot Release Series is up.
https://www.mostlylucid.net/blog/stylobot-release-reliability
This one is less about bots and more about the reality of long-running .NET based systems: everything that learns from traffic eventually accumulates.
Came from one of my periodic reliability reviews where StyloBot’s vector layer had drifted to 13GB on the .NET Large Object Heap due to the wrong abstraction (in-process HNSW behaving like an unbounded cache).
The interesting part wasn’t the fix. It was recognising that the architecture itself was wrong for the runtime pattern.
Covers:
how I periodically review long-running services
using dotnet-counters, dotMemory and dotTrace to find growth
why “just add a cap” is often the wrong answer
replacing unbounded ANN structures with bounded hot caches + compacted persistence
taking the vector layer from 13GB LOH to <6MB
The broader point applies to any system that “remembers”:
bot detection, fraud scoring, recommendations, anomaly detection, RAG pipelines, adaptive systems.
Fix the shape, not the symptom.
#dotnet #aspnetcore #performance #architecture #ai #rag #observability