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.

API engine integration — active development

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

Current source checkpoint: October16,2026. API 0.2.0.dev37, HTTPv1, snapshot ABI15/event ABI4, college profile4/court definition3. Preparation adds13 controls and working-copy starters/minutes; loading/Start remain manual. Public preview2 remains36/ABI14; stable35 is preserved.307 API/116 writer/30 compiled preparation checks and35 schemas pass. The contract describes actual fields/commands; the verification ledger is the current version/evidence reference. Windows11/Dell is the tested game host. Original x86 execution and an x64 broker do not constitute 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.

Development35 remains the preserved baseline; development36 is the current college source. Frozen candidate ZIPs keep their original manifests and packaging-time documentation. This refresh changes 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 engine integration milestones

Chronology below retains the original build identities and failures; its old active-run/next-step statements are not current instructions.

Current scope (October13,2026): Windows-first deep editing and a public extension API; Mac/Linux compatibility follows later. Earlier native-port goals and next-step proposals in this evidence history are superseded. Technical observations and verification limits remain as recorded.

This continues the requested full public API beyond the 0.1.0 snapshot/clock subset. The full requested scope remains unfinished. The matching local experimental package is development34b (native34, snapshot ABI10/event ABI4); API0.1 remains archived separately. The sections below are chronological evidence, not current capability counts. Addresses below are private adapter implementation evidence.

Ordered engine records

The supported executable is SHA-256 7cb5fdaa30586558a3146dcf9023880b1cceeaabfe0f92f967f461c4644f3704, supplied by the user. Original corpus unchanged. Runtime capture after loading an exhibition recovered the 123-entry schema table and its initializer at 0x2179060. Category12 really uses 8/48-byte payloads. Initial title-screen inspection had an uninitialized table; an overbroad protected-code read failed. A later exact page read succeeded. Exact captures and inferred Ghidra output are in analysis/api-engine/schema-02 and ghidra; pseudocode is not verified reconstructed code.

A guarded detour at storage-success epilogue 0x4C7FA7 copies each payload immediately into an independent 1,024-record shared-memory ring. This observes record-storage completion, after payload copy/checkpoint update and before the caller finishes its work. It does not establish complete rule/box-score commit. Records receive independent run+sequence IDs, not recycled node/checkpoint IDs. Capture faults and overwritten ranges are explicit. Raw pointers/payload blocks stay in private research evidence; public output includes metadata and documented category12 fields only. Unknown numeric kinds stay unnamed.

The broker persists each event batch and producer cursor in one SQLite transaction. Restart replay deduplicates by source cursor; rollback cannot silently advance it. The existing authenticated HTTP/SSE interface carries the additional event types. The ordered event mapping is independent; the later pause extension uses private snapshot ABI v2 with v1 read compatibility. Atomic readers use the existing native acquire helper.

First adapter SHA 6ad45129d8d1f7c776ac983afaa25cca17a24b7fcba87ea052576856b3073f45 ran on Windows PID8172. A new CPU Spurs–Heat match reached Q1 3.147 seconds, Spurs11–Heat16. No clock writes or rule mutations in this match. Final bounded capture contains 1,448 contiguous records with zero flags, zero reported faults/gaps, and exact public/private parity for all 1,448 records (live-record-validation-01.json). This is not a full-match test. UI score and API snapshot agree. Saving as separate Exhibition3 preserves the checkpoint; saves and prior adapter were backed up before testing.

Exact rebound/block counter hooks

Second adapter SHA cfab26ff070d002eec09d9062426c7264ea583e4b59bca13426b2da0a0133244 ran as PID5592. Its 401-record bounded capture contains three exact DR credits and zero faults/gaps. Live inspection exposed wrong period metadata for inline credit records: MSVC interpreted push dword ptr [1dee5ech] as an immediate address. Actual counter arithmetic was unaffected. Build03 (26baff097aa9821750a2d3a69045ca905b70d56eb5e73153edb1c95abd20baba) fixes it by explicitly loading the address into EAX and dereferencing EAX. A new period assertion fails against build02 and passes builds03/04. Original failing evidence is preserved. Build04 (0c6eb2bceaa137b43ccc2c807c6f632c832bbee4fb02f17c4a300c89d6154e5c) adds pause state and stronger clock guards; installed in a separate working copy for ongoing live tests as PID8736.

Six guarded hooks observe actual player-counter writes: OR/DR inline credits at 0x8BF68C/0x8A3CD5; OR/DR retraction helpers 0x883620/0x883660; block credit/retraction helpers 0x8836D0/0x883700. The wrappers execute original arithmetic and preserve original machine state. They read the actual total before and after, resolve the roster identity privately, and share the ordered producer sequence with storage records. Public fields distinguish changed, unchanged, unavailable and capture-failed operations. A no-op cannot be reported as a successful correction. Wrapped counters retain their real values and do not become a falsely named basketball event. No inferred causal correction_of_event_id is assigned.

Counter completion is narrower than completion of the surrounding engine routine. Team aggregates, notifications and other dependencies may still be pending. Coverage is these six paths, not every writer or every possible statistical correction. Synthetic positive/no-op tests are distinct from a natural live nonzero correction; the latter remains pending.

Verification so far

  • 82 Python tests now pass on macOS and Windows11/Python3.13.16, including counter semantics and private ABI v1/v2 pause behavior. Windows testing exposed an intermittent unread-body TCP reset on HTTP413; response half-close plus bounded draining fixes it. A first Windows invocation also loaded an older source tree because embedded Python ignores PYTHONPATH; the corrected invocation explicitly inserts the development directory. Failed receipts retained.
  • Nine compiled-x86 record tests passed for both research DLLs: four wrapper alignments with register/FP preservation and five real compiled capture/ring-wrap cases. Synthetic memory; OS time/thread queries stubbed.
  • 580 compiled-x86 counter comparisons passed for the second DLL: six hooks, four alignments, regulation/OT periods, no-op/decrement/increment/underflow/overflow cases and null helper arguments. Original output registers, flags, FP state, stack and counter memory matched uninstrumented execution. Synthetic memory; SEH fault paths not executed. Exact report: analysis/api-engine/native-counter-tests-02.json.
  • Builds03/04 pass all580 counter comparisons including the period regression; build04 also passes nine compiled record tests and52 compiled clock-command cases, including unpaused/replay/inactive-engine rejection. MSVC19.51 x86 /W4 /WX builds pass. Final live build04 validation is in progress.
  • Corrected EVENT-SEMANTICS.md's conflation of the common fanout ABI (four stack arguments, EDI actor, RET16) with its callback ABI (ECX/EDX plus three stack arguments, RET12). Exact disassembly retained.

Still required

Complete named violation bridges with positive/negative fixtures; natural/nonzero correction evidence and causal IDs; legal possession/live/dead; expand pause/replay fixtures; safe rule decision commands and dependencies; automated roster/team launch and checkpoint lifecycle; multi-platform adapter tests; full final-build match/reconnect/export regression. Do not equate Windows reference hooks or these passing bounded tests with a finished native engine or a finished full API.

Pause and replay integration

See API-PAUSE-STATE.md for exact engine gates, live fixture evidence, private v2 compatibility and command restrictions. Pause is now sampled directly rather than inferred from an unchanged clock. It does not identify legal dead-ball status.

Build04 live reconciliation and expanded counter development

Build04 completed a bounded live capture through Q1→Q2 (Spurs12–Heat14 at pausedQ2 5:44.9674). All1,748 private records have exact public persisted parity; nine counter records have correct period metadata, with zero capture faults/gaps. The HTTP corpus validates6,869 snapshots and6,869 event pages;10,000 retained database events also validate against the current schema. These counts are document checks, not independent gameplay events. live-record-validation-04.json records the exact evidence. Idle demo, pause/replay and paired clock fixtures are included; this is not a natural full-match test. Saved as separate Exhibition5.

