OPENHOOPS / 2K14Final team archive · November 9, 2026Reference libraryChecksums

Dated source reference. Current release status: handoff state. Full original relative paths are in the developer archive.

OpenHoops external working storage

Updated after Blender startup repair, November 8, 2026 UTC. External drive start page.

Additional internal data relocated — November 6 local / November 7 UTC

The workspace was already external. A further 39.4 GB of project support data was found outside it and relocated to /Volumes/MacStudioExternal/Modding/OpenHoops-support/. This includes the 25.2 GB ~/.local/share/openhoops tree (reference games, original staging archive, toolchains, builds and private configuration), 14.1 GB of closed Codex project history, Claude project history, generated images, shell snapshots, project configuration, and Blender user settings/add-on and caches.

Original paths remain compatibility symlinks. All relocated content was SHA-256 verified before internal originals were removed, followed by a separate full content and path readback. Keep the support directory private and connected alongside the workspace. These are relocations, not independent backups.

Use python3 tools/with-external-storage.py COMMAND [ARG ...] for local project commands. It checks the mounted drive UUID and directs temporary files, Python bytecode and pip caches externally. It does not change global shell settings. Explicit build/render/output directories must also be external.

Five live or loaded project logs (about 3.0 GB at handoff), shared application databases and the Xcode Python installation remain internal. The old Documents project folders are cloud-only placeholders with zero local payload allocation; they were not downloaded or removed. Two small /private/tmp scripts retain their original ownership internally (8 KB total allocation).

The Blender application stays at /Applications/Blender.app; its settings, OpenHoops add-on and caches remain external. The November 7 restoration and deferred startup check are historical: on November 8 the user reported a damaged-app rejection. A fresh official 5.2.2 installation now passes direct window launch and normal macOS launch, with the existing add-on loaded. The user approved the separate external-drive permission. The previous app is preserved externally, and all its file bytes matched the fresh official app before the replacement. No global security policy was changed.

The cache wrapper needed an additional fix: Blender's embedded Python ignores environment variables by default. with-external-storage.py now adds --python-use-system-env when directly launching Blender, so its external PYTHONPYCACHEPREFIX actually takes effect. A separate local startup module in the external user settings sets the same cache location for normal desktop launches, with a drive-UUID check and disabled bytecode writes on failure. It does not alter the signed app or the portable add-on. Scripts that spawn Blender as a child must pass --python-use-system-env themselves. The actual four imports that previously added unsigned bundle caches were checked in both launch modes; their cache paths now resolve externally.

See the Blender repair and startup evidence. The older migration receipts remain unchanged.

Residual-migration records include exact manifests, hashes, retained failed checks, final routing, Blender restoration/security-validation evidence and the internal exceptions. The final receipt supersedes the earlier intermediate Blender-move receipt; do not replay migration workers against the completed paths.

Working paths

The entire workspace physically lives at /Volumes/MacStudioExternal/Modding/OpenHoops. This includes source code, AGENTS, knowledge-base, API, native hook, presentation, editor, tools and Python environment as well as bulk data. Open that external folder directly, or keep using /Users/brentlane/Projects/NBA 2K14 Decomp:Recomp: the old root is now a compatibility symlink to the external root.

Material Physical location under external OpenHoops
Source, notes, SDKs, editor and tools Original project-relative paths, all physically external
All five arenas and editable assets arena-projects/
Shared arena kit and court templates arena-authoring-kit-1.1.0/, assets/court-templates/
All research, captured evidence and recovery archives analysis/
Original extracted game reference NBA2K14-extracted/
Original packages and research resources resources/, rld-nba2k14.iso, Crack/
Selected historical builds and releases Selected children of build/ and distribution/

All new output beneath either workspace path now lands externally, including builds, distributions, research and assets. Former code backlinks and mixed internal parents were consolidated into real external files/directories. There is no dependency on an internal source checkout. System dependencies such as the Xcode Python interpreter remain installed in their normal locations. This is working storage, not an extra independent backup.

