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.

College rules implementation — active work

Storage cleanup72: bulky raw captures are now verified lossless archives, with an index and explicit restore helper. Historical capture contents and verification scope are unchanged.

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

User authorization October13,2026: implement the remaining college rules by targeted hooks/replacement as necessary. Preserve Windows-first third-party public API architecture. Original game corpus remains untouched.

Included: two1–20-minute halves; user-scaled1–5-minute OT (October13 follow-up);30-second full clock;20-second NCAA reset policy;10-second backcourt;correct arc and12-foot lane;5-foul disqualification;made-basket clock policy;4-team-timeout allocation/carryover;TV timeouts;7/10 bonus and one-and-one;OT foul carryover;possession arrow;remove NBA timeout advancement;disable defensive three seconds and NBA back-to-basket restriction.

Excluded by user: five-second closely guarded; NCAA-specific charging/continuation/technical/challenge redesign; flawless CPU behavior;compatibility with other gameplay mods. Keep existing ordinary foul/game behavior unless a requested change requires adjustment; exclusion is not permission to remove all ordinary charging fouls.

User notes a foul-out option in the menu: verify menu, setter and downstream threshold instead of assuming no existing control.

Current implementation checkpoint — October17,2026; college evidence October15

The agreed college mechanics listed above are implemented in Windows development36. Current private source broker 0.2.0.dev46 uses snapshot ABI21/event ABI4, college profile4 and court definition3. The API verification ledger is the current source for exact versions, tests and field meanings. Published preview2 remains36/ABI14; later request/launch expansion is isolated; per-child college1–20-minute halves/media/scaled OT are documented in MATCH-REQUESTS. Existing candidate packages remain archived evidence, and rare live reproductions/additional production watching remain deferred.

Frozen production-rule source36ck passes the named original/compiled checks and prior271WindowsAPItests. Same-rule-source private observer36cs supplied latest36ct natural two60-second halves/60-secondOT, Miami4–Spurs0. Player/team totals, logical-half/OT ledger, independent result consumers, duplicateACK and immutable delivery pass, with zero private actions and no scores/clocks/poses/outcomes written during that managed match. Earlier36bl10-minute halves yielded four automatic60-second uncharged TV breaks/returns and reconciled40–24 regulation export. Its older36bc diagnostic build is identified, not conflated with latest source.

All18 controlled final-release arc/bothcorner inside/onpaint/outside cases at both baskets match original individualFGA/3A; six makes match points. Original transformed contacts and scorer execute after synthetic positioning. Compact8192×4096 reference floor rendered at8K/11mips; world dimensions apply globally when enabled, but arbitrary court textures require compatible UVs. Runtime visual-alignment flags do not identify an arbitrary loaded asset. Physical basket assets and documented actor-center/boundary conventions are retained.

Rare live injury/refund and rim→backcourt/held-ball reproductions are unverified; controlled original-instruction coverage remains. The user challenged exhaustive niche testing and deferred the additional uninstrumented-production full-game smoke. These are verification limits, not declarations that whole TV/court/export features are missing. Some native UI still uses NBAquarter labels. Full-rulebook certification stays false; profile4 reference export-scenario verification is true in newly decoded current state, while immutable old results retain their original flags.

36ct closed16:44:34UTC with95originalsaves,stable35DLL,originalEXE/court/INI and0game/APIlistener; artworkhosting unchanged. The docs/metadata refresh neither builds/installs a new DLL nor launches another game. Progress, delivery, restoration and work log preserve exact evidence. Automatic roster/team intake and direct launch remain separate future API features.

Historical research milestones

The following entries preserve the original build hashes, failures, test counts and limits. Their old pending/next-step/active-run statements describe those milestones, not current instructions.

Research36 first candidate

native/college/rules.inc is compiled only with OPENHOOPS_COLLEGE_RESEARCH and enabled only by exe-local openhoops/college-research.ini, sectionCollegeResearch, Enabled=1, HalfMinutes=10 or20. Stable35 package remains unchanged. This candidate is not a complete college mode or a compatible final-result API release.

Windows MSVC19.51/W4/WX build succeeds. DLL SHA256454fcdcf8690660d7ca61e5a97dea79ba48707fcf0186b7c219bd55b308f741d. analysis/college-rules/verification36.json:1,066 bounded cases execute compiled initialization/period/made-clock hooks and original award/miss/geometry instructions;9 literal guards pass. Mocks and limits are recorded. Live lifecycle, natural one-and-one, full shot-reset matrix and geometry-to-art correspondence still need proof.

  • Numeric foul menu confirmed6→5, options-parent offsetD0 (=profile+28h+A8h), increment539170/decrement5391A0, activefield1E85BB4. Temporary unintended reaching toggle occurred during mouse/key timing; restoredOn before exit. Saves backed up/restored before research launch.
  • Half implementation preserves original playing rawperiods1/3; at settled original end readiness8CCB94 it maps1→2 and3→4 before original halftime/final branch. OT uses original5+ and fixed300sec. Score/presentation API still assumesquarters; do not call its college result authoritative until adapted.
  • Bonus helpers9B0CE0→10 and9B0D00→INTMAX remove NBA late-foul bonus. Only award callsite8BDF7D→7, avoiding replacement of shared constant-return B8F5D0. Original kind3 miss consumer7A13D8 clears contingent attempt; made consumer79CBCE schedules continuation. Natural outcomes pending. Original OT reset callsite8BDBD8 returns0 so totals carry at raw5+; half reset retained.
  • Original89FF10 predicate uses private college constants rather than changing shared data: radius675.005cm, corner660.0825cm, tangent junction derived from basketZ. Four-point helper mocked in bounded tests. No court asset has been modified.
  • Init sets period600/1200, fullshot30, conditionalminimum20, backcourtselector1, foulout5, defensive3secOff, NBAbacktobasketOff. Conditionalminimum alone does not implement NCAA20-second reset causes.
  • Madebasket handler8BD350 preserves made/running preconditions, stops only rawperiod>=3 andclock<60. Timeout-entry advancement call8C815A returnsfalse; other advancement paths still need audit/live proof.

Baseline game13576 exited normally. Dell saved original35a DLL and saves under logs/college-rules-36-baseline. Research36game14428 launched2026-10-14T01:33:33Z; broker8532 with separate api-state-college36; runbd42fa260b25c7582e3062da4fb9b9d3. Config10-minutehalves; opening rendered arena clock10:00/shot30 observed. Stablebroker35 is used only as a research raw-data recorder and its quarter/bonus/geometry descriptions are not adapted. Local recorder record36.py bounded45min. No final match binding.

Unimplemented at this milestone: fullshot-resetmatrix,12ftlane enforcement/art,timeoutallowance/carryover/media,held-ballarrow,publiccollegeAPI/export,automaticroster/teamlaunch. All requested included features remain active work.

Research36 control,36a and36b follow-up

Research36 failed its first live lifecycle gate: arena clock10:00/30 but pregamephase1 did not advance for more than10minutes. Rendering and pause menus remained responsive; no crash established. Original instruction/callback snapshots and noninvasive thread sample are retained in analysis/college-rules. The same DLL with college Enabled=0 and restored baseline saves advanced naturally to CPU gameplay (controlPID9484, control36-gameplay.png). This associates the failure with the enabled college patch set, but does not isolate a particular hook.

36a adds consistency between the private half duration and active-game minutes at1E85B30. It is a hypothesis under live test, not a confirmed fix. DLL SHA2564a66fc6a6bf3ec57d93acb2b3918a23bcac941b43b71287e38da165df1ee1579;1,066 bounded cases pass. Game8480, broker4148, separate api-state-college36a; no match binding. Screen Time temporarily blocked RustDesk; user cleared it, UI access verified. An unattended attract-mode game ran while blocked; do not confuse that with the controlled Spurs/Heat exhibition fixture.36a now entering that fixture.

36b is built but not installed: SHA2564c58a52f3c983476f12456fe36399b60236fef9367c424128706e25bc85eaace. Adds original timeout helper substitutions9B0D20..9B0DD0 for1full+3short initial allocation, halftime cap1full+2short, unused OT carry plus1short,30-second short duration at8C81D7.1,192 bounded timeout cases and14 guards pass;1,066 prior candidate cases also pass against36b. Original initialization87FB10, halftime8A2000, OT8A2090, late cap8A1FA0 and entry8C7EF0 exercised; eligibility/phase transition/event effects and mode predicates mocked. No TV timeout implementation/live allocation proof. No stable35 package changes.

New static leads:1E85D40=0 selects native held-ball arrow path8CCF20→9BA690 instead of jump8A14E0. Scheduled callback9BA650 flips via880350 before setting up inbound; period-start881B20 also selects and flips arrow. Existing mechanism is not proof of NCAA completion/foul/violation exception timing. No arrow patch yet. Lane timer8A1BF0 compares player-center X against213.36cm, not painted NBA half-width243.84cm; likely an inset predicate, but semantics remain uncertain. Do not blindly replace shared constants or assume painted width equals this center test. Bad initial Ghidra seed8A2320 emitted a decode warning; do not use it as a trusted function boundary.