Build05 (2d0e731833d74317a3e41d09162ac41c093d666e49716e3d9a0064681bbf6c78) expands six hooks to14, adding assist/steal/personal-foul and two/three-point made/attempted plusFT-attempt helpers.1,356 compiled comparisons pass;83 Python tests pass locally. Build05 was not installed for live testing. Build06 adds the two inlineFT-made paths, both inlineFT-attempt paths and the inline player-turnover path; validation is underway. The separate team-only turnover path remains distinct. No claim of all counter writers (e.g. save/simulation reconstruction), complete causality, or named rule violations.

Builds06–10: live coverage gaps and committed phase capture

Build06 (d95276821b935d74ef17812e57b7e46df330e9a5ab20c40bdf1d2fb6e27c8757) adds19 player-counter hooks. Its1,836 compiled comparisons, nine record checks,52 command cases and83 Python tests passed; Windows source path was explicitly selected. A natural CPU exhibition is running without deliberate clock/stat mutations. Binding happened after gameplay started; no whole-match managed-history claim.

The first HTTP recorder repeatedly received an expired-cursor409 and failed to resynchronize. It preserved snapshots but no event pages. Its replacement records the gap and resumes from the supplied cursor. An early SQLite backup, later backup and repaired HTTP capture recover the public event history for comparison. Do not describe the first recorder as uninterrupted event capture.

At the first build06 prefix milestone,3,153 contiguous private records have exact public parity with zero capture flags. All13 hooked player-stat types appeared; all counter actors resolved. However,312 player/stat comparisons from a measured zero-score baseline through Q2 1:03.8867 found10 mismatches, all two/three-point attempts. Exact original code shows made baskets increment attempts inline (8BE805, 8BEF9D), bypassing the previously hooked attempt helpers. Build10 adds those two paths. This is a discovered coverage defect, not transport loss; a new live reconciliation remains required. Evidence: live-record-validation-mid-06.json, shooting-writer-candidates.txt, shot-attempt-inline-contexts.asm.

Build08 adds a phase-history commit epilogue hook at 411FF9 (5E83C40CC3). It filters the generic history object against the game phase manager, then captures previous/current codes after history commit. Same-phase reentry is explicit. Phase codes do not establish legal possession/live ball.1,604 compiled comparisons preserve original registers, flags, FP, stack, history bytes and callback arguments. Callback bodies are stubbed; recursion/SEH paths remain untested. Earlier build07 failed EFLAGS preservation because an extra call shifted the original stack cleanup; it was never installed and its failed receipt/source are retained. Build08 SHA ceb927c593abe7f2d1dc8142de3c3b865ea674a9019f78378bd4d5777ab2296d.

Build09 adds the distinct32-bit team-only turnover counter (8BFB3F, stats+3D0). This does not charge a player or infer a violation label. Zero/no-op, unavailable, wrap and unknown team retain explicit meanings.1,932 compiled counter comparisons,1,604 phase cases, nine record checks,52 command cases and97 Python tests on both macOS and Windows pass. Build09 SHA e0c8f5b793a06623f53fb07252731a74488e318aad8dcf040310511ba29f099c; not installed. Build10 combines phase, team-only turnover and made-shot-attempt hooks; validation is ongoing. These development builds are not the originalv0.1 release ZIP.

Direct points and the first named violation bridge

Build11 adds direct32-bit point writes for the two/three-point helpers and both FT paths. It publishes the actual before/after total rather than assuming a fixed scoring value from makes. Overflow is explicit.2,516 compiled comparisons pass, including eight nested point+made-counter wrapper cases. Build12 adds a private declared-feature bitmask (same shared layout) so clients can inspect attached capture paths. Declarations do not prove comprehensive writer coverage. Build12 also passes2,516 counter cases,1,604 phase cases, nine record checks and52 command cases.

The development broker now requires every additive player/team box-score field to reconcile before exporting a final result, not just points. Separate team-only counters are intentionally excluded from player-sum equality. Delayed aggregate and team-only-turnover tests are included. Current source passes103 Python tests locally; Windows final source12b validation is pending. Installed live game remains build06 until its natural match finishes.

Natural build06 record2942 is category12/kind13 atQ2 97.9683s, shotclock0. Snapshot94ms before has shotclock0.1126 and home team-only turnovers0;125ms after has phase18 and team-only turnovers1, with both player-turnover sums unchanged. Together with the prior controlled expiry trace and exact 79E7EB→940690 kind13 caller, this supports the public name shot_clock_violation. Its event meaning is shot_clock_violation_recorded, with storage-completion authority, not complete-handler or legal-ball-state authority. Other kinds remain unnamed. Evidence: shot-clock-kind-13-validation.json.

Historical parity validators use the archived build06 Python source ZIP so later semantic additions do not silently change the meaning of an old transport comparison. A second bounded private recorder overlaps the first to cover the end of the natural exhibition; merge by exact source sequence and compare overlap bytes before claiming continuous coverage.

Full natural baseline and combined-build live regression

  • Completed build06 natural6-minute-quarter CPU match: Spurs44–Heat51, regulation, enginefinish/phase19/rawperiod5; no deliberate clock/stat writes. All6,993 private records match public records exactly, with719 byte-identical overlap records between independent bounded captures; zero flags/faults/gaps and no unresolved counteractors.20 of312 endpoint stat comparisons differ, all two-/three-point attempts, matching the missing inline made-attempt paths fixed in build10+. Capture parity does not prove exhaustive engine coverage.
  • Replayed15,127 observed snapshots through the new all-additive-stat finalization gate: one final revision matching actual team/player/rules/winner result, no review_required transition. Managed binding began after play started; whole-match event completeness remains unclaimed.
  • Finalized bindings now detach on a new run/roster/reset without changing the completed result; transaction rollback regression covers in-memory and durable state.106 Python tests pass locally and on Windows11/Python3.13.16 for packagedsource12c.
  • Exited build06 normally, archived saves/SQLite/private/HTTP evidence. Installed combinedbuild12 SHA2568c2f5baf58d5c38fbe9d755e3f0e775441cf3b38b4725561c2f6e9a939af3e9b in Dell workingcopy. NewPID12812/run20a538245a60cd60a4d8fee05b92433b; broker6964. Old result remainsfinalized and new run detaches its binding. Allfive advertised capturepaths present, initial adaptererrors0.
  • Changed quarter length6→1 through normal gameUI for a bounded natural regression; pre-session original saves remain backedup. Combinedbuild12 full-game validation is inprogress, not yet passed. Broader requested API and native cross-platformengine remain incomplete.

