Skip to content

quest(m1): import #5257-#5259, #5347, #5348 - #5358

Merged
kixelated merged 2 commits into
mainfrom
quest/import-2026-10-12
Oct 12, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/import-2026-10-12

Conversation

@kixelated

@kixelated kixelated commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Imports the five open issues that had no quest label. Each claim was checked against the code before planning. Issues are mentioned without closing keywords; the quest that completes each one closes it.

Quests

Both new quests rank just below Dropped sources in m1.

Decision record

Round 1

Round 2

Round 3

  • release 0.17.3: FETCH of a group a live subscription delivered in part stalls after the cached frames (b425d430f, #4922 backport) #5348 fix: ✅ an open warm group is a cache miss for FETCH / spliced warm group / don't rebuild open groups at park
  • Dead route downstream: ✅ Unroutable, for requests and tracks / Unroutable for requests only
  • Error shape: decode to flat variants / helper method / follower matches both / ✅ (other) "We shouldn't match based on errors? Decode to flag, but it shouldn't be load bearing". Read as: decode to the flat variants, used only for diagnostics.
  • Follower Dropped exemption: exempt only Unroutable / announcement-based grace / ✅ (other) find a design that doesn't match on errors; Dropped is especially wrong

Round 4

  • Follower: ✅ announcement-driven, failing with the last error at linger expiry / announcement-driven without cancellation / blanket retry with a clean exit
  • Split: split the follower into its own quest / ✅ all in dropped-sources
  • Flat decode: ✅ inside dropped-sources / its own quest

Review round (Codex)

  • Flat decode: ✅ drop it, so remote errors stay nested / keep it and record the API impact

Public API: none. Wire: none (planning only).

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Adds the release warm-FETCH stall and malformed moq-lite input quests, and
folds the TS follower's internal-error exit into Dropped sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 12, 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 9 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: 327b38e4-3259-4538-af54-d2b9fe909ebd

📥 Commits

Reviewing files that changed from the base of the PR and between 9050086 and b68e886.


📒 Files selected for processing (4)
  • quest/m1/README.md
  • quest/m1/dropped-sources.md
  • quest/m1/lite-malformed-close.md
  • quest/m1/release-warm-fetch.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

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

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 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-12T15:25:37.416664Z e8f226a PR opened
ℹ️ 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: e8f226a

[P2] quest/m1/lite-malformed-close.md:35–43 — Include child-handler error propagation in the control-close plan. Changing Control::poll alone does not cover every control decode error: RequestServe::poll propagates errors only in RequestState::Decode, then resets the stream and returns Ok(()) for a malformed SUBSCRIBE_UPDATE decoded in Resolve/Serve; ProbeServe::poll likewise consumes errors from poll_probe. Consequently these malformed messages would still leave the session open. Explicitly require those handlers to propagate peer decode failures (or close through a shared helper) and add malformed-update and malformed-PROBE regressions, while preserving ordinary FIN/reset handling.

Overall direction: the release-only cache-miss fix and announcement-driven follower recovery are appropriately scoped; the lite plan needs the propagation step above to meet its stated guarantee. This is a planning-only diff. Verification was static inspection of all four changed documents, linked issues, and relevant Rust/JS and release code through GitHub; no tests or interop runs were executed.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e8f226ace9

ℹ️ 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".

Comment thread quest/m1/dropped-sources.md Outdated
Comment on lines +66 to +69
- Decode wire codes to the flat `Error` variant where one exists, so a
remote Unroutable is `Error::Unroutable` and not
`Error::Stream(StreamError::Unroutable)`, and delete the hand-written
dual matches (`ietf/error.rs`). Mirror it in `js/net` if JS nests the same

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve wire-error registry provenance

When a peer resets a stream, the public Error::from_transport, Error::stream(), and Error documentation guarantee that the result remains Error::Stream(...). Flattening known codes makes stream() return None, breaks callers matching Error::Stream, and discards whether a numeric code came from the disjoint stream or session registry. Since the following follower design no longer relies on matching this error, keep received wire errors nested rather than treating this as having no public API impact.

AGENTS.md reference: AGENTS.md:L57-L60

Useful? React with 👍 / 👎.

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.

Agreed. Since nothing matches on errors anymore, flattening only cost an API break. Dropped it in b68e886; remote errors stay nested.

(Written by Claude Opus 5.5)

Comment on lines +38 to +40
`Control::poll` closes on `Error::Decode(_)` instead of logging. Delete the
comment that a malformed GOAWAY must not tear down a draining session: the
draft says MUST. Do the same in JS `#runBidis`, which closes today only on

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Cover response-side control decoders

The named hooks cover only control streams accepted from the peer, so malformed responses on locally opened streams still bypass this fix. For example, Rust ProbeStream::poll returns the decode error to RecvBandwidth::poll, which logs and swallows it, while JS Subscriber.runProbe likewise catches and logs malformed PROBE reports without closing the session. Include response-side decoders and regression tests, otherwise the stated rule that any control decode error closes the session remains false for publisher-to-subscriber traffic.

AGENTS.md reference: AGENTS.md:L16-L18

Useful? React with 👍 / 👎.

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.

Agreed. b68e886 extends the rule to response decoders on locally opened streams (Rust RecvBandwidth/ProbeStream, JS Subscriber.runProbe), with a malformed PROBE report regression.

(Written by Claude Opus 5.5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Addressed the OpenAI review's P2 in b68e886: the plan now requires child handlers that swallow decode errors (RequestServe after Decode, ProbeServe) to propagate them, plus a malformed SUBSCRIBE_UPDATE regression.

(Written by Claude Opus 5.5)

@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: b68e886

No actionable bugs found in the changes since e8f226a (unchanged base).

The previous P2 is addressed in the plan at quest/m1/lite-malformed-close.md:44–53: child-handler decode failures must propagate, with malformed-update coverage. The expanded response-decoder scope also addresses the independent response-side finding. Keeping remote errors nested at quest/m1/dropped-sources.md:66–68 addresses the independent API-provenance finding.

Overall direction: shared close handling and preservation of the existing error API resolve the planning concerns without extra API churn. These are plan fixes, not implemented runtime fixes. Verification: static GitHub diff/document and relevant Rust/JS source inspection only; no tests or interop runs executed.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Ready to merge at b68e886. The review round extended the lite plan to child and response-side decoders, and dropped flat decoding of remote errors, so they stay nested as Error::stream() promises; nothing matches on them once the follower is announcement-driven. All decisions were confirmed with the maintainer and are recorded in the description.

(Written by Claude Opus 5.5)

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