College36a live halves and final-decision failure;36e correction

  • Screen Time cleared; RustDesk verified. Controlled Spurs/Heat fixture in36a reached10:00 tip and first-half horn, went straight to original halftime at11–12, then second half600s with qualifying-foul reset. First-half made basket30.53s continued clock; second-half made basket23.7266s stopped through inbound. Both half clocks explicitly advanced to65s for boundary tests, foul sliders50→100. Not a full-length game. Attract-game events before boundary1880 excluded.95 baseline saves preserved.
  • Live failure: second-half ended20–19, but36a enteredOT300s instead of final. End-period increment hook ran after8BC690 completion decision, whose8BC6E4 predicate still required rawperiod>=4. Failure retained inhttp-live36a.jsonl/live-summary36a.json; no authoritative result exported. Stopped disposable fixture in erroneousOT25–23 and quit normally. Stable broker35 has incorrect college quarter/bonus/geometry interpretations; no college API claim. -36c collision-reset candidate used original full-clock near-end sentinel and would produce21 instead of20. NCAA2-11 explicit20 reset must reactivate near period end;36d jumps to89F614 notifications/store after loading20, bypassing sentinel.196 bounded reset/arrow cases pass; court-contact cause and arrow exception timing still require live proof.36c/d never installed.36d SHA7216248b9b564bb9e3c7febd7147ea9898f2aba09859634402a75eb8d6b89c12. -36e changes guarded8BC6EA immediate4→3 so original completion decision recognizes second half before period transition.2,016 stock/college bounded finish cases pass (tie/non-tie, pending, ball-state, readiness, raw1..7). Harness initially reused Unicorn translated cache across code mutation; explicitcache invalidation corrected harness, no game change. Existing1,066 core,1,192 timeout,196 reset/arrow cases pass. MSVC19.51/W4/WX build SHAe66ccd45544d5410a6111d9139dc86bd1a872fba41d10f8432b0991c8931db20. Live36e regression remains pending at this entry.
  • Outstanding: correct final live regression;20-minute fresh-start; full NCAA reset matrix; lane12ft/art; TV timeouts; natural one-and-one outcomes and5PFdisqualification; arrow exceptions; coordinated public college API/UI/export. No complete college-mode claim.

36e fresh launch and36f additional candidates

-36a normal menu Exit closed game window but leftPID8480 sleeping in original teardown (DA1AAD/DDBB21/DDBC1C/DDBD07/4E043C stack); noninvasive CDB evidence retained inshutdown-cdb36a.log. Identity-checked idle/windowless process stopped. First replacement launch correctly refused while old process remained; initial broker-start consequently failed because new log directory did not exist. Retried sequentially after cleanup; no concurrent game writes. Original stable broker state archived closed. -36e installed only in Dell reference working copy, PID15132/run3b79c052d8bce9b70eb69f524c58edb1, broker1468 separateapi-state-college36e. Baseline95saves restored; beforeDLL backed up before replacement. Fresh first exhibition (no attract mode) completed intro and natural tip at1200s/30; initial allowance1full+3short observed. gameplayscreenshotgameplay36e.png. This confirms fresh20-minute launch, not full20-minute duration. - Pausedphase10 at1171.68298s: public12foul sliders50→100, qualifyingcounters1DEE59C/5BC0→6 with exe/DLL/PID, pause,phase,period,clock/preimage/readback guards. Explicit synthetic test setup; subsequent fouls/FT administration remain engine-driven. Clock advanced to240s throughpublicAPI. No score changes, no bound final export. Logsrecordexactmutations. Natural seventh fouls so far shootingand-one (kind1), not one-and-one evidence. -36f candidate (not installed): replace89F680elapsed helper to map raw1/3tohalves and fixed300sOT, respect1DEE5F8 completed-period transition; original single-periodmode retained. Patch onlybonusUIcall967F94 to7; existing9B0CE0/9B0D00 still govern10/no-late2.504bounded elapsed/x87/bonus-getter cases,1,066core,1,192timeout,196reset/arrow pass. SHA7ce2e8712f0ca33963daa9a0e2b2d57f2513214342ae236943421c9092959296. Native consumer integration and rendered bonus label pending. Existing BONUSlabel cannot distinguish one-and-one/doublebonus; publicAPI adaptation stillpending.

Research36e live final regression and restoration

  • live-validation36e.json and validate_live36e.py pin5528 valid samples, zero adapter errors/capture faults, correct final Heat12–Spurs10, and no false overtime. Closed trace SHA256e2a29ea5551d24ee5f86ad801c0f6d97220244e130b2976fe9ff65ece70217d9. Initial source858; halftime5283; second half5989; final8187. final36e.png confirms the final UI. halftime36e.png is a transition logo, not scoreboard evidence.
  • Fresh20-minute start used1200/30. Halftime Spurs10–Heat9 led to1200 seconds and both qualifying-foul counters0. Initial timeouts1full+3short became1full+2short at halftime. First-half clock fixture240s; second-half65s;12 foul sliders100 and paused qualifying counters seeded0→6. No scores were edited. Seventh fouls were shooting and-one kind1, so no live one-and-one verification. Observed20-second resets include one at13.853s remaining; independent contact/reset-cause classification remains pending. No college final export was bound or asserted.
  • Normal Exit closed the window but left15132 running. Noninvasive shutdown-cdb36e.log shows the main thread waiting through DA1D22/E0BE06/DBACCF/D967D6/DDBD4D/4E043C and a graphics worker in igd9trinity32/d3d9. Stack unwinding warns frames may be wrong; causation is not established. Initial CPU-idle cleanup guard refused; this failure is retained. Separate path/hash/windowless/evidence-guarded cleanup explicitly terminated the test process. Do not describe it as a normal process exit or as proven college-hook failure.
  • Broker1468 stopped; closed state and test saves archived. Stable35a SHAa3737b027190b46ba2374757559fb8e668e64de0fd65ae9d2a12a06c4ca413a0 restored, original executable SHA7cb5fdaa30586558a3146dcf9023880b1cceeaabfe0f92f967f461c4644f3704 unchanged, all95 baseline save hashes matched. Receipt2026-10-14T03:10:14Z reports zero game processes/listeners. Stable package and original corpus preserved.
  • Next useful gate: deterministic paused fixture for non-shooting seventh foul and both one-and-one outcomes, then valid tied/repeated OT and remaining reset policy. Keep research36f separate until its elapsed-time consumers and bonus display pass live verification; do not expose college capabilities as complete before API/export semantics are adapted.

Research36g — configurable half lengths and scaled overtime

User requested shortened-game overtime policy: half lengths1–4min→OT1min,5–8→2,9–12→3,13–16→4,17–20→5. This is an OpenHoops custom scaling policy, not a claim that NCAA regulation overtime scales. HalfMinutes now accepts every integer1..20. One compiled helper supplies OT duration and repeated-OT elapsed-time calculation. Invalid unsigned duration inputs leave configuration unchanged and fail initialization.

MSVC19.51/W4/WX build SHA532ded606bb9090e206094a486ae582535848bf26fe4d9e3298e38a6f3ad4e53. Compiled/original bounded checks:1,066 core/15 guards,1,320 duration/elapsed/bonus cases,1,192 timeout/14 guards,196 reset/arrow cases. The first configuration test mistakenly compared the fullEAX for a bool ABI return; corrected to inspectAL. Runtime code was unchanged by this harness fix. All20 half lengths, boundary groups, raw1..9 elapsed and transition states, and invalid0/21/999/UINT_MAX exercised. Downstream full gameplay still requires live verification.

Live fixture36g started2026-10-14T03:14:59Z in Dell reference copy, game14412/broker13948, separateapi-state-college36g, runac10f05b9f0913050dadf8a8a45f243c. Config10-minute halves, expected3-minute OT. Stable DLL/saves backed up before install. No original corpus/package changed. Work underway; do not treat this entry as completion of college mode.

Research36g live bonus and36h public profile candidate

-36g natural non-shooting foul at580.523s with synthetic qualifier seed6 produced kind3, total2/remaining2 (source106). First make retained one attempt; subsequent schedule source132; second miss cleared remaining and returned to play. Another kind3 at213.620s earned and made both attempts. This verifies first-make continuation under live engine administration, not first-miss cancellation. Foul sliders were configured to favor non-shooting fouls; later loose-ball/over-back100 added. Neither scoring nor FT outcomes edited during these sequences. BONUS displayed for Spurs after Miami reached7 while Miami with opponent6 had noBONUS; bonus-label36g.png saved. -36g first-half clock was advanced at a paused play checkpoint to0.1s for lifecycle testing. API receipt correctly applied float32 0.10000000149; initial harness exact Python-float comparison failed and was corrected to tolerance1e-5. Saved receipt retains true value. Earlier attempt refused because paused phase8 inbound, not phase10; resumed naturally before applying. Halftime reached11–4, raw3/phase12,1full+2short allowances. FurtherOT test underway; no full-length-game or first-miss claim. -36h builds separately, not installed at this entry. Native privateABI12 appends24-byte RuleProfile (Shared45148), preserving command/event offsets andABI1–11 broker support. Declares active college/disabled original configuration, half/OT duration, elapsed helper; API geometry captures installed college constants. Public additive fields: logical half/OT, raw1/3 half score buckets,7/10 bonus description, scopedkind3 one-and-one/kind4 doublebonus, experimental capability, profile metadata and unverified-rule flag in exports. Existing raw IDs/buckets preserved. Scoring ledger omits phantom raw2/4 and exposes logical labels; original-game behavior unchanged. -247 Python tests pass on Mac and Windows;5 synthetic public schema checks pass;36h native1066core/15guards,1320elapsed/bonus,1192timeout/14guards,196reset/arrow pass. DLL SHA885d856ee6bf49f4b2eb28734e72547aba7a2bfa73ddf874fc6c2575672f89ae. Windows first test command used embedded Python’s ignoredPYTHONPATH, loading a stale installed module and failing; explicit sys.path inserted in test-api36h.ps1, then all247 passed. No claim from failed harness. Current live36g remains ABI11/stable35 broker;36h deployment/live profile verification pending.

