Recover transparent geometry submit (+1,285 meaningful code, zero exact losses); reconcile COMMON ownership and Q10 85+EXT1 credit, actions/main data, and separately disclosed denominator corrections. Preserve canonical-only repairs and all held research. C09 is ordinary disclosed cleanup, not a claim of proven scaffolding intent. Clean rebuild, 1,663 tests, parks, audits, provider links and independent EXT1 check pass. Local reconciliation only.
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.
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.
New strict exact (unit :: function, padded bytes):
game/player_control :: _player_control_modify_desired_angles 1584
ai/actor_combat :: _actor_aim_projectile 720
memory/stack_memory_pool:: _stack_memory_pool_allocate 640
memory/stack_memory_pool:: _stack_memory_pool_resize_block 192
ai/action_vehicle :: _action_vehicle_setup_impromptu 464
scenario/wind :: _wind_variance_initialize 384
ai/actions :: _actors_searching_same_position 320
ai/action_converse :: _action_converse_perform 256
game/game_engine_race :: _race_engine_get_score 224
Function boards now complete: action_converse 9/9, wind 9/9, stack_memory_pool
33/33, game_engine_race 36/36, player_control 49/49 (objects NOT marked Matching:
whole-object data/ownership audit not done; player_control .rdata is owner-held).
Method. Every closure started from the SOURCE SHAPE read out of the first-party
unoptimised /Od + /RTC build (halo_cache_symbols.exe, scratch/orch/odbuild.py)
and was then confirmed against January's own bytes before it was relied on
(double attestation); none is a spelling search.
- _player_control_modify_desired_angles: both autolevel products are
`error * K * magnitude3d(v)`; three lines, no local, cast or parenthesis.
- _actor_aim_projectile: weapon_vector is scoped to its own inner block, the dot
product is tested directly (no `alignment` local), and the three debug-info
stores follow January's order (flag first). Reviewer strip tests: block alone,
order alone and alignment-drop alone are each residual; only the combination
is exact.
- _stack_memory_pool_allocate: result zeroed before the 0x342 assert, ONE return,
positive guard with the assert in the else, in-place size arithmetic. The
worker's unattested `last_block` pointer local was REMOVED by the reviewer; the
/Od arm spelling lands instead.
- _stack_memory_pool_resize_block: body untouched. The static helper
stack_memory_pool_dispose_block takes (pool, reference), as /Od pushes them and
as the callee forwards them to valid_block(pool, reference).
- _action_vehicle_setup_impromptu: passes state_data->attempt_distance /
->continue_distance (the fields just stored) instead of the parameters.
- _wind_variance_initialize: block-local `word control_point_indices[4]` assigned
inside the innermost axis loop; name and size from the /Od RTC descriptor.
- _actors_searching_same_position: four pointer locals, result = FALSE after the
four calls, if / else-if arms assigning result, one return. Requires
actor_get_pursuit_location (baseline exact, STILL exact 64) to read
uncover.pursuit_location through its own union member in a second arm, as /Od
has it. The evade-direction enum gains its two real middle constants; values
are unchanged (_actor_evade_random is still 4).
- _action_converse_perform: REMOVES a pre-existing `true_value` dummy local from
production. `in_range = TRUE` is assigned in two arms (if / else-if): /Od has two
distinct stores, impossible from one `||` statement, and January has
`mov ebx,1` with two bl stores each with two in-edges. One return.
- _race_engine_get_score: a `score` accumulator assigned on both arms with ONE
return (single-exit law); team_index/laps/flags_touched are block locals of
the non-team arm.
Orchestrator overrides of reviewer-approved text (not landed, zero credit lost
beyond what is listed under HELD):
- action_vehicle: the reviewer's landing.c also rewrote _find_destination with 16
NEW 3D->2D view casts. Owner ruling 2026-09-21 keeps rule 24 strict for new
representation-punning casts, so only the two-line exact closure lands.
- actions: _actor_action_try_to_dive (720, exact in scratch) needs ONE new view
cast -> HELD. _actor_action_handle_vehicle_entry's fuzzy rewrite introduced an
empty `if` arm holding only a `//` comment (new fake_match_scan lead the
reviewer missed) -> reverted to production.
Config: config/parked.json - six entries REMOVED (now exact):
_action_converse_perform, _wind_variance_initialize, _actor_aim_projectile,
_actors_searching_same_position, _player_control_modify_desired_angles,
_race_engine_get_score. No header, symbols.json, flag or tool change.
Verification (tip of the following fuzzy commit): full ninja all_source progress
semantic_progress pass, Code 1446706 -> 1451421, 7297 -> 7306 functions.
stable_verdicts vs the FROZEN baseline: gained 15 / 7568 bytes, regressions 0.
All 11,060 function and 1,706 section report rows: 0 lost 100%, 0 missing.
Parks 174 active / 0 stale / 0 invalid. Admission audit 23 / 0 / 8 / 0.
Guard, ownership, fake scan, line endings, new-punning-cast screen: clean on
every landed file. git diff --check clean.
Reviewer: independent adversarial agent per unit, ACCEPT_EXACT for all nine;
orchestrator re-gated every file through scratch/orch/land.py.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
_wind_variance_get (+224). January spills the scaled real, clears its sign bit
with a 32-bit `and dword ptr [ebp+0xc],0x7fffffff`, reloads it as a float and
takes the low byte. No floating spelling produces that: the previous fabs() body
canonicalises to x87 fabs at 208 bytes. The recovered source is a block-local
`union { real value; long bits; }` sign-clear, the two-member form that matches
the three existing in-tree precedents (path_obstacle_avoidance, render_cameras,
rasterizer_xbox_water, the last of which is an accepted strict-exact landing).
The owner lifted the 2026-08-31 "inactive union member" hold for this function
only, and the ledger records that supersession. Landed as the minimum function
hunk: no linkage change, no rename-define removal, no type or initializer edits,
and _wind_variance_initialize is untouched at its parked base 400/9.
Verified independently: whole-TU gate 8 exact / 1 residual with every baseline
row intact, guard passed, parkcheck clean apart from the reopened row, owner
census 0 added / 0 removed, fake scan 0 leads. Full ninja, parks 274 active /
0 stale / 0 invalid, stable diff vs scratch/opus5-next150-before.json: gained 5 /
2,752 padded, regressions 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Header packet P2 (150K lane, admitted at zero credit). Adds struct scenario_object_permutation {change_colors[4]; region_permutations[8]; unused2[2]} and struct scenario_weapon_datum {object; permutation; short rounds_total; short rounds_loaded; word flags; word pad; unused[3]} plus the scenario weapon flag enum (_weapon_created_at_rest_bit, _weapon_obsolete_bit, _weapon_does_accelerate_bit). Owner and field names from the HCEX SHIP PDB weapons.obj compiland; layout and bits proven by January _weapon_place (rounds_total word at +0x48, rounds_loaded +0x4A, flag byte tests of bit 0 and bit 2 at +0x4C, magazine element 0x70).
55 transitive consumers shadow-compiled: 0 strict changes. Live tree: full ninja + stable sweep 0 gained / 0 regressions; the already-fuzzy encounters park _encounter_update_respawn toggles back to its original 704/27 hash (declaration count) and is re-measured with appended evidence.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
matrix_math.h and real_math_planes.h declare the genuine matrix_math.c / real_math.c signatures for their physics and collisions callers. Declaring either prototype in the broad real_math.h regressed decals::_decals_delete_permanent_from_cluster and draw_primitives::_rasterizer_dynamic_geometry_initialize and drifted four parks at any position (declaration count, bisected), so the precedent of narrow subsystem headers (bitmap_color_conversion.h, rasterizer_xbox_water.h) is followed. structure_fog_plane +0x00/+0x02 are the region index and the signed runtime material type January collision_test_vector reads; scenario.c renames are names only.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Complete scenario.obj: _scenario_get_atmospheric_fog is now byte-exact
(816/816 bytes, 38/38 relocations; all 56 section symbols match).
XDK 3911 CL tail-merges the default-sky lookup with the else-branch
scenario_get_sky() lookup, where the January binary keeps them separate.
Around forty barrier-free source shapes, plus TU-context, register-pressure,
branch-order, hoisted-NULL, parameter-type and second-expansion variants,
failed to reproduce the split tails. Two zero-byte _ReadWriteBarrier()
intrinsics do: one in site-1 blocks the tail-merge, one in the else restores
the je jump-thread. Matches the object_shadows.c precedent; full rationale
is in the source comment.