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.

External match expansion — development46 acceptance

Current extension: Match controls51 completes the three planned additions: game-clock rotation intent with native entry observations, original native timeout calls and connected-input/team assignment.510 Windows API tests/84 schemas and focused live52w/52za/52x pass; multi-controller physical input remains unverified because no gamepads are available. This closes the planned match-control implementation, with that hardware verification outstanding. Presentation, broad modding/rule semantics and public packaging remain separate. The earlier evidence/version paragraphs below remain their recorded checkpoints; consult the new ledger for current implementation and exact limits.

Current development50/ABI25 extends this accepted launch checkpoint with startup defense, native substitutions and result completion. Version46/47 counts and limits below describe their capture-time sources.

October17,2026. The user authorized expanding external launch as far as practical and continuing while away. Keep Windows-first, use Dell for builds/tests/game/debugging, preserve stable35/original95 saves/EXE/public previews/hosts, and do not restart deferred niche-rule tests or publish a new package as prerequisites. No agent delegation was requested.

The later development47 coaching checkpoint extends this accepted foundation with ABI22/18 per-team startup values and current452-test verification. The development40–46 identities and evidence below remain unchanged.

Current accepted checkpoint

Source API0.2.0.dev46/HTTPv1, snapshotABI21 (67752bytes), eventABI4, collegeprofile4/courtdefinition3. Frozen47zzp source archive7c6d87fbf946a536499f2dcc22a4f824e91f745eb6f2a44dee94f5266e461c60 identifies167 inputs;441 exact-source Windows API tests pass.55 non-Markdown native inputs match compiled47zze, non-probe DLL2721b166874e71e036d09c0980176bf53df5c794121ed055fee5a5a54823d046 (MSVC19.51 /W4 /WX). Final integrity47zzs verifies146 runtime-code inputs against the frozen manifest. Later working documentation and canonical-schema cleanup are separate from that archive; no runtime code changed afterward.

Combined47zzq passes the single app-owned request end to end:905-team source ROS→three field edits→both starting orders/minute preferences→registered prepared4409 ROS→all13 native choices→college10/media4/all264 presets/2k six controls/CPU participation→phase4 external IDs→natural phase10 clock598.8780→exact16MiB export/no-overwrite→owned cancellation and immutable request/command receipts. Zero adapter errors and generated product input. Guarded capture after independent SDK gameplay observation shows the2k view and Independent Dynasty window branding; existing synthetic-fixture pink crowd/floor materials and original in-game watermark/HUD persist. Home47zzf and away47zzi pass on the same exact native DLL; away has rendered control-marker evidence and stock ROS export. This is startup/early-play acceptance, not new full-game/rare-rule/asset/hardware certification.

All61 current schemas validate against12 live scenarios,188 actual commands/receipts, seven frozen request documents and unchanged historical results (schemas47zzr). It checks readonly temporary copies and verifies all36 original DB/WAL/SHM file hashes afterward. Canonical schema SHAe85cd8d41f603b794af8cd8d30efa3d052702dccd89fd1c43f11f69752d8a50d includes the empty optional roster_edits no-op correction; runtime validation already allowed that no-op. Historical result0941ccb9 is unchanged.

Final47zzs at19:29:55UTC archives the last isolated saves, restores all95 original files in match-game44a, verifies original EXE/stable35/INI/fixtures/three public ZIPs and unchanged hosting process identities, closes18 owned runs and removes20 exact-body/idle session47 tasks. No game/debugger/API listener remains; both artwork and download hosts keep running. The new DLL remains isolated; no public/stable promotion. Free space3691204608bytes. Restored Config is the user's original fullscreen setting, not new fullscreen acceptance. Future work must deliberately stage current source/component/hook; do not import older installed/public API36 by accident.

Physical device choice/multiple humans, coaching, disk settings persistence, checkpoint/asset hot-swap, native presentation/extra-field consumers, legal ball state/universal events/arbitrary callbacks and full hardware/mode certification remain separate. Existing deferrals stand. No new game run or package is required for this accepted expansion. The sections below retain the incremental research/verification history; this checkpoint supersedes their current-at-capture/pending wording.