Research36g repeated overtime and36h live API launch

  • User OT policy verified in compiled code for every half length1..20. In the live10-minute fixture, raw5 and raw6 both initialized180seconds; qualifying-foul counters8/9 carried through bothOTs, and short timeouts increased2→3→4 while full remained1. overtime-live36g.json pins source10032/11328. These are controlled lifecycle tests: team aggregate scores were synthetically tied and clocks advanced to0.1s; player/period stats were not reconciled. No final result was bound/exported. Do not describe this as a natural tied-game verification.
  • Closed36g trace has9060valid samples,312882768bytes,SHA2564cdee5c1b95473095738d489cb99b2950461e0cc733b973b3fb42c07f693daaa. Original code administered both first-make one-and-one continuations; first-miss cancellation remains a live gate. -36g Quit and application Exit completed normally (no remaining nba2k14 process); broker13948 stopped, test saves/state archived, stable35a and all95 baseline saves restored. cleanup-receipt36g.json records zero game processes/listeners and unchanged executable hash at2026-10-14T03:44:43Z. -36h now installed only in Dell working reference copy: game2348,broker5124,run5d97079c311fd7c3566f391b42a973b2, separateapi-state-college36h, HalfMinutes=1. DLL885d856ee6bf49f4b2eb28734e72547aba7a2bfa73ddf874fc6c2575672f89ae. PublicABI12 observed. Fresh CPU exhibition to validate minimum duration and public logical periods/final result is underway. No release or complete-college claim.

Research36h natural minimum-duration game and live public export

  • Fresh1-minute halves ran from tip through halftime and a natural4–1 Spurs final without clock, score, foul-counter, or slider mutations. API12 identified both logical halves and120elapsed seconds. Original postgame progressed fromphase12 to19 normally; do not relax the existing phase19 finalization gate. Native UI still says1st/3rd; public API labels half1/2. final36h.png is the visual final. -4280captured snapshots passed current OpenAPI schema,3242valid game samples, zero adapter errors/capture faults. Closed120455421-byte trace SHA256829a604d1798df5abd71b001ee27ae803566315e83b76fe7e946b8accb33c8f6. public-validation36h.json records phases/mappings; http-live36h-closed.json pins closed trace.
  • Bindingcollege36h-natural-minimum finalized exactly one result; all additive player/team box scores reconciled. Scoring ledger half1away2/home1,half2away2/home0, no phantomquarters/issues. Result schema, immutable redelivery, repeated acknowledgement, independent secondconsumer delivery passed in verify_delivery36h.py/delivery-verification36h.json. This proves one regulation college export, not all overtime/foul/timeout exports or full rules. Broad profile verification flags deliberately remainfalse. -36h exited normally; broker5124 stopped, closed state/test saves archived, stable35a and95baseline save hashes restored (cleanup-receipt36h.json,03:56:03Z). New36h2 sameDLL test game14240/broker13420,10-minute halves,separateapi-state-college36h2, targets first-miss one-and-one. No original corpus orstable35release changes.
  • TV-timeout investigation: captured B919A0 is a mode predicate, B919E0 stores a presentation field, and7A0E40 performs substantial presentation/player setup. Kind2alone is insufficient to create an uncharged media break in quickgame; retain scoped eligibility/charge handling as unfinished. Ghidra12.1.4 read-only export and exactcaptured text/rdata hashes in ghidra-media-timeout. No TV behavior installed.

Research36i candidate and36h2 five-foul live check

-36i built separately, not installed: DLL SHA2566e1c658c1f4dd3d5adad43d2bb2af90a07562729a4dfb8254f7dedbebdbb60d4. Guarded pointer operand8A1EA0 redirects offensive-three-second player-center width from213.36cm to152.4cm. This retains the original inferred one-foot inset for a12ft painted lane; it is not a literal foot-volume implementation. Shared constant, timer, eligibility, and dispatch remain unchanged.840 bounded lane cases exercise both directions and boundaries; first harness incorrectly used a decimal literal instead of the original captured float, corrected with no runtime-code change. Live violation/art/FT-lineup gates remain open. -36i bounded checks:1,066core/16guards,1,320duration/elapsed/bonus,1,192timeouts/14guards,196reset/arrow,88originalfoulcache/disqualification/rotation cases pass. Original6D58F0 copies PF to packed cache and sets actor+1280bit0x2 at5;6C51F0 rotation predicate uses5. Mode5/6/7 original exceptions retained. No original corpus/stable package changes. - API presentation capability scope now follows declared original/college profile;248 tests pass on Mac and Windows. Later Python revision is staged separately in college36i-api/api, whereas initial college-research36i.zip contains the earlier Python revision. Do not confuse these packages when deploying. NativeABI12 unchanged. -36h2 test fixture: qualifying counters6/6,18 public foul/presentation settings changed with before/receipt/after record. Paused phase10 first-half all10 on-court PF counters set to4, preserving neighboring packed data; no disqualification flag or foul-cache writes. At212.4596s, the next natural foul gave Dwyane Wade(home:1) PF5, replaced him off court, and awarded Tim Duncan(away:3) a one-and-one. Read-only04:17:12UTC probe confirms packedPF5,flags131(bit0x2set),active threshold5. This is controlled synthetic setup followed by live engine administration; no legitimate final export is bound. First attempt made and continued; first-miss cancellation remains pending. Evidence: fixture-foul-out36h2.ps1/.log, read-foul-flags36h2.ps1/.log, active http-live36h2.jsonl (hash only after close).

Research36h2 closure;36j scoped media-entry prototype

36h2 ended after the first half12–15 without a final binding. Wade PF4→5 source9523, off-court9567; original flags confirm disqualified, not merely a coach substitution. Other one-and-one first shots made; first-miss proof remains open. Closed trace313650514bytes/21402validJSONlines/SHA256dfc2bf12968b2ca1ab1a7e8556c9e8d06c5614daa6c99afe427d3b76c61c556c. Normal game exit; cleanup04:24:38UTC restored95save hashes/stable35a,0processes/listeners,originalEXE unchanged.

36j SHA25642ee320daae3fff33325cfcfa25bc540c95750f2eab9904c55f94cb8ebb5d525 adds a research-only MediaEntryProbe=1(one-shot, defaultoff). On first transition into FTphase14 before any attempt, original8C7EF0 is called withkind2. Only its guarded eligibility call and six mode-predicate callsites use wrappers; scope is limited to this synchronous invocation and cleared with __finally. Ordinary callers forward to originals. No global mode switch, team allowance writes, or live-ball forced stop.976 compiled-wrapper/originalentry cases pass (including empty timeout pools, FTresume flag, aligned stack variants);1192ordinary timeout,1066core/17guards,1320duration,840lane cases pass;248APItests pass. Presentation and phase consumers are mocked in bounded tests; live resume is not established yet. This is an entry primitive, NOT TV scheduling/merging/injury policy.

36j fresh live fixture game13056/broker2156,10-minute halves, isolatedapi-state-college36j,04:25:07UTC. Includes36i lane predicate and updated Python capability scope. Source, build, tests, exact original bytes/hashes retained; stable35package/originalcorpus unchanged. Pending liveFT→unchargedtimeout→sameFT continuation, then media scheduling and remaining rules.

Research36j live refusal and36k deferred probe

36j reached natural FTphase14 source2792 at504.5084s with the presentation/replay flag true. The edge-only probe refused and never reconsidered after flag cleared. No timeoutphase17 occurred; this is a failed live entry gate, not proof of working TV timeouts. media-probe-refusal36j.json preserves6 FT transitions.18publicsliders/options changed; no clock/score/foul-counter writes. Normal Quit/Exit;04:36:27UTC cleanup restored stable35a and95baseline saves,originalEXE unchanged,0gameprocesses/listeners.

36k candidate SHA256d8c00240c4229e1a14821c371142369af0a0d297334c3092acb39162cea36428 arms on firstFTphase, waits for presentation/replay and pause toclear, same shooter with unchangedFTA and remaining==total, and ball physically attached to shooter. Rejects flight/credited attempt and other phases.33bounded dispatch cases include deferral, flight, first-attempt changes and repeated-frame suppression;976scopedentry/1192ordinarytimeouts,1066core,1320duration,840lane pass. Original entry still mocked for dispatch tests; actual presentation/resumption requires liveproof.

Fresh36k game4148 in separateapi-state-college36k starts04:36:41UTC,10-minute halves,MediaEntryProbe=1. No complete media scheduler/college-release claim. Public timeoutkind2 remains null until a separately verified media declaration is added; never reinterpret all originalkind2timeouts as media.

