Repository navigation
quest: delete addresses as identity; addresses stay refused - #628
Conversation
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 23 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 head f7e5c863d404eb264ac97998a5e7924f29b2b6d8 against base 91a905c94899792e4edade5f89dafa84e16c5034.
No actionable findings in this four-file planning-only delta. The addresses quest and its Required entry are removed together. The model plan records the retained address refusals, explicit consumer IDs, and no cfg(rust2_ts) twins; the unsafe epic reflects the same choice. The runtime-throws quest replaces its deleted address-quest link with the model decision and explicitly excludes those already-refused comparisons. I also confirmed #596 is closed without merging.
Direction: the scoped plan is consistent with retaining exact semantics for supported operations and rejecting unmodeled address reads. This does not add support for previously refused pointer comparisons or implement the separate moq-side ID changes.
Verification limits: GitHub-only static review of the complete diff and surrounding unsafe plan. I did not run quest context, quest validation or CI, reproduce #596's experimental results, or verify the implementation of the separate moq work. GitHub reports mergeable=false; this is not a build or merge-readiness claim.

Deletes the quest Addresses as identity: pointer addresses stay refused, and moq keys its model by explicit ids instead. moq-dev/rust2#596, the quest's PR, is closed.
Why
Three designs for addresses as identity on #596 each left a gap: ids for values outside an
Arcthat were never freed (so churn aborts at wasm32's 4 GiB, where Rust reuses memory), or pointer comparisons that disagreed with Rust after an address was reused. JS objects have no address and JS copies values, so only a linear-memory model could give exact addresses everywhere. The only consumer at the moq pin is moq-net's model, six reads that use anArc'd object's address as a map key, and an explicit id does that job in plain Rust.Changes
quest/m2/ts-model/addresses.mdis deleted, along with its link in the model epic.cfg(rust2_ts)twins of itsunsafe. The ts-unsafe epic's Goal and Plan follow.quest/m3/ts-runtime-throws.md: the pointer comparisons feat(ts)!: rs.Slice for references to arrays, comparing element places, and unsizing an Arc's array #584 refuses, which addresses were meant to make exact, are out of scope.Decisions
Settled with the maintainer on 2026-11-07:
ptr::eq/Arc::ptr_eq/Weak::ptr_eqkeep translating as JS identity. Rejected: specific methods (ids only forArc::as_ptr/Weak::as_ptr/into_raw), ids for anArc's orRc's value, and exact addresses everywhere. Plan addresses again once a library other than moq needs them.cfg(rust2_ts)twin; leaving moq's quest).cfg(rust2_ts)twins: ✅ none anywhere in moq (rejected: only dropping the address-key twin).unsafe(frame ring,NonNull,Segment, kio'slog): ✅ decided per item when moq's quest starts (rejected: wait for rust2-ts; safe rewrite in both builds now).Public API: none.
Validation
quest gate just cipasses locally.Models
Size: S
Implementer: Claude Code, claude-opus-5-5, high effort
(Written by Claude Opus 5.5 with high effort)
🤖 Generated with Claude Code
Review
Rewritten by
quest reviewafter each round.01a1b3ed-7271-79b3-b062-a9dd3fcc1012, round 1The exact base-to-head diff only updates quest plans, with no actionable defects or remaining references to the deleted address quest.Conflict-free merge of main at
324a7b70ainto48edaddfd, which needs no new review under the merge exemption.