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.

Remaining match controls — development51 acceptance52

October18,2026 UTC. The user authorized the three remaining planned match-control additions: rotation schedules, native timeout calls and physical device/multiple-human startup assignment. These define the remaining match-control milestone; presentation, broader modding/rule semantics and public packaging remain separate. Accepted prior source is development50, runtime51u/documentation51za/DLL4f897924,493 API tests/ABI25. Preserve those frozen inputs and evidence.

  • Rotation plans specify logical period/game-clock marks and desired lineups. Due time, pending request and actual native entry are separate observations; do not force a player exchange during live play or relabel presentation as legal ball state. Support installation/cancellation, context changes and durable outcomes through the public API.
  • Timeout commands must retain original eligibility, team/kind/allowance and native bookkeeping/phase transitions, including college policies. No synthetic whistle, possession guess or direct allowance/clock rewrite.
  • Input assignment discovers actual connected devices and matches them to original native input/control records before reveal. Explicit per-device home/away assignment must read back. Missing/duplicate/disconnected devices refuse explicitly. Synthetic tests are separate from physical multi-controller acceptance.

Dell read-only52a reports no connected XInput controllers on slots0–3; PnP inventory shows keyboards/mouse/system HID controllers, no gamepad. No input state/buttons were read, no driver installed and no game/API started. The user has been asked which hardware can be supplied; independent implementation continues. Physical verification remains conditional on actual hardware, not an excuse to leave code/research unfinished.

Current private implementation is development51/HTTPv1/snapshotABI26 (74648 bytes), eventABI4/profile4/court3. Frozen native/live source52zd (195 inputs) has archiveSHA ab93214f3321ce54dce0de822de4f3330aca7363525b40eebc8b283d65966b50; non-probe DLLSHA 4a4f0affa8e251b536dfcec395eb6f77673548c923083a5cec052099208fd88d.510 Windows API tests,84 schemas,1,104 retained defensive/coaching cases,111 substitution cases,27 pause cases and52 new control cases pass. Final API/source52zh adds read-only handling of unverified native input types and typed durable-plan/event schemas, retaining all67 native inputs byte-identically to compiled/live52zd. Its archiveSHA is 8dbaed6560fdbede8922aab673394541da5c2598b6627b7de04ed6cef1ec86cc. Final freeze52zq retains the tested runtime code and all67 native inputs; it also corrects the package metadata version to51. There are186 runtime inputs, with only api/pyproject.toml differing from52zh. Source manifest, Windows tests, native control cases and real-response/closed-state validation identify exact evidence.44 real/historical schema checks pass; original closed databases and historical results retain their hashes.

Rotation plans can be frozen in launch_configuration.rotations before process creation. Each entry has side, logical period: {type, number}, game_seconds and five canonical own-team lineup keys in native position order. Up to64 entries use the12 instantiated players per team. College half1/2 map to native periods1/3; OT maps separately. Within each team, periods advance and clock marks descend. App identity plans must include every requested player. Use the order exposed by substitutions.teams[side].positions; do not assume a PG-to-C numbering convention. For app-owned schedules, set each scheduled team’s coaching substitutions to1 (Manual). Automatic coaching or explicit user changes can otherwise change later lineups; plans request transitions rather than locking all future substitutions. Coalesce unchanged lineups;64 is a finite per-plan limit.

An entry progresses through scheduled, due, queued and observed_in_lineup. The native automatic lineup-builder boundary submits due lineups through the original queue handlers; the original entrance processor performs the exchange. Native positions plus on-court observations establish completion. Due/queued/observed game clocks remain separate. blocked, superseded, missed and fault retain their reasons. A newer due unqueued mark supersedes an older unqueued mark; existing queued requests remain intact. A partial/unverified native operation is never retried implicitly.

rotations.replace/rotations.cancel use a control lease, run/raw-period and plan revision. They require paused unfinished phase10, a frozen clock and empty native pending queues. Replacement cannot silently retract a queued substitution. Plans and state changes persist in the broker and are readable through GET /v1/rotations/plans; they do not rewrite immutable command receipts. Explicit managed cancellation and source-run replacement close outstanding durable observations. Normal pre-tip phase4→3→7 transitions and temporarily missing observations retain the plan; verified simulation teardown retires it without automatic reuse in a later match.