Incremental source and candidate history

Current source46 adds authenticated registered-ROS binary export and SDK no-overwrite download, preserving snapshotABI21/Shared67752/eventABI4/profile4/court3. Frozen47zzh archive99c8e4c30fc841b8582453cdf3612f2fd71596353e749612c6d12d112eca1169 identifies167 inputs;440 exact-source Windows API tests pass. All57 native inputs match compiled47zze; DLL2721b166874e71e036d09c0980176bf53df5c794121ed055fee5a5a54823d046. API45/native47zze passes430 tests and live47zzf primary_home with native role/current-saved input-record readback, phase4 IDs and natural phase10 clock118.9498, zero errors/no generated input. Cancellation passes. Optional screenshot was attempted after the observer's60-second hold and cancellation, so it refused the missing owned process; no rendered human-control proof is claimed.47zzf is closed. Export and away/full-combination validation are pending.

Latest47zzp source archive7c6d87fbf946a536499f2dcc22a4f824e91f745eb6f2a44dee94f5266e461c60 identifies167 inputs;441 exact-source Windows API tests pass. It fixes Windows export promotion to use non-overwriting rename (supports removable filesystems without hardlinks) and adds a real concurrent-destination preservation test. Capability discovery now advertises startup settings presets while retaining unavailable live bulk/persistence. All55 non-Markdown native inputs match compiled47zze; changed native README documentation is explicitly excluded from the binary comparison. Intermediate47zzm first preflight caught that documentation difference before staging; no code difference or rebuild was needed. Source47zzm67bad488 was not accepted/tested. Full combined47zzq is running on47zzp/current2721 DLL:905-team file edits/preparation, college10/all264/2k/CPU participation, app IDs and16MiB export/capture/owned cancellation. Use launch47zzq/stop47zzq and its finite30-minute watchdog. No final cleanup/restore yet.

Live47zzi passes current native away participation/API46, phase4 identities, natural phase10 clock118.9922, zero errors and exact stock ROS download/no-overwrite refusal. Automatic one-shot capture activates only the owned window after SDK phase10 observation; the visible control marker is on requested away Milwaukee. Original in-game NBA2K14 watermark/HUD remains.47zzi is closed. Its first stage refused disk headroom before backup or game creation; an observer/capture were then mistakenly started against the unstaged run, and were stopped/removed with exact-action/no-launch guards (recover-space47zzj). No game was created by that failed attempt. Historical JSONL capture compression47zzl preserved all three byte hashes/paths,95 originals and the historical result, recovering915628032bytes (free4086779904) without deletion, assets/packages/DB rewriting or OS policy changes. Earlier precise compression/dedup receipts remain. Current pending verification: combined47zzq,61-schema acceptance, working-document/index cleanup and final preservation.

Earlier45 candidate47zx source archivefb929a757d6741d41d19bc4a39b74f22f19a0f8675de8dd68ab09c76ca797752 identifies166 inputs and passes430 tests. All57 native inputs match compiled47zw, DLL41b40da5266bd872632a9ddc19a6d96e46172424d4ed297a879c9636dd3435be. Live47zy CPU mode passes observer-only request stages, native control commit, phase4 IDs and natural phase10/clock118.9833, zero errors; owned cancellation/closure passes.47zze strengthens readback to include equal current/saved input records, nonzero for the primary playing slot and zero for unassigned slots;47zzf passes that exact DLL.47zze source archive6dc65804c86be11080cc9829451bae2cf83bc20a62c5ed59e71448d0545fbb2a.47zw source archive7c1946ac8675c08711a66767a7eb113d2ce7c87d699e473fa0b63c0d2db8a305 differs from47zx only in test-module import cleanup. The extract47zx receipt accidentally retains compiledSource label47i from its template; actual compared/copied paths point to47zw, and that label is incorrect.47zzh extraction identifies47zze correctly. No public promotion.

Research47zr normal native CPU Start reaches arena presentation with all game-control roles zero. Native5514D0 calls54EE70 before Start, then copies current role+34→saved+38 and current input record+44→saved+48 for ten slots. Original away loading shows role2/2.54EE70 clears records, commits home2→role1/away3→role2 via original setters and acquires input references only for playing sides. Fresh captured protected pages resolve the getter/setter copy path and54f6d0 (profile/team metadata, not the side commit). Candidate participation calls54DE90,54EE70 and the original two getter/setter pairs, then verifies every current/saved side at pre-Start and full-clock phase4. It does not call the full Quick UI callback or write arbitrary memory. Other preselected participants are refused; physical device selection/multiple humans stay unavailable.47zr is closed18:53:37UTC. Research inputs are not product startup behavior.

Verified first increment

Development40 appends snapshotABI18 (LaunchRules,24 bytes; Shared67648), preserving ABI17 prefix67624, HTTPv1/eventABI4/profile4/court3. --match-config takes version1 JSON: { "version":1, "rules": { "profile":"college", "half_length_minutes":10, "media_timeouts":4, "overtime_policy":"scaled" } }. Original profile takes only profile:"original" and uses the existing quarter preparation field. College accepts1–20 minutes and media0/3/4; OT follows the user's existing scaling. No arbitrary overrides or new NCAA certification.

The broker validates/freezes a child-only UTF16 contract and passes OPENHOOPS_MATCH_CONFIG. The complete hook exports OpenHoopsLaunchConfigurationVersion=1, checked without loading it. Native startup reads that contract before initialization; the existing exe-local college INI is untouched. The configuration property of GET /v1/launch contains requested rules, adapter-declared effective rules and a comparison. Commands refuse explicit configuration mismatch. Declaration is available before gameplay, distinct from active-game rule observations.

Exact compiled non-probe47a DLL: 0f795f8dfdc5e5795704daf210b5c19ae8309d63c0dea07f843e21caa079960f. Source47a archive 61b95e65ca1423f47a3bed139efce8cd014e7a38109854b8284690baa608e967 identifies137 inputs.363 Windows API tests pass. Live47b public broker/SDK verifies10-minute halves,180-second OT,30-second clock, under8/under4 TV marks,13 settings, ten starters and zero errors. Live47c explicitly overrides the enabled college INI: original-game profile, two-minute quarters,24-second shot clock and original court parameters, ten starters/zero errors. Both used no input and were closed by finite owned watchdogs. INI SHA before staging is7724da4201e474789eb1a1c3d51931b2aacffce692e2546f7eb0559015d34b8f. Raw receipts: analysis/match-expansion47/college-launch47b.json, original-launch47c.json, closed47b.json, closed47c.json.

Identity and lifecycle acceptance

Source47g (archive a88209169db57051c87567ad33d02c029a1c17a175551e387d019ec5298ffef0,140 inputs) passes383 Windows API tests. Every native input matches47a; the copied exact47a DLL is separately hash-guarded. Live47h passes the combined flow:905-team ROS, requested final teams/uniforms/arena/books and all13 settings, college10/media4 declaration and600/180/30 clocks, zero errors/no input, phase4 external identity binding and Championship metadata. It binds all24 native players and reports six uninstantiated plan slots. The ROS stores15 assigned players/team; ordinary exhibition instantiates12/team. The API does not invent statistics or infer legal inactive/injury status for the other entries. Exact slot/name/hash guards remain. started_mid_match can be false for accepted opening binding, while whole-match event completeness remains false.

The journaled session.stop command passes live47f and combined47h. It requires lease/run/current-match/owner and the original broker-owned Popen handle. Premature finished is refused without killing the game. Cancellation stops that owned process, abandons the binding, creates no result, preserves repeatable receipt queries, and leaves the broker serving durable state. An attached game cannot be stopped. This is process termination, not a recovered native Quit handler.47h is closed via its finite watchdog. Raw evidence: identity-launch47h.json, cancel-failed47f.json, closed47h.json in analysis/match-expansion47.

Startup preset acceptance

Development41/ABI19 appends36-byte startup-settings status, preserving the67648-byte ABI18 prefix; total67684. Source47i archive ff31c9b492f26415859ae57aa73c64aad4c773c049cb9a7388d3dc0fe4a470ba identifies143 inputs. Exact non-probe DLL a43c6a94cd7106aa8973346ddbdfaf344b67393af2f4d3b3d1825f1af1929894 compiles on Dell MSVC19.51 /W4 /WX.391 exact-source Windows API tests pass. Live47j passes14 representative settings;47k passes all264 values;47m repeats all264 and naturally advances through phases4/3/7 into active phase10 with clock598.8945. Every requested option/slider/controller value remains correct in live play; zero errors/no generated input. Each run also passes expanded-roster identity binding and owned cancellation. These are field/setter/readback checks, not perceptual certification of every audio/controller effect. Raw preset-launch47j/47k/47m and closed receipts are retained. The first47j stage refused a mistyped expected DLL hash before any launch; corrected resumable staging reused its completed backup and guarded exact compiled identity.

The --match-config version1 JSON now accepts settings: named options, sliders grouped by user/cpu, and a controllers array with distinct player_slot0–9 and named values. Up to16 additional gameplay/presentation options,118 sliders and130 stored controller preferences (264 values). Difficulty/speed/fatigue/injuries stay in the13-field preparation API. No NBA rule switches, device/team assignment or camera activation is implied. The private frozen contract contains only adapter-resolved table coordinates, never arbitrary addresses. New PE export OpenHoopsStartupSettingsVersion=1 is checked before child creation. The hook applies a batch once on the original update thread at the requested match's full-clock phase4 boundary, using existing original setters and complete readback. Requested matches stay covered if any setter fails. Status includes requested/applied counts and failed index/reason; GET /v1/launch/settings exposes catalog/request/status. SDK launch_match waits for configured presets before binding. Values affect runtime profiles; disk persistence is not implemented. A slider override can change native Game Style to Custom after the base style is applied.

Mac editing/storage/control only. Dell root C:\Users\brent\OpenHoops; control directory match-expansion47, active API source47n and isolated match-game44a. Stable35/public preview2/API36 remain unchanged. Free space arrival4.7GB; stage guards require3GB. Immutable backup content may be hardlinked; mutable saves are always copied. Preserve original95 saves, EXE, original INI, fixture hashes, old evidence and both hosts. No final expansion closeout yet.

Shared roster authoring in progress

Source47n archive cf11341a64d24618b8daf34c1a1ba214b1313e520d1c3993013df831bc41f22c identifies159 inputs, APIdevelopment42/unchangedABI19. All native inputs must match47i and the exact47i DLL is reused after hash checks. Optional --roster-tools ABS_COMPONENT_DIRECTORY loads the shared openhoops_roster library before creating a game. GET /v1/roster-tools reports availability/backend fingerprint/table inventory; paged named field catalog and POST roster query/edit/prepare use immutable registered content IDs. Field coordinates stay private. Edits create new admitted ROS copies, preserve sources, and persist content-derived receipts without game mutation. Preparation uses the existing guarded starting order/situational lineup/minute-preference writer; actual substitution schedules stay engine controlled. SDK launch_registered_match can directly use an authored content ID without a client-side reupload. 400 Windows API tests pass on exact47n. Live47p passes public HTTP upload, three named field edits (player name/rating and team name), immutable edit/preparation/repeated receipts, both starting-lineup changes and native minute preferences, then launch_registered_match with no reupload. Prepared ROS4409e85441017d6f1e37ef9d1f128ef38e2aaeded0baa3617238d8831dd6dedf loads natively; all requested starters/edited name, phase4 app identities and all264 presets match. Native phase10 follows naturally with correct IDs/zero errors. Source ROS is unchanged.39 named tables/356 player fields are exposed. Cancellation passes and47p is closed.55 schemas validate against live five-run captures,80 actual commands, request/response bodies and unchanged historical result. The first schema harness named a nonexistent BindRequest component and was rejected; corrected47r uses canonical Bind, without changing the schema or historical data.