Research36k live media resumption;36l scheduled-break candidate

36k one-shot entry passed a natural two-shot foul sequence: source2290 phase14 at587.5434s, TimDuncan away:3,2remaining/2total,FTA0; source2291 phase17 uncharged60s; source2827 resumed the same pending FT award/shooter/clock. Both teams retained1full+3short. Initial validator failed because phase10 at3042 is final-shot release before stat credit; second FTA/FTM arrived3051, then running play. Corrected validator waits for settled credit and running play; engine code unchanged. live-media36k.json retains release and settled observations plus explicit harness correction. No adapter errors through this path. This establishes one interrupted FT sequence, not scheduled TV or inbound behavior.

After that proof, disposable fixture at04:50:29UTC seeded qualifying counters2/2→6/6 at paused phase10 clock381.5815, and18public settings changed to favor nonshooting fouls. No subsequent one-and-one was observed before voluntary quit at108s firsthalf; first-miss gate remains open. No score/clock writes or final binding. Normal application exit;04:58:17UTC cleanup restored stable35a and95save hashes,0gameprocesses/listeners,originalEXE unchanged. Closed trace hash/linecount in http-live36k-closed.json.

36l built separately: DLLfba4dda9d2156ddb2f611399db60ea569577154888ab07bbd59a6f639980d61c,MSVC19.51/W4/WX. Adds opt-inMediaTimeouts=3/4 (default0; mutually exclusive with one-shot probe). Portable scheduler implements NCAA2026-27 5-14.10 three/four marks, inclusive30second team-timeout merge, firstsecondhalf/OTteamtimeout conversion separately from scheduled marks, onceperstoppage and resetpermatch/period. Shortened halves proportionally space marks, an OpenHoops custom policy;20minutes exactly15/10/5 or16/12/8/4. Original ordinary teamtimeout charge is preserved; duration converted to60s. Automatic entry waits for stopped-clockphase8/14, clearedpresentation/pause, physicalholder; FT shooter/attempt guards retained. Engine integration still requires live inbound placement/possession/clock proof. Injuryrefund/replayclassification/mediaAPIprovenance notimplemented; do not claim full TV policy.

1,669 portable scheduling assertions and101compiled adapter cases passed; compiled original entry/presentation is mocked in adapter checks. Existing33probe,976entry,1192ordinarytimeout,1066core/17guards,1320duration,196rim/arrow,840lane cases pass. Stable35package/originalcorpus unchanged. Next live candidate uses1-minute halves to cover repeated scheduled breaks and halftime without clock edits.

Research36l natural9–4 final and inbound-duration failure;36n candidate

36l game4328/broker10040/run77a9d839c6ab6b5e01cb28306bac3486 completed natural1-minute halves9–4 (half1:5–2;half2:4–2), no score/clock/foul/slider mutations. Five automatic media entries preserved allowances and resumed play; only two FT-entry breaks passed60second duration. Three inbound-entry breaks exposed a zero timer in captured snapshots and ended early. live-media36l.json pins each sequence; this is a failed TV-duration gate, not complete TV support. Public originalkind2 remainsnull. Adapter errors0.

Binding occurred at2–0 (firstFT release), so full boxscores reconcile but scoring event ledger correctly reports partial, missing zero-score start. Initial copied36h full-ledger assertion failed; corrected test verifies explicit incomplete baseline,3–2 observed half1 ledger plus4–2half2,9–4fullboxscores, independent deliveries/idempotent acknowledgements. No API implementation change to hide this. final36l.png anddelivery-verification36l.json retained. Normal exit; cleanup05:17:12UTC restoredstable35a/95saves/0processes/listeners,unchangedEXE. Closedtrace metadata inhttp-live36l-closed.json.

Read-only original timer audit:8BD3C3 clears1DEE5E4 and8BD3CB sets completion1DEE61C during inbound initialization;8CC845→B91980 gates timeout shortening.46CB50 merely reads1527C80; its alternate duration is10seconds, NOT zero. Earlier hypothesis that46CB50 selected zero is disproved by captured constants and compiled-original tests. Failed harness assertion retained in task outputs, corrected coverage nowtests10/60branches (980entry cases). Private module read initially selected systemdinput8 by basename and returned irrelevantzero state; fullpath“reference-game/dinput8.dll” selection corrected it, confirming36lsecond-halfservedmask7. Ignore read-scheduler36l-retry.log's zero scheduler fields. FirstprivateCSV shotBits column read1DEE664 incorrectly; do not use as shot clock. Secondcaptureusesverified1DEE654. These observations are not coherent high-frequency snapshots and do not prove every inbound coordinate.

36m built/neverinstalled:4e8fb8023dbb89f23015a9bb88136aab9d0709af1196c1c0190aa7f708822424 simply assigns60after entry; superseded before live test because later inbound initialization can clear it.36n372725b2c37b619df4db776dd54f64abb4b2f68136676af1f2038a853afcfe3f re-arms media timer/completion exactlyonce on following phase17tick, then stock countdown; privateactive flag gates stockshortening only for ownedmedia. Original ordinary timeout handling preserved.106compiled adapter cases include lateclear/rearmonce/no repeat and4shorteningpredicatecases;980entry,1192ordinarytimeout,1066core/18guards pass. Live success still required.

36n freshgame15284/broker5164 starts05:18:03UTC,MediaTimeouts4/HalfMinutes1. Next fixture mustbindbeforeopening score, verifyactual60s inbound timer, same throw-in context/clock/allowances, naturalfinal andnormalexit. MediaAPIprovenance, injuryrefund/replay eligibility and completeTVpolicy remain pending; do not confuse bounded scheduling logic with full rulebook compliance.

Research36n live inbound-media correction and result;36o API provenance

36n deliberate CPU Spurs/Heat exhibition (runb0df90b0a13f8f7452c8f0aff58065b8) completed naturally2–5 with one-minute halves, no score/clock/foul/slider mutations. Earlier attract demo excluded by binding boundary2860. Binding phase7 attempt was refused409; corrected harness bound phase10 at0–0 before opening score. Three automatic inbound media breaks all lasted60seconds, preserved both allowances and game clock. Read-only50–65ms private samples confirm same raw period, shot clock, throw-in vector and team/opponent/context before/resume for allthree. Separate process reads are not atomic frames. First-entry samples showtimer0 before next tick; rearm diagnostic observed0/completion0. This supports one-frame timer overwrite/rearm, not a traced instruction-pointer proof of every writer. live-media36n.json andinbound-verification36n.json retain exact observations.

Natural final2–5, half1:0–3;half2:2–2. Public result schema/allplayer-teamstat sums/two logicalhalves/reconciledledger/independentdelivery/idempotentack pass.3,458 sampled public snapshots validated in firstpass,3,266validgame,0adaptererrors/capturefaults. final36n.png retained. Normalexit;05:35:21UTC cleanup restoredstable35a/95baseline saves,originalEXEunchanged,0gameprocesses/listeners. Closedtrace187768537bytes/13826validlines/0invalid/SHA2565f9ee3939d30330d29bf194f04e4ac76e8d54ac5baf742b2b5345633f7d850cf.

The trace caught transient profile labeling:source6513phase11finishedtrue/raw3 preceded raw increment5, but the mapper subtracted1too early and labeledhalf1. Corrected rule_profiles.py andscoring.py decrementonly settledphase12/19. Exactcapturedsnapshot replay nowlabels half2; regulation/OT transition tests added.249Python tests pass MacandWindows. Finalized2–5result alreadycorrect; originaltrace notrewritten. Separate college36n-api-fix archive pins hotfix;36n livebroker usedpre-hotfixsource.

Targeted original reset callback8CBEA0:direction-times-position nonnegative branchmax(current,20);negative branchfull30 (original31near-period-end sentinel).336bounded cases executeoriginalcomparison/stores withpositiongetter/notificationsmocked. Fullresetalwaysupdatescachedceiling evenunchanged; initialharnessassumption corrected, noenginecodechange. Padding-basedconditional-callercandidate starts are not function ownership:79DAF6 belongs79D9B0,79DE49 belongs79DD50; retainedGhidra exacttargets. This still does not prove all NCAA resetcauses/livecourtclassification.

36o candidate adds explicit media scheduler provenance to privateABI13(28-byteappend,Shared45176,prioroffsetsunchanged). Publicrules.media_timeouts exposes configuredmarks,servedmarks,activebreakreason andallowancecharge; stockunknownkind2remainsunnamed. Declared scheduler ownership only, not inference from originaltimeoutkind. Strictdecoder/schema/255Python tests and9compiledmetadata-to-publicschema cases pass locally;106scheduler/980entry/1192ordinarytimeouts/1066core18guards pass. DLL7502e01db992af55353f11d3e8b0efef775b78ccb4bd4117b27fa9b1d4a977f0. Native diagnostic logstillcontainsolder“v12”label; mapping/header13isactualversion. Windows/live13 transport verification in progress. FullTVinjuryrefund/replayexceptions/first-missone-and-one/arrow/resetmatrix/courtartremainincomplete.

Research36o live media API and natural final

