docs(#492/#493): case study — the initialize response that never came - #510
Merged
Conversation
Self-debugging RCA writeup of the #492 Ruby launch stall: the incident log, why #470's decoder paths were ruled out, mcp-debugger stepping through its own compiled MinimalDapClient (statement breakpoints in dist/, evaluate_expression against pendingRequests, the stack of the event-delivery moment), the fake-rdbg replay with its DAP trace, the rdbg 1.11.0 source analysis (silent `if sock = @sock` drop guard, unsynchronized cleanup_reader) with the seq discriminator for the next live capture, and what #507/#509 changed. Honest about proven vs. hypothesized. Also: troubleshooting gains a section decoding the stage-aware 30s init-timeout message (post-#493), the ruby guide's troubleshooting table maps the new recovery warning to the case study, and the README documentation index links it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
debugmcpdev
added a commit
that referenced
this pull request
Aug 27, 2026
The full RCA narrative behind PR #522: how a js attach pause_execution could return success forever without pausing anything, why the routing hole a code-reading pass produced was real but not the field mechanism (js-debug's smart-stepper converting user pauses into an endless step chase through internal frames was), the adapterConfig {trace: true} technique that made the adapter narrate its own CDP decisions, and the third bug the fix's e2e caught that interactive repro timing could not reach (pre-adoption dispatch swallowed without a response). Side findings link to the issues they became: #518 (trace parent/child discriminator), #519 (routing logs invisible in the per-session proxy log), #520 (ensureInitialStop's 12s threads poll on js attach). Continues the docs/case-studies series (#510, #516); README links it. Claude-Session: https://claude.ai/code/session_01XtvNu3aNB1nw1URRL5UTgR Co-authored-by: CI Bot <ci@example.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Publishes the self-debugging RCA of the #492 Ruby launch stall as the first entry in a new
docs/case-studies/directory, per the dogfooding session that produced #507 and #509.docs/case-studies/rdbg-initialize-response-stall.mdcovers:MinimalDapClient—statement:breakpoints indist/,evaluate_expressionagainstpendingRequests, the stack of the event-delivery moment — with the actual tool callsDAP_TRACEif sock = @sockdrop guard, the unsynchronizedcleanup_reader, and the seq discriminator (event seq 1 = response skipped; seq 2 = sent-then-lost) that the next live capture will settleCross-links:
docs/troubleshooting.md: new section decoding the stage-aware init-timeout message (post-Proxy-init timeout misattributes the cause: says the adapter 'failed to start' when it connected fine and a DAP request simply never got a response #493) → case studydocs/ruby/README.md: troubleshooting-table row mapping the new recovery warning → case study### AddedentryMerge after #509 (the troubleshooting section describes its message variants).
References #492 #493
🤖 Generated with Claude Code