Natural combined-build regression and ordered event identity

  • Build12 completed a natural one-minute-quarter CPU exhibition, Spurs0–Heat8. All1,267 captured records match the public stream; zero capture faults/flags/gaps. All336 player-stat endpoint comparisons reconcile, including points and made-shot attempts; 33 phase records captured. This run did not exercise made threes, offensive rebounds, actual retractions or nonzero team-only turnovers. Final export matches game UI; same-process rematch detaches the old binding and preserves the completed result unchanged. See analysis/api-engine/live-record-validation-12.json, live-12-natural-final.json, live-12-rematch-detach.json.
  • Added snapshot ABI3 event watermark, sampled after snapshot capture and published under the same seqlock. Public event identity now uses durable sequence intervals bracketed by continuous valid explicit bindings; pre-binding/uncertain records remain unbound. Delayed records use historical match/timeline mapping, not arrival-time roster IDs. V1/V2 snapshots remain readable. This is observed continuity, not proof of complete legal-play semantics.
  • Build13 passes121 Python tests on Mac/Windows; compiled tests:2,516 counter comparisons,1,604 phase cases,nine storage cases,52 command cases,24 boundary-helper cases,12 publication-integration cases. Integration mocks capture/command and two OS queries; live ordering still needs testing. DLL SHA256 f45ab8faedec0a9375cb924cda61f6eb17d46f2b8207293ad95bfc353f7f59fd. Installed13 after normal build12 exit; saves and final SQLite archived. First broker stop guard correctly refused due to stale script pattern; corrected exact source-path guard stopped12c before starting13.
  • Broader API remains unfinished: named violations/corrections, legal ball state, rule commands, automated launch, overtime splits and cross-platform game integration. Original corpus and pre-session adapter/saves remain preserved. No automation or publication.

Snapshot-bound identity live regression and period ledger implementation

  • Build13 live game bound at Q1 1:59.804 with24 external player IDs and ABI3 event boundary41. Early224-record sample contains183 bound records; external player/team IDs resolve correctly. Restarted broker2340→10132 midgame, preserving active match and timeline1. First restart attempt refused to overwrite _atomic.dll held by private recorder; hash-verified reuse succeeded. Interactive task launch backgrounded/paused game; resumed via normal UI. No clock/stat mutation in this game. Final parity/restart validation pending.
  • Added durable point-counter scoring ledger to broker source14, with explicit partial/reconciled state, per-period OT splits, per-player before/after chain checks and engine regulation/combined-OT reconciliation. Finalization now waits for the event cursor to reach the snapshot watermark. Late binding, counter gaps and unknown scoring correction periods cannot claim complete splits.132 tests pass on Mac and Windows; archived development14 package. Live13 scoring replay currently reconciles; this is offline replay, not live14 verification.
  • Bounded backcourt-time investigation executes actual8A1650 dispatch and79E2B0 handler in216 captured-x86 cases, with geometry/mode/side effects mocked. Positive/negative timer, flag, policy and actor guards pass; selectors0/1 yield recordkinds0/1. Selector2 has60-second table value but still emitskind0, so elapsed duration alone cannot supply a named enum. Public decoder remains unchanged pending live/UI corroboration. Evidence: analysis/api-engine/backcourt-time-verification.json and exact source hashes.
  • Full API and native engine remain unfinished. Preserved original corpus and pre-session backups. Research game/captures still active.

Full ABI3 natural match passed; bonus decoder corrected

  • Build13 natural two-minute-quarter match ended Spurs19–Heat17 in regulation. No deliberate clock/stat writes. All2,319 private records exactly match public records, zero flags/faults/gaps; all336 player-stat comparisons match using ABI3 event-watermark endpoints41→2319.2,278 bound records,41 prebinding records and101 external-actor checks pass. Includes four three-point credits and three OR credits (counts include entireprocess capture); no actual retraction/nonzero team-only-TO coverage claim. Broker2340→10132 restart preserved match/timeline1; evidence live-record-validation-13.json.
  • Finalization correctly waited through phase12 after finish latch before phase19. A20-second observation timeout during this transition is retained; game subsequently finalized normally and matched visible19–17 menu. All8,294 snapshots,8,293 event pages, match/result pages and scoring-ledger replay pass23 schemas. Broker14 scoring replay of17 point writes matches all four quarter buckets and final player/team totals. This is a natural regulation replay, not natural overtime or live14 verification.
  • Found production bonus decoder wrongly used late-foul threshold2 for nondefault selectors. Corrected to actual predicate, including signed comparisons and period boundaries.2,400 comparisons execute8A2110 and both helper routines without dependency stubs;588 executable-derived fixtures exercise public snapshot decoder.133 Python tests pass on Mac and Windows for development14b. Source13 live run used default selector0, so this bug does not invalidate its default-rule findings.
  • Exited13 normally, archived finalSQLite/saves; original corpus and pre-session backups preserved. Started freshPID12840 at12:31:49UTC using same verifiednative13DLL and newbroker14b for controlled violation/period-ledger integration. Fullrequested API remains unfinished; no native-engine completion claim or publication.

Backcourt violation names and scoring-history integrity

  • Controlled live14 fixtures on PID12840 produced category12/kind0 at sequence145/Q1 94.3386s and747/Q1 22.27996s; kind1 at784/Q1 22.2288s and852/Q1 2.2377s. Each immediately follows the declared player-turnover write for the same actor. Exact caller79E49B supplies selector1→kind1, otherwisekind0, after6C7300 updates the turnover. Original dispatch/handler passed216 captured-x86 cases with documented geometry/side-effect stubs.
  • Visually observed 8-SEC VIOLATION at the first paused-preimage fixture in the CUA result; the subsequently saved screenshot was already followup play and is labeled accordingly. backcourt-10sec-exact-live-14.png directly retains 10-SEC VIOLATION at2.3s. The other waiting/followup screenshots are not mislabeled as exact calls. live-14-backcourt-all.json retains public records. A paused float timer write0.05s, two bounded active one-write reproductions and a paused selector0→1→0 cycle are research fixtures, not supported public commands or natural-duration violations. Two earlier armed attempts timed out without writes; retained failure logs. Selector restored with exact-preimage/readback verification at12:52:28UTC.
  • Development15 adds public names eight_second_backcourt_violation and ten_second_backcourt_violation; original numeric kinds retained. Names describe recorded calls, not timer-derived durations. Unknown kinds remain null. Source/schema/SDK documentation agree. Native13 DLL unchanged; broker15 passes138 tests locally and on Windows. Retired destructive v0.1-only schema generator; canonical OpenAPI now validates/formats without dropping extension schemas.
  • Closed a scoring-ledger completeness hole: an overlapping ring-history gap, record fault, new capture fault or unbound point write marks the active scoring timeline partial even if endpoint totals later reconcile. Pre-binding/other-run losses do not poison a new binding; loss annotation is transactionally durable and rollback-tested. Whole-match event completeness remains unclaimed.
  • Upgraded broker14b PID7064→15 PID12648 midQ3 using preserved SQLite state; match engine-api-14 retained timeline1 and reconciled period ledger. Task launch backgrounded and paused the game; normal UI resumed it. HTTP/private captures remain active; final live15 parity/export verification pending. Original corpus/pre-session backups preserved. Full API/native engine remains unfinished.

Controlled full-match regression passed; free-throw schedule ABI4

  • Completed controlled run14 (native13, broker14b→15): Spurs17–Heat21, regulation. All2,884 private records exactly match public records, zero faults/flags/gaps; all336 player-stat comparisons match between watermark49→2884.2,835 bound records and151 external-actor checks pass. Quarter ledger reconciles SA[5,2,4,6]/MIA[4,4,4,9], persists through broker upgrade, and finalizes at phase19. Backcourt timer/selector fixtures make this a controlled game; no claim of natural violation durations, live retractions or multi-OT coverage.14,212 snapshots and14,211 event pages plus match/result/ledger pass23 schemas. Evidence: live-record-validation-14.json, schema-validation-14.json, live-14-controlled-final.json.
  • Closed an additional finalization race: snapshot capture faults make the scoring ledger partial before finalization even if event polling has not yet reported a loss. Regression included in source16.
  • Added private snapshot ABI4, retaining v1–v3 read fallback. Captures scheduled free-throw kind/shooter under the publication seqlock; initial public award used a phase8 gate (later disproved in run16 and corrected to phase14 in17b; see regression below), and is null on invalid data or legacy adapters. Known kind1=shooting and4=non_shooting_bonus come from bounded prior award-code recovery; other numeric kinds remain unnamed. Shooter resolves through existing public player keys; pointers remain private. This is a schedule observation, not a complete causal foul classification.
  • Development16:144 Python tests pass on Mac and Windows;288 compiled free-throw helper cases,12 publication cases,2,516 counter comparisons,1,604 phase cases,nine storage checks,24 boundary cases and52 clock commands pass. Publication tests mock capture helpers and OS queries; helper tests separately execute compiled code. DLL SHA25660384906074435ad427561573b74e6f2d28d0cfbaf6928f4c9d5531f5a0511e8. Cosmetic sampler log still saysv3; actual mapping/header version is4.
  • Exited14 normally, archived saves/SQLite; installed16 only in Dell workingcopy. PID9372/run99c98dab54f705d0c21cdc6e00a2c893; broker10116/private recorder10080. Initial attract demo was observed and left through normalUI, then QuickGame launched for live validation. No live16 FT/OT pass claimed yet. Original corpus and pre-session saves/DLL backups preserved. Full requested API remains unfinished.

