You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(lmtool): reframe timeout messages as transient + retry-friendly to nudge model retries (#1652)
* fix(lmtool): reframe timeout messages as transient + retry-friendly
The two timeout-path response messages previously led with '❌ Debug session failed to start' and listed root-cause hypotheses (compilation errors, ClassNotFoundException, ...) as 'This usually indicates a problem'.
Telemetry shows that interpretation is wrong:
- 30d retry analysis: success rate climbs from 17.7% (1 invoke) to 64.9% (6-10 invokes) — a 3.7x lift
- Started latency P95 = 100s vs the 45s / 15s thresholds — many timeouts are just slow-starting JVMs that DO eventually attach
- 66% of users invoke only once, suggesting the model treats the ❌ wording as a permanent failure and gives up
Rewrite both timeout messages to:
1. Lead with ⏳ (transient) instead of ❌ / ⚠️ (terminal)
2. State explicitly 'this is often transient'
3. Cite the retry-success pattern
4. Put 'call debug_java_application again' as the first recommended action
5. Keep the diagnostic checklist as a fallback (steps 3-4) for genuinely broken cases
No behavior change in the extension — only the natural-language string returned to the language model is changed. This is a targeted nudge for the model's retry policy.
Companion PR #1650 will give us per-invoke retry telemetry (retryCount / previousOutcome) to verify the lift after this lands.
* review: clarify JSON object syntax for waitForSession in smart-polling timeout message
0 commit comments