Skip to content

feat(lite)!: lite-07 freezes without warm routes - #8840

Open
kixelated wants to merge 3 commits into
mainfrom
quest/m2/warm-routes-wire
Open

kixelated wants to merge 3 commits into
mainfrom
quest/m2/warm-routes-wire

Conversation

@kixelated

@kixelated kixelated commented Nov 15, 2026 •

Copy link
Copy Markdown
Collaborator

Finishes quest/m2/warm-routes-wire.md (deleted here, with its links), per the maintainer's pick (b) on moq-dev/moq#8764: lite-07 freezes without warm routes.

Summary

  • Draft: removes WARM_START (0xC), WARM_UPDATE (0xD), WARM_END (0xE), the Warm Routes section, the Warm ID counter, and the Warm field of SUBSCRIBE and SUBSCRIBE_UPDATE, plus their refused-content, error, and changelog lines.
  • rs/moq-net: drops the three AnnounceBroadcast variants, Warm, Refusable::{WarmStart, WarmUpdate}, Refusal::Carrier, Version::has_warm, the instance copy codec, and the Warm byte read and written by SUBSCRIBE and SUBSCRIBE_UPDATE. A peer that still sends types 12 to 14 gets them skipped as unknown, like any unassigned announce type.
  • js/net: drops hasWarm and the Warm byte codec.
  • Gate: sweep_cache_routing (100 scenarios each way, about 36 s in a debug run, per the quest) is deleted. sweep_cache_routing_long is unchanged and still runs nightly from test/route-sweep.sh. The rule's simulator in route/tests/cache.rs stays, with no wire behind it.
  • Quests: the finished quest and its links are gone. m3/cache-routing/select.md now says the freeze happened, keeps the measure-first step, and says where to restore the draft section and codecs from (250a13a17); the epic README and transient-cycles.md match.

Public API and wire

Public API: none. Wire (breaking, lite-07-wip only, which changes freely): the Warm byte no longer ends SUBSCRIBE and SUBSCRIBE_UPDATE, so a build from before this change cannot talk lite-07-wip with one after it. The latest release branch never carried the warm wire, so this brings main closer to it, not further.

Migration: none for users; nothing public used the warm messages.

Choices for review

  • Deleted the short sweep_cache_routing instead of marking it #[ignore]: the long sweep is the same code at 30 times the scenarios and already runs nightly, so an ignored copy would never run anywhere. Its seed 0xcac4_e5ee is now inline in the long sweep, which is unchanged otherwise.
  • Left 0xC to 0xE unassigned in the draft and code, with a one-line comment, instead of renumbering. The draft's types are not reserved in prose (it says nothing for 0xA either).
  • Removed the Warm Routes spec outright instead of keeping it in an appendix; git history keeps it and select.md names the commit.
  • Did not add the edge/core measurement here: the quest's Goal is the freeze, and select.md already carries the measurement as its first step.

Validation

  • just check (rs, js, drafts, markdown, quest) passes, twice, before and after the quest edits; quest check --base origin/main passes.
  • just rs test -p moq-net --features async: 3986 passed. Two wire fixtures (lite07_refuses_an_empty_list_and_unknown_anchors, and JS a lite-07 list decodes as the span covering it) assumed the trailing Warm byte and were updated.
  • just js test-changed for @moq/net: 3341 tests pass.
  • just test interop --all: all checks passed, with lite-07-wip over Rust, Node, Bun, and Python.
  • Two ways checked: the interop run exercises the encoder and decoder of both languages against each other, and the Rust fixture tests assert the byte layout directly.

Follow-ups

None.

Models

Size: S
Implementer: Claude Code, claude-sonnet-5-5, unknown effort (arm B)

🤖 Generated with Claude Code

Review