Live FT phase regression caught and corrected; native17b boot started

  • Natural run16 ended Spurs21–Heat12, regulation, matching the retained final UI. All336 player-stat comparisons reconcile.2,535 private records are contiguous with zero flags/faults/gaps;2,509 available public records match exactly, including all2,269 bound records and102 actor identity checks. Public prefix1–26 was not retained by the late-started HTTP capture/rolling database; this is explicitly a public-evidence gap, not claimed full-prefix parity. Attract-demo and prebinding records remain unbound. Bindingwatermark266 at zero score; finalwatermark2535. Final scoring ledger is reconciled. No deliberate clock/stat mutations.
  • Failed new feature: build16 gate incorrectly used phase8 (inbound), so actual phase14 FT administration with attempts remaining returned null award. Native/unit tests had mirrored that incorrect phase and did not establish its semantics. Archived defect evidence live-16-ft-phase-regression.json; watcher interrupted after game finished because the bad gate could never yield the expected observation. Corrected native and decoder to phase14 in17b, explicitly rejecting8/10/18/19. No claim that16 passed FT feature validation.
  • Natural record2168 atQ4 54.72s is kind25, after Chalmers PF2166, before Parker's FTM/FTA2207/2209 and2226/2228; last attempt is processed in phase10 after remaining reaches0. Captured original7A05F0 handler passes28 synthetic cases for actor ordering, two/three-shot schedules and rejection guards; dependencies including foul detection are mocked, float predicate replaced by fldz;ret. Handler writes kind25/fouler/shooter. Public name25 remains unexposed pending stronger live/UI corroboration. Refined nine Ghidra handler entries remain inferred pseudocode; warnings and exact source overlays preserved.
  • Native17b adds append-only privateABI5 rule parameters: selected three-point geometry bank in game units, raw selectors, period duration/full shot-clock reset/conditional minimum parameters. Read-only observations, no league-name inference or unsupported rule mutation. Null legacy/invalid/nonfinite behavior documented.148 Python tests pass Mac/Windows; compiled32 parameter cases,480 correctedFT cases,12 seqlock publication cases,2,516 counter comparisons,1,604 phase cases,nine storage cases,52 command cases pass. Original17 build also had the badFT gate and was never installed;17b corrects it.
  • Exited16 normally; archived saves/SQLite/private/HTTP evidence and stopped broker10116. Installed17b DLL SHA256e43739773a68cf8b52d0c16d309d6666db0c52c1aa83d47575606b2086dad9cb in Dell workingcopy, startedPID5936 at13:49:37UTC, broker7448. Live17b verification pending. Original corpus/pre-session DLL and saves remain preserved. Full API/native engine goals still incomplete.

Corrected FT schedule live evidence and rebound correction context

  • Native17b natural run0e4024bb08f45871bf1bc03448931815: Q2 0.952683s kind25 record1027 identifies away:7 and home:2, after PF1025. Phase14 begins1049; 242 award samples identify LeBron James/home:2, type1, two attempts, remaining2→1. FTM/FTA1063/1065 and1095/1097 each increment by1. Last make occurs in phase10 after transition1092.276 gated snapshots/five committed counter checks pass (live-17b-free-throw-validation.json). Exact FT UI and independent-memory snapshot were not captured for this sequence; no live bonus/technical/and-one/three-shot claim. Match still active at this milestone.
  • Nine unchanged default rule parameters independently match ReadProcessMemory (120/24/14 seconds; selectors0; four geometry values); reads were at separate times, not one atomic cross-process snapshot. live-17b-rule-parameter-parity.json. Conditional14 parameter is not evidence of OR reset policy.
  • Broker17c adds separate discovery for FT schedule/read-only rule parameters using producer ABI metadata, and includes rule-only changes and transitions to unknown in snapshot.observed. Legacy ABI4 with the bad FT gate is not advertised as validated.151 tests pass Mac and Windows. Native DLL unchanged;17c not yet the live broker.
  • Original942B10 category112 constructor passes96 captured-x86 cases for actor node, offensive flag, position, direction and eligibility gates. History/eligibility calls and sink are stubbed; no nearby opponents. Category112 is the concrete record used by correction lookup78C4F0. Auxiliary flags remain unnamed and live causal retraction still unproved. Initial harness inverted the mode4 gate; assertion caught it and expectation was corrected from actual jne before passing. Evidence retained; no production enum changed.
  • Full requested API remains unfinished. Original corpus and pre-session backups preserved.

Natural two-overtime game, live bonus award and named blocking foul

  • Native17b game PID5936 ended normally Miami24–SanAntonio19 after two natural overtimes. No deliberate clock/stat writes. All3,432 private records match public records exactly; zero faults/flags/gaps, no missing public prefix.3,376 bound records,56 unbound attract/prebinding records,170 external actor checks; all336 player-stat comparisons reconcile at watermark56→3432.11,166 snapshots/11,164 event pages and match/result/ledger pass23 schemas.
  • Scoring ledger reconciles six periods: SA[4,2,2,9,2,0],MIA[4,2,7,4,2,5]. Both OT starts initialize60s for120s regulation-period parameter. Qualifying counters visibly reset from nonzero; settled phase7 timeout allocation is1+0. Earlier6-minute-quarter fixture's180s/3+0 must not be generalized. UI final aggregates OT into2/7; API separately retains2–2 and0–5. Evidence live-17b-overtime-validation.json, live-record-validation-17b.json, schema-validation-17b.json.
  • Natural Q4 9.644706s awardtype4 identifies James/home:2 with two attempts. Away late qualifying count1→2 changes bonus false→true; earlier kind21 foul went to inbound, subsequent kind21 tophase14. FTM/FTA2490/2492 and2504/2506 each increment1. Exact during-FT UI retains James shooting and Miami BONUS. live-17b-bonus-validation.json; kind21 remains unnamed. Initial validation selected an uncaptured exact boundary2471 and failed; corrected to observed bracket[2471,2475), with failure note retained.
  • Exact BLOCKING FOUL banner retained in live-17b-natural-ot-screen.png, OT6.2s/19–19. Storedrecord2956 kind19 actors Ginobili/away:5 and Wade/home:1 matches original7A02A0→7A0482.20 captured-handler cases verify record19, actor order, qualifier1 and credit subtype2 with detection/downstream calls mocked. Broker17d now decodes19 asblocking_foul; original numeric domains remain distinct. Archived source record decodes correctly with17d. No retroactive rewrite of17b stored public history.
  • Broker17c's discovery/rule-delta changes plus named blocking foul form17d:152 tests pass Mac/Windows. Live upgrade7448→13056 preserves finalized result and six-period ledger exactly and advertises ABI5 schedule/parameter capabilities. Native DLL unchangedSHAe43739773a68cf8b52d0c16d309d6666db0c52c1aa83d47575606b2086dad9cb.
  • Private capture stopped cleanly at3,432. HTTP capture stopped bySIGINT after final export, closing its file; expected KeyboardInterrupt retained in tool output. Initial save copy while game alive failed on locked cache file (partial archive retained); after normal UI exit retry verified all156 files. Original corpus and pre-session saves/DLL preserved; pre-session saves not restored yet. Broker17d still running against the now-exited process. Full API/native-engine goal remains unfinished, especially causal live corrections, remaining violation meanings, legal ball state, arbitrary rule callbacks, automated roster launch and cross-platform game adapter.

Rebound record provenance built; live18 blocked by Dell connectivity

  • Development18 adds private event ABI2 (same244-byte record/249,912-byte ring), resolved category112 rebound context, and observer-only scope around original78C4F0 plus its4C77F0 lookup. A matching negative OR/DR counter change can reference the actual selected context as correction_of_record_id; this is not a claim about the original stat-credit event (correction_of_event_id remainsnull). Node reuse, timestamp/payload changes, actor/stat mismatch, missing context and no-op/wrapped counters fail closed. Nested scopes restore after normal returns. Original corpus preserved. -159 Python tests pass Mac/Windows for archived source18. Three further local regression tests cover external identity across restart, transactional rollback/retry and nonfinite geometry:162 pass locally; extra three not yet run on Windows. Compiled DLL SHA256642eebdf3e893ad7b20a7e5dae6addc0c9581f08f13fedcaa5a72e1bbc08d97e, MSVC19.51/W4/WX/O2/MT.122 compiled rebound cases execute actual history search, correction branches and counter arithmetic with documented game/OS dependencies mocked;2,516 counter,1,604 phase,480 FT,32 rule-parameter,12 ABI5 publication,nine storage,52 command cases pass. Exception unwind/live natural retraction remain unverified. Initial synthetic harness omissions and wrong ABI3 publication-harness attempt retained/described, not production failures.
  • Replayed all3,432 archived17b raw records through development18 and validated public event pages against23 schemas.18 context records decode with unknown player, correctly respecting legacy17b's missing actor capture. This is offline compatibility evidence, not live18 validation. rebound-schema-replay-18.json.
  • Stopped identified broker17dPID13056. Installed18 only in Dell workingcopy after game/oldDLL/backup hash guards. Started gamePID10088 at14:49:02UTC, broker11672 and private recorder8644. Last HTTP observation14:50:42UTC:runbc19e4514846476402d0599b4655d3ed,ABI5,phase0/invalid pregame sample,adapter errors0,event faults0/sequence0. CUA reached title screen. Then RustDesk remainedConnecting, SSH8-second connect timed out, ping timed out and both existing tunnels exited. Cause unknown. No in-game18 verification or clean remote exit claimed. User asked asynchronously to check power/Ethernet.
  • Stopped local HTTP recorder bySIGINT; partial boot/transport evidence closed and retained. Remote recorder/game/broker may still be running; cannot confirm or restore pre-session DLL/saves until host reachable. Remote recorder has its existing45-minute deadline. Last known installed DLL18; pre-session stable DLL216ba721... and original saves remain in Dell api-engine-backup. Original NBA2K14-extracted untouched. No automation/publication.
  • Next: reconnect SSH/RustDesk/API tunnel, inspect actual remote state before restarting anything, archive private receipt/logs, complete live context/provenance test and restore clean test state. Broad requested API still incomplete: nonzero live corrections, remaining violation names, legal ball state, arbitrary rule callbacks, automated roster launch and cross-platform game integration. Do not label development18 fully complete or production ready.

Scope decision — Windows-first deep editing, not full decomp/recomp

  • User explicitly directed updating all documentation to replace full decomp/recomp with deep engine edits and the public extension API, Windows first; Mac/Linux compatibility follows afterward. Updated AGENTS.md, project/knowledge-base entry points, canonical PROJECT-SCOPE, implementation plan, approach, public API requirements and source/evidence notes. Compatibility/translation layers are acceptable later; targeted reverse engineering remains a feature-driven technique.
  • Preserved earlier strategy verbatim in analysis/documentation/2026-10-13-original-strategy.zip; readable superseded copies and original/snapshot hashes are in knowledge-base/history/. Earlier technical evidence, attributed community posts, immutable package manifests and original game corpus were not rewritten.
  • During documentation work, Dell reconnected with the same game10088, broker11672 and recorder8644; no host reboot was observed. Re-established both loopback forwards; upgraded identified broker11672→13168 to18a using preserved state.163 tests now pass Windows as well as Mac. Native18 unchanged. The development18a package was staged before reconnection and accurately retains its packaging-time validation limits; current integration log supersedes those time-specific limits. No live correction pass yet.

Controlled defensive-rebound correction and original-credit linkage development

  • Closed run18 after host recovery.3,528 contiguous private records have zero capture flags/faults/gaps.24 resolved rebound contexts each match an immediately preceding same-actor unit credit.1,983 retained public records match;1,545 earlier public records are missing from retained evidence. Attract demo only, not a managed full match. live-context-validation-18.json and closed-state18 retain evidence.
  • Research19 uses a separate fixed original-routine mailbox: game-thread execution, paused/frozen phase10, same run/period/clock, exact latest context/actor/counter, nonzero period bucket and short expiry. No arbitrary call/address endpoint. MSVC19.51/W4/WX build SHA6989dc0d62d5312a7a7aa7aaf9835961187b93bf22cb5f1cb24f74d79290a247;122 rebound regression and32 compiled fixture cases pass with documented dependencies stubbed. Initial client112-byte layout assertion failed before mutation; corrected116-byte client and fixture tests retained.
  • Live PID632/runba9c6da637b17b74404e682de82ee9a9: original78C4F0 retracts LeBron/home:2 DR1→0 at Q1 73.094848s; context295→negative counter335. Disabled original ECX0 and wrong-count preimage controls produce no events/change. Game clock unchanged; original shot-clock restoration16.704700→24 is recorded. Public event35f4851d53ad466688b98ac9c7fc2cfb:120654 has correct external player reference-home:2 and selected-context ID. Saved UI shows rebound count0. This is a controlled routine fixture, not natural retraction evidence. live-19-correction-second.json, live-19-public-correction.json, live-19-rebound-ui-after.png. Managed matchengine-api-19 remains active for final export regression at this milestone.
  • Development20 builds original-credit owner observer at796D50, eventABI3, exact counter→context→correction source IDs, durable retained public-event lookup, restart/rollback/retention handling.170 local Python tests pass before documentation/discovery edits; Windows broker20 and liveABI3 validation pending. Native20 SHA5de68565354503489cefd36263c723ec81aa04b6ac933fbd56ee1beb526999fa built successfully;82 credit-owner/counter/constructor comparisons pass. Game notification, eligibility and storage sink mocked. Wrong-thread test initially expected two faults; actual constructor also publishes a metadata record, giving three rejected publications; assertion corrected with original-path evidence. Exception unwind and recursive engine callbacks remain unverified.
  • Current live adapter remains research19; broker18aPID13248, private recorder3156 and local HTTP19 capture active. Pre-session DLL/saves remain backed up, not restored. Original corpus unchanged. Items1–4 are not complete: broader corrections, remaining violations/legal ball state, scoreboard semantics and coherent rule editing still need implementation/live evidence.

