Skip to content

docs: retain reload drain investigation pending failure logs - #7933

Merged
kixelated merged 7 commits into
mainfrom
quest/m0/test-flakes-2/reload-close-drain
Nov 5, 2026
Merged

kixelated merged 7 commits into
mainfrom
quest/m0/test-flakes-2/reload-close-drain

Conversation

@kixelated

@kixelated kixelated commented Nov 5, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Investigate reload close-drain, reported once without saved failure output. The failure did not reproduce, so this PR records evidence and keeps the quest open.

Approach

Quest-only update: retain the findings, the fresh sighting, the maintainer decision, and a wait for captured failure output. The plan identifies the shared fin fixture as an unverified hypothesis and explains the limits of forced-yield runs. No test or production change. Examined overlapping route handle, route events, and padding PRs before claiming; none fixes this race.

Impact

  • Public API: none.
  • Wire: none.

Alternatives

Finishing and reading the setup group through FIN mirrors the earlier lite fixture fix, but the runs below did not justify changing this fixture. No speculative patch, retries, sleeps, or timeout changes.

Validation

  • quest gate bun test --cwd js/net --rerun-each 20 --only-failures: 58,645 pass, 40 skip, 95 fail across 121 files in 476.88 seconds. All 20 reload rounds passed, including all drain cases. Failures: five unrelated tests each failed on reruns 2–20, comprising the benchmark dynamic-import test and four connection fallback tests. This ran on unchanged source before the documentation commits.
  • quest gate bun test --preload ./.tmp/force-yield.ts ./js/net/src/connection/reload.test.ts ./js/net/src/connection/pool.test.ts ./js/net/src/connection/close.test.ts ./js/net/src/lite/connection.test.ts --test-name-pattern 'closing the loop|teardown by|a URL change' --rerun-each 5 --only-failures: 40 pass, zero fail. The scratch preload stubs performance.now() to increase 5 ms each read, forcing stream-budget yields at each clock check.
  • quest check: 587 documents pass.
  • quest gate just ci: passed on final head 2d3d613897ac0f134e5c185f9bedbd82f724e98b (78 seconds after gate admission).
  • quest check --base origin/main --branch quest/m0/test-flakes-2/reload-close-drain: passed, 587 documents.

Review

  • Latest: Codex gpt-6.1-sol (quest review --base origin/main) on head 79fc1043f956e61dee55ee6710f15d88c5d3f478: no findings. Recorded by the coordinator from the iterate report.

Claude Code, claude-opus-5-5, medium effort, via quest review --base origin/main.

  • Round 1: three plan findings, all fixed: name the shared-fixture hypothesis, accept failure reports without unavailable session logs, and clarify forced-yield coverage limits.
  • Round 2: head 2d3d613897ac0f134e5c185f9bedbd82f724e98b, zero findings.

Decisions

  • ✅ Keep the quest and investigate the next captured failure with logs (maintainer, 2026-11-05, /quest-plan). Rejected: abandon it. moq-dev/moq#7764 reported the same test failing once in a full-suite run on 2026-11-05: expect(fin.closed).toBe(false) after a 999 ms clock advance, followed by three passing isolated runs. The quest now records this sighting, the rerun evidence, and an actionable moq-dev/moq: wait. This PR remains quest-only.

Follow-ups

The package rerun experiment exposes benchmark-import caching and connection fallback state persisting across reruns. These are outside this quest; distinguish rerun isolation from ordinary CI failures before planning fixes.

(Written by GPT-6.1 Sol with high)

kixelated and others added 3 commits November 4, 2026 22:33
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@kixelated kixelated changed the title reload.test.ts's close-drain tests pass under load docs: record reload drain reproduction blocker Nov 5, 2026
kixelated and others added 2 commits November 5, 2026 08:50
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@kixelated kixelated changed the title docs: record reload drain reproduction blocker docs: retain reload drain investigation pending failure logs Nov 5, 2026
@kixelated
kixelated marked this pull request as ready for review November 5, 2026 17:12
@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The quest records a November 5 close-drain test failure after a 999 ms clock advance. It documents an unconfirmed hypothesis and two reproduction attempts that did not reproduce the failure. It also specifies the logs and per-client dial and close evidence to capture from the next failure before choosing a fix.

Merge Risk: Minimal · up to 2d3d6

The update documents the unresolved flake without changing tests or production behavior. No actionable merge-blocking risk is identified.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title clearly and concisely describes the documentation update that keeps the reload drain investigation open pending failure logs.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description check Passed The description directly matches the documentation-only changes. It explains the reload close-drain investigation, recorded evidence, validation results, and decision to keep the quest open.
Finishing Touches

Simplify code

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6cb7f9a8-bb04-41d4-81ae-3dad160677b5
Commits

Reviewing files that changed from the base of the PR and between f4f1c05 and 2d3d613.

Files selected for processing: 1

  • quest/m0/test-flakes-2/reload-close-drain.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review.

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed commit 2d3d613. No actionable findings in this documentation-only change. Keeping the quest open pending captured failure evidence is appropriate: the shared-fin explanation remains hypothetical and the forced-yield runs do not claim to exclude other paths.

Verification: GitHub-only static review; I did not rerun the experiments or independently verify their reported totals.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No critical issues — two documentation gaps inline.

Reviewed changes

  • Keeps the flake quest open — records the maintainer decision, the #7764 sighting (expect(fin.closed).toBe(false) after a 999 ms advance, then three passing isolated runs), and a wait for captured failure output instead of abandoning or patching blind.
  • Adds the shared-fin hypothesis — names an extra dial mutating shared fin.hold / fin.closed while the track is read from dials[0], and labels it unverified.
  • Records reproduction attempts — the 20-round js/net package run (58,645 pass / 40 skip / 95 fail, all reload rounds passing) and the four-file forced-yield run (40 pass, 0 fail), with the limits of each.
  • No test, production, API, or wire change.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

  • Recorded #7764's test.skip — the quest now says moq-dev/moq#7764 disables the drain test under the disable-a-flaky-test policy, that its body reports no follow-up quest, and that restoring the test with per-dial diagnostics is part of this quest once the skip lands.
  • Scoped the shared-fin hypothesis — attributes the overwrite/read hazard to closing the loop and states that the teardown by … fixture guards with if (dials.length === 0), so the next investigator checks the right fixture. Confirmed against js/net/src/connection/reload.test.ts:732 and the unguarded stub in the closing the loop test.
  • Updated the wait — separates the pre-skip case (capture the next full-suite or merge-queue failure with logs) from the post-skip case (restore the test and reproduce under multi-file load). Verified the quoted test.skip and its comment exist on #7764's branch.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit d2a7ead Nov 5, 2026
10 checks passed
@kixelated
kixelated deleted the quest/m0/test-flakes-2/reload-close-drain branch November 5, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant