WIP: fix(build): honor selected external hot-function profiles #754
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 @ 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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!754
Loading…
Reference in a new issue
No description provided.
Delete branch "siantm/Longshot:fix/external-hot-profile"
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: Windows 11 Pro 26300, game-free · Needs: complete game-free suite and Linux verification
Why
An explicitly selected hot-function profile can silently lose to the build folder's default list. Editing an external profile at the same path can also reuse a translation produced from its old contents.
How to reproduce
Seen on: Windows 11 Pro 26300, Python 3.14.7; no GPU or game used.
Settings and switches: external or explicitly empty
A64_HOT_FUNCSwith a different defaultwork/hot_funcs.txt.Steps: Run the two selected override-consumer tests in
tests/test_make_game_cache.pyagainst main using itsLONGSHOT_CACHE_TEST_SOURCEoverride, then against this branch. Runcheck_selected_hot_list()fromtests/test_lift_cache.pyagainst each implementation.Expected: the chosen list controls the real lifter consumer; empty disables it; editing selected contents invalidates the translation.
Actual: main selects the default list for both overrides and does not invalidate on external-file edits.
What changed
Preserve explicit profile selection, including an empty value, and hash the selected profile's contents. Resolve relative profiles from the translation child's checkout root.
nx2/make_game.py: override precedence and selected-content lift-key inputs.a64_lift.hot_functions(), cache invalidation, and cross-folder reuse.Measurements
Verdict: the authored regressions fail on main and pass with the fix. No FPS claim.
Hardware: Windows 11 Pro 26300, Intel Core i7-9700, 31.8 GiB usable RAM; pinned Python 3.14.7; no GPU work.
Method: identical authored consumer/cache cases against main and the prepared branch.
9e6f231db6d9ad2af4Observed:
FAIL: editing the same external profile path changes the keyon main; main's two consumer assertions selectf_80000000rather than the authored external function/empty set. Patched driver:Ran 20 tests ... OK (skipped=1). Lift-key and cross-folder lift-store drivers pass. These checks ran on the source snapshot committed asb6d9ad2af4before browser submission; no generated game files are included.Flags and settings
A64_HOT_FUNCS: previously the builder's default list could override an explicit setting; now explicit selection wins, empty disables it, and unset retains existing behavior. No new switch/default or runtime quality change.Testing
Tested: focused lift-key, complete cache/consumer, and lift-store drivers; authored baseline failure proofs. New run fragment is accepted by the actual tested-configurations renderer.
Not tested: complete suite, native Linux, or an actual game build. The independent tested-configurations unit driver has a Windows CRLF-vs-LF pipe-fixture failure; it is not reported as passing.
Must be tested: complete game-free suite on Windows and Linux, with source commits recorded, before readiness; by hand or the project's Test Farm. No runtime performance claim is proposed.
Risks
What could break: profile selection or cache invalidation could reuse the wrong translated code.
Turning it off: revert the fix or leave the existing override unset.
Compatibility: selected translation inputs can intentionally cause one retranslation. Saves, settings, shader/pipeline cache formats, renderer ABI and tools are unchanged.
Checklist
Everyone
fix(build): honor selected external hot-function profiles.9e6f231d, confirmed by the upstream compare page.tests/run_all.pyresult recorded; not run.When it applies
Assisted-by: OpenAI Codex.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.