Controlled correction full-match export passed; ABI3 lineage run21 started

  • Research19 completed regulation Spurs23–Heat22, matching the retained final UI. All2,763 private records exactly match public records; zero flags/faults/gaps, no missing public prefix.2,596 bound records and145 external actor checks pass. All336 player-stat comparisons reconcile, including the forced DR decrement. Home team-only turnover1 matches its separate hook delta. Quarter ledger reconciles SA[2,7,8,6]/MIA[5,5,2,10].10,323 snapshots and10,320 event pages plus match/result/ledger validate23 schemas. live-record-validation-19.json, schema-validation-19.json, live-19-controlled-final.json.
  • Finished replay/phase12 was correctly held until stable phase19; raw period5 at regulation finish is not overtime evidence. Closed private capture cleanly, stopped local HTTP recorder bySIGINT after final export, backed up SQLite with the backup API, exited game normally and archived saves. Broker18aPID13248 stopped by exact source guard. The first capture validator failed because a broad17b→19 filename replacement also changed the pinned run nonce; corrected exact nonce and retained original failure in this note. No production behavior changed for that harness correction.
  • Source20a passes170 Python tests on Mac and Windows. Schemas/SDK document context-source, original-stat-source and durable HTTP event IDs separately; discovery capability-gates ABI3 lineage. Research21 combines native20 with the isolated fixed routine fixture, SHA35b94ed1a99fe8601c830c04233fa700aa4d62e4b11d75c408f22b6c66fda06b;82 credit-owner comparisons,122 original correction cases and32 fixture cases pass. First21 build attempt lacked extraction preamble and did not compile; corrected staging succeeded. No full ABI3 live pass yet.
  • Installed21 only in the Dell working copy after hash/process guards; launchedPID6976 at16:09:46UTC, run4c369ceef126e27d1fe1a61342505b46. Broker20aPID12932; private recorder5672; HTTP21 active. Testing managed matchengine-api-21. Stable pre-session saves and DLL backups remain preserved and not restored. Items1–4 still incomplete; unknown semantics and broad rule editing remain unadvertised.

Development22 / live21 correction lineage

Live21 establishes exact original-credit/context/retraction links for natural OR111→112→116 and controlled OR311→312→540. Both are inside managed matchengine-api-21; the earlier attract-mode description in the initial validator was incorrect and is corrected by asserted binding evidence. The natural retraction's basketball cause has no retained UI confirmation. Controlled540 uses the original routine on the game thread, with unchanged game/shot clocks. See analysis/api-engine/live-21-linkage-validation.json and live-21-correction-second.json. Full-match final verification is pending at this entry.

Development22 implements append-only eventABI4 block credit provenance, with48 compiled original-path comparisons and176 local broker tests. A separate research23 build has38 mailbox guard cases. Neither block live validation nor broad rule editing is established. Current Dell remains research21/broker20a until a clean full-match archive and upgrade. Original reference corpus and pre-session backups are unchanged.

Natural full-match23 and shooting-foul/and-one evidence

  • Research23/broker22 run d23bc0eac9230e644a7fc50c3168f768 ended Spurs21–Heat16, regulation; quarter scores SA[4,2,7,8]/MIA[7,4,0,5] match retained final UI. All2,461 private records exactly match public records, zero faults/flags/gaps/missing prefix;2,417 bound/44unbound,128 external-actor checks. All336 player-stat comparisons reconcile.5,753 snapshots/5,751 event pages plus match/result/ledger pass23 schemas. No deliberate game/stat/clock writes.
  • Block2295 for Leonard/away:2 was naturally credited atQ4 9.166793s. The initial ten-minute block watcher timed out; retry detected the late block, but the game completed before a paused retraction test. Research mailbox was never invoked. No live block-retraction pass claimed. Static inspection also found the client still asserted the old matchengine-api-21; it had not executed. Next fixture client must take an explicit expected match/run rather than copied IDs.
  • Shooting record1944, Splitter/away:4 against Bosh/home:4, Q4 43.742882s: CUA tool image visibly showed SHOOTING FOUL,43.8,Spurs17/Heat13. That banner image is retained in this conversation; next saved PNG live-23-after-shooting-foul-ui.png is later substitution/made-basket presentation17/15 and does not itself show the banner. PF1942 precedes record1944; Bosh2-point credit1952/make1953/attempt1954 follows. Phase18 provisional2/2 schedule becomes1/1 after the basket; phase14 identifies Bosh/type1/one attempt. Final FTM2002/point2003/FTA2004 occurs after phase14→10 record2000. live-23-shooting-validation.json. This temporal sequence has no invented causal event ID.
  • Development24 names category12kind25 shooting_foul, grounded by original7A05F0's28 bounded cases and observed23UI/award/counter evidence.178 tests pass Mac and Windows, including a retained17b binary record and wrong-domain/fault rejection. Schemas/docs updated; native production source unchanged22, installed research native23 remains separate. Development24 package/hashes retained, not yet running at this milestone.
  • Stopped private23 cleanly, closed HTTP viaSIGINT after export, SQLite backup API passed integrity check, normal game exit verified, archived closed saves/database and stopped exact broker7792. The pre-session stable DLL/saves are still backed up, not restored. All four requested areas remain incomplete; remaining violation meanings/legal ball state and coherent rule editing are substantial outstanding work.

Full-match25 regression and selected localization observer26

  • Broker24/research23 run7f186542e5f0e7236cbbc0d8795672dc (gamePID10028) ended Spurs22–Heat18; quarters SA[8,2,4,8]/MIA[4,6,6,2] match saved final UI. All2,498 private records exactly match public records; zero flags/faults/gaps/missing prefix.2,455 bound/43unbound and136 external actor checks; all336 player-stat comparisons reconcile.4,940 snapshots/4,939 event pages plus match/result/ledger pass23 schemas. No block credit occurred, so the block retraction fixture was not invoked; this is a natural full-match regression, not correction proof. live-record-validation-25.json, schema-validation-25.json.
  • On startup the first HTTP snapshot still belonged to the exited run23; retained as live-25-before-new-mapping-snapshot.json, then pinned all watchers/binding to the new nonce before binding. No old-run samples were accepted by final validators. The pending block watcher and HTTP recorder were stopped bySIGINT after final export (expected KeyboardInterrupt retained). Private capture stopped cleanly, SQLite backup integrity passed; normal game exit and final save archive verified, broker636 stopped. Pre-session stable DLL/saves still backed up, not restored.
  • Research26 adds a separate selected-localization observer at660060 for46 recovered foul/violation labels. Private ring includes requested hash, original caller, event watermark, period/clock and raw reason; none implies an authoritative causal mapping or proves text was actually displayed. Production source/public ABI unchanged. MSVC19.51/W4/WX/O2 build SHA334ca7a8bdfb349e9497f3d005ad5e95348828c8bdb24ab323d908d9eb7a412b;56 compiled formatter-preservation cases and48 block-observer regression cases pass. Lookup/format/OS dependencies mocked; live labeling and SEH unwind remain unverified at this milestone.
  • Original880190 conditional minimum passes56 bounded cases: it raises only a lower shot clock, notifies with truncated minimum before writing, stores ceil(minimum) in1DEE5F4 and sets1CE78E8 refresh flag. Game clock/timer flags remain unchanged in tested cases. Downstream notification/full-reset callbacks mocked. Separate1DEE890 minimum is used by phase18 setup8A14E0; cannot equate either minimum with an offensive-rebound rule. shot-minimum-verification-26.json. This does not yet implement coherent public rule commands.
  • Corrected a disassembly-discovery error: the initial foul-display-consumers25 script used a failed padding search and decoded401001 for8FF6EF. Original bad-boundary output retained/labeled; corrected decode starts at the independently identified call8FF6EF and shows raw reason indexing128-bit masks at1E19090, not a localization mapping. Label hashes and parallel key hashes have no direct text references in the bounded search; no new violation enums inferred from numerical coincidence.
  • Items1–4 remain incomplete. Continue block live validation, authoritative remaining violations/legal ball state, scoreboard edge cases and coherent rule editing. No automation or publishing.

