Repository navigation
quest: unblock m0/m1 chains from the 2026-10-27 audit - #6938
Conversation
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 5 minutes. View limit details
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 |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 6b2ad6360dd66b7c1a60730f235c5bd9e36632b6.
No actionable bugs found in this planning update. Splitting cached FETCH from on-demand dispatch, keeping coordinated Rust/JS lite-07 FETCH removal behind both range implementations, and replacing epic-wide prerequisites with the actual contracts are a sound direction. The runtime buffer-switch fix is appropriately independent of the lite-07 cut. The retained datagram-settle exception and epochless-route Restart requirement are important safeguards, not incidental complexity.
These are plans, not implemented fixes: existing FETCH refusal, fill-timeout limitations, and buffer-mode capture remain in the source. Verification was static inspection of the changed plans, relevant dependency quests, and selected auth/FETCH/audio code. I did not run quest graph validation, tests, benchmarks, or verify the historical CI measurements or profiling-host configuration.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 6162e764174d987f83b4472c914f7de8b6ff1d0e (delta from 6b2ad6360dd66b7c1a60730f235c5bd9e36632b6; base unchanged).
No actionable bugs found in the timestamp-contract update. Keeping producer timestamps optional while removing optionality only from post-cut reads is consistent with time-addressing/model.md: omitted producer timestamps are stamped, rather than producing untimed output. This resolves the earlier plan's ambiguous “read side only” wording without prematurely breaking untimed producer calls. There were no findings outstanding from my previous review.
Verification: static comparison of the two changed binding plans against the model plan. No implementation changed; binding tests and interop were not run.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6162e76417
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The lite-07 cut does not wait on byte holes. Per lite07-finalize's freeze policy, it lands on whichever lite wip is current (lite-07-wip today); if lite-07 is cut first, lite-07 peers refill only at frame boundaries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: 0f8af69e3d3ac5bce5c2e0232882956e6367b524 (delta from 6162e764174d987f83b4472c914f7de8b6ff1d0e; base unchanged).
No new actionable bugs found. The explicit current-wip target and frame-boundary fallback address the release-order ambiguity raised in the independent review, via the recorded decision not to gate lite-07 on byte holes. This is consistent with the existing freeze policy and avoids requiring changes to published lite-07 framing if it ships first. Keeping JS on the same wire version as Rust is the right direction.
Verification: static inspection of the three changed plans and lite-07 finalization policy. No implementation changed; tests, draft checks, and interop were not run.
|
Landing 0f8af69.
(Written by Claude Opus 5.5) |
Problem
An audit of the blocked m0/m1 chains found quests waiting on whole epics, on proposals nobody had decided, or on work they do not need. The maintainer settled each case on 2026-10-27; this PR applies those decisions and the factual corrections the audit found. Every decision is recorded in the affected quest's Plan as "Decided 2026-10-27 (maintainer)" with its reason.
Approach
Why each chain was blocked, and what unblocks it:
desktopworkstation is that host, noted inbench/README.md, andperf-host.mdis deleted.Ready now and unclaimed
From
quest unblockedon this branch, with no claim branch or open PR on any of them:quest/m0/ci/hakari.md,quest/m1/unbounded-groups/log-lock-profile.md,quest/m1/cluster-routing/route-epochs.md(new),quest/m1/cluster-routing/grant-subject.md(new),quest/m1/subscribe-ranges/js.md,quest/m1/js-fetch.md,quest/m1/ietf-fill-timeout.md,quest/m1/identity-guide.md,quest/m1/watch-buffer-switch.md(new)quest/m0/ci/land-bump.md(its condition now holds),quest/m0/ci/mbx-r2-verify.md,quest/m1/subscribe-ranges/lite.md,quest/m1/subscribe-ranges/fill-linear.md,quest/m1/drop-set.md,quest/m1/quic-api/streams.md,quest/m1/audio-jitter-target/capped-budgets.md,quest/m1/archive/hls-target.md,quest/m1/api-audit/wanted.mdDecisions (maintainer, 2026-10-27)
CI, QUIC and perf:
Required: mbx-r2-verifyand takes the cross-job miss report into its own baseline; mbx-r2-verify stays a waiting quest.StreamEvent::Acked, since waits deletesStreamEventright after.desktopworkstation, run while quiet, is the profiling host (noted inbench/README.md).perf-host.mdis deleted withquest rm, and log-lock-profile notes that moq-dev/moq#6680's base revision covers its "before" side.Subscribe ranges, time addressing and lite-07:
quest rm. fill-linear re-baselinestrack_range_fillingafter moq-dev/moq#6921.given_up. time-addressing/js requires subscribe-ranges/js.Required: lite.Relative(n)..toFilter::Relative(n+1)mapping: a moq-transport bridge resolves Relative(n) to an absolute Group ID first, since Group ID arithmetic breaks once time addressing makes legacy Group IDs sparse. Its Goal now says SUBSCRIBE_OK carries the resolved start.Routing, unbounded groups and audio:
auth::Grantand moq-auth in Rust and JS, with the XS routing-model fix. routes and federation require it.Required: announce-takeoverand documents what exists; the takeover PR adds its own section.Factual corrections, checked against
main2ed9df47...(17218002 bytes, refused 2026-10-25 in run 40192013303 and 2026-10-26) and0d4f4e3f...(17290876 bytes, refused 2026-10-26 in run 40332938121) to the known oversized digests. Both runs used mbx 1.25.0, not 1.26 as the audit said, since moq-dev/moq#6515 held the cache at 1.25.quest landshipped in kixelated/quest#229 (merge commit195bcee560), so its condition holds. The dead plan link now points at the PR. The bump itself is not done here.no_maintainer_edits(in feat(land): batched merge gate, quest land quest#229'ssrc/cli/land.ts).read_chunksalready went in moq-dev/moq#6809.Required: streams, which they reach through waits.DropCursoris now at abouttrack.rs:5802-5870.js/e2ee/src/derive.tsnonce(group, frame)). It now requires time-addressing/js for the JS half.Neighbors::admitis at abouttrack.rs:502(in model), and therequested == startgate at aboutlite/subscriber.rs:4898(in start-bookkeeping).quest/spellmoq-lite-07-wip.Optionfor reads. ✅ Decided 2026-10-27 (maintainer): producer arguments keep an optional timestamp until the cut, so producers may still write untimed frames; only reads drop theOption, at the cut.kio::logstorage landed in moq-dev/moq#6782, includingWriter::evictadvancing the base; the storage bullets now say so.snapshot_from_window. The "default 1s minimum" comment is gone, so that item is dropped.Used/Unusedatgo/wrapper/README.md:~143. Its lifecycle blocker had already been unlinked by moq-dev/moq#6920.Skipped
Slot.headno longer exists and the head copy isHandoff/Salvageholding aHead. It is wrong.Slot.head: Option<Box<group::Handle>>is still inrs/moq-net/src/model/track.rs(about line 539, set at about line 2655): the fetched copy served in a live group's place.Handoff/Salvageinmodel/group.rsis a separate thing, the failed copy's head kept for route-failover resume. The "foldSlot.head" bullets stay as written.Choices made while applying
subscribe-ranges/{lite07-fetch,start-bookkeeping}.md,cluster-routing/{grant-subject,route-epochs}.md,unbounded-groups/js-byte-holes.md, and at the m1 rootjs-fetch-on-demand.md,ietf-fill-timeout-js.mdandwatch-buffer-switch.md. The ready halves keep the original paths (js-fetch, ietf-fill-timeout), so existing links to them stay valid.Requiredentry, as decided. That leaves drop-set ready.Impact
bench/README.md.Alternatives
None. Each decision above was the maintainer's choice in the 2026-10-27 session.
Follow-ups
questflake input (quest/m0/ci/land-bump.md), whose condition now holds.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)