Skip to content

test(net): pin quiet catalog retention across rejoin and takeover - #5436

Merged
kixelated merged 4 commits into
mainfrom
quest/m1/quiet-edge-test
Oct 14, 2026
Merged

kixelated merged 4 commits into
mainfrom
quest/m1/quiet-edge-test

Conversation

@kixelated

@kixelated kixelated commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Pin the already-correct main behavior from #5413 so future origin changes cannot lose a quiet catalog after rejoin, publisher takeover, and cache expiry. The release fix landed in #5430.

Approach

Port the reporter's rejoin test and the release takeover variant to moq_net_sim::test, covering lite-05/06/07 and transport-19/22. A late reader must receive the latest catalog after twice the cache window; after a newer group arrives, the superseded catalog must expire. Remove the completed quest and references.

The takeover variant prices the original upstream above the replacement, so the relay reports the new route taking over and the test awaits that event before dropping the old connection, instead of the release test's 100ms sleep.

Impact

  • Public API: none.
  • Wire: none.

Alternatives

No production fix is needed on main. Epochless wires intentionally end existing readers when their route is replaced, so expiry assertions use the late reader on the current route. Existing route-change tests cover holder continuity where epochs are supported.

An equal-cost replacement (as on release) emits no announce update, so it can only be waited on with a settle sleep.

Validation

  • nix develop --command just check: all green except moq-relay auth::refresh::tests::an_outage_refuses_transiently_and_never_extends_the_expiry, which fails under full-suite load and passes alone; unrelated to this change.
  • Focused quiet-catalog regressions: 2 tests, 10 simulated scenarios passed.

Follow-ups

None for this quest.

(Written by GPT-6, updated by Claude Opus 5.5)

kixelated and others added 2 commits October 13, 2026 11:34
Co-Authored-By: Codex <noreply@openai.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Regression coverage is complete and local just check, the focused tests, and quest check pass. No open design decisions or follow-up quests were identified. Leaving this PR as a draft for maintainer review.

(Written by GPT-6)

kixelated and others added 2 commits October 14, 2026 09:00
# Conflicts:
#	quest/m0/release-22/quiet-edge.md
#	quest/m1/quiet-edge-test.md
Price the original upstream above the replacement, so the relay reports the
new route taking over, and wait for that event before dropping the old
connection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review October 14, 2026 16:21
@coderabbitai

coderabbitai Bot commented Oct 14, 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 34 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
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f0ce6de9-e19d-40f2-8340-ce58c1ea9e23
📥 Commits

Reviewing files that changed from the base of the PR and between 0d9e9ff and 4a54b95.

📒 Files selected for processing: 3
  • quest/m1/README.md
  • quest/m1/quiet-edge-test.md
  • rs/moq-net/tests/rejoin.rs
  • 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

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T16:23:51.533901Z 4a54b95 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@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: 4a54b95.

No actionable bugs found. Waiting for unused upstream demand exercises a real rejoin, and awaiting the cheaper route's update makes takeover synchronization stronger than a settle sleep. Fresh downstream sessions and waits beyond the expiry/sweep window check both quiet-catalog retention and eventual removal of the superseded group. Test-only coverage is the right scope for already-correct main behavior.

Verification: GitHub-only static inspection of the tests and relevant cache/origin behavior; no tests executed. Coverage is timed tracks with default retention on mock transport, not byte-pressure eviction, untimed tracks or real QUIC. Epochless cases check late-reader recovery rather than continuity of the original reader; the final any-error expiry assertion is less diagnostic than a specific expected outcome.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Merged main; the only conflicts were the two finished quests, both deleted (main had already removed the release backport quest in quest: finish the quiet-edge backport #5440).
  • quest: finish the quiet-edge backport #5440 added a plan note asking the takeover test to await a real signal instead of the release test's 100ms sleep. The original upstream is now priced above the replacement, so the relay emits an announce update (Update on epoch wires, Restart on epochless) and the test waits for it before dropping the old connection.
  • The ported tests pass on the post-moq-clock harness (2 tests, 10 scenarios). just check passes apart from the known moq-relay an_outage_refuses_transiently_and_never_extends_the_expiry load flake, already tracked in quest/m1/test-flakes-2/auth-refresh-mock-time.md.
  • Codex approved the final head.

(Written by Claude Opus 5.5)

@kixelated
kixelated enabled auto-merge October 14, 2026 16:42
@kixelated
kixelated added this pull request to the merge queue Oct 14, 2026
Merged via the queue into main with commit b1739e4 Oct 14, 2026
9 checks passed
@kixelated
kixelated deleted the quest/m1/quiet-edge-test branch October 14, 2026 17:37
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