v1.4: audit unframed C_livery transforms before silent misrender - #28
Draft
Datamining00 wants to merge 6 commits into
Draft
v1.4: audit unframed C_livery transforms before silent misrender#28Datamining00 wants to merge 6 commits into
Datamining00 wants to merge 6 commits into
Conversation
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.
Diagnostic hardening derivative of
v1.4-bare-parent-transform-fix.Why
The rendering defect is a parser/grammar problem, not corrupt source artwork: FH6 C_livery can contain valid transform records that the pinned decoder may fail to frame. When that happens, transform bytes are walked as ordinary bytes and the resulting group can be placed at the wrong location while still producing the expected layer count.
The targeted bare-parent fix corrects the proven
bare parent -> extended child transform -> groupvariant, but a one-off visual patch is not sufficient for arbitrary future liveries.What the first real audit showed
The first audit JSON reported 984 raw candidates. That number is not 984 parser bugs. Audit v1 scanned every byte offset, so valid float/color bytes inside already-decoded records could look like transforms. It also failed to populate
decoded_section_rangesbecause FH6 Assistant stores section provenance assource_section, notsection.The useful evidence is the repeated high-confidence extended-child pattern. In the supplied Right section the raw stream contains, among others:
0x41DDC/ decimal 269788:(-360.5, -31.0, 0.9000001, 3.5)followed by marker0002000100000003;0x42660/ decimal 271968:(-373.5, 4.0, 1.0, 0.0)followed by the same marker and child transform(-0.0033054, -1.81714, 1.1799998, 3.6).These are the same grammar family rather than car-specific coordinates. The existing group trace also shows the child group beginning at 272009 as a root-level markerless group in the pre-recovery tree, which is exactly the kind of relationship the bare-parent grammar is intended to preserve.
Structural Audit v2
Audit v2 no longer scans arbitrary raw offsets at runtime. It instruments the actual patched decoder walk and only inspects positions that every observed parser pass still consumes one byte at a time. A position that any parser pass recognizes as a multi-byte record is excluded from the unresolved set.
This means:
source_sectionwithsectionfallback;No car ID, section name, phrase, creator, source offset, or livery-specific coordinate is hard-coded into the parser rule.
Validation
a67c164b9abd03e35562475506025f487c25d9c692a04a474ebc02c045fefb0b.5aacc6bd0d6f244bd9738fc308d2e1fa6fa980e2ac171ab97779e864b489ff9d.This PR remains draft until the same real livery is run once with Audit v2. The resulting candidate count is the actionable measure of parser grammar still missing after the current recovery patches.