Run26 presentation evidence and correction-test priority change

  • Research26 is running on Dell game PID6196, run 1fd6c0e4f307876422f6adc8cd91ede6, with broker development24 and managed match engine-api-26. Original corpus is unchanged. The separately compiled localization observer passed56 preservation cases,48 block regression cases and2,516 counter comparisons. This remains a research adapter, not a new release.
  • Natural block credit150 (Wade/home:1, Q1 89.238846s) was followed by a paused fixture attempt at76.105324s. The dry-run guard rejected the request (result2; event watermark212 unchanged). The actual-retraction operation was never submitted; no deliberate game mutation occurred. Receipt: analysis/api-engine/live-26-block-rejected-first.json. The exact rejecting subcondition is not established. Do not weaken the guards or claim successful live block correction.
  • The user explicitly deferred block testing after asking about diminishing returns. Stopped the next-block watcher; continue the current game as a presentation/event capture. Rebound correction functionality already has natural OR and controlled OR/DR evidence, including full-game reconciliation; do not make identifying every basketball cause a prerequisite for other features. Main priorities are remaining event meanings, legal ball state, scoreboard semantics and coherent rule controls.
  • Static original-code evidence: shooting-foul handler7A05F0 calls block retraction8A39A0 at7A070E. This supports a purpose for that conditional retraction, but does not prove a natural live block reversal or the cause of the previously captured rebound reversal. The two raw rebound-retraction call candidates are80AAA6 and80AB23. See correction-caller-context-26.txt and correction-caller-candidates-26.json.
  • New positive presentation evidence: the midgame label capture contains738 contiguous localization requests (369 Blocking Foul and369 personal/team-foul templates) at Q1 46.782185s, raw reason10, event watermarks323–330. Labels originate at callers5CAA1E and5CA9DE. This is a copied midgame prefix, not a closed full-run receipt; localization requests are not proof every frame displayed the text and do not establish a causal event ID. Original formatter5CA8F0 loads the label hash from its input object+8; its only discovered direct caller5CAF97 obtains that object through5C72E0. The remaining enum-to-presentation bridge is still under investigation.
  • First single-byte-padding guess for the formatter began at5CA9E4, inside an instruction. Replaced it with a contiguous-padding candidate5CA8F0 and verified the independently observed call5CAA19. New raw index/call searches are explicitly candidates, not verified event names. No new public enum or legal-ball claim was added.

Closed run26; presentation-property bridge research27

  • Run26 ended Spurs17–Heat11 in regulation. Final UI quarters SA[6,0,4,7], MIA[2,4,5,0] agree with the exported ledger. All2,375 private records match public records; zero faults/flags/gaps/missing prefix,2,335 bound/40unbound and121 external-actor checks. All336 player-stat comparisons reconcile.7,383 snapshots and7,382 event pages plus match/result/ledger pass23 schemas. The rejected block dry run never reached mutation; otherwise ordinary CPU gameplay. live-record-validation-26.json, schema-validation-26.json, live-26-final-ui.png.
  • Closed label capture has3,664 contiguous records, zero errors/gaps, verified binary/JSON parity and SHA256 receipts. Blocking Foul requests bracket kind19 record322; Shooting Foul requests bracket kind25 records1273,1455,2039. Personal Foul requests at Q4 14.266997s/raw reason4 bracket unnamed kind21 record2204. This is presentation corroboration, not a causal identifier or an independently verified specific foul subtype. label-validation-26.json, live-26-label-event-brackets.json. No new public name assigned.
  • Private and label recorders stopped cleanly. HTTP recorder closed by SIGINT after final export; expected KeyboardInterrupt retained. SQLite backup integrity passed. Normal game exit verified and closed database/saves archived; broker12372 stopped by identity guard. Pre-session stable adapter and original saves remain backed up, not restored.
  • Research27 extends the private observer to selected label-property setter attempts at5C75D0, whose original protected body214B640 stores type4/hash at object+4/+8 after lookup5C7320. The original five-byte relative jump is guarded and the observer resumes its original destination. Research label ABI2 uses56-byte records, origin0=request/origin1=setter attempt, plus property key. A setter attempt can fail its lookup and is not proof of a write. No pointers/public enum added. The research block mutation mailbox was removed from27 in accordance with the user's deferral; production block observation remains.
  • Research27 compiled MSVC19.51/W4/WX/O2/MT; DLL SHA25632504d44d644754c3167bab26e073a2829c80af36951fac27fbbd477a142ca24.56 formatter and56 setter original-versus-instrumented cases pass register/flags/FP/stack/game-memory preservation, filtering/thread gates and ring wrap. Original protected setter body executes; property/resource lookup, formatting and OS functions are mocked. No live setter success or SEH unwind claim yet.
  • Installed27 only in Dell working copy after process/hash/backup guards. GamePID13252 launched2026-10-13T18:03:06.2278495Z; new run32fcdbdf2f5fc5eca5068c0229c676c0. Broker24PID1716, private recorder5148, label recorder636 and bounded HTTP27/final watcher active. First HTTP boot snapshot retained stale run26; new launch snapshot pins27 before binding. Started CPU exhibition; final validation pending. Four-part API request remains incomplete; blocks explicitly deferred.

Development28a: presentation and two additional event names

Closed run27 and original handler tests support category12kind18 reach_in_foul and kind7 out_of_bounds; see analysis/api-engine/live-27-named-event-evidence.json, reach-in-handler-verification-28.json, out-of-bounds-handler-verification-28.json. These are separate from raw stop-reason values6/18. OOB actor can be substituted by original logic and is not guaranteed last toucher. Experimental presentation and physical holder fields are documented in api/README.md. Legal live/dead and legal possession remain unavailable; timeout remains unnamed. Rules editing and live block retraction are deferred by the user. New scope includes settings/sliders reads and writes; see the implemented slider milestone below.

Settings development29 (in progress)

Private ABI6 reads the original profile and supports all59 named slider writes through original engine setters. GET /v1/settings catalogs59 named user/CPU sliders. slider.set requires explicit preimage, paused play phase and standard lease/run/period/idempotency guards. Runtime profile updates only; disk save is not implemented. Other in-game settings remain incomplete. All118 slider/side live round trips pass including duplicate identity, stale-preimage rejection and full-bank restoration;2,242 compiled mailbox cases and1,512 original setter/getter cases pass. Six foul labels have independent UI evidence. Other individual labels and upstream gameplay effects still need verification. See WORK-LOG milestone30, analysis/api-engine/live-settings-roundtrip-30.json and native-settings-tests-30.json.

Development32 live rule-switch round trips

  • Run e3ee62e66333d15f017ae0f125afba6d passed all39 general/rule option public HTTP commands, duplicate identity, stale-preimage rejection and restoration with whole-options equality. live-options-roundtrip-32.json. Shot-clock off→on invoked original reset16.35472298→24 seconds; game clock remained112.35467529, paused phase10. Unbound CPU fixture, not a full-match result.
  • Independent API all19-off test matched every original NBA Rules menu row; screenshots api-rules-top32/middle32/middle2-32/bottom32.png. All19 restored via public API. Runtime scope; all downstream enforcement effects, persistence, presets/controller/camera/video remain unfinished. Catalog verification updated locally; running32a metadata remains older until next deployment.

