WIP: feat(dev): a starter pack: one setup check, the code graph, and the first steps in order #235
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
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/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!235
Loading…
Reference in a new issue
No description provided.
Delete branch "TrashPanda/Longshot:feat/dev-starter"
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?
Why
A new developer finds the first steps spread over CONTRIBUTING.md, AGENTS.md, forge.md, test-requests.md and development.md, with nothing to say which are done on their PC. This puts them in order, adds one command that checks them, and sets up graphify, a local code graph that helps people and agents find their way in a large tree, so it can't take the game's files.
What changed
scripts/dev_setup.py(standard library, Windows and Linux) checks Python andrequirements.txt's packages, the compiler, the Vulkan headers, the sign-in (forge.py whoami), the fork (forge-fork), the code graph and the game-free checks. It offers each missing step and does nothing without asking:--checkreports only (exit 1 when a required step is missing),--yesdoes every step,--skipleaves steps out.graphifyy==0.9.101, PyPI, Apache-2.0);graphify update .buildsgraphify-out/graph.jsonfrom the source only (AST, no LLM, no network);graphify hook installkeeps it current after commits, checkouts and merges..graphifyignore(new): everything.gitignorelists as the game's (work/,romfs/,*.nso, ...), build output and toolchains kept in a clone,third_party/and the generated*_spv.h.dev_setup.pyrefuses to build the graph when it lacks one of the game's patterns..gitignore:graphify-out/.hook installalso writes agraph.jsonmerge-driver line into the tracked.gitattributes;dev_setup.pyputs the file back, since the graph is never committed.docs/dev-starter.md(new), clone to first PR in order: the setup, the code graph and its rules, claiming work,dev_packs.py, the PR, and test requests (asking and helping). It links to the pages with the detail rather than repeating them.AGENTS.md(the reading list, Set up, a graphify step) andCONTRIBUTING.md(Development setup) point to it.tests/test_dev_setup.py:.graphifyignoreanddev_setup.py'sNEVER_GRAPHEDmatch.gitignore's game section;graphify-out/is ignored; a short ignore file stops the graph step before it looks for or runs anything;--checkand--yesask nothing; an unknown--skipis refused.Flags and settings
LONGSHOT_MINGW,LONGSHOT_VULKAN_HEADERS,RX_CPMdev_setup.pyonly reads them to find the compiler and the headersdev_setup.py --check/--yes/--skipMeasurements
main:
1ef93e79(2026-11-13)this PR: feat/dev-starter @
938f2512No speed numbers: a development script and docs, nothing in the game changes. The checks, and the setup on a fresh clone:
1ef93e79938f2512python -I -B tests/run_all.pyfailurestest_display_pointer,test_lift_cache,test_texture_staging_publication)test_dev_setuppassesdev_setup.py --yes, graphify step, fresh clonegit statuscleanwork/lifted_secret.candllvm-mingw/probe.cin the cloneTesting
Tested: Linux (CachyOS, Python 3.14, AMD Ryzen 7 9800X3D).
run_all.py: 505 passed, 3 failed, 18 skipped, the 3 also failing onmain(test_texture_staging_publicationis fixed by #215).dev_setup.pyon a fresh clone:--checkchanged nothing;--yesbuilt the graph, installed the hooks and leftgit statusclean; a second--checkshowed graphifyok; the checks step readrun_all.py's summary and named the failures.test_dev_setup.pyfails whenwork/is taken out of.graphifyignore. Eachgraphifyexample in the guide was run against the clone's graph.Not tested: Windows (the llvm-mingw check, uv or pipx there,
graphify hook installwith Git for Windows), and a PC with nothing set up (the pip install andforge.py loginoffers ran only as far as their checks, since this PC has both).Needs other testers:
python -I scripts/dev_setup.pyon a fresh clone, expecting each step reported, graphify installed and built, andgit statusclean afterwards (request to open)docs/dev-starter.mdfrom the clone, expecting no step missing or out of order (request to open)Screenshots
Nothing on screen
Risk and rollback
Nothing in the game or the builds changes. The risk is a step that misreports (a compiler or headers not found) or a graphify release that changes its commands; the version is pinned. Reverting the commit is enough;
graphify uninstall --purgeremoves graphify's hooks and its graph from a clone.Reviewer notes
Where to look first:
.graphifyignoreagainst.gitignore's game section, andgraphify_stepinscripts/dev_setup.py(the refusal, and the.gitattributesput back). graphify is the user's choice, offered and never required. Its other commands (extract,label) can send text to an LLM; the guide says not to use them on this repository.Issues
See #147
Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.mainand passing here.tests/that reads changed source updated in this PR, not weakened.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.