The private Dell component builder reuses the already distributed factual catalog0ca5532f0cefc6caea41733847e6b9351c4f0b4710b72da1cbac7e66aa050250, current shared writer modules, runtime catalog and reference-slot facts; it includes no original programs/help/schema source or game assets. This builds an internal component, not another release package. The existing public editor/ZIPs remain unchanged.

Single-request launch in progress

Development43 adds --match-request to --launch-game. Source47s archive38c8e79ed376f6c500978c47bdb8151b4ecfd84707c2fd301762409ec79191f3 identifies161 inputs. Native inputs remain47i. 412 Windows API tests pass on exact47s, with the optional factual-catalog writer configured. Live47v passes the complete single-request flow. The broker authors the same prepared4409 ROS through public HTTP, applies all13 preparation choices/264 presets/college10 rules, invokes native Start and binds app IDs at phase4. An observer-only client sees successful request status and natural phase10 at598.7423seconds, ABI19/zero errors/no input. Original ROS unchanged; all command receipts resolve, cancellation abandons without a result, and the completed request receipt stays retrievable after game termination. Finite watchdog closure follows. Raw request-launch47v.json and sdk47v.json identify the scenario; the observer may miss earlier accepted/preparing statuses but durable final status is verified. The version1 openhoops.match_request document contains a single-use request_id, app client_id, ROS path/hash or registered ID, launch_configuration, preparation and identity plan; optional roster edits/preparation and app loading branding. Relative files resolve beside the document. The broker validates/freezes inputs before child startup, then executes the same documented public HTTP SDK on a worker thread. This is request orchestration, not generated menu input or a first-party mode database. Prepared/selected team rows must agree. Original source/INI/assets remain outputs only in private copies. Current/named durable status is GET /v1/launch/request. Accepted/preparing/starting/started/failed states retain nullable started and recovery command IDs; unknown native Start is never reported false or retried automatically. Duplicate request IDs refuse before another child. Normal broker exit still leaves the child open; explicit owned session.stop controls cancellation.

Startup camera in progress

Development44/ABI20 appends32-byte startup_camera status (Shared67716, ABI19 prefix67684). Source47x archive4c2ff9d79759333175c9a846ad81768b52ca1c35c39ec4df321582310cc43c07 identifies163 inputs passes420 Windows API tests and compiles on Dell MSVC19.51 /W4 /WX. Exact DLLbf847625d89dc94992b9531e914bd8b3a5e7663eec7597401e95762fca60d6dc. Live47y passes2k selection/all six controls alongside full request/preset/authoring. Adapter20/zero errors; controls remain correct at natural phase10/clock529.6248. A guarded foreground-only screenshot initially refused while another window was active; a separate exact-process window-activation helper captured the actual2k behind-basket view with Independent Dynasty title/icon. No keys/mouse/native probes were used. Known generated-fixture pink crowd/floor material issues remain; no new asset certification. Request completion/readback occurred before research capture activation. Cancellation passes;47y is closed. Original2-minute/camera-only/no-writer47za passes on exact47x: stock105-team ROS, no field authoring component loaded,264-preset counter0, broadcast_generic with zoom6/height6/reverse1, actual120-second period/24-second clock, phase4 binding and natural phase10/clock105.4911, zero errors. Original ROS/INI unchanged, owned cancellation passes and closure follows. All59 schemas validate on47x against eight live scenarios,127 actual commands/receipts, three single-request documents/statuses, roster authoring and unchanged historical results (schemas47zd). --match-config settings.camera specifies a supported exhibition id and configurable named descriptor values. This is separate from the264-value preset counter. New PE export OpenHoopsStartupCameraVersion=1 is checked before child startup. Native pre-play path retains Player1 input ownership, valid initial full-clock phase4, no camera-menu and original camera-selection/descriptor guards. It calls the existing selection sequence, verifies readback and holds the loading cover on failure. Existing paused live-camera commands remain guarded. Generic17-type eligibility is not a claim of startup rendering certification for all17. Controller device/side assignment is still unrecovered.