Two existing processes retained the old root as their cwd: preview PID90432 and sleeping Claude PID45338 at cutover. A hidden internal directory, /Users/brentlane/Projects/.OpenHoops-workspace-forwarder-20261024, retains only 24 forwarding symlinks and zero regular files, preserving relative-path access without restarting them. Leave it until fresh process/handle checks prove it unused. It is not another workspace copy. The original visible path is the root compatibility link described above.

Keep the drive connected

Keep MacStudioExternal connected and mounted under that name when using moved data. APFS volume UUID: F7CA45D6-9DDA-404E-B72B-72435671ADD5. If files appear missing, reconnect this drive and verify the mount/UUID. Do not replace dangling links with empty directories or write substitute data into /Volumes/MacStudioExternal while the volume is absent. Close writers before ejecting it.

Reversing a move requires enough internal space, stopped writers, a separate absent internal destination, a verified copy and coordinated atomic replacement of its compatibility link. Never delete the only payload or blindly rerun completed migration workers. Earlier per-child and analysis-parent receipts describe their original cutovers; the later full-root receipt supersedes their link topology and source-internal assumptions only.

Cleanup72/73 archives and helpers remain available through their old paths in analysis/archives72 and analysis/archives73. Their explicit restore rules still apply. Historical hardlinked caches remain immutable; materialize an independent copy before editing. Read CLEANUP.md before replaying old scripts.

Preservation and measurements

Scope Units Files Logical bytes Original allocated bytes moved
Main corpus, research and history 104 23,361 21,742,765,109 21,800,685,568
All five arenas and shared arena material 65 102,559 38,749,016,188 39,049,043,968
Combined 169 125,920 60,491,781,297 60,849,729,536

That table records the initial bulk migration. The full-workspace move adds 6,064 files, 277,623,836 logical bytes and296,497,152 original allocated bytes across44 remaining code/doc/tool units. Three Python symlinks were preserved. Cumulative source allocation relocated:61,146,226,688 bytes.

About 61 GB relocated in total. Internal free space was around80GB at the initial handoff and77.5GB at root cutover while other projects were active. Original allocation and live free space are separate measurements; concurrent projects/APFS accounting can change free space. Original packages, immutable releases, all five arenas, shared corpus, sources and history remain preserved. This is relocation, not another cleanup deletion or a new release.

Every file was SHA256-checked after copying and again before removing its internal original. Membership, source-backed xattrs, ACLs, modes, modification times and native creation timestamps were checked. Payload/directory fsync and device F_FULLFSYNC preceded source removal; atomic swaps preserved old-path availability. Originals were retained through final copy/source checks. An independent main rehash and an actual archived SQLite restore passed. Arena records include all five release-package readbacks and the existing preview server's unchanged HTTP content. Final parent consolidation compared 45,042 recursive analysis members through both paths.

One exact metadata exception was recorded: macOS added com.apple.provenance with bytes 010200903043494860dd32 where the source lacked that attribute. Only that precise addition was accepted:14,857 main +811 arena entries in the initial phase, plus5,888 in the remaining workspace copy. Three staged Python symlink modification timestamps were repaired to the exact source nanoseconds before verification/promotion; the repair journal and initial worker are kept. Source-backed attributes, including quarantine, stayed exact; other differences were rejected. Raw per-entry exception journals are retained.

No game, build, application test, render or new service was launched for this move. The existing Yuengling preview was left running. Dell games, saves, hosts, installations and custody settings were untouched. No automatic mount, cleanup or backup job was created. Storage coordination with the existing arena chats was explicitly authorized; ordinary cross-chat broadcasts remain user-managed.

Records

Records live outside the relocated project trees. Keep them with the payloads:

These directories retain plans, per-file manifests, original metadata, hashes, copy/move receipts, exception journals and safety helpers. Do not rewrite historical receipts to match later authorized edits.