Rewritten by quest review after each round.

  • Head: 5aab0ca

  • Base: origin/main at ca88fc1

  • Risk: high, Removing wire-protocol behavior could break interoperability with dependent implementations; reverting restores the code but requires affected deployments to roll back.

  • Classified: medium by default

  • Reviewer: Codex, gpt-6.1-sol, medium effort

  • Session: 01a1dfb1-1854-73c2-bfbb-63b9df04fa46, round 1

  • Score: 9/10, Source review found the removal coherent across the draft and both wire implementations, with no actionable regressions; readiness remains subject to CI because builds and tests were not run.

  • Raised the risk to high: Removing wire-protocol behavior could break interoperability with dependent implementations; reverting restores the code but requires affected deployments to roll back.

  • Rounds: 1; first round 0; findings 0: fixed 0, refuted 0, open 0

  • Findings: none

kixelated and others added 3 commits November 15, 2026 06:03
Strip WARM_START, WARM_UPDATE, WARM_END, and SUBSCRIBE's Warm byte from the
draft, rs/moq-net, and js/net, and drop sweep_cache_routing from the merge
gate (sweep_cache_routing_long still runs nightly).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title lite-07 freezes without warm routes feat(lite)!: lite-07 freezes without warm routes Nov 15, 2026
@kixelated
kixelated marked this pull request as ready for review November 15, 2026 14:52
@coderabbitai

coderabbitai Bot commented Nov 15, 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 10 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

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8225436e-4780-4004-9d43-5be132e78142
Commits

Reviewing files that changed from the base of the PR and between ca88fc1 and 5aab0ca.

Files selected for processing: 17

  • drafts/draft-lcurley-moq-lite.md
  • js/net/src/lite/subscribe.test.ts
  • js/net/src/lite/subscribe.ts
  • js/net/src/lite/version.ts
  • quest/m2/lite07-finalize.md
  • quest/m2/warm-routes-wire.md
  • quest/m3/cache-routing/README.md
  • quest/m3/cache-routing/select.md
  • quest/m3/cache-routing/transient-cycles.md
  • rs/moq-net/src/lite/announce.rs
  • rs/moq-net/src/lite/instance.rs
  • rs/moq-net/src/lite/subscribe.rs
  • rs/moq-net/src/lite/subscriber.rs
  • rs/moq-net/src/lite/subscriber/routed.rs
  • rs/moq-net/src/lite/version.rs
  • rs/moq-net/src/route/tests/cache.rs
  • rs/moq-net/src/stats.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

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ No new issues found.

Reviewed changes

This review covers the full PR: removing lite-07-wip warm routes from the draft, rs/moq-net, and js/net, plus the quest and gate cleanup.

  • Draft: drops the Warm Routes section, the WARM_START/WARM_UPDATE/WARM_END message sections, the Warm ID counter, and the Warm field on SUBSCRIBE and SUBSCRIBE_UPDATE. The Route ID references, the Refused Content text, and the changelog stay consistent. 0xC to 0xE are left unassigned.
  • Rust codec: deletes the warm AnnounceBroadcast variants, Warm, Refusable::{WarmStart, WarmUpdate}, Refusal::Carrier, Version::has_warm, instance::{encode_copy, decode_copy}, and the Warm byte read and written by SUBSCRIBE. Types 12 to 14 now go to the length-skip _ => Skipped arm on lite-07, so a peer still sending them doesn't break the stream.
  • JS codec: deletes hasWarm and encodeWarm/decodeWarm. announce.ts already skipped 0xC to 0xE as unknown types, so it needed no change.
  • Tests and gate: removes the gate's sweep_cache_routing. The nightly sweep_cache_routing_long still runs from test/route-sweep.sh with the same seed, and the Rust and JS fixture byte offsets now match the shorter SUBSCRIBE and SUBSCRIBE_UPDATE.
  • Quests: deletes warm-routes-wire.md and its links. select.md points at 250a13a17 for the restore; I confirmed that commit is on main and still has the warm codecs.

I searched the repo for leftover references (has_warm, hasWarm, WarmStart, #warm-routes, Refusal::Carrier, sweep_cache_routing) and found none outside quest history and older changelog entries.

Pullfrog  | View workflow run | Using claude-opus-5-5 | 𝕏

This branch has not been deployed

No deployments
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