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 API implementation and verification

Current crowd-enabled API: dynamic native attendance, private0.2.0.dev57/HTTPv1/main ABI26 plus Crowd.1. Apps use 0–100 percent for fullness per launch or issue guarded live set/reset commands through the same public API. Work76 records exact source, tests and game evidence.

Current internal handoff: CURRENT-STATE. Earlier dated research/checkpoint statements below retain their original source versions.

Current source checkpoint: October17,2026. API 0.2.0.dev47, HTTPv1, snapshotABI22/eventABI4, collegeprofile4/courtdefinition3. Latest452 Windows tests pass on48za, with244 native cases/64 schemas. Coaching47 adds nine startup settings per side, increasing maximum264→282; live actions/exact rotations remain separate. App-owned requests add shared roster authoring/export, all13 pregame choices, per-child original/college rules,264 startup presets, camera/primary participation, pre-play IDs and owned cancellation. The active ledger records current live acceptance/pending cases and exact source/DLL identities. Native startup remains inputless. Public preview2 remains36/ABI14; editor dev7/stable35/original95 saves are preserved. Earlier355/345/307 API and116 writer/30 compiled preparation checks retain their source-specific scope. The contract and verification are authoritative. Windows11/Dell is the tested game host; original x86 execution with an x64 broker is not a rewritten native engine or Mac/Linux game support.

The agreed college mechanics are implemented. Latest36ct naturally completed two60-second halves and60-second OT, Miami4–Spurs0, with reconciled player/team totals, logical-half/OT ledger, independent consumers, idempotent ACK and immutable delivery. Four automatic TV returns passed earlier36bl;18 controlled original final-release court cases passed both baskets. Current metadata distinguishes those passes from deferred rare live injury/rim-reset checks, exhaustive boundary semantics and the additional uninstrumented-production full-game smoke. Full-rulebook certification stays false. No public release package is required.

Earlier development36 metadata checkpoint: development35 remained the preserved baseline and development36 held the college source. Frozen candidate ZIPs keep their original manifests and packaging-time documentation. That refresh changed documentation, Python distribution version consistency, capability wording and profile verification metadata; it neither changes native gameplay nor installs a DLL. Exact post-refresh validation is in analysis/api-docs/current-verification.json.

Historical development35/34 verification

The following versions, package checks and current-at-the-time statements are retained historical evidence.

Current scope: Windows-first deep editing and a public extension API; full engine decomp/recomp is not a deliverable. Mac/Linux game compatibility is deferred. See scope, plan, current contract and integration evidence.

Historical development35 evidence: native35a, broker35 (0.2.0.dev35), snapshot ABI11 and event ABI4. Eight pregame controls are implemented, including loaded arena and home/away playbook selection;212 live configuration cases pass. See pregame implementation and evidence. A configured35 match finished14–6, with matching independent-client result/ACK and zero adapter errors across5,370 live samples.236 tests pass on Mac/Windows; native Windows is the only tested game environment. Live API settings also cover118 sliders,39 general/rule options,130 controller preferences and17 camera selections/63 controls. All26 cameras are readable; nine internal types remain read-only. Automatic launch, presets/VIP and explicit disk persistence remain unavailable. This remains an experimental API with explicit limits.

Current local package: development35. The preceding development34b remains archived. Historical34 verification: Combined native34 game reached first overtime and finished28–23;3,260 bound engine records and336 player-stat comparisons reconcile. Final export and acknowledgements survived broker34b restart. Binding followed the opening tip, so full event completeness is not claimed. See verification and restart.

Current35 package verification:109 member hashes and ZIP CRC pass on Mac/Windows; five installer cases pass, including upgrading native34. Original95 save/cache files restored byte-for-byte; game/broker closed, native35a left installed only in the Dell working copy. Supplemental verification.

Historical34b package verification: all107 file hashes and ZIP CRC pass; five Windows installer cases pass. Packaged launcher reached a fresh unbound exhibition with zero adapter errors, preserved prior results/acknowledgements, refused an old-run command and passed400 concurrent capability queries. Installer receipt, fresh-run receipt. Broker34b also passes209 tests on both OSs and a16,000-query concurrent local stress check. Actual game tests remain Windows only.

Historical API0.1 release verification

The record below describes the archived0.1 package and its tests, ABI and limitations at that milestone. It is not the current field/capability list or platform roadmap. Preserve its hashes and results; use the current contract and integration log for active behavior.

