Repository navigation
Strengthen runtime safety verification - #1024
Merged
Merged
Conversation
Relational binding needs an independent contract across hierarchy and cache states. Compare 144 fields with direct Unity queries across three relations, all four shapes, sealed/base/interface matching, state and filters, and depth/count limits. Exercise 72 combinations and eight cache/hierarchy checkpoints. Unity 6000.4.6f1 PlayMode passes 226 cases with zero failures or skips. Removing breadth-first ordering causes 48 failures. Removing the parent depth limits causes 72 failures. Restored Runtime sources match the base revision. The first ordering mutation exposed missing fast-path coverage; sealed query fields close that gap. Default, legacy, Odin and SINGLE_THREADED test-source checks and assembly-reference probes pass. Broader lifecycle, backend and paired-performance acceptance remains open in #644. Refs #644
Text scans missed valid escaped identifiers and calls inside interpolation. Use Roslyn syntax across conditional branches. Resolve attribute aliases from syntax, preserve source positions, and require literal boolean true for values. Keep literal text separate from interpolation code. Compile a control with unsafe compilation disabled; never execute its memory-access calls. All 267 safety controls pass. The normalized SARIF report has zero findings across 2,467 sources, 45 assembly definitions and 18 check projects. It records 64 bounded stack allocations and passing memory-access, stack-bound and IL2CPP controls. The report validates against the official OASIS SARIF 2.1.0 schema. No Runtime source or shipped analyzer DLL changes. Broader backend conformance, native fault causation, build-policy coverage and paired-performance acceptance remain open in #637. Refs #637
C# ignores format characters inside identifiers. The source prefilters missed those spellings even though Roslyn correctly normalized them. Send raw format characters through both safety policies and require independent positive controls that ordinary spellings cannot mask. Verify three characters, literal exclusions and a compile-only C# proof. All 274 safety controls and the package scan pass. Refs #637.
Collaborator
Author
|
DISCLOSURE: LLM-GENERATED TEXT Verified final head
Native qualification: the two 6000.6 jobs record 18 Runtime source and shipped DLLs are unchanged from base |
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.
DISCLOSURE: LLM-GENERATED TEXT
Why: Text scans missed unsafe calls, and binding tests missed fast-path ordering.
What:
Refs #637, #644
> [!NOTE]
> Medium Risk
> Changes how CI enforces memory-safety and IL2CPP rules; mis-parsing could miss real violations or false-positive, though coverage is heavily expanded in contract tests.
>
> Overview
> Unsafe memory-access and IL2CPP option linting no longer rely on regex over stripped source. The SyntaxPolicy tool gains
--unsafe-access-jsonand--il2cpp-code-json, backed by sharedSafetySyntaxTreesparsing that expands up to twelve#ifsymbol combinations per file. Unsafe scanning flags reinterpretation members and refuses aliases/staticUnsafeimports; IL2CPP scanning returns normalized token text plusIl2CppSetOptionargument-list positions (including attribute aliases) for the existing JS value judge.>
>
lint-unsafe-code.jsroutes those checks through the Roslyn DLL, tightens prefiltering for Unicode escapes and format characters, deduplicates IL2CPP findings per site, and expands positive controls (escaped, interpolated, format-character fixtures). Contract tests and contributing docs describe the new behavior.>
> Relational component binding gets a large matrix fixture (
RelationalBindingMatrixTarget) and runtime tests that callAssignRelationalComponentsand assert single/array/list/set fields match independent hierarchy queries across sibling/parent/child directions, filters, depth/count limits, reflection capability modes, and scene mutations.>
> Reviewed by Cursor Bugbot for commit d30382f. Bugbot is set up for automated code reviews on this repo. Configure here.