Import only independently reviewed production changes. Preserve canonical physics and virtual-keyboard repairs; keep B3 and all unresolved holds out.
Record exactly four approved canary debits (6987 meaningful bytes), six Halo admissions and two revocations. Keep vendor ioinit/storage work separate. Full build, 8252-row sweep, 1318 tests, park/admission/fake audits and 621-object binding pass within approved debit bounds.
Do not publish donor research dumps or private assets. README and unrelated user research remain untouched. See frontier_publication_reconciliation_20260927.md for complete evidence limits and accounting.
Shared-header prerequisite packet:
- real_math.h: distance2d/distance3d become square_root(distance_squared*(a,b))
(/Od build, no local); project_point2d takes short mapping locals and a
single ?: store (/Od-attested, equal to January's selected copy);
lock/unlock_global_random_seed move from the 2026-09-04 reconstruction
header random_math.h into real_math.h's existing RANDOM_MATH.C prototype
section (main.c calls them without random_math.h).
- action_vehicle, path_obstacles, decals drop their '#define x x_inline'
renames and hand-written NODUP helper copies; the header inlines now emit
byte-identical copies of January's selected sections.
- object_lights and players adopt the /Od caller spellings (0x5d0d50).
Full ninja + rename-stable 8,245-function diff: +2 exact
(_player_set_action_result, _convex_hull2d_perimeter; park retired),
0 regressions. _ai_test_line_of_sight park remeasured (size/relocations
unchanged, fuzzy 97.98 -> 97.92).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Whole-object admission of three objects whose functions were already
strict exact (13/13, 15/15, 16/16). No new code bytes are credited.
Symbol ownership (January cachebeta.pdb publics, no cross-TU refs):
- symbols.json marks _action_flee_find_flee_position,
_action_flee_current_position_exposed, _action_flee_at_flee_position
and _action_guard_speak_post_combat static, matching January's
storage class.
- aim_assist.c: compute_composite_attenuation is public in January, so
drop `static` from its prototype and definition.
Genuine helper-provider repairs (selected-provider LNK2005 fixes):
- actor_moving.c drops its hand-written NODUP arccosine and the
arccosine_inline rename; the one acos site becomes
arccosine(facing_dot). The /Od build (halo_cache_symbols.exe) calls
an actor_moving-local arccosine COMDAT at exactly this site
(0x465510 -> 0x46d330), and January's actor_moving owns _arccosine.
All 36 actor_moving rows are unchanged, including the 2,752-byte
_actor_move_calculate_movement and _arccosine.
- path_obstacles.c drops its hand-written NODUP set_real_point2d and
rename; its project_point3d copy now calls set_real_point2d as the
real_math.h inline does. All 16 rows unchanged.
After both, no object on the board defines _arccosine or
_set_real_point2d NODUP.
Verification: full ninja; stable diff gained 0 / regressions 0;
parks 103 active / 0 stale / 0 invalid; admission audit 39 candidates,
0 contradicted, 0 revoked; object audit PASS and selected-provider link
PASS (both orders) for all three; fake scan and castcheck unchanged;
pytest 1154 passed; halobetacache linked files 332 -> 335.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- _game_load: drops the carrier locals from the Stian lift and reads the
module-state game_globals directly (HCEA body minus its later precache
call); game_globals is file-static, as only game.obj references it in
January, with the matching in-place "static": true in symbols.json
(same form as _game_allegiance_globals)
- _circle_tangents: ratio computed then clamped in place with MIN (HCEA
form)
- _circular_queue_dequeue_data: contiguous size before the read-offset
working copy inside the success block; the worker's hand-expanded
circular_queue_size copy was removed in review and is not needed
Stable diff: 0 regressions; admission 23 candidates / 0 contradicted;
active parks 209 -> 206.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w2 landing, adversarially verified. park reopens: _obstacles_disc_neighborhood. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* wip objects.c work
* objects_disconnect_from_structure_bsp
* match more functions
* more objects work
* objects_update work
- 93.42% matching
* match matrix4x3_transform_point
* more objects work
- fix duplicate symbol name at 1870800
* match object_choose_random_change_colors
* match object_update
* objects_garbage_collection work
* match object_set_position
* more object work
* match objects_update
* more object work
* match object_select_random_region_permutations_by_variant
* objects_in_sphere work
99.90% match
* object name list calls
* match objects_in_sphere
* misc matches
* match structure_bsp_definitions object
* match objects_in_clusters_by_indices
* more object work
* match `edit_text_handle_key`
* mark edit_text as matching
* misc changes
- match get_next_character
- match data section in objects.c
* object_export_function_values work
* match object_compute_function_values
* match object_get_orientation
* added functions and adjust formatting
* fix profile macros
* formatting changes
* more formatting
* more formatting
---------
Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>