fix(core): name the ripgrep acquisition stage that failed (TKT-378) - #59
Open
sepo-eng wants to merge 1 commit into
Open
fix(core): name the ripgrep acquisition stage that failed (TKT-378)#59sepo-eng wants to merge 1 commit into
sepo-eng wants to merge 1 commit into
Conversation
The Windows ripgrep failure survived a full investigation uncaused because every distinct failure collapsed into one string. ripgrep.ts wrapped the whole program -- acquiring the binary as well as running it -- in a catch-all mapError reporting "ripgrep execution failed", and the reported message discarded the cause the tagged error carried. A stalled download and a shell that never exits were indistinguishable from a genuine execution failure. Acquisition is now labelled separately from execution, both carry their cause in the reported message, and the download and extraction stages each have their own timeout naming the stage, so a hang says which step hung. Extraction failures report the interpreter and exit code alongside its output. The four ripgrep suites get a per-test timeout above the acquisition budget; without it a hung stage would still surface as a generic test timeout naming nothing, which is the dead end this is meant to remove. Adds ripgrep-windows.yml, dispatch-only, running those four suites and nothing else. This fork publishes a signed Windows CLI whose core search fails on first use while test.yml has no Windows leg at all, so the shipping platform has no automated signal on search; one short run on demand answers it without putting GitHub-hosted minutes back on every push. No speculative fix for the failure itself: quoting is the most visible difference on the Windows path, not the demonstrated cause, and the evidence (a 30s hang rather than a fast fail) points away from it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KbNYZHcnxRCknFmhhPHe7L
|
Thanks for your contribution! This PR doesn't have a linked issue. All PRs must reference an existing issue. Please:
See CONTRIBUTING.md for details. |
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
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.
What
Makes the Windows ripgrep failure diagnosable. It does not fix it — the cause is still unconfirmed, and this is deliberate.
TKT-378's diagnosis established that the failure survived an entire investigation uncaused by construction:
ripgrep.tswrapped the whole program — acquiring the binary as well as running it — in a catch-allmapErrorreporting"ripgrep execution failed", and the reported message discarded the cause the tagged error carried. A stalled download, a shell that never exits, and a genuine execution failure all produced the same string.Three changes, exactly the ones the diagnosis asked for:
causefield.binary.filepathgets its own label, so a failed download can no longer report itself as a failed execution.Why the test-timeout change is part of it
The four ripgrep suites get a per-test timeout above the acquisition budget. Without it a hung stage still dies on bun's generic 30s test timeout, naming nothing — the labelled failure would never be the one you see, which is the dead end this is meant to remove.
Getting a Windows answer
test.ymlhas no Windows leg at all (TKT-338 removed it to stop burning GitHub-hosted minutes), so there was no job to re-enable. This addsripgrep-windows.yml: dispatch-only, running the four ripgrep suites and nothing else. The fork publishes a signed Windows CLI (publish.yml'ssign-cli-windowsjob plus a win-arm64 leg) whose core search fails on first use, and that shipping platform currently has zero automated signal on search. One short run on demand answers it without putting minutes back on every push.Dispatch it after merge (a
workflow_dispatchworkflow has to be on the default branch before it can be dispatched), then fix the stage the labelled failure names.What was verified
rgonPATH, freshXDG_CACHE_HOME— a 4.5 MBrgappears in the empty cache and all four suites pass. The download→extract→execute chain was exercised, not skipped past a preinstalled binary.ripgrep acquisition failed: ripgrep download failed from <url>: StatusCode: non 2xx status code (404 GET ...)ripgrep download timed out after <d> from <url>ripgrep extraction timed out after <d> running tar on <archive>packages/corefull suite: 1216 pass, 0 fail. Typecheck clean (also via the pre-push hook's repo-widebun typecheck). Prettier and oxlint clean on the changed files.What is deliberately not here
No PowerShell-quoting fix. Quoting is the most visible difference on the Windows path, not the demonstrated cause, and the evidence — a 30s hang rather than a fast fail — points away from it. Guessing here is what produced the previous dead end.
Linux is refuted on evidence and needs no change; the Windows severity stands.
🤖 Generated with Claude Code
https://claude.ai/code/session_01KbNYZHcnxRCknFmhhPHe7L