October 13, 2026. Development implementation 0.1.0, HTTP API v1. Working live telemetry, third-party match binding, durable event replay and final-result delivery are implemented and tested. The entire requested long-term engine/rule API is not complete: authoritative named violations/corrections, legal ball state, automatic roster/team launch and custom-rule callbacks remain unavailable. There are no placeholder success responses for them.

Deliverables and architecture

The x86 DLL publishes pointer-free packed snapshots through session-local Windows shared memory. A guarded application-dispatch detour samples at most 10Hz on that thread. The x64 Python broker uses an Interlocked helper and sequence checks, serves authenticated loopback HTTP/JSON and SSE, and maintains a SQLite WAL outbox. Addresses never become client identifiers or raw-memory HTTP endpoints. Shared ABI is 7,844 bytes; snapshot is 7,760, player188, team84 and stats36. Sampling is not a proven global physics-frame or basketball-event commit boundary; other worker writes are not excluded.

Clients supply their own match, team, player and ruleset identities. Multiple independent readers and result consumers work concurrently. Clock mutations are serialized by short-lived ownership leases and require exact preconditions on the game thread. Accepted requests are durable before submission; ambiguous crash outcomes become indeterminate and are never automatically retried. Ruleset metadata records provenance; it does not apply rules.

Snapshots cover roster names/slots, active players/positions, team/player box scores, clocks and flags, raw phase/period, FT counters, scoring buckets, foul-qualification counters, bonus-threshold calculation, timeout pools and physical ball attachment. Read the contract for units and interpretation. This release does not expose every field in the broader research capability inventory. Legal possession/live ball/pause remain unknown, not guessed booleans. Events describe sampled changes, skipped samples and lifecycle receipts; a stat decrease is not mislabeled as an authoritative correction.

Verification results

Check Result and evidence
Automated Python suite 50/50 on macOS ARM, Python3.9.6; 50/50 on Windows11 x64, Python3.13.16. Mac log, Windows log. Covers authentication/framing, concurrency/SSE, revisions/outbox, ownership/idempotency, crash ambiguity, source identity, invalid samples and quarter/OT reset handling.
Live field parity 5,280/5,280 API values agree with ten independent read-process-memory snapshots while paused. Report. This compares two access paths using the same previously researched meanings, not an independent proof of every semantic label.
Public schemas 6,287 real responses validated against 18 JSON schemas using jsonschema4.25.1. Report. Includes 6,282 captured snapshots plus individual snapshots, a managed binding and final results.
Compiled x86 wrapper Four stack alignments pass preservation/stack checks for the final compiled DLL; sampler mocked. Report. Bounded emulator verification, not proof of all CPU state or native-engine behavior.
Compiled clock commands 42 cases execute the final DLL's actual command handler against synthetic memory: both destinations, bounds, nonfinite inputs, exact preimages, period/phase/frozen-clock/deadline guards and no repeat execution. Successful cases must show an actual read→write→read memory sequence. Report. No live rule dependencies are simulated.
Real game + external clients Windows game completed Spurs8–Heat6 in first overtime. 24 externally mapped players; eight concurrent readers; wrong clock preimage and competing lease rejected; exact retry did not apply twice. Final export, UI, outbox.
Reconnect/restart SSE resumed at the exact durable cursor. Result and acknowledgements survived forced broker restart; second independent consumer still received the result. Game exit made telemetry stale and blocked mutation. SSE, restart, exit.
Final-core recording replay All6,282 recorded samples replayed; Q2/Q3/Q4 and OT transitions caused zero spurious reviews; one8–6 result on timeline1. Report. Captured gaps remain gaps; this does not rerun the engine.
Installer Fresh install, identical reinstall, v0.2 upgrade/backup, conflicting loader refusal and unsupported EXE refusal: five checks passed. Report.
Final adapter/package Final packaged launcher started brokerPID9864 against gamePID12308. Final DLL booted, rendered a demo, sampled24 players and invalidated title samples cleanly, with zero adapter errors. Snapshot, UI, invalidation, exit.

The live game was a controlled accelerated fixture: guarded clock writes shortened regulation and OT. It was not a full natural-duration game, complete event trace, or test of every game mode. Live shots/fouls/statistics were engine-produced; clocks were deliberately changed. The two recorders contain1,918 and4,364 samples respectively, with gaps and pauses. Do not reconstruct missing events from them.