36o run94f6711f9c7a09756c58272bab4743a2 completed natural Spurs7–Heat2 (halves5–2 and2–0). Zero-score binding excluded earlier attract demo. No score/clock/foul/slider writes. Four automatic60second media breaks (twoFT, twoinbound) passed public scheduler ownership, mark/countdown, unchanged allowances/gameclock and ownershipclear on resume.4,184 liveABI13 snapshots validated by media contract harness; separate4,320snapshot general schema pass with0adaptererrors/capturefaults. Final boxscores, two logicalhalves, reconciledledger, independentconsumerdelivery/idempotentack allpass. Original finalscreen still shows NBAquarterlabels; API exposeshalves. final36o.png andresults36o.json retained. Normalexit/cleanup05:58:23UTC restored95baseline saves/stable35a,0game/listeners,EXEunchanged; closedtrace metadata inhttp-live36o-closed.json.

92bounded shooting-foulgeometry cases execute original8BDEB0 attachedball award and releasedball flagconsumer, plus originalshotflagwriter8C7CBF→8C7CDE callingpatched89FF10. Both banks/directions/top/corner boundaries includingcollegeoutside/NBAinside690cm pass; neighboringflagspreserved. Mode/eligibility/actorresolve/footpointgetter mocked: not live shooting-foul/trajectory/court-art proof. Exactbytes, versions and limits inshooting-foul-geometry-verification36o.json.

36o2 uses same testedbinary in fresh disposable10minute-half fixture with mediaoff. Targetfirst-miss one-and-one by converting onlypending unattempted shooting-awardkind1→3 under paused/holder/counter guards. This syntheticsetup tests downstreammisscancellation, not foulqualification (separatelyobserved earlier). No legitimatefinalbinding permitted.

Research36o2 bounded manual awards;36p diagnostic candidate

36o2 game13860/broker8700/run880472f263ffda5877cb873bd5c55890 used10minutehalves/mediaoff, declared publicfoul/contactslider changes. No binding/finalexport. Converted onlykind1→3 for one pending two-shotaward and one firstshotinflight (remaining1,total2,shooterFTM/FTA0,ballowner0); bothfirstshotsmade. No first-miss cancellation proof. Guarded attempts refused whenphysicalholder absent orfirstattemptalreadyreleased; settings write refused duringinboundtransition. Retryafterstablephase10 succeeded; rejectedwritesnotpresentedasapplied. Privateinflightconversion explicitlytestsdownstreamadministration, noteligibility/releaseclassification. NormalQuit/Exit atsecondhalf9:47,score19–14; cleanup06:29:25UTC restored95saves/stable35a,originalEXEunchanged,0game/listeners. Closedtrace metadata retained.

Read-onlyreboundbrackets36o/36o2 showoffensiverecovery20 anddefensiverecovery30. Defensivecategory112record mayprecedepossessionreset andstillcarry20; subsequentsnapshotshows30. Twoearlyrecords have nomatchingphysicalholderwithinbracket andremaininconclusive (onefollowedbydifferentteammateattachment), notresetfailures orauthoritativelegalcontrol. No fullresetmatrixclaim.

36p introducesnative/college/award_probe.inc solelyunderOPENHOOPS_COLLEGE_TEST_PROBES plusINI OneAndOneProbeAttempts=1..8(default0). It waitsfororiginalunattemptedtwo-shotkind1, sameFTA/FTM,stoppedclock,clearedpause/presentation,actualshooterattachment; changesonlykindto3. Watchesfirstcredit andstopsconversionsafterfirstmissorconfiguredcap. It doesNOTclearcontingentattempt itself. Cannotcombinewithmediadiagnostics. No legitimatebindingallowedbytestworkflow; not a productionfeature. DLL33256ccfc4a870c2e9a7279c98269478121e66c5e43aa174630de30b4eaa9656,MSVC19.51/W4/WX;39compiledprobe cases,1066core18guards,106scheduler,980entry,1192ordinarytimeouts pass. Logsinkmocked; livefirst-missstillrequired. Originalsources/stable35preserved.

Research36p closure and36q arrow audit — October14,2026

The36p diagnostic ran in attract/demo mode, not a deliberately launched exhibition. Its bounded45-minute HTTP recording retained32,520 valid JSON lines (646,423,433 bytes, SHA25690f624290dde46b9b7c81f4e9b41e47cfedd461ccba5d7c91ed063bf42981445). Four unattempted two-shot awards were converted from kind1 to kind3; the diagnostic stopped conversions after the fourth award's first miss. Original shot outcomes were untouched. Native log at06:50:33UTC records the conversion and06:50:40UTC the miss.

first-miss36p.json pins same-run/roster/period observations: source9727, raw3,587.12854s, home:3 FTA4/FTM3, kind3, two attempts remaining; source9787 FTA5/FTM3 with zero remaining; source9790 running clock587.09485s. A further settled sample after two game seconds still has exactly one added attempt. The verifier now bounds searches to30seconds and rejects changes of run, roster or period. This supports downstream first-miss cancellation in the running attract-mode engine. It does not establish natural qualifying-foul selection or a controlled exhibition; no legitimate final binding/export was created.

Remote clicks and secure-attention worked, but keyboard events and typed text failed in both the game and Windows Task Manager. Both USB keyboard and mouse enumerate OK; game10128 responded. Reconnecting and testing keyboard modes did not establish a fix. User was asked to test manual RustDesk input. The game was explicitly terminated as a disposable synthetic fixture, NOT exited normally. The immediate post-stop guard briefly reported it still running; subsequent independent query and guarded cleanup confirmed exit. Cleanup10:52:04UTC restored all95baseline save hashes and stable35a adapter,0gameprocesses/0listeners, originalEXE hash unchanged. cleanup-receipt36p.json, stop-fixture36p.log, and http-live36p-closed.json retain the distinction.

36q adds no game patch. Forty bounded original-instruction tests establish that9BA650 calls880350 and flips1DEE924 before inbound setup8A11A0, then requests phase8. They also establish that8A11F0 only advances substage1/2 to3; this is not a verified legal-touch/throw-in-completion signal. Downstream setup, possession reset, dispatcher and notifications are mocked. Exact bytes/hash/cases are in arrow-entry-verification36q.json.

Recovered inbound jump table8BD5C4 targets8BD424/450/4B1/4CC. The8BD5B0→882EC0 branch resumes/rearms the inbound timer, not verified legal first touch. Direct-call candidates to8A11F0 are7860D4 (within7859A0) and8543CA (within8541F0). A padding-based initial guess854050 was the preceding function and is retained as rejected ownership evidence; corrected Ghidra export contains8541F0. Existing bad seed8BCF10 was inside8BCEE0, not a valid entry. These are leads for tracing completion and exceptions, not an arrow fix. No source release or capability claims changed. All255local API tests pass. Remaining work still includes controlled first-miss exhibition, arrow completion/foul/violation exceptions, full reset causes, lane/court art, TV policy exceptions and broader regression.

Research36r — controlled first-miss confirmation and arrow continuation

RustDesk source2/Map with explicit key holds enabled deliberate quick-game selection (CPU Spurs–Heat), not attract mode. Research36p DLL reused unchanged with OneAndOneProbeAttempts=8;38 public slider/settings changes retained in foul-slider-fixture36r-shooting-only.json. No legitimate binding or final export. Two eligible shooting awards converted kind1→3; first miss occurred on second conversion. This fixture proves downstream administration, not natural qualifying-foul selection (separate earlier evidence).

Run36c7216aea6093aae233fc5073adbd56,raw1,clock305.50385s,shooteraway:4: source5326 FTA0/FTM0,kind3,two remaining; source5393 FTA1/FTM0,zero remaining; source5398 clock resumed; settled source5415 stillFTA1/FTM0 after two game seconds. No outcome/stat/clock override implements the cancellation. first-miss36r.json and retained HTTP trace are exact evidence.

Voluntary Quit/Exit at4:42 first half9–12. Cleanup11:34:09UTC restored stable35a and all95baseline save hashes, originalEXE unchanged,0gameprocesses/0listeners. Recorder closed13770validlines/0invalid,189333736bytes,SHA256cf0d9a5086b40629afa3f19bdd4772fc5e7238f5b76606097e490b28f50ff8f4. This closes the controlled-exhibition first-miss gate.

Arrow audit corrected an invalid interior entry8BD610 to function8BD5E0: the former falls inside the call at8BD60E. Verified disassembly shows the official-ball/phase10 branch calls8804C0 at8BD76A; predecessor contact routine797080 handles violations before this gate. Ghidra interior7975E9 and8BDBB0 seeds are retained as rejected ownership evidence, not valid whole-function recovery. NCAA2026-27 casebook A.R.6-4..6-7 and2025-26 table-crew source PDFs archived with hashes under sources36r. Research36s arrow candidate is being compiled/tested separately; no complete-arrow claim yet.

Research36s–36u: possession-arrow completion and ordinary exceptions

The two targeted investigation gates now have evidence: controlled first-miss cancellation (36r above), and the core AP completion/foul/violation policy. The latter is implemented in native/college/arrow.inc, privately inside the executable adapter. It does not add raw addresses or diagnostic commands to the public API.