timeout.call is an unpaused phase10 native action. Submit side, kind: short|full, expected_remaining, expected_revision, run/raw period and lease fields. The game-thread handler repeats the original eligibility predicate, checks the requested pool, calls the original entry path (with college charge tracking when enabled), and reads native phase17/team/kind plus exactly one deduction from that pool. There is no fallback to another allowance. Native refusal remains refusal; an unverified post-call outcome is indeterminate and must not be automatically replayed. Normal timeout presentation/countdown/return belongs to the original game. No artificial pause, whistle or possession guess is used.

GET /v1/input-devices reports connected original native input types and current/saved control roles. Empty pre-created logical owners are excluded. IDs such as native-input:0 identify this process's native device slot, not a persistent hardware GUID. The current Dell exposes the aggregate keyboard only. Connected game-controller slots can be requested with kind: game_controller; keyboard uses kind: keyboard. Native types1/2 are selectable controller classes; type3 is the observed keyboard. Other original types4–10 remain read-only/unverified and cannot block unrelated snapshot observations. An aggregate keyboard can be assigned once; each slot can be assigned once, with at most five humans per team.

Set participation: {mode: assigned, assignments: [{input_id, kind, side}]} in a startup configuration, or use participation.assign after discovery at inactive Home/Quick. That command requires a lease, current run, launch revision and input-catalog revision. An empty assignment array explicitly selects CPU versus CPU. It freezes selection; original picker/control-record commit and saved/current role readback still occur before the requested match is revealed. Missing, duplicate, wrong-kind or disconnected inputs refuse. GET /v1/launch and the device catalog expose requested versus committed state. Physical gamepad input, two-controller play, persistent hardware identity and hotplug recovery are not certified without hardware. The existing CPU/primary-home/primary-away modes remain compatible.

Prototype52p reached requested native gameplay but its observer aborted on a helper argument-name collision before timeout submission. Prototype52q exposed early plan retirement during normal pre-tip phase3, and a paused observation whose timeout predicate was no longer eligible. Both runs were closed and98 isolated files restored. Corrected timeout availability2 and rotation availability3/PE match-controls version3 preserve pre-tip plans and use unpaused original timeout handling.52v then completed four entries/two API timeouts and a natural4–3 result, but exposed half2 being marked due at the prior-half zero-clock intermission. Current native code excludes phase12 in both sampled and original-builder paths; quarter/half/OT boundary regressions pass. Retain failed/scoped evidence.52w verifies actual keyboard selection/CPU clear/reselection, missing-controller refusal and original away-side commit/readback before reveal with zero generated input.52za passes corrected timing: all four marks become due just below55 seconds (54.8926 in half1,54.9858 in half2), and both teams enter at original stoppages (29.0131 and1.3126). At the zero-clock intermission, future half2 entries remain scheduled with no due timestamp. Those latenesses are retained; exact-clock physical entry is not guaranteed. Two native API timeouts and natural returns pass. The focused run is cancelled after verification; no additional full-match campaign is required. 52w verifies keyboard selection/CPU clear/reselection/away commit and missing-controller refusal. 52x verifies an original one-minute quarter, paused plan replacement/cancellation, durable cancelled history, resume and a full native timeout6→5 with natural return. These use the same production DLL, zero adapter errors and zero generated input. Physical multi-human gamepad play remains compiled-fixture evidence only.

All builds/tests/game execution remain isolated on Dell. No shared desktop input while MVP is active. Preserve original corpus, stable35,95 originals,98 isolated baseline, frozen packages, immutable historical cache links and four hosting identities; retain3GiB guard. Mac remains editing/storage/SSH only. No agent or new client GUI is requested. Public preview2/API36/editor dev7 and existing artwork hosting remain separate.

Primary platform references: Microsoft XInput capabilities, DirectInput enumeration, device-instance identity. These describe platform interfaces, not recovered game-device bindings.

Preservation52zm, 2026-10-18T14:13:11.9874908Z: all six owned runs close,98 isolated baseline files restore,95 originals in both OpenHoops game copies/EXE/INI/stable35/fixtures/three historical public ZIPs/four host identities match. Six exact-body idle launch tasks are removed; no game/API listener remains. Free17705725952 bytes. The isolated game DLL is restored to prior development50 (4f897924); development51 (4a4f0aff) stays frozen in52zd/52zh, not silently installed into stable35. MVP files/processes/tasks and shared input remain untouched. No new public package, dependencies, agent or recurring automation.