Earlier development44 operational state and investigation

All feature code remains exact47x/API44/ABI20; current changes after freezing are documentation/research helpers.420 Windows tests pass; both2k/college/full-preset and broadcast_generic/original/camera-only request scenarios pass. Research47y capture used a separate window activation, without keys/mouse/probes. No final expansion closeout yet.47za is closed. Current47ze is a separately backed-up, bounded12-minute normal Quick startup for read-only controller code/profile research; no broker. It uses exact47x DLL and current isolated saves, without another95-file restore. Watch launch/closed receipts and stop47ze.ps1; do not treat its changing UI as acceptance evidence for another feature.

Disk headroom hit the3GiB game-start guard after staging47za; that guard was not lowered. First immutable-backup dedup preflight refused uppercase-vs-lowercase baseline hashes before mutation. Corrected47zb verifies492 hashes/95 original saves, relinks17 identical closed-run immutable backups/ROS copies and recovers207454208bytes. Exact-path NTFS transparent compression47zc then verifies all492 hashes again and recovers162914304bytes, leaving3326480384free before the stock run. It targets only enumerated immutable files, not mutable games/saves/databases/packages/hosts or OS compression policy. All file paths/contents are retained. Raw receipts dedup47z/47zb and compress47zc are retained; complete hash/change logs remain on Dell.

Read-only Ghidra input47a exports13 controller/input functions using hash-identified existing overlays, discarding transient database changes.587500 is a logical input-owner active-bit accessor;587620/587670 manipulate input masks.4a8090 scans ten profile records at0x5c stride for nonzero+0x34; semantics/side mapping are not yet established.5c4aa0/5c4e10 manage duplicate64-bit identity pairs (meaning unverified).5c4a50 and5c4b40 still traverse protected pages and their pseudocode is invalid. Do not implement from those guessed bodies. Next: guarded live read-only capture of the relevant code/profile state and targeted setter/UI attribution; controller side/CPU spectator commands remain unavailable. See analysis/match-expansion47/ghidra-input47a.

Follow-up47ze/47zg normal-Quick research confirms the picker array at161c4ec with8-byte stride: slot0 home2, CPU center1, away3, paired display-slot index0. The native UI screenshots establish these meanings; zero is unassigned, not away. Two original Left research inputs move home→CPU→away; one Enter uses native loading. No product input automation is introduced. At native loading/presentation after away Start, profile0+34/+38 become2/2; at Quick they were0/0 for every slot despite P1 home. Thus picker state and committed game-control records are distinct. Original54de90 is a two-argument callee-cleanup setter, updates companion indices and original widget state;54cad0 counts home2/away3.4c79b0 is a disconnected-input sanitizer, not the commit function. Some protected5c/4af functions still require captured overlays; do not treat invalid pseudocode as code.47zg uses exact47x and bounded15-minute watchdog; no broker.47ze closed at18:35UTC.47zg closure is in closed47zg.json. Read-only47ze after-left2 missed its watchdog deadline and refused OpenProcess; no patch resulted.

Disk follow-ups retain the3GiB start guard:47zg backup/launch first refused before game creation when free space dropped below it. Closed-run immutable backups and SQLite evidence (including retained WAL/SHM) received exact-path NTFS compression after before/after hashes; no SQLite was opened, checkpointed or rewritten, and no records or original reference bytes were changed. First47zi preflight refused retained WAL before mutation; corrected handling preserves/compresses the whole closed evidence group.47zh dedup recovered no material additional space;47zi/47zk/47zl compression receipts preserve full path/hash lists on Dell. Free space reached3376246784 before the successful resumed47zg backup. No package/host/OS compression policy was changed. The idle failed launch task was replaced only after exact-action/nonrunning/no-launch guards.

Further priorities: controller assignment/CPU spectator mode, richer coaching, launch-context/result provenance and presentation/asset preparation. Native camera ownership is separate. Do not claim these pending capabilities or perform arbitrary raw-memory substitutes. Preserve source/binary identities and update the active handoff after each verified increment.