The patch retains the selected entitlement during the throw-in. It consumes that entitlement at the verified official-ball/legal-touch clock-start call, or an accepted throwing-team violation. A committed foul by either team cancels the pending AP consumption while preserving the arrow for the next AP opportunity. Normal foul penalties still determine the immediate inbound. Match initialization clears private pending state; stale period/arrow state is invalidated without overwriting engine state.

Scenario Evidence Scope
Normal held-ball AP completion arrow-live36s.json, arrow-live36u.json Actual inbound/touch/resume after diagnostic held-ball setup; arrow flips exactly once
Second-half AP arrow-live36s.json Natural halftime and inbound in a deliberately launched one-minute-half exhibition
Throwing-team five-second violation arrow-live36u.json Accepted stock handler invoked diagnostically; record8 attributed to home:3, arrow forfeited, opposing team resumes
Defensive foul before touch arrow-live36u.json Stock common-foul handler invoked during airborne inbound; home:4 foul credit increments, away retains arrow and immediate possession
Throwing-team foul before touch arrow-live36u.json Away:4 foul credit increments; home gets immediate possession, away retains arrow
Next AP after both fouls arrow-live36u.json Away receives the retained AP inbound, then arrow flips to home on legal touch
Out-of-bounds and thrower-retouch/contact violations arrow-out-of-bounds-handler36u.json, arrow-self-return-handler36u.json Original accepted/rejected handler paths plus compiled hook; live geometry/detection not exercised here

Research36u DLL SHA256: f4d1cf61cae5f3ebc21f046aa0278088360df467ed8b8991ce20a0127b50e6ef. MSVC19.51 /W4 /WX build. All44 archived native source files match the workspace. Verification:1,066 core cases and22 original-byte guards;340 compiled arrow/original touch-gate cases;35 diagnostic regression cases;8 original five-second,56 out-of-bounds and64 retouch-handler cases. All255 public API Python tests pass locally. Live36u validates3,996 public snapshots (3,001 valid game snapshots), with zero adapter errors and capture faults.

Live36u run 8d0963f7f7bf8e02a47d5afb4ee33315, ten-minute halves, mediaoff, CPU Spurs–Heat. No score, clock or shot-outcome edits. The held-ball and accepted violation/foul handlers were invoked by an explicitly test-only diagnostic; this is administration/integration evidence, not natural collision or five-second timer detection. No legitimate match binding/final export. Voluntary Quit/Exit at7:33 first half,2–2; cleanup12:09:30UTC restored all95 save hashes, stable35a, original executable, and zero game/listeners. Raw traces, source archives, verification scripts, hashes and cleanup receipts are retained in analysis/college-rules.

36t was a rejected fixture: its no-argument diagnostic call to9BA690 omitted the ECX holder needed by the conditional turnover branch. One adapter exception was caught; AP never began.36u corrects the calling convention and refuses to declare diagnostic completion without observing AP pending state. The initial36t cleanup hit a transient broker file lock; the launch guard blocked reuse, and a guarded retry completed restoration. These failures and receipts remain archived.36s live AP observations remain valid: that scenario avoided the faulty diagnostic branch and recorded zero errors.

The conservative public arrow_exceptions incomplete flag stays set: rare technical/double-foul/point-of-interruption restart policies and every obscure violation are not certified. Technical-foul redesign was excluded by the user. The core ordinary cases above are no longer unexplored blockers. Do not equate closing these two gates with a complete NCAA ruleset, fully natural scenario coverage, or a new stable release.

Rule attribution: NCAA2026–27 men's casebook A.R.6-4 through6-7 (printed pp50–51) and2025–26 table-crew reference sheet, downloaded from NCAA's official playing-rules page and hashed in analysis/college-rules/sources36r/manifest.json. Original engine evidence comes from the preserved authorized NBA2K14 runtime. Ghidra pseudocode is inferred; exact-byte guards, disassembly, compiled tests and live traces provide separate checks. Corrected contact entry797080 is exported under ghidra-arrow-legality36t; the earlier interior7975E9 seed is rejected.

Research36v fixed media marks — October14,2026 (in progress)

User explicitly requested fixed TV marks in shortened halves:10 minutes uses under8/4. Revision2 college profiles now use only full-length marks strictly below the starting clock;8 minutes uses under4 and1–4 minutes have no scheduled marks. Three-break format similarly retains15/10/5. First-team-timeout conversion remains separately enabled. Revision1 decoding preserves historical proportional schedules. API exposes actual scheduled count plus full-length format and shortened-half policy; ABI13 layout unchanged.

1572 portable scheduling assertions,1066 compiled core cases/22 guards,340 arrow cases,106 scheduler cases,9 compiled metadata/schema cases and258 API tests pass. Final Windows test runner explicitly inserts staged API path (embedded Python ignored PYTHONPATH); dependency-free unittest restored after initial jsonschema import failure. Failed logs retained. MSVC19.51/W4/WX DLL4e0775a39c133dc3d402618696e05a031020704081b438ff3c4975c33417006b. Original36v source archive plus explicit schema/test correction archives record the exact staged sources.

Natural CPU Spurs–Heat10-minute-half exhibition runf0cd06b8ddb5ecac626cecaa7874d6db bound before opening score, no outcome/clock/slider writes. Public revision2 reports marks480/240 and two scheduled breaks; under8 reached. Game and recorder remain active; no final/export or complete-media claim yet. Local36w additionally prevents consecutive media conversions without clock running;1574 portable assertions pass, but36v live binary does not contain this later guard.

Official NCAA rulebook archived with URL/hash/extracted pages in sources36v. Targeted reset audit distinguishes live possession flips from frontcourt throw-in awards. New dead-ball/reset hooks are not implemented at this milestone; full reset matrix, court/lane artwork, TV exceptions and broader regression remain open. No stable release replaced.

Research36w/x/y — dead-ball reset implementation and lane diagnostic (in progress)

36w adds three guarded call-site replacements:8BC4D2 committed new inbound possession,9BA660 held-ball possession change,9BA66B post-placement held inbound. Exact20 applies only when the final awarded throw-in is in the receiving team's frontcourt. Midcourt remains backcourt; unchanged-possession held AP preserves the clock. Global8A1070 remains original for live steals/defensive rebounds. Compiled wrappers plus original8BC4C0/9BA650 pass1928 bounded cases across both teams/directions, court halves, unchanged/changed possession, near-end sentinel and stack alignments. Flip side effects, placement construction, phase dispatcher/notifications are mocked; live proof remains pending. Same-team AP after rim/backcourt offensive rebound remain separate reset causes.

36w also prevents first-team media conversion immediately after a scheduled media break before play resumes;1574 portable scheduling assertions pass.1066core/25guards,340arrow,106scheduler and9compiledmedia metadata checks pass. Full public schema initially rejected college revision2; corrected RuleProfile schema now accepts college1/2 and original1 only.122 full broker Snapshot contract cases and258 API unit tests pass. Initial generated contract harness incorrectly passed raw normalize output without broker health fields; switched to Engine.public_snapshot, not weakened schema. Corrections retained.36w DLL a066695ee9b8d0335d3d6d41bfd5b07960666b0bffb16c397ec44906fb3df124; schema correction archive college36w-schema-fix.zip is separate from initial36w source archive. Both staged36v/36w schemas updated.

36x adds only diagnostic ArrowProbe5/6: wait for natural attached possession on the required side and opposite AP entitlement; then invoke stock held-ball presentation. Mode6 subsequently invokes accepted5second handler. No ball position, outcome or clock writes.82new and35existing diagnostic checks pass;1928 reset cases pass.36y adds optional LanePlacementProbe (defaultoff; test compile only), observing first128 original872BD0 placement calls while phase14.40 frame/gating checks preserve GPR/flags/SIMD and displaced instruction. It changes no placement. Native FT observations36v show lane players still aroundNBA9ft center positions; current narrow violation predicate alone is not a corrected FT lineup. Read-only placement/table/constant leads saved; no arbitrary shared-constant patch applied.

36v natural10minute game remains active. Firsthalf24–19 completed with only marks480/240 consumed; under4 break occurred at38.079647s, the later qualifying stop. First under8 media duration/allowances passed but subsequent replay stalled until normal Space input; automatic continuation not certified. Second media returned without that intervention. Normal halftime presentation skipped withSpace. No score/clock/foul/slider writes and binding remains legitimate.6,229 captured public snapshots and first complete media cycle validated before later samples; final validation/export pending.36w/x/y are separately built candidates, NOT the installed36v game.

Ghidra target8BD220 produced a discontiguous interior-function artifact and is rejected as function-ownership evidence. Other target evidence and exactoriginaldisassembly retained. No complete college release; stable35 and original corpus preserved.

Research36v — natural fixed-media game and final export closed

Natural ten-minute-half CPU Spurs–Heat finished30–38, with no clock/score/foul/slider writes. All4 scheduled media cycles (480/240 marks each half) passed duration>=59seconds, frozen game clock and unchanged team allowances. Actual break clocks458.175262/38.079647 firsthalf and391.362427/94.927322 secondhalf reflect later qualifying stopped-clock opportunities.14,983 valid live snapshots pass schema and0adapter/capture errors. First media return needed a normal Space replay skip; other returns resumed normally. Automatic presentation and injury/charged-conversion exceptions remain open.

