Skip to content

js/net's widened max-age re-drop test ends cleanly, not with a reset - #8307

Merged
kixelated merged 4 commits into
mainfrom
quest/m0/test-flakes-2/widened-max-age-reset
Nov 9, 2026
Merged

kixelated merged 4 commits into
mainfrom
quest/m0/test-flakes-2/widened-max-age-reset

Conversation

@kixelated

@kixelated kixelated commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Claims quest/m0/test-flakes-2/widened-max-age-reset.md, which this PR finishes.

Summary

js/net's "an update keeping the budget drops the stale groups again on lite-07" finished the track right after its priority-only update, racing the publisher's reply that re-drops groups 1 and 2. When the end won, the reply was reset with Cancel and the reader failed with it.

The test now waits until the reader holds the re-drop of groups 1 and 2 under the new update, then finishes the track, so the end is a FIN. The publisher is unchanged.

Choices made without asking

  • Observable: the wait uses the package-internal hooks.givenUp(...).changed and hooks.staleHeld(...) from js/net/src/internal.ts, which other tests already import. The update clears the stale verdict, then the re-drop sets it again. The listener is registered before update(), so the clear is never missed. No public or wire API changes.
  • Wall-clock assert removed: the quest asked for this. A missing re-drop now fails by timeout instead of waiting out the 1.5 s grace.
  • Quest file removed: quest rm deleted quest/m0/test-flakes-2/widened-max-age-reset.md and its link in the epic README.

Models

Size: XS
Implementer: Claude, claude-haiku-5-5

Verification

  • bun test src/lite/widened_max_age.test.ts --rerun-each 100: 500 pass, 0 fail.
  • quest gate just check: exit 0 (biome, js check, js tests).
  • quest check: 586 documents ok.
  • Not reproduced locally: the original test passed 300/300 unloaded and 300/300 under CPU load on this host. The failure was only seen in fix(qmux): JS qmux streams follow QUIC's per-stream state machine #8230's CI, so the fix rests on the code path, not on a before/after reproduction.

Waiting

None. The quest is complete, and no decision is left for the maintainer.

Note: moq-dev/moq#8287 also edits quest/m0/test-flakes-2/README.md. If it lands first, merge main here; the conflict is only the link list.

🤖 Generated with Claude Code

(Written by Claude Haiku 5.5)

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, low effort
  • Session: 01a1bf43-c74c-7200-850d-94ef67d864bb, round 1
  • Head: 6a28e24
  • Base: origin/main at 6724807
  • Score: 9/10, The test waits for the re-drop event before finishing the producer and preserves the intended delay budget; source review found no actionable defects, though tests were not run as instructed.
  • Findings: none

kixelated and others added 2 commits November 8, 2026 09:26
The "keeping the budget" lite-07 test finished the track right after its
priority-only update, racing the publisher's reply that re-drops the stale
groups. When the end won, the reply was reset with Cancel and the reader
failed with it. The test now waits until the reader holds the re-drop of
groups 1 and 2 under the new update, then finishes the track, so the end is
a FIN. The wait is event-driven, so a missing re-drop still fails, and the
500 ms wall-clock assert it replaces is gone.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 8, 2026 17:53
@coderabbitai

coderabbitai Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 4 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

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: 5c239532-df0c-4405-b9ec-faed962365cb
Commits

Reviewing files that changed from the base of the PR and between 172fe8c and 6a28e24.

Files selected for processing: 3

  • js/net/src/lite/widened_max_age.test.ts
  • quest/m0/test-flakes-2/README.md
  • quest/m0/test-flakes-2/widened-max-age-reset.md
  • 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

@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 ba992ae. No actionable findings. The test now subscribes before updating, observes stale coverage clear and return for both groups, and only then finishes the producer. This addresses the previously identified test ordering race without changing the publisher's intentional cancellation behavior or relying on the removed elapsed-time assertion.

Verification: static review of the complete diff, subscriber update/drop handling, track hooks, and signal notification implementation through GitHub. No tests were run and CI flake elimination was not independently reproduced.

@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 — one test-fidelity suggestion inline.

Reviewed changes

  • Re-drop wait: the failing lite-07 test now subscribes to the drops signal before reader.update, waits for the update's clear and then for the publisher's re-drop of groups 1 and 2 to land, and only then finishes the track, so the end is a FIN rather than a Cancel from response().
  • Wall-clock assert removed: the now() import and the 500 ms elapsed check are gone; a missing re-drop now fails through the test timeout instead of the grace.
  • Quest closed: quest/m0/test-flakes-2/widened-max-age-reset.md and its epic README link are removed.

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

Comment thread js/net/src/lite/widened_max_age.test.ts Resolved
@kixelated
kixelated added this pull request to the merge queue Nov 9, 2026
@pullfrog

pullfrog Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Your OpenRouter API key was rejected. Issue a new key with the provider, then update the copy Pullfrog uses, in Pullfrog or in this repo's GitHub Actions secrets.

The provider's response
provider error: User not found. (401)

Pullfrog provider settings → · GitHub Actions secrets →

Pullfrog  | Rerun failed job ➔ | View workflow run | via Pullfrog | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS)

@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 head 6a28e24 incrementally from ba992ae, accounting for base changes. No new actionable findings.

The regression now explicitly resends delay.max = 1500 ms with the priority update, matching Subscriber.update's replacement/defaulting semantics and preserving the budget the test intends to exercise. It still subscribes to re-drop notifications before the update and waits for their arrival before finishing the producer. No production behavior changes.

Verification limits: GitHub-only static source/diff review. No tests or merge-queue flake reproduction executed.

Merged via the queue into main with commit 99a418c Nov 9, 2026
6 of 7 checks passed
@kixelated
kixelated deleted the quest/m0/test-flakes-2/widened-max-age-reset branch November 9, 2026 08:28
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