Repository navigation
quest: plan follow-ups from the final-head PR audit - #5038
Conversation
New quests for defects in merged code (dynamic epoch update, QUIC input validation, DASH rendition URLs) and corrections to quests merged without review: TS passthrough restarts under a new epoch, the lost GroupRequest demand decision, the auth overlap fold, and stale names and links. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou'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 25 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (27)
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. Comment |
|
Automated review of This is a quests-only PR. I checked its claims against Non-blocking
CI (Check, Quest, Test) is still queued on this head. This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 4c4ac0b
[P3] Scope the epoch-transition regression to the affected claim (quest/m0/broadcast-epoch/dynamic-epoch.md:5-9,32-35). As the existing discussion notes, A→none or A→an older B does not guarantee that a re-request globally selects B when another route still advertises A: compareRoutes in js/net/src/origin.ts:225-232 prefers the newest epoch and places none last. State the expected behavior with a second A route present, and distinguish invalidating this claim's old cache from overriding normal route selection.
Direction: sound planning cleanup. The checked CID boundary, unescaped DASH rendition path, Rust Dynamic::update doc mismatch, and separation of Rust flush from the JS port support the proposed follow-ups. No additional blocking finding in the changed plans; the epoch acceptance wording above should be clarified rather than left to an implementation guess.
Verification limits: static GitHub review of the 26-file quest diff, discussion and selected implementation paths; no quest checker, QUIC tests, or multi-relay epoch test executed. No duplicate inline thread added.
Keep main's publish-timestamp.md, and align dynamic-epoch.md with main's Restart rule: an epoch change announces a Restart and only an identical epoch splices. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scope dynamic-epoch's contract to invalidating this claim's copies, not overriding route selection, and name the Rust doc as the one that promises served broadcasts end. Finish the hop-to-node rename in the p2p and auth indexes, and rewrap ts-passthrough. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Addressed the reviews of
Also merged (Written by Claude Opus 5.5) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 10cf955
The prior P3 is addressed: quest/m0/broadcast-epoch/dynamic-epoch.md:10–14 and 42–48 now separate this claim's cache invalidation from route selection and explicitly retain the competing A route for A→none. The follow-up also correctly identifies the Rust doc mismatch and finishes the node-bound wording in both indexes.
No new actionable findings in the PR-specific changes since 4c4ac0b, after separating the main merge. Direction is sound: the plan now depends on Restart, preserves served/pending state at the origin, and distinguishes retiring downstream copies for new requests from forcibly ending subscriptions. I checked that alignment against the current restart.md contract.
Verification limits: GitHub-only static review of the quest changes, prior discussion and Restart context. No quest checker, implementation tests or multi-relay experiment executed. Check, Test and Quest are still queued on this head.
Summary
An audit of PRs merged without a qualifying final-head review (64 code, doc, and quest PRs, plus a re-audit of 50 quest-only PRs) found defects worth tracking. This PR plans them.
New quests
quest/m0/broadcast-epoch/dynamic-epoch.md[S]:Dynamic.updatemay change the epoch. The change is a source change downstream under main's Restart rule (announceRestart, subscribers drop the old copy and resubscribe, only an identical epoch splices), without overriding route selection, while the origin's served broadcasts and pending requests carry over. It also fixes the Rust doc, which promises the served broadcasts end (feat(net)!: carry publisher epochs on routes #4942). Requires Restart.quest/m1/quic/fork/input-validation.md[XS]: refuse RETIRE_CONNECTION_ID for the first never-issued sequence, and refuse duplicategrease_quic_bit/min_ack_delayparameters. Both come from the quinn import in feat(moq-quic): import quinn-proto as moq-quic #4879; upstream quinn has the same code.quest/m2/dash-rendition-uri.md[XS]: percent-encode rendition names in DASH init and media URLs, as HLS already does. The bug predates quest(archive): Timeline-indexed MoQ archives #4034.Corrections to unreviewed quest PRs
ts-passthrough.md(quest(m1): plan TS passthrough #4670): a flagged backward PCR discontinuity now restarts under a new epoch, asts-restart.mddecides, instead of starting a group with backward time.ts-restartis now Required. feat(moq-mux): import ts --passthrough carries the multiplex whole #5003 implements the old plan and is held for rework.ffi-shape/README.md: restores "MoqGroupRequestgainsdemand()", which quest: plan the merge-queue settings and today's loose ends #4868 decided and quest: resolve the 2026-10-06 audit #4946 lost when it deletednet.md.malformed-grant.mdowns the lite AUTH_OK decode gap, andviolations.mddrops it.quest-flat-lines.mddrops two finished steps.archive/flush.mdis now Rust only, and the JS idle deadline andflush()move tojs-timelines.md, so the Rust fix no longer waits on the JS port.capture-default.mdis reframed as gate cleanup, sinceselect.shnow runscapture-test.max_delay_us,#checkMaxDelay, andmax_delay; location-filter-22 covers the draft-22 wire-equality test; the refactor(net)!: own the poll transport interface #4709 blocker is gone;?workletis the precedent; group order is fixed newest first; the nonexistentpool_resolvebench is removed.Handed to separate sessions
/quest-plan. feat(hls)!: bounded playlists: capped window, sync-point gating, explicit replay mode #4978 and quest: plan four follow-ups from the quest-spawn round #5017 have since merged; nothing here touches merged code.Public API and wire impact: none (quests only).
Decisions
Goal
Findings worth a quest
Open-PR findings (#4993, #5029)
Epoch fix
Epoch model
Epoch home
QUIC quest
DASH milestone
TS restart (#4670)
moq.pro dangling links
Archive root claim
Batch fixes
Archive venue
Shipped MoQ replay code
Archive HTTP server
Open archive PRs (#4978, #5017)
Iterate (2026-10-08)
origin/mainafter quest: apply the 2026-10-08 quest-tree audit #5043. Main's version kept where both changed the same text (publish-timestamp.mdkeeps FFI shape as Related and drops the deleted untimed-model Required); the other stale-fact fixes here were not on main and stay.dynamic-epoch.mdrealigned with main's Restart rule: epoch-less routes never splice, an epoch change is announced as aRestart, and downstream subscribers (relays included) drop the old copy and resubscribe.quest/m3/p2p/README.mdandquest/m1/auth/README.md;ts-passthrough.mdrewrapped.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code