Commit Graph
158 Commits
Author SHA1 Message Date
MrBruh 1bcd57afe4 Merge branch 'bnunu:main' into main 2026-09-28 14:46:17 +13:00
Jonas Volman 59757f4263 Reconcile approved type ownership, static locals and source disclosures
Independently gate storage + K, OQ-4 P-a/P-b1, four static-local packets and comment-only disclosures. Preserve all 7641 exact owner rows, 71 valid parks and 1161 passing tests; code/data credit unchanged. G and game_engine admission remain held because current canonical loses populate_statistic_buffer. Existing collision static-local repair is not duplicated. No donor tree, held candidate, scorer or private asset imported.
2026-09-27 05:17:27 -07:00
MrBruh 0f38fea378 Merge remote-tracking branch 'upstream/main' 2026-09-27 16:57:47 +13:00
Jonas VolmanandClaude Opus 5.5 a6d8572861 Reconcile exact bitmap allocation and biped autoaim topology
Independently verified donors 8202ac13 and a448c595. Natural single-exit bitmap tail and first-party-correlated outer-arm width stores yield 714 meaningful / 736 padded bytes with zero inherited exact losses. Retire precisely their two freshly exact scheduling parks. No whole-object admission, helper/storage changes or new policy exception.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 20:40:10 -07:00
MrBruh c1fa519662 Avoid hitting floating point precision error on Windows platform 2026-09-26 19:26:51 +12:00
MrBruh ebb0eac50b Port decomp to Linux 2026-09-26 12:15:09 +12:00
Jonas VolmanandClaude Opus 5.5 cdc79e785a vehicles: alien fighter exact through the genuine cross_product2d call
Owner ruling 2026-09-25 narrowly reopens the fighter on new first-party and
link evidence. The hand-written 2D yaw expression becomes cross_product2d
over the two /Od-attested 3D-to-2D views. The body is debug exact, verbatim
in Oct-2001 2276P and matches the Sept-2001 cache.exe map body. The new
SELECT_ANY _cross_product2d now passes the selected-provider link against
actor_combat. +1,088 padded; vehicles 38/39.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 00:54:32 -07:00
Jonas VolmanandClaude Opus 5.5 fd8bf04746 bipeds: find_nearby_support_surface exact; January file-static storage
Approved packets, no owner ruling needed:
- real_math.h plane3d_negate gets its attested body (negate_vector3d plus
  the d term; /Od 0x56d630 and the HCEX_Release line table), together with
  the render_objects /Od shadow-volume plane pair and the bipeds genuine
  helper calls. _biped_find_nearby_support_surface is now exact (+544). A
  467-unit header review lost 0 exact rows. The bipeds park is retired, and
  render_cameras _render_camera_build_frustum is refreshed to
  3408/112/d42e420f (target unchanged).
- biped_falling_danger, update_airborne, snap_facing, update_moving and
  fudge_vectors become file-static, as the Sept-2001 map STATIC list and the
  retail private ABI show. Their prototypes leave bipeds.h and symbols.json
  marks them static. This is zero credit; bipeds pdb_storage goes to 0. The
  parked ai _ai_test_ballistic_line_of_fire is rebaselined for the resulting
  declaration-count drift; no exact row is lost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 00:11:37 -07:00
Jonas VolmanandClaude Opus 5.5 1cd5e4ede2 R2 batch 2: reviewed zero-credit ownership/storage packets; two '$'-defect data entries
All packets passed a precedent audit and an independent adversarial review.
No object changes status.
- Storage per cachebeta publics (source static + symbols.json rows):
  - bink_playback: four globals;
  - weapons: 11 rows + weapon_magazine_finish_reload;
  - object_lights: 4 helpers; should_render_lights is the /Od-attested call and
    its prototype leaves the public header;
  - vehicles: _update_turret_physics;
  - weather_particle_systems: one_over_char_max is external (cachebeta public,
    HCEX Global); its globals are static;
  - rasterizer_xbox_debug: 8 D3DINLINE wrapper rows (already Matching: audit
    FAIL(8) -> PASS, pdb 8 -> 0).
- draw_string: the invented external draw_string_globals aggregate (pads, blob,
  #define aliases) becomes four HCEX-attested file statics in /Od declaration
  order with = { 0 } (a595bbc2 precedent); typed multitexture params.
- render_debug: three rule-6 hand expansions become real point_from_line3d
  calls (ruling #1/#2); the opaque vehicle view gives way to struct
  vehicle_datum + vehicle_datum_try_and_get; the six debug_* toggles become
  tentative definitions (COMMON evidence).
- vehicles: the TU-wide REAL_MATH_EXTERNAL_POINT_FROM_LINE3D define is gone and
  the pathfinding hand expansion becomes the genuine call (ruling #1).
- rasterizer_xbox_profile V1R (reviewer-amended): byte-inert /Od parameter
  order, the BUG marker comment, detail_objects via the rasterizer_xbox.h API,
  and a rejection text that keeps the SDK-table policy question open.
- semantic_data_matches.json: single-section '$'-defect entries with
  allow_incomplete_unit for projectiles _projectile_update_section (1,548 B) and
  object_lights _lights_section (1,541 B) (leaf_map / editor_flying_camera /
  race precedents).

Gate (full ninja, objdiff 3.3.1): objects 384 (unchanged), code unchanged,
data +3,089; stable diff 0 regressions; parks 83/0/0; admission 10/0/2/0; fake
scan 26; pytest 1159 passed; diff --check clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 15:12:09 -07:00
Jonas VolmanandClaude Opus 5.5 b9a8d587a0 Batch 3: admit twelve objects; four exact functions; verified storage and data fixes
Objects admitted (Halo 363 -> 375), each with an independent adversarial review:
units (first-party names incl. the reviewer-corrected unit_vectors_are_valid, 49
static flags, '$'-defect data entry), collision_debug (/Od helper calls),
render_objects (b807f9f6 provider packet), editor_flying_camera
(_editor_camera_set_position_and_roll 432, storage + grouped entry re-pin),
rasterizer_xbox_shadows (shadow_model_draw 688), cache_files_windows
(open_cache_files 752), light_volumes (light_volume_render 912, reviewer-amended
/Od declaration order), actor_firing_position, path, biped_limp_noodle (HCEX file
statics), leaf_map and model_animations (/Od helper calls replace hand expansions).

Zero-credit/data: path_structure_bsp HCEX tables (+200 data), hud_nav_points
storage, first_person_weapons patch A (park re-baselined).

Gate (full ninja, objdiff 3.3.1): stable diff +4 strict / 2,784 padded, 0
regressions; parks 89/0/0; admission 11/0/5/0; fake scan 26 (new lead is the
/Od-attested empty then-arm in the still-parked fpw update); pytest 1157 passed;
diff --check clean. Ledger: docs/object_matching_logs/claude_fifty_objects_20260925.md
(adds the Layer 2 owner-ruling disclosure, tallies and held items).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 23:53:28 -07:00
Jonas VolmanandClaude Opus 5.5 e942f3385c Own realcmp in real_math.h and match convex_hull2d (770 meaningful bytes)
realcmp appears in January's own assert strings in four objects
(actors, actor_moving, matrix_math, biped_limp_noodle), so it is a
shared Bungie math macro. Define it once in real_math.h's macros
section, using an existing blank line so no header line number moves.
Blank the four identical TU-local copies in actors.c, actor_looking.c
(with its now-stale comment), matrix_math.c and biped_limp_noodle.c.
They are blanked, not deleted, so no __LINE__ moves.
realcmp_epsilon is untouched.

_convex_hull2d returns to direct points[index] indexing. The /Od build
(0x6b9250) reads the parameter array at every site ([eax+edx*8+4]),
with no pointer locals. It uses realcmp at the two degeneracy tests.
The function is now strict exact: 784 padded / 770 meaningful bytes,
25 relocations, normalized sha256
49124afa1d48d20fe6b36cd5c98861de7d27d9ec0109cf7d8dba8812c5464e77. With
the plain fabs(...) < _real_epsilon spelling it is not exact, so the
genuine macro is load-bearing. No new view cast, no new helper
definitions (nothing to link). _convex_polygon2d_clip_to_plane is not
pursued.

The now-stale _convex_hull2d park is retired with
tools.campaign.unpark --write (1 removed, 102 retained).

Verification: full ninja; all 273 real_math.h consumers rebuilt with
no C4005/C4013; stable diff vs frozen 8,245-function baseline
+2 (_collision_debug_render 4,192, _convex_hull2d 784 padded) and 0
regressions; parks 102/0/0; admission audit 13/0/7/0; fake-match scan
unchanged on all six files; python -m pytest -q tools 1154 passed;
git diff --check clean. objdiff 3.3.1 as canonical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 15:58:34 -07:00
Jonas Volman 5e81dabff0 Close five Halo objects with verified shared-helper ownership 2026-09-23 10:38:14 -07:00
Jonas Volman 4f4c85021d Reconcile Lane C with canonical house-rule audit
Integrate verified source and data progress; exclude unproven COMMON ownership, held UB/asm forms, and address-named data credit. Stable sweep: 23 exact functions gained, zero lost.
2026-09-22 23:12:40 -07:00
Jonas VolmanandClaude Fable 5.1 f0b191bc68 Lane B: three exact functions under the owner's all-inlined COMDAT admission (+2,545 meaningful / +2,560 padded)
New strict exact:
  ai/actor_type_flood :: _actor_type_flood_desire_shamble  1296  (object now 2/2)
  units/vehicles      :: _update_human_plane_physics        928
  ai/path_smoothing   :: _find_tangent_point                336  (object now 6/6)

OWNER ADMISSION (2026-09-21), quoted: "Sufficient: admit the class. Require a
genuine shared-header __inline, byte-identical COMDAT, strict-exact caller, full
ownership/build sweep, and zero regressions. No hand expansions."
Each landing newly emits ONE header-inline COMDAT that January's split credits
to another object. Conditions verified per landing by scratch/orch/admit_check.py:
  _real_random_range   32 B  math/real_math.h  January owner ai/action_alert      byte-identical
  _interpolate_scalar  64 B  math/real_math.h  January owner game/player_control  byte-identical
  _set_real_point2d    32 B  math/real_math.h  January owner ai/path_obstacles    byte-identical
All three callers are strict exact; no hand expansion is used anywhere in them.

The evidence the owner accepted:
 (1) Compiler (scratch/orch/inline_lab.py): VC7 13.00.9254 with the campaign's
     real flags (/O2 /Oy- /DDEBUG /Dxbox) emits the out-of-line COMDAT for a
     non-static __inline whose EVERY call site inlined, and emits nothing when
     the inline is unused - so emission implies use in that TU.
 (2) January's own image (scratch/orch/inline_owner_census.py): of 104
     header-inline COMDATs, 65 are owned - per January's PDB section
     contributions - by an object that holds ZERO references to them (e.g.
     _cross_product2d in actor_combat.obj). Owners cluster at the earliest
     link-order TUs, as "folded survivor = first emitter" predicts. The split's
     single definition is therefore a link-fold artifact, not evidence that the
     other TUs did not emit the COMDAT.

Source evidence (all read from the first-party /Od build first, then confirmed
in January's bytes):
- _actor_type_flood_desire_shamble: result/switching flags zeroed at the top, all
  six `result = FALSE` arms, chain-assigned counters, `--timer == 0`, per-arm
  two-argument helper calls, MAX with double evaluation; `< 15.0f` confirmed by
  January's `test ah,5`. real_random_range is byte-REQUIRED (a hand expansion
  measures 1280 != 1296; January shows the inlined parameter temporaries).
- _update_human_plane_physics: uses the real interpolate_scalar helper.
- _find_tangent_point: every call is a real real_math.h helper including
  set_real_point2d; store-by-store spellings are residual and worse than baseline.

Held alongside (NOT landed): _update_alien_fighter_physics_new (1,088, exact in
scratch) - needs a NEW 3D->2D view cast whose site is not /Od-attested; owner:
"keep the fighter held".

Config: config/parked.json - _actor_type_flood_desire_shamble entry removed
(now exact). Parks 173 / 0 / 0. No header, symbols.json, flag or tool change.

Verification: full ninja all_source progress semantic_progress pass (Code
1451421 -> 1453966, 7306 -> 7309). stable_verdicts vs the FROZEN baseline:
gained 18 / 10128 bytes, regressions 0. All 11,060 function and 1,706 section
report rows: 0 lost 100%, 0 missing. Guard, fake scan, line endings and the
new-punning-cast screen clean. git diff --check clean.
Reviewer: independent adversarial agents confirmed each body EXACT and credible
and held them ONLY on the ownership question the owner has now ruled on.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 11:27:15 -07:00
Jonas VolmanandClaude Fable 5.1 479341043f Lane B wave 1: zero-credit fuzzy source corrections (infection, bipeds, physics)
ZERO exact credit. Better-evidenced source retained per house rule 11; none of
these functions is parked, so no park entry moves.

- ai/actor_type_infection.c _infection_swarm_control (3,616 B): partial rewrite
  from January's bytes. Baseline was 256 bytes short with a wrong frame and a
  wrong constant multiset (missing 1.0f, -1/15, (double)1e-4f, +/-pi/2; an extra
  _normalize3d call). Now residual [sha] ONLY: size 3616 == 3616 and relocations
  104 == 104. Side effect: the unit's .rdata section (228 B) now matches January
  (data +228, not counted as Lane B code credit). Adds the include of
  ai_scenario_definitions.h for the _ai_atom_move_facing_* enum the recovered
  obey-facing switch needs (no header edited).
- units/bipeds.c _biped_update_moving (4,080 B): four in-function corrections,
  each read from January: `0.01f` not the double `0.01` (January's constant is
  __real@3f847ae140000000 = (double)0.01f); `!(fabs(dyaw) < _real_epsilon)`;
  the two ground_tangential_* stores in January's order; no (short) cast on
  actor_index. The reviewer measured the worker's file-scope `realcmp` macro as
  byte-inert and it was DROPPED (strip test). Still residual [size, sha].
- physics/physics.c _physics_update_old (5,168 B): rotation_axis is assigned
  immediately before normalize3d, after object_translate - a store cannot cross
  a call, so its position relative to the call IS January's statement order.
  The reviewer REJECTED the rest of the physics candidate (21
  PHYSICS_POINT_FROM_LINE3D macro sites and body rewrites) pending an owner
  ruling; only this two-line change lands.

Verification: same full build and sweeps as the preceding strict commit -
0 exact regressions, 0 report rows lost, parks 180 / 0 / 0.
Reviewer: independent adversarial agent, ACCEPT_FUZZY_ZERO_CREDIT for each;
partial-landing files produced by the reviewers and re-verified by the
orchestrator (unitcheck NO LOSS, guard, ownership, fake scan, line endings).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 07:26:50 -07:00
Jonas VolmanandClaude Fable 5.1 01e16607f0 Lane B wave 1: six strict-exact functions (+2,727 meaningful / +2,784 padded)
New strict exact (unit :: function, padded bytes, relocations):
  game/aim_assist        :: _local_player_aim_assist                        368  12
  game/game_engine_king  :: _king_calculate_hill_state                      448  32
  units/unit_dialogue    :: _unit_describe_speech                           272
  units/unit_dialogue    :: _unit_make_damage_sound                         784
  units/biped_limp_noodle:: _biped_limp_noodle_relax_nodes_onto_environment 256
  units/vehicles         :: _create_ghost_effect                            656
game_engine_king is now 29/29 on the function board (object NOT admitted: its
.bss naming is owner-held and its .data is blocked, see below).

Evidence per function:
- _local_player_aim_assist: the later Win32 /Od build (halo_cache_symbols.exe
  fn 0x589420) and its RTC descriptor attest, independently of any compile, the
  result local initialised first with ONE return, the nested
  player_control_get_zoom_level argument, the real subtract_vectors3d call with
  RTC names velocity/target_velocity/magnetism_velocity, and two STORED pointer
  locals. /Od neither invents locals nor inlines. Closed on the first compile
  after the evidence; every element strip-tested alone -> residual.
- _king_calculate_hill_state: the LAW Z negative-set member. January has ONE
  hill_controlled_count == HILL_CONTROL_TIME test at the bottom, not three; the
  team arm counts red/blue with the uncontrolled arm in the middle; each arm owns
  its data_iterator. That restores the two missing _king_globals references and
  January's pinned zero register with no zero-store steering.
- _unit_describe_speech: the one board function whose loop differs by pure shape
  (January top-tested). A done-flag `while (!done)` loop, the Marathon idiom.
- _unit_make_damage_sound: single-exit law (January 1 ret, ours had 2); the body
  is guarded by dialogue_index != NONE instead of an early return.
- _biped_limp_noodle_relax_nodes_onto_environment: accessor-binding law - the
  object_get() result is bound to a local (non-destructive lea), as January does.
- _create_ghost_effect: the marker count is TWO shorts summed in the loop test
  (hover_marker_count from the call, jet_marker_count = 0). First-party
  attestation: the later unoptimised debug build (halo_cache_symbols.exe fn
  0x8f5530) stores the call result to one short, zero-initialises a SECOND
  short, then marker_index, and its loop test is movsx idx / movsx a / movsx b /
  add / cmp; the sibling create_pelican_effect (0x8f5c90) has the same three
  slots with the second one counting "jet thrusters". January's store order
  (`mov [ebp-4],0` then the call result) is exactly that. The zero-valued local
  is therefore an attested source variable, not a steering dummy; without it the
  body is the old residual. Flagged in the handoff for owner awareness.

Zero-credit riders in the same files (no credit claimed):
- vehicles.c _update_alien_fighter_physics_new: credible restructure with scoped
  blocks and real names; still residual [relocs 33!=32, sha]. The reviewer
  measured `real const` thrust locals as byte-neutral, so the plain literals land.
- game_engine_king.c: adds the MISSING `struct game_engine king_engine` table
  (declared in the header, referenced from game_engine_list.c, defined nowhere).
  136 bytes, 0 content bytes differ from January, 23/23 relocations identical.
  objdiff still scores the section <100%: January leaves the "king" literal
  undefined in this object and `$`-literal relocations match only by combined
  address (same cause as race_engine). Correct source, zero data credit.

Config: config/parked.json - four entries REMOVED (now exact):
_king_calculate_hill_state, _biped_limp_noodle_relax_nodes_onto_environment,
_unit_describe_speech, _unit_make_damage_sound. Parks 184 -> 180, 0 stale, 0
invalid. No header, symbols.json, flag, tool or semantic-override change.

Verification: full ninja all_source progress semantic_progress pass (Code
1443979 -> 1446706, 7291 -> 7297 functions). stable_verdicts vs the frozen
baseline: gained 6 / 2784 bytes, regressions 0. Row diff of all 11,060 function
and 1,706 section report rows: 0 rows lost 100%. Admission audit 19/0/8/0.
_point_from_line3d guard, ownership (newly defined symbols vs January) and
fake_match_scan: clean on every changed file. git diff --check clean.
Reviewer: an independent adversarial agent re-gated every candidate from
scratch and returned ACCEPT_EXACT for all six; orchestrator re-verified.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 07:26:50 -07:00
Jonas VolmanandClaude Fable 5.1 7583df5d62 Lane B prerequisite: take the data lane's hunks in six Lane B files
Identical text to claude/data-section-credit-20260920 for these six files
(git diff against that branch is empty), so the two branches merge cleanly.
ZERO Lane B credit is claimed: the five data sections belong to the data lane.

Taken deliberately because three of the hunks change relocation IDENTITIES
that Lane B code residuals need before they can ever gate exact:
  action_vehicle.c        0.1225f -> 0.35f*0.35f  (__real@3dfae147, January's
                          folded product) - _action_vehicle_find_destination
  collision_debug.c       assert text count<=14   - _collision_debug_render
  path_structure_bsp.c    assert spacing          - _structure_test_line2d
and three are the .bss layout law (= 0 / = FALSE on debug globals):
  player_control.c, collisions.c, bipeds.c

Units/functions: none change verdict. Strict meaningful +0, padded +0.
Fuzzy: none. Data: +489 B (116+300+43+26+4), credited to the data lane.
Stable regression: scratch/lane_b_before.json -> lane_b_w0.json, 0 regressions,
0 gains. Lane inventory row-diff: 0 losses, 0 moves. Parks 0 stale / 0 invalid.
Full ninja all_source progress semantic_progress: pass
(Code 1443979 / 1770166, 7291 / 7574; Data 2360994 -> 2361483).
Config/header changes: none. Reviewer: data lane's own verification; re-verified
here by full build and row diff.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 02:27:48 -07:00
Jonas Volman 5361eeae52 Reconcile Astra exact-match campaign (+8314 bytes)
Integrate six accepted exact functions, two whole-object admissions, evidence-backed zero-credit source corrections, owner-header cleanup, and curated campaign records. Preserve zero regressions and exclude generated scratch archives from canonical history.
2026-09-20 02:31:53 -07:00
Jonas Volman 37d513310b Reconcile evidence-backed 10K exact batch 2026-09-19 23:12:42 -07:00
Jonas VolmanandClaude Opus 5 4d6c7f99c3 Wave 5: eleven functions strict exact (vehicles, networking)
Owner-unblocked units, reviewed reconstructions, each strict exact in its
whole-TU gate with zero inherited losses, guard passing, no new owners:
- vehicles: _vehicle_update with cross/dot helpers on the object fields
  (removes two invented static carriers), vehicle-type switch, PIN
- network_connection: read_unreliable/read_reliable single-exit bodies
  with January's literals (including the '#d' typo) and a reset flag,
  read assert text, get_address per-path clears, idle and
  idle_server_reliable_endpoint (six park reopens)
- transport_endpoint_winsock: connect_endpoint_async, write_to_endpoint,
  read_from_endpoint single-exit results (three park reopens)
- transport_endpoint_set_winsock: remove_endpoint_from_set single exit

Rejected: _poll_endpoint_set (negative-result clamp chosen to steer block
order), _add_endpoint_to_set (identical FD_SET branches),
_action_obey_command_begin (redundant store), _actor_action_try_to_dive
(units.h prototype contradicting its definition).
Stable diff vs 9062b1e96: 0 regressions; parks 250 -> 240.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 13:55:03 -07:00
Jonas VolmanandClaude Opus 5 b9030877e2 units.h: owner prototypes for unit_start_running_blindly and unit_is_speaking (action_flee: 1 function strict exact)
Header packet from wave w3b (adversarially verified). action_flee.c called unit_start_running_blindly (units.c) and unit_is_speaking (unit_dialogue.c) through C4013 implicit declarations. Their genuine owner prototypes are added to units.h under prototypes/UNITS.C and prototypes/UNIT_DIALOGUE.C. With them, the parked _action_flee_perform (864, body unchanged since its w2 re-measure) is strict exact and unparked. Both prototypes are required together: the first alone regresses units::_unit_preprocess_node_orientations by declaration count (measured).

Live tree: full ninja + whole-board stable sweep +1 gained / 0 regressions (units.obj unchanged). The already-fuzzy ai_communication park _ai_communication_update_speech_timers (672/43) returns to its documented alternate hash under the new declaration count and is re-measured with appended evidence; parks 279/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 14:46:34 -07:00
Jonas VolmanandClaude Opus 5 082f9171b6 units.h/weapons.h: owner prototypes for biped_update callees (bipeds: 1 function strict exact)
Header packet from wave w3 (adversarially verified). bipeds.c called unit_animation_start_action, unit_cause_player_melee_damage, unit_update_animation (units.c owners) and weapon_stop_reload, weapon_prevents_melee_attack (weapons.c owners) through C4013 implicit declarations. Their genuine owner prototypes are added to units.h (with a struct unit_animation_update_data forward declaration) and weapons.h. With them, _biped_update (1120) is strict exact: January's case block order (moving arms before idle), the 0.1f*0.1f throttle literal (3c23d70b), and direct stores to player_melee_ticks / player_melee_attack_tick with a short melee_speedup_ticks. The header and source land in one commit because the header alone moves the parked _biped_update hash (the ninja park check would fail on an intermediate commit).

Consumer blast (76 units compiled H vs P, including units.c, vehicles.c, weapons.c): only bipeds::_biped_update and the non-exact unparked physics::_physics_update_old hash changed. Live tree: full ninja + whole-board stable sweep +1 gained / 0 regressions; park removed; parks 284/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 13:03:31 -07:00
Jonas VolmanandClaude Opus 5 276b0368fe bipeds.h: biped_approximate_surface_index returns long (ai_script: 1 function strict exact)
Header packet P4 (150K lane). January's only external caller, ai_script.obj, tests the result with a full 32-bit cmp eax,-1 (no sign extension); the short prototype produced cmp ax,0xffff. The owner prototype and the bipeds.c definition now return long and the unevidenced (short) cast is dropped; declaration count unchanged, callee bytes unchanged. _ai_scripting_teleport_starting_location_private (288) becomes strict exact with an untouched body, so its park (premise: the widening perturbs consumers) is removed.

Consumers: 23 bipeds.h includers, shadow-compiled H vs P (0 losses). Live tree: full ninja + stable_verdicts sweep +1 gained / 0 regressions; parks 290/0/0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 08:07:38 -07:00
Jonas VolmanandClaude Opus 5 1e936afab0 unit_dialogue: 3 function(s) strict exact
Wave w2 landing, adversarially verified. park reopens: _unit_dialogue_determine_variant, _unit_notify_impulse_sound, _unit_dialogue_update. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 3 park(s) removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 07:40:00 -07:00
Jonas VolmanandClaude Opus 5 4f66b6d8b0 bipeds: 1 function(s) strict exact
Wave w2 landing, adversarially verified. park reopens: _biped_fix_position. 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:59 -07:00
Jonas VolmanandClaude Opus 5 a7d0d43883 Declare the weapon trigger graph's cross-object callees in their owner headers
actor_firing_blindly (actors.h), player_aim_projectile (aim_assist.h), projectile_kill_tracer (projectiles.h), unit_adjust_projectile_ray (units.h) and the remaining weapon datum flag bits. Removes the verbatim duplicate collision_surface_polygon prototype from collision_bsp.h; without that cleanup the two added declarations regress units::_unit_preprocess_node_orientations (declaration-count sensitivity, bisected). Full build with the weapons body: 0 regressions, parks clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:47:36 -07:00
Jonas VolmanandClaude Opus 5 d154664b21 bipeds: close start_landing and update_jumping; January-derived update_physics fuzzy
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 19:19:54 -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 5ca90d450e Reconstruct unit dialogue speech arbitration 2026-09-09 09:57:50 -07:00
Jonas Volman acd35c00b9 ai: narrow runtime declaration ownership 2026-09-09 07:48:00 -07:00
Jonas Volman 105d9acaac Reconcile 10K exact-byte Claude batch 2026-09-09 00:07:34 -07:00
Jonas Volman 292cc29b86 Reconcile final Fable and Opus source batch 2026-09-08 17:34:52 -07:00
Jonas Volman 99a194a4b9 Share diagnostic contracts and source reconstruction references 2026-09-06 10:31:31 -07:00
Jonas Volman c32247e765 Reconcile ActionObey shared owners and verified structure flush 2026-09-05 22:24:15 -07:00
Jonas Volman 857b355d80 Reconcile Profile enter-exit ownership and park typed Biped placement 2026-09-04 21:58:41 -07:00
Jonas Volman 4453bedd7b Match small damage vitality leaves 2026-09-04 06:15:41 -07:00
Jonas Volman 55351b58d0 Reconcile interrupted Opus Leaf and Biped gains 2026-09-04 04:46:30 -07:00
Jonas Volman b175ed2be1 Reconcile Opus effects reconstruction 2026-09-04 03:48:30 -07:00
Jonas Volman 58618a7909 Complete player control input cluster 2026-09-03 05:46:48 -07:00
Jonas Volman ad1ca53e57 Narrow unit dialogue prototype ownership 2026-09-03 05:39:16 -07:00
Jonas Volman d0b35eb8f3 Reconstruct unit dialogue setup and update 2026-09-03 05:22:40 -07:00
Jonas Volman 8b02b172d0 Correct collision movement interfaces 2026-09-02 22:04:26 -07:00
Jonas Volman 01a2daac6d Reconcile limp-noodle collision interfaces 2026-09-02 22:04:26 -07:00
Jonas Volman 019e738610 Reconstruct biped limp-noodle solver 2026-09-02 22:04:26 -07:00
Jonas Volman c5ce04c77c Fix biped limp-noodle interface ownership 2026-09-02 20:41:56 -07:00
Jonas Volman cd10033235 Reconstruct actors creation and spawn wave 2026-09-02 19:59:10 -07:00
Jonas Volman 60957d0cb2 Recover remaining small HUD frontier 2026-09-02 04:42:30 -07:00
Jonas Volman 5ea4a47ca6 bipeds: preserve January point helper ownership 2026-09-02 02:22:06 -07:00