WIP: fix(probe): ignore packed NaNs without hiding finite channel jumps #832
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
beanstalk: approved @ 1697603
beanstalk: approved @ 2c5a62e
beanstalk: approved @ 4fd82b7
beanstalk: approved @ 64d6d09
beanstalk: approved @ 6f91fae
beanstalk: approved @ 70a78f9
beanstalk: approved @ 8015c9a
beanstalk: approved @ 8d361dc
beanstalk: approved @ 9d8356e
beanstalk: approved @ abf2227
beanstalk: approved @ d82f202
beanstalk: approved @ e5f1e40
beanstalk: approved @ ee8ab5f
ci: approved
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/macos
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
regression
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
ci: approved
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!832
Loading…
Reference in a new issue
No description provided.
Delete branch "NitnekLeBorgne/Longshot-contributions:fix/probe-packed-nan-20261115"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type: fix · Risk: low · Tested on: Linux, authored Python fixtures; GPU irrelevant · Needs: full required suite; Windows manual replay
WIP; private prepared commit
9aaf62c332, basea00c485c71. Observed mainaa95d35f3dis not the base: equal relevant blobs/modes is not a rebase or refreshed-main qualification. No public branch claimed.Why
Packed RGB NaNs can cause false brightness jumps in the offline probe. Finite channels must remain observable. Retained search: 193 open issues, no matching specific issue; no closing claim.
How to reproduce
Seen on: Linux, synthetic packed RGB; GPU irrelevant.
Settings and switches: Authored integer bit patterns, no game settings.
Steps: Replay the extended
tests/test_probe_half_nan.pyon pinned-base and candidatescripts/probe.py.Expected: Ignore NaN-only changes; detect finite green jumps with red NaN.
Actual: Base produces false NaN jumps; four methods affected.
What changed
Decode packed exponent 31 with nonzero mantissa as
math.nan. Per-channel comparison skips only NaN components, without hiding finite jumps.scripts/probe.py,uf: two added lines; retain the historical1e30infinity sentinel, not a general infinity fix.tests/test_probe_half_nan.py: five new methods plus three unchanged methods; 157 NaN payloads (63 red, 63 green, 31 blue), 15 controls and mixed-channel behavior. Authored integer bits, not float NaN conversions.Measurements
Verdict: Retained regression proof passes on candidate; no new execution or performance benchmark.
Hardware: Author's Linux, Python standard library; GPU/driver irrelevant; CPU/RAM not recorded.
Scene: Authored packed RGB fixtures, no game capture.
Method: Original final baseline/candidate receipts; methods, subtest events and CLI calls counted separately; no timing/median.
How to reproduce:
python -I -B tests/test_probe_half_nan.pyagainst each source export.a00c485c719aaf62c332179 invocations are not 179 tests or successful exits. Initial RED preceded the edit; final replay retains full fixture text. Original evidence:
roles/probe-packed-nan-author/evidence/final-baseline-*andfinal-green-*. No product test or review replay here.Flags and settings
None.
Testing
Tested: Retained author's Linux CLI regressions, independently reviewed without replay. All 157 NaN payloads and 15 controls pass; finite green jumps remain detectable with red NaN. Existing half-NaN and malformed-input checks remain.
Not tested: Full required suite, newer-main context, Windows, GPU execution or game captures. Offline Python diagnostic, not rendering; no GPU/game gate invented.
Must be tested:
python -I -B tests/run_all.py, expecting required checks to pass or baseline failures/skips named before merge.python -I -B tests/test_probe_half_nan.pyfrom a UTF-8 path, expecting all eight methods to pass, malformed-input rejection and finite-channel detection.Risks
What could break: Interpretation of packed NaN diagnostics; finite channels and infinity sentinel preserved.
Turning it off: Revert the commit; no new switch.
Compatibility: No save/options/cache/vk ABI or game-output changes. Only offline packed-NaN interpretation changes; handwritten GPL-3.0-or-later fixtures, no copied or game-derived material.
Checklist
Everyone
type(scope): description) of the status line's type.main.python -I -B tests/run_all.pypasses (any failure that also fails onmainis named).third_party/untouched (a new folder with aPROVENANCE.mdinstead).When it applies
Assisted-by:/Co-Authored-By:trailers.mainand passing here.tests/that reads changed source updated in this PR, not weakened.9aaf62c332dbe36235afRebased onto
main@bbe6fdf: no conflicts. No tests were run here; the test boxes stay yours.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.