Context
During the AI-analysis overhaul (#423, PR #525) the native analyze-LLM prompt's legacy "Graph Sample Points" block (a coarse 5-point snapshot: 0/25/50/75/100% of the shot) was removed to restore dual-runtime prompt parity — the server prompt never included it. The AI now reasons over the deterministic, per-stage Shot Facts digest computed from the full telemetry (start/end/avg/max/min pressure & flow, stall, channeling, curve adherence, trigger classification, phases, weight deviation), which is treated as authoritative ("trust over raw telemetry").
Idea (not scheduled)
Optionally feed a proper full-curve downsample (~30–50 points, not 5) to both runtimes symmetrically, so the model can also reason about raw curve shape / inflection points that fall between stage boundaries, without reintroducing the single-runtime parity divergence.
Decision
Deferred. The current digest-only approach is considered sufficient for now — no implementation planned. Logging this so the option is not lost.
Constraints if revisited
- Must be added to both the server (
apps/server/api/routes/shots.py) and native (apps/web/src/services/interceptor/analyzeLlmPrompt.ts + DirectModeInterceptor.ts) prompts identically (dual-runtime parity is release-blocking).
- Keep Shot Facts as the authoritative layer; raw samples supplementary only.
- Watch prompt token budget, especially for smaller models (the overhaul's goal was cross-model consistency).
Context
During the AI-analysis overhaul (#423, PR #525) the native analyze-LLM prompt's legacy "Graph Sample Points" block (a coarse 5-point snapshot: 0/25/50/75/100% of the shot) was removed to restore dual-runtime prompt parity — the server prompt never included it. The AI now reasons over the deterministic, per-stage Shot Facts digest computed from the full telemetry (start/end/avg/max/min pressure & flow, stall, channeling, curve adherence, trigger classification, phases, weight deviation), which is treated as authoritative ("trust over raw telemetry").
Idea (not scheduled)
Optionally feed a proper full-curve downsample (~30–50 points, not 5) to both runtimes symmetrically, so the model can also reason about raw curve shape / inflection points that fall between stage boundaries, without reintroducing the single-runtime parity divergence.
Decision
Deferred. The current digest-only approach is considered sufficient for now — no implementation planned. Logging this so the option is not lost.
Constraints if revisited
apps/server/api/routes/shots.py) and native (apps/web/src/services/interceptor/analyzeLlmPrompt.ts+DirectModeInterceptor.ts) prompts identically (dual-runtime parity is release-blocking).