The full controlled match used first API DLL 1ef35030a16e2a4b2870477a2fcf6a31d807f5637378194bc82f2634986a8a66. It accumulated983 startup/loading null-pointer sample faults before the sampler was hardened. Intermediate DLL c5807b8ed16775e92afbfedbbd1004c67ff95dc5a8a37658b36c30a72da4d494 added null-manager handling and cleared failed samples completely while advancing the sequence; boot/demo/title/exit passed. Final DLL 216ba721cf17a3be1d6a8de8980d54160dcda6c66a6b09d475a8b8b687fa3b74 additionally enforces a volatile clock readback. Both the wrapper and command handler were reverified against that binary. The entire accelerated match was not repeated with the final binary.

Failures found and resolved, and remaining uncertainty

The initial broker tried to load an Interlocked symbol that kernel32 does not export on this host; the compiled x64 helper now supplies it. An SSH service-session launch could not see the interactive game's Local mapping; the launcher enforces the same login session. Embedded Python ignores ordinary PYTHONPATH; run_broker.py inserts its own source directory explicitly.

Live Q2 and OT transitions initially triggered overly broad clock-increase review detection. Those pauses were explicitly resumed as new timelines, so the actual saved live result has timeline3. Final code recognizes observed intermission12→8 and OT12→7 transitions. Synthetic regressions and replay of all recorded samples pass without those false reviews. This is still conservative boundary detection: same-name roster replacement and some checkpoint loads can evade a slot/name fingerprint. Clients must manage identities and review boundaries explicitly.

A clock request made before the pause fully settled was rejected. “Unchanged for750ms” is only a precondition, not authoritative pause or dead-ball knowledge. Clock commands remain experimental and do not update every dependent display/rule/AI value. The first packaged-launch probe found no listener after its short wait and left empty logs; the second saved launch succeeded. The first attempt's precise cause is unresolved; both receipts remain. There is no automatic desktop-session launch service.

Final compiled-code inspection found the compiler had optimized away the intended readback after a clock write. The destination is now volatile, and each successful native-handler fixture asserts an actual memory read after the store. Broker fault/unknown receipts now become indeterminate, since a fault could occur after a write. Six receipt-code cases are included in the50-test suite. Mapping attachment also accepts an initially stale frame while normal polling continues to reject stale telemetry; process exit is rejected even during attachment. The launcher preserves full native stderr diagnostics instead of stopping at the first traceback line. This closes a real reliability issue rather than treating source-level intent as proof of generated behavior.

Token/state files are private local artifacts, not included in the release. All authenticated clients are trusted peers; client IDs are an ownership convention rather than separate principals. HTTP is loopback only, with Host/Origin checks, request-size limits and bounded concurrent clients. Remote access used an existing SSH tunnel. This is a development local API, not an internet-facing multi-user service. No security certification or arbitrary hostile-local-process isolation is claimed.

Platform, attribution and preserved state

Game adapter and x64 broker tested on the Dell Windows11 host; Mac ARM tested the broker/core/HTTP suite, Python client and Node client through SSH. Linux was not available and was not tested. Windows x86 is the original game's ISA; the broker/helper is Windows x64. No native game reconstruction, macOS/Wine/Linux injection support, arbitrary executable support or 64-bit game conversion is claimed.

Supported executable SHA-256 is 7cb5fdaa30586558a3146dcf9023880b1cceeaabfe0f92f967f461c4644f3704, from the user-supplied reference variant. Original NBA2K14 code/data attribution remains with its creators; mappings originate in the project's live-data, event-contract and rule/event research. No community binary was executed for this API implementation. MSVC19.51 built x86/x64 components; Python Software Foundation's signed embedded3.13.16 runtime was obtained from its official release URL and retained separately on the Dell. It is not bundled. jsonschema and Unicorn are validation tools, not broker runtime dependencies.

The game exited normally. The broker was stopped, no API listener or temporary task remains, and every pre-session save was restored and hash-verified. Experimental saves/logs remain archived on the Dell. The tested final API DLL remains installed in reference-game; its prior stablev0.2 loader backup remains beside it. The original reference corpus was not edited. Cleanup receipt and reference hashes.

At that historical checkpoint, the next requirements were concrete engine work: authoritative committed-event/violation mapping; legal ball state; genuine non-shooting bonus and correction fixtures; safe rule callbacks; roster/team load/launch; and testing the game adapter on other platforms. The current API provides real integration infrastructure without presenting those unfinished features as complete.

Measured court research now uses append-only adapter14 and college profile revision3. See court-standard evidence for the shared NCAA2026–27 definition, original contact/boundary samples, all-team scoring scope and explicit live/physical alignment gaps. Stable35 is not replaced by this research build.