Final phase19 export passes schema, both-team player-stat sums, two logical-half scoring ledger with no issues, idempotent acknowledgement and independent-consumer delivery. Two premature verifier invocations before phase19 correctly found no final result; no finalization gate was weakened. Closed trace32,180valid lines/0invalid,SHA256bf5143f7ff05c62fb707f626b3473d6e7d2485073cbacd36c3557e2beffe54ee. No overtime occurred.

Normal game exit; initial cleanup refused while exit confirmation remained open, finalcleanup13:21:27UTC restored95baseline saves/stable35a, unchangedEXE,0game/listeners. Private read-only rim trace retained8,286samples; ball+184bit0x10 also transitions during ordinary attachment/passing, so it is not sufficient evidence of a rim hit. No reset hook based on that flag was installed.36y1928deadball/core1066/26guards/40lane-observer checks pass; controlled live reset/lane fixture next.

Research36y closed reset fixture and36z lane investigation

Three controlled live reset cases passed: held-ball change to frontcourt20, held-ball change to backcourt30, then accepted five-second violation to opponent frontcourt20. Exact timings/coordinates/team directions and public/private observations in deadball-live36y.json. Handler injections are explicitly synthetic; no score, ball placement, outcome or clock override. No legitimate match binding. Source1928 bounded reset cases supplement, not replace, these integration checks.

Closed36y trace10922valid JSON lines,5355schema-valid snapshots/4612validgame,0adaptererrors/0capturefaults; SHA256c35c80421aabe4a2ce684cb90993e344546a9987918b928d2286618dbb932267. Three natural FT sequences observed, zero phase14 placement-probe hits. Narrow violation predicate is not a finished FT lineup. Normal Quit/Exit and cleanup13:41:59UTC restored stable35a/all95baseline saves; unchanged EXE,0game/listeners. Evidence in cleanup-receipt36y.json.

36z broadens only read-only872BD0 observation to relevant x/z rectangle in any active phase (placement may precede phase14).40compiled observer cases pass; DLL1a5447dc03fb1f6bde508c6846f42178e9da079399bf363e8473f74c9ded10ae. Installed only in Windows working copy game8736/broker1856, HalfMinutes10/mediaoff/ArrowProbe0/LanePlacementProbe1. No position correction is yet implemented. Source archive, MSVC19.51 build, exact map and attribution retained. Targeted FT dispatch helpers7B91D0/54B630/92CD90 show flag/presentation setup, not proven lineup owner. No complete-college release claim.

Research36z closed;36aa/ab free-throw goals and court geometry

36z observes872BD0 in all active phases: seven rectangle hits at pregame2/4, none at natural FT14 (home:1 at485.938s). Closed trace9024validJSON,4273schema-valid snapshots/2949validgame,0adapter/capturefaults; SHAe75fc129937c9c85bcf4ed1d5b27fdf7d717157f747a0e1f60f53792ca651db7. Quit at5:56 firsthalf6–8. Cleanup13:56:58UTC restoredstable35a/all95saves, unchangedEXE,0game/listeners.

Targeted static chain7AAF10→7A7BD0→6C0BD0(slot assignment)→7A6DE0→71A300 revealed dedicated10slot FTgoal tableF2D650. Original71A300 uses slotx/z, outward36.576cm clearance for occupied lane slots, and shooter-team attacking direction. Direct callers748290/7A6DFC/7A7BA5 retained. Ghidra failed71A300/7A6DE0 jump-table recovery, so exact captured instruction listings/table bytes are authority, not failed pseudocode.

New native/college/lane.inc retains original shooter/outside-player entries, shifts occupiedslots1/2/5/6/7 inward60.96cm (16ft→12ftlane), relocates slot centers to NCAA8–11/11–14/14–17ft spaces above the block. Original goal calculation/heading remains. Guarded pointer replacements71A30B/71A314 reference private table, full80-byte originaltable checked. Rule8-4 and court diagramPDF18 verified from archived official2025–27book; rendered source retained. Five occupied slots stay within NCAAmaximumsix; no mandate to fill allsix.

36aa initial harness lacked optimized-away initializer symbol;36ab marks that initializer noinline for verification. A second harness failure was stale Unicorn translated code after alternating pointer operands; explicit translation-cache invalidation corrected the test, not the engine.36ab passes144original-coordinate/heading cases over9non-shooter slots,bothdirections,4alignments,before/after;1066core/29byteguards and1928resetcases pass. Original table unchanged. DLL10fbbc30b320cd00c35042f595fcd0d4c125405549319391742d4f040287fb49. Diagnosticgoal logging only whenLanePlacementProbe1. Windows36ab game10132/broker5272 installed; live lineup verification pending. No full lane/court claim.

Read-only f010court mesh inspection follows archived NLSC13894 Explorer field leads (independent Python decoder, no packageexecution). Parsed15groups of float32 stride36 geometry; group12 contains threepoint/lane-line geometry. Wireframe plot and exact vertex data retained. Initial big-endian trial was rejected; despite class nameBigEndianReader, inherited methods used here are little-endian. Court texture alpha/padding and material correspondence still need verification; originalasset unchanged. court-mesh-attribution36ab.json pins four sourcefiles andURL. No standalone tool expansion/release.

User-requested Mac restart — October 14, 2026, 14:08 UTC

Research36ab was stopped at the user's request before the new free-throw lineup could be verified live. The game reached the deliberately selected Spurs–Heat pregame presentation after earlier attract-mode activity. No completed exhibition FT sequence, no legitimate match binding, and no final export. Normal UI close attempts did not exit during presentation; the exact guarded research process10132 was then terminated. The immediate process count was transiently1; subsequent cleanup independently verified0. No new test was started after the restart request.

Cleanup receipt36ab at14:08:19UTC confirms stable35a adapter restored, all95 baseline save hashes restored, original working EXE unchanged,0game processes and0API listeners. Native final log and receipt copied to the Mac. HTTP recorder closed normally via stopfile:8,132 valid JSON lines,3,862 schema-valid snapshots(1,386 valid-game including attract),0adapter/capture errors,50,262,383bytes,SHA25643e40ef78382a80720fe74a520e974dfc49958c0d67ee35061c510642f99ec8c. No FT observations. Evidence:analysis/college-rules/http-live36ab-closed.json,cleanup-receipt36ab.json,native-final36ab.log.

Resume: read this entry plus COLLEGE-RULES-IMPLEMENTATION.md. Keep current native sources and build/college-research36ab.zip; Windows staged36ab DLL remains available with SHA10fbbc30b320cd00c35042f595fcd0d4c125405549319391742d4f040287fb49. Its compiled FT-goal tests passed144 cases, core1066/29guards and reset1928. Start a fresh uniquely named research run (existing36ab launch/cleanup paths intentionally reject reuse), recreate the local SSH forward and authenticated recorder without printing credentials, then verify actual lane placements and ordinary FT resumption. Do not treat pregame/attract samples as this proof.

Remaining scope: finish FT/lane integration and court artwork; unresolved backcourt offensive-rebound and same-team AP-after-rim reset causes; TV exception/automatic-return verification; OT/final-export regression; final packaging and truthful capability documentation. Fixed TV schedule is already implemented/tested:10-minute halves use under8/4, never scaled. Stable release35 remains untouched. No automation or new task was created. The user is restarting the Mac; wait for them to resume.

Research36ac — free-throw lineup verified at both baskets

After the Mac restart, the unchanged36ab DLL (SHA25610fbbc30b320cd00c35042f595fcd0d4c125405549319391742d4f040287fb49) completed a deliberately selected CPU Spurs–Heat fixture. Seven public API writes raised shooting-foul/contact frequencies and enabled FT routines; no score, clock, outcome or ball-position writes. Three natural FT sequences (home:2 at577.880920s, away:0 at496.915344s, home:2 at478.901276s) each completed two attempts and resumed running play. All five occupied lane players matched the college goals at both baskets: best simultaneous maximum position errors8.91/22.13/12.25cm;51/33/79 shooter-holding samples put all five within35cm, allowing animation. Shooter/outside-player goals remain unchanged. This validates FT lineup placement, not every lane violation or court artwork.

Evidence: analysis/college-rules/lane-live36ac.json, verify_lane_live36ac.py, lane-slider-fixture36ac.json, native-final36ac.log. Closed trace7998validJSON lines,3799schema-valid snapshots,3244validgame,0adapter errors/0capture faults;135546544bytes,SHA256b56fd07b532c66a648a5fc4209863ade46bfa7fb79125c470ffd06b3112b3750. No legitimate match binding/final export. Normal Quit/Exit at5:48firsthalf4–6. Cleanup14:33:38UTC restores stable35a, all95baseline save hashes, unchangedEXE,0gameprocesses/0APIlisteners. Initial broker launcher reported an early log-read race, but the subsequent process/token/authenticated HTTP check succeeded; retain that log and use bounded log readiness next launch.

Read-only f010 texture decoding identifies the white line mask as embedded DXT5 texture5 (128×64). Stride36 mesh vertices have two UV pairs; line alpha uses the second pair at+28, unlike the first pair at+20 used for wood. Geometry band width is not visible line width. Six decoded embedded textures and exact offsets/hashes saved in f010-textures36ac.json; no court asset modified. Targeted original ball-contact/rebound/control call chains saved under ghidra-rim-control36ac and control-callers36ac.json. Byte-scan callers are leads pending aligned validation; ball+184bit0x10 alone remains rejected as a rim-hit indicator.

