Repository navigation
docs: retain reload drain investigation pending failure logs - #7933
Conversation
Quest-Claim: 1ab09187349042a2
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
|
No actionable comments were generated in the recent review. WalkthroughThe 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:
|
kixelated
left a comment
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
ℹ️ 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-
finhypothesis — names an extra dial mutating sharedfin.hold/fin.closedwhile the track is read fromdials[0], and labels it unverified. - Records reproduction attempts — the 20-round
js/netpackage 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.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
…he loop Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ 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-
finhypothesis — attributes the overwrite/read hazard toclosing the loopand states that theteardown by …fixture guards withif (dials.length === 0), so the next investigator checks the right fixture. Confirmed againstjs/net/src/connection/reload.test.ts:732and the unguarded stub in theclosing the looptest. - 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.skipand its comment exist on #7764's branch.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

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
finfixture 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
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 stubsperformance.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 head2d3d613897ac0f134e5c185f9bedbd82f724e98b(78 seconds after gate admission).quest check --base origin/main --branch quest/m0/test-flakes-2/reload-close-drain: passed, 587 documents.Review
gpt-6.1-sol(quest review --base origin/main) on head79fc1043f956e61dee55ee6710f15d88c5d3f478: no findings. Recorded by the coordinator from the iterate report.Claude Code,
claude-opus-5-5, medium effort, viaquest review --base origin/main.2d3d613897ac0f134e5c185f9bedbd82f724e98b, zero findings.Decisions
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 actionablemoq-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)