Skip to content

chore(quest): plan the mixed lite-06/lite-07 withdrawal loop fix - #8310

Merged
kixelated merged 2 commits into
mainfrom
quest-plan/mixed-version-ring
Nov 9, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest-plan/mixed-version-ring

Conversation

@kixelated

@kixelated kixelated commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Plans the fix for a routing loop in mixed moq-lite-06 and moq-lite-07 relay meshes, and adds the AGENTS.md rule the maintainer asked for while planning it.

Problem

Since moq-dev/moq#8023, a claim that crosses two lite-06 to lite-07 boundaries circles forever once its publisher leaves, and every subscriber sees a Restart on every lap. That happens in a 07-06-07-06 ring, and in a rolling upgrade where one lite-06 relay links to three or more lite-07 relays. The reflection check only catches a single lite-06 segment, because a relay that translates a lite-06 route files it as its own claim and drops the chain. Reproduced on main with three new tests. The most reliable one hangs 12 of 12 runs.

Changes

  • New quest quest/m1/mixed-version-ring.md, listed in m1's README and in lite07-finalize's Required, so the published lite-07 wire includes the field.
  • routes/js.md: the js/net port decodes the new field.
  • AGENTS.md: moq.pro runs relays on the newest and previous release side by side, so those two must interoperate as relays. A temporary migration for that is fine when it is clearly marked and easy to delete at the next version migration.

Decisions

  • ✅ Carry the lite-06 chain through lite-07, as a crate-private chain plus a lite-07-wip compatibility extension and field (rejected: a cost or hop ceiling with no wire change; never forwarding a lite-06-learned claim to another lite-07 relay; documenting mixed rings as unsupported).
  • ✅ Temporary: the lite-07 to lite-08 migration deletes the extension and field. No public API carries the chain.
  • ✅ m1 (rejected: m0, m2).
  • ✅ The goal covers rolling upgrades, not just the ring (rejected: ring only).
  • ✅ moq-transport relay links are a non-goal: moq-transport is supported for clients, not relays (rejected: removing the moq-transport cluster extension; documenting it as unsupported).
  • ✅ The AGENTS.md mixed-rollout rule, worded as above.

Impact

Quest files and one AGENTS.md rule. No API or wire change yet; the quest plans a lite-07-wip wire field.

Models

Size: S
Implementer: Claude, claude-opus-5-5, high effort

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, medium effort
  • Session: 01a1bc58-e26c-7062-ab20-c8de6ea11ff1, round 2
  • Head: bdf58aa
  • Base: origin/main at f1eaf9c
  • Score: 10/10, The incremental changes consistently document the temporary compatibility chain and its JS dependency, with no actionable defects found.
  • Findings: none

…mixed rollout rule

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 8, 2026 18:08
@coderabbitai

coderabbitai Bot commented Nov 8, 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 33 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: 08814d58-1af9-462a-b06c-212b37a7a49c
Commits

Reviewing files that changed from the base of the PR and between aabd6d7 and bdf58aa.

Files selected for processing: 6

  • AGENTS.md
  • quest/m1/README.md
  • quest/m1/mixed-version-ring.md
  • quest/m2/cluster-routing/routes/js.md
  • quest/m2/lite07-finalize.md
  • quest/m5/lite07-mesh.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

@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 7781c6c.

No actionable findings in this planning-only change. The plan retains the compatibility chain across both translations, requires checks on both receive sides and ANNOUNCE_UPDATE propagation, covers mixed-ring and rolling-upgrade withdrawal tests, and links the field into lite-07 finalization and the JS port. Temporary compatibility scope and removal are explicit. Static GitHub review of the full diff and relevant translation context only; the reported prototype and reproduction runs were not independently executed.

@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 critical issues — two minor consistency suggestions inline.

Reviewed changes

Reviewed the plan-only diff at 7781c6c against main (aabd6d7): the new mixed-version withdrawal quest, its tree edges, the JS decode note, and the new relay-interop rule.

  • New quest quest/m1/mixed-version-ring.md — plans a temporary lite-06 hop chain on lite-07 announcements so a withdrawn claim stops circling across mixed 06/07 relay meshes, with root cause, rejected alternatives, prototype evidence, and tests.
  • quest/m1/README.md and quest/m2/lite07-finalize.md — list the quest, making the field part of the cut gate.
  • quest/m2/cluster-routing/routes/js.md — the js/net lite-07 port decodes the compatibility chain.
  • AGENTS.md — records that the newest and previous release must interoperate as relays, allowing a clearly marked temporary migration.

The plan's code references check out (OwnClaims::apply/learned, hops() in subscriber/routed.rs, Subscriber::chain, the existing mixed_version_ring_withdraw_retracts test, MAX_COST, MAX_HOPS), the reproduction commit is an ancestor of the base, and quest check plus the markdown check pass.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Comment thread quest/m2/lite07-finalize.md Resolved
Comment thread quest/m2/cluster-routing/routes/js.md Resolved
…y chain

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

@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

Reviewed the delta from 7781c6c to bdf58aa, which addresses both findings from the prior review.

  • Reconciled lite-07 hop-list prose — quest/m2/lite07-finalize.md and quest/m5/lite07-mesh.md now distinguish the dropped native hop list from the temporary lite-06 compatibility chain that rides announcements until the lite-07 to lite-08 migration, so neither page claims lite-07 carries no hop data at all.
  • Declared the JS decode dependency — quest/m2/cluster-routing/routes/js.md lists quest/m1/mixed-version-ring.md under ## Required, matching the sibling availability edge.

quest check passes (591 documents) on the new head, the remaining hop references across quest/ describe the current lite-06 mesh or the route layer's next-hop model rather than a stale lite-07 wire belief, and no cycles or broken links were introduced.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 9, 2026
Merged via the queue into main with commit 93aee67 Nov 9, 2026
6 checks passed
@kixelated
kixelated deleted the quest-plan/mixed-version-ring branch November 9, 2026 02:27
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