Remaining: backcourt offensive-rebound and same-team AP-after-rim resets; court markings; TV exceptions/automatic return; broader OT/final-export regression; release packaging. Stable35 is unchanged.

Research36ad–ag — reset observer built; pre-window startup stalls isolated

Added optional ResetCauseProbe in research builds only. Three original call-site observations:6C6DFC exact existing rim-reset call (ESIball),7975E9 official-ball touch8BD5E0 (ECXactor/EDXball),796E38 offensive-rebound credit8BF610 (ECXactor). Independent aligned disassembly confirms ABI. The latter is inside existing API rebound-credit owner, whose entry detour remains untouched. Diagnostic wrappers preserve registers, flags and FPU/SIMD before tail-calling existing targets. Source delta36ab→36ad contains only rules.inc and new reset_probe.inc. No new reset behavior or public capability added.

MSVC19.51/W4/WX builds DLL7704f0d9c12dcf75f98f566b5d4132797c25bd7372a096ee9edd874563c72b86.1066core/31byte guards,1928deadball and12hostile-observer frame cases pass.12frame cases cover three wrappers/four stack alignments; observer is mocked and downstream handlers are not executed. Original8C2D00 disassembly starts inside an instruction, so its leading lines are not valid function ownership evidence; aligned8C2F73 collision dispatch remains a call-site lead.

36ad and36ae failed before a window/API sample.36af samebinary/probeoff also stalled;36ag unchanged previously live-verified36ab likewise stalled. All process identities and launch logs retained. Read-only noninvasive CDB36ad shows main thread waiting through originalE0BE06/DDBACF/DE8690, no claim of exact cause; system had~9GBfree RAM and no matching recent application error. No gameplay observations, no final export. HTTP36ad captures source_unavailable503, not a working game.

Each exact test PID was terminated after evidence retention and guard checks. All95 baseline saves/stable35a restored after each;36af initial cleanup failed because no broker had been started, before saves/DLL restoration, and36ag launch correctly refused. Corrected optional broker-state archive and newcleanup-retry completed; no failure overwritten. Final36ag restoration14:45:18UTC verifies0game/0listeners,unchangedEXE. Restarted dedicated Dell with saved baseline to recover the test environment; no SSH/security configuration changed. Post-reboot verification pending at this entry.

Research36ah–aj — live reset evidence and Miami court candidate

Dell reboot restored interactive startup and automatic console sign-in;36ah (game9696/broker14512) ran the unchanged36ad observer DLL. CPU Spurs–Heat exhibition ended normally at2:30 firsthalf,9–6. Four public rebound sliders changed at6:49 and ten shot-success sliders later to increase opportunities; no score/clock/ball-position or individual-outcome writes, no legitimate final binding/export. Eight native rim→defensive-control chains correlate with API rebound records and30-second recovery clocks. No offensive rebound occurred. Native actor x/z diagnostics incorrectly read direct actor fields and are invalid; public API poses are unaffected. Ball+1A0 remains nonzero through subsequent passes, so it is not a standalone rim-pending predicate. verify_reset_live36ah.py/reset-live36ah.json pin each observation. Initial verifier assumed seven records from an earlier live fetch; final closed trace contains eight, and all eight pass the per-record conditions.

Cleanup15:08:05UTC restored all95baseline saves/stable35a,unchangedEXE,0game/0listeners. HTTP trace12430validJSON lines,6144schema-valid snapshots,5464validgame,0adapter/capture faults,220940191bytes,SHA0b567ad6e33a4851db122440dcbec128596fe63ee246b8a781e7698bef0c931d.36ai corrects the diagnostic pose chain toactor+20→pose+30/+38; MSVC/W4/WX DLL6b2df603aba131d52ec7ff0aaa997270284b8ab89ce8096c095d5bacc9543409 passes1066core/31guards,1928deadball and12observer frame cases. No new reset behavior added.

build_court36aj.py creates an exact-source-hash-guarded Miami f010 candidate in analysis/college-rules/court36aj, never the original corpus.449 vertex changes narrow paint/outline, move the arc and straight-corner join, hide NBA lane marks and expose original below-floor narrow-lane marks. Original IFF resource metadata, segment0, textures and4322-bytefooter preserved; only explicitlylisted vertex positions differ in decodedsegment1. Initial no-footer assumption failed before writing output and was corrected to preserve the observed footer. Radius675.005cm/corner660.0825cm match engine constants;2-inch line width calibrated to decodedDXT5alpha128 edges. Original tessellation remains, so chord/antialias tolerances and hidden-mark spacing require live inspection. OutputSHAa6214a2d46eb4eaaf289ae0e07dbe259d80dc100cb2adf6bc0fde9c9fecc8dbb. No universal court conversion or visual-completion claim.

36aj launch with36aiDLL/court candidate again stalled before window/sample. CDB read-only evidence15:10:35UTC has main waiting throughE0BE06 and graphics worker atE0C5CA/Sleep; unwind warns inaccurate frames. This is not a court-render result or a proven asset cause. Restoring baseline before host recovery; follow-up receipt required. Remaining reset causes, rendered artwork, TV exceptions/return, broaderOT/export regression and release packaging are still open.

Research36aj correction — closed trace supersedes startup inference

The completed36aj recording contains643 snapshots,159 valid-game attract samples (last source425,phase4), despite earlier zero-window-handle observations. First frame timestamp1791990614.838 (15:10:14UTC). Therefore the earlier assertion of no frames/persistent stall is wrong: startup was delayed/backgrounded and progressed before process termination. CDB is a momentary stack observation, not proof of a permanent deadlock. The forced stop used an insufficient windowless-state inference; do not reuse that as a sole liveness criterion. Original court, stable35a,95saves,EXE and0game/listeners verified restored in cleanup-receipt36aj.json at15:12:00UTC. No deliberately selected match or visual court verification occurred.

Following recovery,36ak (same36aiDLL and36ajcourt;game12516/broker14204) reached startup video/menu after clicking its taskbar window through RustDesk. No further driver/SSH/security changes. Inspect authenticated sample sequence plus UI before declaring a startup failure or restarting again.36ak exhibition setup underway; not a court pass yet.

Research36ak–am — Miami visual verification and shared texture template

36ak ran two deliberately selected CPU Spurs–Heat exhibitions with36ai observerDLL. First36ajcourt showed duplicate lane outlines: moving geometry to negativeY did not hide it. Quit tohome at2–2/9:15 and installed36al with exact prior/candidate hash guards; original court backup retained. First transfer failed because staging directory did not exist, before any court change; retry succeeded15:24:21UTC.36al degenerates obsolete line quads rather than displacing them. New exhibition loaded the changed asset without process restart; saved court36al/live-render.png shows the shorter arc, narrow paint and single lane outline. Quit at3–0/8:56. No sliders/score/clock/position writes or final binding/export. This is Miami-only visual proof, not all-court coverage or pixel-perfect legal alignment. Native reset observer's corrected pose path still needs correlation; no new reset semantics claimed.

Normal application Exit completed; cleanup36ak15:31:14UTC confirms originalcourt, stable35a,95baseline saves restored, unchangedEXE,0game/0APIlisteners. Original corpus/stablepackage untouched. Local evidence includescleanup-receipt36ak.json,native-final36ak.log and closed HTTP validation. No host reboot needed.

User now requests all courts use a shared one-texture system,4K with8K if feasible, and a PNG showing the real college3pt boundary. assets/court-templates/college-v1 contains transparent4096/8192linework, neutral4Kcanvas, dimensionedpreview, exactarcSVG and geometry.json. Generated from compiled36ai constants/rdata:radius675.0050048828125cm,corner660.08251953125cm,basket1274.4449462890625cm,join1133.2967529296875cm. NewexplicitUVcontract100ftsquare: u=(z+1524)/3048,v=(1524-x)/3048. Not fitted to arbitrary legacyIFFUVs. Two-inchpaint lies inward of predicateboundary; raster/filter/compression tolerances stated. Other markings are drafting references and subsidiarymarks remain unfinished.

verify_template36am executes560 additional recovered89FF10 cases (bothbaskets/selectors,±1cm arc samples,corner equality,oneof4samples onboundary rejects3), in addition to1066existingcore/31guards.6DC460 fourpointprovider mocked; animation/release-time edge behavior not proved. Radius/piecewise scoring patch is team-independent; artwork is not automaticallychangedforallteams. Basket coordinate intentionallyretained,~1.905cmdifferentfromnominaldiagram. No claim everyAIgeometryconsumer wasupdated.

ArchivedJaoSming96133 documents4096one-texturemodel;exrxixxx93524 reports4096/6000×3000imports. Template artwork is original coordinate drafting, no copiedcourtart. MicrosoftD3DCAPS9 texturecaps documentation inspected;8K load stillunverified. Nextassetintegration: sharedUV-compatiblefloor, removeoldlineoverlays, check4Kand8Kloadedtexture, verifybothbasketsandmultiplearenas. Remainingcollege rules: rarebackcourtOR/same-teamAPafterrim resets;TVexceptions/automaticreturn;broaderOT/finalexportregression;releasepackaging. Do notcallcollegecomplete.