Repository navigation
feat(LA-62): qualify native attribute mutation keys - #760
Merged
Merged
Conversation
This was referenced Nov 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
String-subtype attribute keys could skip native lookup callbacks or be refused on reflective receivers. Native mutation now runs hash, MRO dictionary lookup, equality and truth conversion through owned execution. Successful and NotImplemented comparisons select the stored descriptor, including aliases; lookup errors are suppressed before storage or missing-name selection. Dictionary storage hashes independently, writable fields preserve their native behavior, and function names retain subtype identity.
The milestone covers scalar, container/buffer, callable, view/proxy, generator/iterator and reflective layouts, with module/dynamic/generator composition, original diagnostics, parked collection, cancellation/close and shared budgets. The exact contract and runnable recovery example are included.
Rejected native type-key comparisons retain an explicit refusal after the first visible rejection. Sixteen pinned CPython 3.14.7 seeded probes produced two or three comparisons for the same input; #759 owns that sparse-probe contract. The corpus records 2,443 cases: 2,387 supported semantic/error comparisons and 56 refusals, with 267 shared core cases. Seven qualifications remain outside successful differential counts. #124 and the broader A2 gate remain open.
Validation on macOS arm64 with pinned CPython 3.14.7 and Node 24.19.0:
Four browser worker-startup interruptions passed isolated one-worker retries. Other passing checks were retained. The automatically triggered duplicate PR workflow was cancelled after these complete local results; merge reuses this validation.
Closes #757. Refs #600, #124, #759.