Skip to content

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 into
mainfrom
claude/issue-14832-quarantine-never-read-case
Sep 3, 2026
Merged

test(cli): quarantine the never-read-reader hang case behind #14832 (maintainer ruling A, 2026-09-03)#14871
os-project-manager merged 2 commits into
mainfrom
claude/issue-14832-quarantine-never-read-case

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

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.js is fixed, the one case that has been ejecting every merge-queue batch is quarantined so main can 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 in bin/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 is it.skipit plus one spawn line.
  • The 'never-read' spawn in beforeAll is commented out verbatim (that spawn is where the 180 s UNREAD_HARD_CAP_MS is paid; the skipped case is its only consumer — unread is 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_MS and 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 (the domain:cli lane's, branch claude/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 dispatched os-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 its os-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

…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
@github-actions github-actions Bot added the size/s label Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing 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
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 2263ca4d679026335f559184c0bed4e76d35a242packageMentionDocs.

Merged via the queue into main with commit 392f410 Sep 3, 2026
45 checks passed
@os-project-manager
os-project-manager deleted the claude/issue-14832-quarantine-never-read-case branch September 3, 2026 08:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants