Commit Graph
210 Commits
Author SHA1 Message Date
Jonas VolmanandClaude Opus 5 cf097d7f70 Wave 7: four functions strict exact (hud_unit, flags, path, motion_sensor)
- _hud_render_unit_interface (3,504 B): January's local-player re-read for
  the HUD state, flag-macro draw flags, advancing shield color pointer,
  named auxiliary panel, direct flash-time indexing (park reopen)
- _flag_render_proper: loop counters reset in the for-initializers
- _path_state_begin: single exit, distance_squared3d + square_root, a
  destination pointer shared by the helper and the error text (park reopen)
- _blip_begin: January's caller pushes a zero second argument the callee
  never reads; the parameter is added with a provisional name and comment
  (park reopen). The caller park _render_motion_sensor is re-measured
  (non-exact before and after).

Rejected: _render_debug_trigger_volumes (duplicated arm stores), leaf_map
rows (owner-declined P7 projection_from_vector3d body),
_closest_point_to_attractor (point_from_line3d COMDAT).
Stable diff vs 9062b1e96: 0 regressions; parks 230 -> 226.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 15:55:20 -07:00
Jonas VolmanandClaude Opus 5 d6df15102d Wave 1: four functions strict exact (moving, decals, ui_widget, projectiles)
Reviewed reconstructions, each strict exact in its whole-TU gate with
zero inherited losses, guard passing and no new owners:
- _actor_move_initialize: short sense-ray index (as the sibling loop)
  and direct indexed stores instead of per-iteration pointer aliases
- _decal_sprite_get_bounds: edge-relative (0.0f - registration) extents,
  matching the adjacent (x1 - registration - x0) extent spelling
- _search_and_replace: single-exit result instead of an early return
- _projectile_accelerate: rotation axis/magnitude scoped to the spin
  block (reopens its park)

Rejected in review: _render_ui_widgets and _render_ui_widgets_postgame
(exact only with duplicated identical should_render arms).
Stable diff vs 9062b1e96: 23 functions gained, 0 regressions; parks 261.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:36:32 -07:00
Jonas VolmanandClaude Opus 5 26601453ef Land the final Tier B wave: three structural park reopens (+477 meaningful)
The owner-authorized final implementation wave worked only the ten Tier B
functions of the research campaign, each a structural defect confirmed by two
independent lenses; census first, five evidence-driven shapes at most, stop at
allocation, scheduling or x87 ties. Three closed, seven did not.

- hud _temporary_hud_draw_reticle: January does a SIGNED `% 16` (`and eax,
  0x8000000f; jns; dec; or -16; inc`) where ours did `and eax,0xf`. NUMBEROF
  yields size_t, so `next_point_index % NUMBEROF(points)` was an unsigned modulo;
  a signed named count NUMBER_OF_TEMPORARY_HUD_RETICLE_POINTS sizes the array and
  bounds the loop. It fixes the type, not a cast. The three point stores become
  one set_real_point3d call (laws_w2 A4).
- weapons _weapon_can_be_fired: single-exit form (A3). It writes `result = FALSE`
  in two arms, which I tested against the identical-fake-branch prohibition: the
  merged `if (age >= 1.0f || chain)` spelling is residual, while January emits a
  SEPARATE physical FALSE exit for the age test (`jne; pop edi; xor al,al; pop esi;
  pop ebp; ret` at 0x35-0x3c) before game_engine_running is ever called. Two
  distinct rejection blocks is laws_w3 A26's admission criterion, unlike the
  rejected _bink_query_analog_controller_buttons, whose edges share one block.
- rasterizer_transparent_geometry _rasterizer_transparent_geometry_initialize:
  single exit `success = success && aux_buffer()`. Semantics are unchanged; the
  error block is the last statement before the call, so the short-circuit sits
  exactly where the early return did.

All three parks removed. Not closed and reported in the wave ledgers:
_path_state_traverse, _flag_update, _bitmap_2d_sharpen, _light_volume_render,
_actor_stimulus_prop_acknowledged, _stack_memory_pool_allocate,
_particle_system_new_particle_jet.

Full ninja, parks 268 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 15 / 9,504 padded, regressions 0;
fake_match_scan 0 leads on all three files, matching HEAD.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 08:49:04 -07:00
Jonas VolmanandClaude Opus 5 6d6529d987 Land two owner-ruled closures: debug player text extent and RGB pixel helper
Both admitted by explicit owner rulings on 2026-09-16; each lands as the minimum
hunk after a whole-TU gate, and neither involves undefined behaviour or steering.

render_debug _render_debug_player (+266, park reopened and removed). LAW D, from
the research campaign's frame study, proves January's `sub esp,0x404` cannot come
from a dead local or any other declaration - a dead whole object costs 0 frame -
and only a declared text extent of 1025-1028 yields it. Written in the house
idiom as a named capacity plus its terminator, added to the file's existing
constants enum rather than a new block: `MAXIMUM_RENDER_DEBUG_PLAYER_TEXT_LENGTH =
1024` and `char text[MAXIMUM_RENDER_DEBUG_PLAYER_TEXT_LENGTH + 1]`. The tree
already uses `[X_LENGTH+1]` string buffers 70+ times. This ruling supersedes the
pre-LAW-D park rejection of enlarging the buffer. Whole-TU gate 34 -> 35 with only
this row changing; the sibling park _render_debug_add_cache_entry is unchanged; the
added enumerator shifted no declaration-count-keyed row; fake scan 0 leads.

hud_draw _real_rgb_color_to_pixel32 (+181, previously unwritten). A genuine
bitmaps_inlines.h color-conversion helper, admitted under house rule 10. The owner
ruling rests on affirmative hand-written-assembly evidence in January's bytes -
dword fistp and fmul on non-top x87 stack slots (fmul st(3),st(0)) - not merely on
asm being able to force a match. The permission covers this one body only; it does
not authorize _real_argb_color_to_pixel32, _fast_ftol_C or assembly elsewhere.
Whole-TU gate 20 -> 21 exact, including _hud_draw_meter, which calls it three
times. fake_match_scan: 3 leads, 2 of them pre-existing at HEAD (the naked
get_return_eip); the only new lead is this admitted block.

Full ninja, parks 271 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 12 / 8,992 padded, regressions 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 07:43:21 -07:00
Jonas VolmanandClaude Opus 5 3083f800b5 Reopen four parks: detail objects, character draw, hud sound and bink cache
Wave n1 of the next-150K lane (fresh structural portfolio at ae10935da).

- structures _structure_render_detail_objects (+1136): reopened with the natural
  array initializer, which the w2 verifier asked for when it rejected the
  hand-written a[0]=0/memset expansion (R6).
- draw_string _bitmap_draw_character (+944).
- hud_sounds _hud_play_sound (+352): closed by removing the one-use index alias
  and reading sound_indices directly (A5), NOT by the volatile/goto body that the
  park record shows was deliberately replaced.
- bink_playback _bink_free_texture_cache (+96): the park premise was the repo's
  own match_dassert wrapper; the user-supplied Bungie random_math.c spells the
  same two sites vassert, and the tree is 874 match_vassert to 14 match_dassert.
- structures _structure_get_planar_fog: zero-credit remeasure. Adding the
  discarded fog-plane lookup January provably executes (its 15th
  _tag_block_get_element_with_size relocation at +0x16d) closes both structural
  tags; 448/448 and 15/15, residual now one register-naming window.

Rejected by the verifiers and not landed: _bink_alloc@4 (exact only with an __asm
block in a pool allocator - house rule 10 allows asm only for evidenced
helper/math routines), the progress_bar _code_000d16d0 rename (standing hold),
and the _portal_hull_from_points remeasure. wind _wind_variance_get is HELD for an
owner ruling (see its ledger).

Full ninja, parks 274 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 4 / 2,528 padded, regressions 0; fake
scan 0 leads.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 21:43:58 -07:00
Jonas VolmanandClaude Opus 5 6c3fef1a24 hud: 1 function(s) strict exact
Wave w2 landing, adversarially verified. park reopens: _hud_draw_screen; parked body refreshes (zero credit): _hud_show_action_response. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 07:39:45 -07:00
Jonas VolmanandClaude Opus 5 6ddd4c8a98 first_person_weapons: 4 function(s) strict exact
Wave w2 landing, adversarially verified. park reopens: _first_person_weapon_set_visibility, _first_person_weapon_switch_weapons, _first_person_weapon_render_update, _first_person_weapon_message. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 4 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 07:39:44 -07:00
Jonas VolmanandClaude Opus 5 ae373843a0 ui_widget_game_data_input_functions: 1 function(s) strict exact
Wave w1 landing, adversarially verified. park reopens: _network_pregame_status_screen_update; zero-credit fuzzy: _player_profile_update_cache_for_nwide_list, _splitscreen_pregame_status_screen_update. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. Note: the two zero-credit fuzzy bodies are credited by objdiff-shape in the semantic report but are NOT strict exact; they are excluded from the lane's strict accounting. 1 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:04 -07:00
Jonas VolmanandClaude Opus 5 6fba495047 ui_widget: 1 function(s) strict exact
Wave w1 landing, adversarially verified. exact: _widget_instance_render_column_list. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:03 -07:00
Jonas VolmanandClaude Opus 5 800179a206 motion_sensor: 3 function(s) strict exact
Wave w1 landing, adversarially verified. park reopens: _motion_sensor_blip_set_type_and_size, _should_draw_object, _blip_type_get. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 3 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:02 -07:00
Jonas VolmanandClaude Opus 5 86d55bf7b5 hud_weapon: 1 function(s) strict exact
Wave w1 landing, adversarially verified. exact: _hud_render_weapon_interface; zero-credit fuzzy: _crosshairs_draw. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:01 -07:00
Jonas VolmanandClaude Opus 5 b22cc0a420 hud_messaging: 2 function(s) strict exact
Wave w1 landing, adversarially verified. park reopens: _scripted_hud_get_timer_ticks, _scripted_hud_set_objective. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 2 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:00 -07:00
Jonas VolmanandClaude Opus 5 72b9cb3b74 hud_draw: 4 function(s) strict exact
Wave w1 landing, adversarially verified. park reopens: _hud_draw_bitmap_internal, _hud_draw_bitmap_direct, _hud_draw_bitmap_with_meter, _get_flash_color. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0. 4 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 02:51:00 -07:00
Jonas VolmanandClaude Opus 5 94f7bbb80c Restore bitmap_data/bitmap_group owner types and bitmap helper prototypes; reopen five bitmap_extract parks exact
bitmap_group.h: signed depth/mipmap_count and union point2d registration_point (HCEA types, January movsx reads and whole-point copies), respelled in its four consumers. bitmaps_mipmap.h declares bitmap_get_max_mipmap_count (fixes an implicit declaration); bitmap_group_internal.h declares bitmap_group_add_bitmap (bitmap_group.h placement regressed decals by declaration count). bitmap_compress_to_mipmap takes the transparent-colour reference pointer January passes. Header renames and their consumers are one measured packet. Unparks _extract_add_bitmap, _extract_build_debug_plate, _extract_mipmaps_to_bitmap, _extract_pixels_from_mipmap, _extract_pixels_to_mipmap (+4,544 padded); re-baselines parked _bitmap_group_add_bitmap (same 992/59). Adversarially verified; 45 bitmap_group.h consumers rebuilt, 0 regressions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:37:53 -07:00
Jonas VolmanandClaude Opus 5 ad4ffda4f6 ui_widget: single-exit focus flag closes load_children_recursive
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:39:15 -07:00
Jonas VolmanandClaude Opus 5 7dd88aa05a hud_draw: close static_element and current_weapon_definition; overlay exact pending theta rename
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:39:14 -07:00
Jonas VolmanandClaude Opus 5 828625092c Match decal_insert and motion_sensor assert/literal text to January .rdata
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:19:56 -07:00
Jonas VolmanandClaude Opus 5 40e1b79646 Reconstruct virtual_keyboard_render_internal as fuzzy source
Zero exact credit. The previously unwritten private renderer lands as a
complete January-bytes reconstruction at 1584/95 against 1616/95, with the
44-entry keyboard_rect data owner now matching January's .data bytes.
Residual: January pins edi=-1 across the draw calls and keeps three
separate sticky-bitmap switch arms; its loop bound is a csplit relocation
alias (_item_update_section == _keyboard_rect+352), so strict exactness is
not reachable from C. font_character is TU-local with disclosure, matching
the identical copies in draw_string.c and rasterizer_text.c. The parked
_virtual_keyboard_select is unchanged. virtual_keyboard: 18 exact / 2 residual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 14:18:14 -07:00
Jonas VolmanandClaude Opus 5 0501bd06ee Match hud_draw_meter and hud_draw_numbers
+2 strict exact functions / 3,168 padded / 3,116 meaningful bytes (both were
unwritten). hud_draw_meter clamps alpha with MAX/PIN over fast_ftol_C and
follows January's branch order; hud_draw_numbers uses January's assert text
operand order, abs() and digit-before-leading-zero ordering, and a 16-bit
point2d pen. Prototypes were already owned by hud_draw.h. The hud number,
number element, meter-flag and meter-parameter definitions are TU-local with
a disclosure comment: identical copies already exist in hud_messaging.c,
hud_nav_points.c, hud_weapon.c (active lane) and rasterizer_xbox_dynavobgeom.c,
so header consolidation is queued until hud_weapon.c is free.
The asm-only pixel32 converters and fast_ftol_C remain unwritten (owner
decision). hud_draw: 13 exact / 7 residual / 3 unwritten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 14:17:53 -07:00
Jonas Volman c3e257e9ab Remove unsupported UI reload speculation 2026-09-13 11:13:42 -07:00
Jonas VolmanandClaude Opus 5 978a15a928 Match four UI widget load, initialize and reload functions
+4 strict exact functions / 1,072 padded bytes:
_widget_instance_reload_recursive and _ui_widget_reload_by_tag (the January
static no-op COMDATs, HCEA signatures, called from event_handler_dispatch
under their reload flags), _widget_instance_initialize (header stores in
struct field order) and _ui_widget_load_by_name_or_tag (single exit; the
controller switch writes the parameter home as January's 0x14 frame proves).
ui_widget: 89 exact / 13 residual.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 11:03:12 -07:00
Jonas Volman 5d3444f799 Reconcile eighth 10K exact source batch 2026-09-13 02:47:59 -07:00
Jonas Volman eb61c0f746 Reconcile seventh 10K exact source batch 2026-09-12 17:23:46 -07:00
Jonas Volman d6250fa794 Reconcile sixth 10K exact source batch 2026-09-12 12:36:44 -07:00
Jonas Volman a565219da1 Reconcile fifth 10K exact source batch 2026-09-09 22:29:33 -07:00
Jonas Volman 7a1d0d91d7 Finalize fourth 10K reconciliation batch 2026-09-09 18:16:10 -07:00
Jonas Volman c0673114e4 Match weapon function exports exactly 2026-09-09 11:53:29 -07:00
Jonas Volman 7ef54b1145 Preserve UI profile fuzzy frontier 2026-09-09 07:12:05 -07:00
Jonas Volman db720270ec Reconcile HUD bitmap retrieval pair 2026-09-09 07:05:53 -07:00
Jonas Volman 105d9acaac Reconcile 10K exact-byte Claude batch 2026-09-09 00:07:34 -07:00
Jonas Volman 4ebe0ff6ec Reconcile HUD geometry and sound caller graphs 2026-09-08 20:28:22 -07:00
Jonas Volman 292cc29b86 Reconcile final Fable and Opus source batch 2026-09-08 17:34:52 -07:00
Jonas Volman 303c1d55a7 Reconcile Bink UI network HS and sound graphs 2026-09-08 12:49:14 -07:00
Jonas Volman f7afb70475 Reconcile UI, weather, aim, and render lanes 2026-09-08 08:23:20 -07:00
Jonas Volman 24092ea0f8 Reconcile Interface and HS runtime leaves 2026-09-08 06:32:02 -07:00
Jonas Volman f8c7090786 Reconcile Claude script and profile packets 2026-09-08 05:18:03 -07:00
Jonas Volman a7a32f6c75 Reconcile Claude owner packets and add 10K exact bytes 2026-09-08 03:21:09 -07:00
Jonas Volman 458ba910cc Reconcile PlayerProfile and S3TC with honest fuzzy retention 2026-09-07 21:38:50 -07:00
Jonas Volman 62b3cec7c5 Reconcile ProgressBar base-layer wrapper with private ABI audit 2026-09-07 19:27:32 -07:00
Jonas Volman 19765bb76b Reconcile Fable natural jump aim and HUD crosshair owner 2026-09-06 02:32:30 -07:00
Jonas Volman dde782c266 Reconcile Fable vehicle control and HUD frame helper 2026-09-06 01:44:43 -07:00
Jonas Volman 6132b8d0ee Reconcile actor fleeing and transport client lifecycle with exact BSS 2026-09-04 20:56:17 -07:00
Jonas Volman 18238d9065 Recover exact HUD drawing leaves and record conversion precision evidence 2026-09-04 18:12:40 -07:00
Jonas Volman 2f57d09057 Reconstruct unit HUD renderer with exact initializer and honest ownership gates 2026-09-04 17:54:38 -07:00
Jonas Volman fc8b19906d Prepare authenticated HUD renderer APIs and reconcile rasterizer callers 2026-09-04 17:33:19 -07:00
Jonas Volman 4c862ae20d Recover input and unit HUD sounds with source-authentic admission 2026-09-04 17:08:42 -07:00
Jonas Volman d556ba5304 Recover HUD damage and device/input updates with verified owners 2026-09-04 16:33:36 -07:00
Jonas Volman 4795da4089 Recover device, input, HUD and game leaves without exact regressions 2026-09-04 15:43:51 -07:00
Jonas Volman aa1eee2ea2 Reconcile Opus ui_widget pool owner 2026-09-04 04:03:04 -07:00
Jonas Volman 7d74519b10 Reconcile Opus network client reconstruction 2026-09-04 02:31:03 -07:00