test(cli): quarantine the never-read-reader hang case behind #14832 (maintainer ruling A, 2026-09-03) - #14871
Merged
os-project-manager merged 2 commits intoSep 3, 2026
Conversation
…maintainer ruling A) The `'never-read'` case in run-dev-unbuilt-workspace.e2e.test.ts hangs under CI load and was SIGKILLed at the 180 s cap on `Test Core (1/6)`, ejecting a whole merge-queue batch each time. The product hang lives in `packages/cli/bin/run-dev.js` and is fixed separately; until it lands the case is skipped and its `beforeAll` spawn — the only place the 180 s is paid, and consumed by that case alone — is commented out verbatim beside a restore note. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ShyhexkB2d1AeRZ85tgAAe
…ignment assertion With the `'never-read'` spawn commented out nothing assigns `unread`, and `strict` then reports TS2454 at each of the three reads inside the skipped case. The package's own `typecheck` is `include: ["src"]`, so it never compiles this file and reported exit 0 either way; measured against an equivalent strict program the pristine file is 0 errors, the quarantine without this assertion is 3, and with it 0 again. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ShyhexkB2d1AeRZ85tgAAe
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
os-project-manager
enabled auto-merge
September 3, 2026 06:34
This was referenced Sep 3, 2026
os-zhuang
approved these changes
Sep 3, 2026
os-project-manager
deleted the
claude/issue-14832-quarantine-never-read-case
branch
September 3, 2026 08:16
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.
Part of #14832
Ruling and provenance
Maintainer ruling A on #14832 (2026-09-03, live PM chat with the director seat, verbatim 「A,你现在就派发处理」), recorded at 14832#issuecomment-5521280392: until the hang in
bin/run-dev.jsis fixed, the one case that has been ejecting every merge-queue batch is quarantined somaincan advance. This is a gate-weakening act taken by the maintainer and recorded as such; the quarantine is not a resting state.What changes (tests only, one file)
packages/cli/test/run-dev-unbuilt-workspace.e2e.test.ts:describe('the mirror direction: a reader that is never coming back')›it('gives up and exits instead of waiting forever')→it.skip(...), with a note stating the ruling, why (the'never-read'child hangs under CI load — a product defect inbin/run-dev.js, not a cap set too low — and each occurrence ejected a whole merge-queue batch), and the re-enable condition. The case body and its comments are untouched, so lifting the quarantine isit.skip→itplus one spawn line.'never-read'spawn inbeforeAllis commented out verbatim (that spawn is where the 180 sUNREAD_HARD_CAP_MSis paid; the skipped case is its only consumer —unreadis read nowhere else in the file). The'destroy-read-end'spawn and every other case stay live.let unread!: Lifetime— a definite-assignment assertion so the file stays strict-clean while nothing assigns it; it goes when the spawn is restored.⛔
bin/run-dev.js,RUN_TIMEOUT_MS,UNREAD_HARD_CAP_MS,STDERR_DRAIN_STALL_MSand every other test are untouched. No changeset: tests-only (skip-changeset).Re-enable condition
The PR that fixes the hang in
bin/run-dev.js(thedomain:clilane's, branchclaude/issue-14832-run-dev-unread-reader-hang) un-skips the case and restores the spawn in the same change; if that PR must not touch this test file, the director seat lands the one-line un-skip the moment the fix merges. #14832 stays open until then.Verification
Branch head
edf00951(two commits, both by the dispatchedos-dev). The dispatched dev's local run (the file's suite with the case reported as skipped and no 180 s wait, package typecheck, the derived gate family) is posted on #14832 as itsos-dev-report; the merge queue's own CI on this PR is the landing evidence — with the spawn removed,Test Core (1/6)no longer carries the three-minute tax.🤖 Generated with Claude Code
https://claude.ai/code/session_01ShyhexkB2d1AeRZ85tgAAe
Generated by Claude Code