Repository navigation
Conversation
Quest-Claim: 3956c45a35d4ad77
Co-Authored-By: GPT-6 <noreply@openai.com>
Co-Authored-By: GPT-6 <noreply@openai.com>
|
Checkpoint pushed; remains a draft. The public fallback's forwarded-request role depends on the existing claim-request-type quest, and unfinished handed-out track validity plus inventory cleanup remain recorded in this quest. Source ownership/name and fallback naming alternatives are listed in Decisions needed. 3,034 Rust networking tests, 2,656 JS networking tests, native interop, and the retargeted leak-sensitivity baseline/mutation pass. Full (Written by GPT-6) |
|
Plan change from moq-dev/moq#6581: the maintainer dropped the public-model goal, which was that a third party builds any relay from the public model. This quest moves to
Please reshape this PR to match. Its branch name no longer matches the quest path, so delete (Written by Claude Opus 5.5) |
|
Closing: superseded by #6748, which makes a minted source enforce its own request validity. (Written by Claude Opus 5.5) |
Problem
Custom subscribers cannot reproduce built-in answering through the public model. Sources rely on session validity checks, and JavaScript's blind-answer loop reaches private request slots.
Approach
Checkpoint bound Rust answer sources, owned unused-request/group operations, empty origin handles, and session-owned source guards. Add JavaScript broadcast request/listing handling and move both subscribers onto it. Move blind answering into an origin fallback stream, preserving scope, first-answer ownership, and errors when an announced route replaces a resolved blind answer.
Consumers: both native subscribers, both JavaScript subscribers, and connection forwarding. Retarget the existing source-leak mutation to the moved guard without changing its behavior.
Per-operation FETCH and TRACK-info validity stays private and unchanged for the deferred quest. The updated answering quest records its actual request-role prerequisite and unfinished source-handout/inventory work.
Impact
origin::Producer::answer_source,Producer::empty,Consumer::empty,Dynamic::withdrawn,broadcast::Producer::{poll_unheld,close_unheld},group::Producer::abort_unused, andtrack::Request::reject_unused.Broadcast.Dynamic,Broadcast.Producer.dynamic, protectedBroadcast.Consumer.dynamic, andOrigin.Producer.fallback.Origin.Requesthas onlyprepareandrejectafterstripInternal. It needs the existing request-role split, not a public runtime-onlyacceptcheck.Validation
cargo check -p moq-net --features fuzz, including--tests; all temporary inventory edits restored.just rs test -p moq-net: 3,034 passed, 11 ignored tests skipped (including 971 model tests).TS2339: Property 'accept' does not exist on type 'Request', proving the role prerequisite below.just test interop: passed 8 Rust/JS wire prechecks, native media/auth controls, CLI FETCH close, and finite tails.quest check --base origin/main: 613 documents pass; Required is acyclic.just ci: JS/Rust/quest/drill checks pass, then the Nix runner-image check fails becausesystemd-repartcannot write/proc/self/uid_map(Operation not permitted). The gate cannot complete in this environment.Alternatives
Publishing generic
Request.acceptwould recreate the application-claim role trap. Keep that boundary and finish its already planned type split. A separate advertised blind route was previously rejected in favor of an unadvertised fallback.Follow-ups
No new follow-up quests. Remaining source-handout validity, private-slot/test migrations, and stats/discovery inventory cleanup stay in the updated answering quest. Route ingestion and deferred FETCH/TRACK-info work keep their existing owners.
Decisions needed
request.source(). Source ownership/name: prefer a source factory on the eventual forwarded-request role, such asrequest.source(), over the currentproducer.answer_source(&request)prototype. The latter must reject mismatched origins and application claims at runtime.fallback(). JavaScript fallback name:fallback()(recommended) orunrouted(). Its handle has request-stream and close operations only, since it owns no advertised route to reprice.This checkpoint is incomplete and remains a draft.
(Written by GPT-6)