Controller adapter development33

The private ABI9 appends a524-byte controller snapshot and44-byte command mailbox; earlier offsets remain intact. Original profile0 accessorA09FD0 resolves root+350CAC+28, then ten controller preference slots at stride5C. Oversized prior CA8 option captures happened to include this adjacent allocation; those relative offsets are not ownership evidence. See controller-map32.json and the work log for the correction.

The13 named rows use original fastcall setters; defensive assistance passes its float argument on the stack.520 original-code fixtures cover every allowed menu value across ten slots with exact neighboring allocation and callee-saved register preservation.2,740 compiled mailbox cases pass original setter execution, all-slot isolation, preimage/invalid-state/range refusal and repeated-state protection. Existing709 option/2,242 slider/48 rule-timer cases also pass against33. The latter timer fixtures retain documented downstream mocks. No exception-unwind or all-input-device behavior claim.202 broker tests pass on Mac and Windows;28 schemas validate. Fresh Windows live/API/menu validation is in progress, not yet complete at this entry.

Controller development33 live verification complete

  • Installed research33 DLL SHA256 f9c727d72852eb33ff79b186fbb49f37778cf411a24a64b3317f74036617b8e8 into the Dell working copy; game4992, broker10040, run58e4034d683f9489aa88c3c35717ccac, ABI9. Run32 closed normally with saved-state archive;8,822 snapshots/8,821 event pages/settings passed28 schemas. First33 launch response was stale and retained; new run separately pinned.
  • All130 controller setting/slot combinations pass live HTTP original-setter write/readback, duplicate identity, stale-preimage rejection and whole-bank restoration (live-controllers-roundtrip-33.json). Separate all13 Player1 changes match original UI (api-controller-top33.png, api-controller-middle33.png, api-controller-bottom33.png); all13 restored through API (ui-controllers-restore-33.json). The open menu caches displayed values until reopened; api-controller-restored33.png was captured before reopening and still shows temporary values, so it is not UI restoration proof. Public snapshots confirm restoration.
  • Unbound paused CPU fixture Q1 105.292915 seconds; zero adapter errors, no full-match claim. Ten stored slots do not establish ten connected devices or all gameplay/input effects. Disk persistence remains unimplemented. Local capability text updated after packaged33, so running broker retains older pending text until redeployment. Camera/video/presets/control bindings/coaching and foul/legal-ball work remain unfinished.

All 26 engine camera descriptors exposed (development33b)

  • User explicitly requested every camera, including internal types. Recovered26 original descriptors at102A480/stride30h and localized names from the archived English resource. Protected next/previous selectors wrap at25; the normal exhibition menu exposes17. Public GET /v1/settings.cameras_catalog includes all26 with stable IDs, six control descriptors each, original defaults/ranges and configurability. Nine additional types: Turbo, Showtime, Dunk Cam, Broadcast Dynamic, Drill High, Drill2K, Bench, Horse, Training Camp. Private engine indices/addresses are omitted. Original defaults are not runtime observations.
  • camera-descriptors33.json, camera-map33.json, camera-functions33.json/.txt preserve attribution, hashes, addresses and UI comparison evidence. Original951A00/951B60 handlers pass1,348 bounded cases covering all26 types, range wrapping, unsupported-control no-ops, neighboring table preservation and invalidation flag. Input ownership, sound, menu highlighting and downstream presentation reset are mocked; this is not renderer/activation proof. Temporary camera UI changes restored to Broadcast Stadium/reverse Off; final table equals earliest full-table capture except Generic Zoom6→5 (the first full capture occurred after its temporary zoom change). Save-profile prompt was declined.
  • Development33b is a broker-only update:203 Python tests pass on both Mac and Windows. DLL/ABI9 and game4992 remain unchanged. Broker10040 was identity-checked and stopped; closed SQLite files and hashes archived on Dell under logs/api-engine-33/broker-closed-state. Broker33bPID10200 serves the same game run58e4034d683f9489aa88c3c35717ccac. Live authenticated HTTP verifies26 unique entries,156 control descriptors, all nine hidden entries, schema validity and explicit unsupported activation (live-camera-catalog-33b.json). No camera activation, current-camera readback or camera-setting write command is implemented yet; catalog availability must not be described as camera control.
  • HTTP33 recorder was stopped with SIGINT before broker replacement; 8,708 snapshots,8,708 event pages and the live33b settings response pass29 schemas (schema-validation-33b.json). Video settings inventory/baseline was captured read-only; no video changes were made. Remaining settings groups, camera activation/runtime controls, foul/legal-ball and timeout work are still open. Original corpus untouched; stable pre-session DLL/saves backups remain unrestored.

Development34 combined final-game and broker-restart regression

  • Native34 run c8dad432193f882a434d8bf7aa4dd3de completed Spurs28–Heat23 in first overtime, with regulation22–22. Original final UI matches all regulation splits and aggregate OT6–1. Raw final period6 is an advanced transition field, not evidence of second overtime. A transient commentary claim of double overtime was corrected. No score/clock writes; paused camera tests restored, one normal keyboard timeout called and CPU control restored.
  • Binding startedQ1 at119.8718s/zero score, source boundary43. All3,260 subsequent records through final boundary3303 are present;336 player-counter deltas and team-only turnover deltas reconcile with endpoint totals, external actor mappings agree, zero capture flags/faults/adapter errors. One immutable result on timeline1; whole-match event completeness remains false because binding followed the tip. live-record-validation34.json, live-34-observed-final.json, live-34-final-ui.png. This is HTTP source-sequence/endpoint verification, not independent newest-build private-ring parity.
  • Research34 compiled archive has22 code/build files byte-identical to workspace and omits the private localization observer present in research33. Earlier33 label captures supporting five-second inbound mapping remain separate evidence. native-source-parity34.json; exact DLL62ba0d046faa40d012ee6ec1bfb58d60da63fd2041b451235cd76db47ce0f78b.
  • Broker34→34a restart preserves exact immutable result, per-consumer acknowledgement, independent consumer delivery, durable cursor and game identity; no adapter errors. Initial test script used incorrect result field revision; fixed to public result_revision before acknowledgement/restart. Game/native source was unaffected. restart34a.json.

  • Broker34b fixes two issues found during the final reconnect check: capability reads now hold the engine lock across snapshot/SQLite access, and Windows ConnectionAbortedError closes the response without attempting a second500. An unlocked local concurrent probe exited withSIGBUS(138); it did not establish the exact cause of the prior Windows500. A locked stress run passed16,000 capability queries concurrent with1,000 ingests.209 tests pass on Mac/Windows, including request blocking under database ownership and aborted-stream behavior. Live34b result/ack/cursor restart and exact SSE/HTTP reconnect parity pass. Native DLL unchanged. capability-concurrency34b.json, python-tests34b.log, stage-test-34b.log, restart34b.json, reconnect34b.json.

Development35: pregame configuration and independent examples

Native35a/ABI11 adds eight guarded pre-simulation exhibition controls, including roster-scoped arena and both playbooks.212 live command cases pass; all eight match the original menu, and a loaded one-minute-quarter game renders New Orleans Arena and copies Pelicans/Suns books into its runtime banks. The game finished14–6;5,370 live snapshots have zero adapter errors. The independent client committed an exact final result before ACK; browser display matches final score and clears when game data becomes invalid. Automatic roster/team selection and launch remain manual. See pregame evidence, final verification and package verification.236 tests pass Mac/Windows; game integration Windows only. Original save/cache files restored after normal exit, broker stopped,35a left installed in the working copy.