docs(dev-client): coverage status + #136 sub-2 root-cause diagnosis#183
Merged
Conversation
…cation Empty 4-section skeleton (Works / Broken / Fixed / Deferred) populated by DC-Task 8's verify pass. References the standalone .mjs suites in the workspace repo that exercise dev-client-picker.ts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
DC-Task 8 verify pass. #136 sub-2 hang reproduced live (cdp_status ~33.5s with Dev Client picker up + Metro up); root cause is the 30s waitForReact in performSetup (setup.ts:67) against stale C++ targets that pass filterValidTargets while the picker blocks the bundle. Both harness suites re-run green (picker Metro-down 10ms no-hang; tutorial Metro-up). Fix deferred: no safe <=50 LOC change; proposed follow-up approach documented. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…age doc CI deferred: the planned macos-15 harness workflow is (a) partly broken as drafted — the picker suite needs Metro DOWN, the tutorial suite needs Metro UP, but the workflow starts Metro once for both — and (b) low ROI today, since both suites are reproduction fixtures with weak assertions guarding a deferred-unfixed bug. Revisit when #136 sub-2 is fixed (CI then guards the fix; workflow must run picker Metro-DOWN then tutorial Metro-UP). Co-Authored-By: Claude Opus 4.8 (1M context) <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
Adds
docs-site/src/content/docs/dev-client-coverage.md— the published coverage record for the Expo Dev Client picker + tutorial-modal handling inscripts/cdp-bridge/src/tools/dev-client-picker.ts(238 LOC, previously zero live coverage). Docs-only — no shipped code changed (the one in-scope fix was deferred; see below).Companion to the workspace-repo PR that adds the harness fixtures: Lykhoyda/rn-dev-agent-workspace#12 (the two standalone
.mjssuites that reproduce the picker + tutorial states).What the coverage doc records
What works — picker detection (when a device session exists) via
device_findtext match + 3-tier server-row matcher; auto-advance race re-probe; the Metro-down ~10ms fast path; CDP being non-perturbing to both surfaces.What's broken (verified by harness)
cdp_statushangs ~33.5s when the picker is up + Metro is up, then returns a misleadingok:true. Root-caused live (DC-Task 8): the pre-autoConnectpicker guard no-ops on a cold MCP start (gated onhasActiveSession()), stale C++ targets passfilterValidTargetsso the fast "no Hermes target" bail never fires, andwaitForReact(REACT_READY_TIMEOUT_MS=30_000)atsetup.ts:67then burns its full 30s because the picker blocks the bundle.handleDevClientPicker()is internal-only).Deferred (with rationale + concrete approaches): the #136 sub-2 fix (>50 LOC across the connect chain — tracked in a dedicated follow-up issue), a dismiss MCP tool, tutorial detection/dismissal, and the CI workflow (DC-Task 9 — partly broken as drafted + low ROI guarding an unfixed bug; revisit once the fix lands).
Why docs-only (no fix here)
The #136 sub-2 fix can't be done safely within the ≤50 LOC in-scope budget — the dominant cost is the 30s
waitForReactshared by every connect path, and a target-shape picker heuristic false-positives on normal bundle reloads (verified live). The correct fix (typedPickerBlockingBundleErroron a status-scoped bounded React probe) threads through 4-5 files. Filed as a dedicated follow-up issue rather than rushed into shipped code.Test plan
Refs
🤖 Generated with Claude Code