Repository navigation
chore(quest): plan the mixed lite-06/lite-07 withdrawal loop fix - #8310
Conversation
…mixed rollout rule 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 33 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. |
kixelated
left a comment
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
ℹ️ 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.mdandquest/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.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
…y chain Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
✅ 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.mdandquest/m5/lite07-mesh.mdnow 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.mdlistsquest/m1/mixed-version-ring.mdunder## 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.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

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
quest/m1/mixed-version-ring.md, listed in m1's README and inlite07-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
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 reviewafter each round.01a1bc58-e26c-7062-ab20-c8de6ea11ff1, round 2The incremental changes consistently document the temporary compatibility chain and its JS dependency, with no actionable defects found.