docs(quest): groom m0 into release blockers and m1 into merge gates - #3628
Conversation
m0 keeps the three release blockers and gates the merge; every other m0 quest is done, folded, or moved to m2 with its plan corrected against the merged tree. m1 keeps only breaking or gating work: the archive line splits into its two m1 gates (catalog, store) and an m2 questline, wildcard into Advertise (m1) and Resolve plus Demand (m2), and the additive m1 quests move to m2. merge-dev names the gates and carries the merge-trap checklist. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 16469e305d
ℹ️ 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 session harness Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e3a65e93af
ℹ️ 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".
| - main's joining FETCH keeps its saved object prefix (#3562) and answers with | ||
| FETCH_OK; dev's registry maps its two refusal codes to DOES_NOT_EXIST until | ||
| [IETF leftovers](/quest/m2/ietf-leftovers.md) adds them. |
There was a problem hiding this comment.
Restore FETCH refusal codes before merging dev
This plan explicitly allows dev to merge while joining FETCH failures map to DOES_NOT_EXIST, even though main already shipped the correct INVALID_JOINING_REQUEST_ID and INVALID_RANGE codes in #3562. Because IETF leftovers is an unordered m2 quest scheduled after the merge, executing this plan regresses released wire behavior; split the FETCH restoration from the independent priority and TRACK_STATUS work and make it a merge blocker. quest/CLAUDE.mdL97-L101
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Left as decided by the maintainer for now: the merge lands with DOES_NOT_EXIST and IETF leftovers restores INVALID_JOINING_REQUEST_ID and INVALID_RANGE; whether that becomes an m0 blocker instead is being put to them.
🤖 Addressed by Claude Code
| - [#2155](https://github.com/moq-dev/moq/issues/2155) - js/net: subscriptions take a `Subscription` options object with `startGroup`, `endGroup`, and `update()` (#2716); ordering became a handle (#3099) | ||
| - [#3493](https://github.com/moq-dev/moq/issues/3493) - the timeline is a `moq_json::window` with a bounded checkpoint, so a 24/7 importer no longer retains every record (#3240) | ||
|
|
||
| ## Related |
There was a problem hiding this comment.
Restore #3493 to the merge quest's closing list
The previous merge quest tracked #3493 because the bounded moq_json::window fix exists only on dev, and this rewrite still identifies that fix and its long-running HLS proof as part of the merge. Ending Closes before #3493 means the eventual merge PR will omit its closing keyword and leave the fixed issue open, so retain that issue in this list. quest/CLAUDE.mdL127-L130
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Not changed: #3493 is still in the list (line 66); the Closes section carries all 29 issues the previous merge quest tracked.
🤖 Addressed by Claude Code
| ## Closes | ||
|
|
||
| - [#2812](https://github.com/moq-dev/moq/issues/2812) - the iOS stutter report the same estimator fixes |
There was a problem hiding this comment.
Restore #3477 to the jitter questline's closing list
The moved questline retains all of #3477's work, including starting from its branch and replaying its recorded traces, but its new Closes section carries only #2812 whereas the prior questline also closed #3477. When the final child completes, the prescribed PR closing-keyword process will therefore leave #3477 open despite completing its fix; preserve #3477 in this section. quest/CLAUDE.mdL127-L130
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Not changed: issue #3477 was closed on 2026-09-10, so a closing keyword would be a no-op. #2812 stays as the open report this line fixes.
🤖 Addressed by Claude Code
Summary
A grooming pass over m0 and m1 ahead of the dev merge, on dev's quest tree (main was merged into dev first, b22ddbf). Every decision below was put to the maintainer interactively.
m0 is now the release-blocker list and a merge gate. It keeps three quests: WebKit gate, Connect auth race (plan rewritten for
moq-tokio; the moq-ffi setters split off), and a new test-only Anonymous handoff quest, since the parking mechanism behind #3588 does not exist on dev and nothing pinned that.Done or superseded, deleted: FETCH_OK (#3562 on main), Resume info (#3521 on main), IETF error codes (#3531), uring all-features (#3502), jitter flush span (#3513), Auto latency (replaced by the audio-jitter-target line in #3576), the hop-0 ban (#3623; PR #3583 closed), and #3087 (folded into auth-api by #3619). TS restart stall (#3533) folds into Monotonic timeline, whose plan deletes the fence that causes it; the quest gains the importer re-anchor item and the regression test.
Moved to m2 with corrected plans: the audio-jitter-target line (#3517 is closed; its branch is prior art,
latency_maxbecamemax_age), Jitter clock (absorbs #3579's never-decreases invariant; PR closed), Capture denial, Publisher audio unlock (Audio.Capture), the twomoq playquests, Failure artifacts, the listeningkindfield revert (decision resolved: nothing reads it), Impaired path, Tooling (line counts fixed), plus two new quests: IETF leftovers (0x21 priority, TRACK_STATUS, the two FETCH codes the merge maps to DOES_NOT_EXIST) and FFI WebSocket fallback.m1 applies its own rule (breaking or gating, else m2): the archive line splits into Archive catalog and Archive store as m1 gates, with writer, reader, browser, HLS, DVR, and proof in m2; Wildcard Advertise is the m1 gate, Resolve and Demand move to m2; #2152, Route cold cost, and js/publish discontinuity move to m2. A/V clock now owns the
SyncInputreshape (its Required named the closed #3517). LAN app id's justification is corrected (moq-tokio is published).merge-dev requires m0, Archive catalog, Archive store, #3190, JS announce, Monotonic timeline, and Advertise, and its plan carries the merge-trap checklist from the main-into-dev merge.
Stale branches deleted:
quest/m0/qa-failure-artifacts(e79e5bd, the abandoned debug-bundle scope) andquest/m0/3492-ietf-track-status(fd75a8f, closed PR #3519). PRs closed: #3626, #3583, #2765, #3579.Open PRs that delete a moved quest file (#3612, #3613) will see a trivial rename conflict on their quest deletion.
Public API
None. Quest documents and two path comments (
test/drill/README.md,test/smoke/clients/js/src/fixture.ts).Wire
None.
Validation
quest check: 305 documents ok.just fixandjust checkpass.🤖 Generated with Claude Code