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.
Merge verified source, data and owner corrections from 4e84c212. Resolve overlapping HS/path symbols against canonical, retain the dynavobgeom ownership rejection, document Layer 2/P7 source-shape decisions, and preserve held research. Verified 14 exact functions, 17 new Halo objects, zero regressions under objdiff 3.3.1.
New strict exact:
ai/path_structure_bsp :: _structure_test_line2d 1104 (object now 6/6)
ai/action_obey :: _action_obey_control 992 (object now 27/27)
ai/actions :: _actor_action_try_to_dive 720
OWNER ADMISSION (2026-09-21), quoted: "Admit only with per-site /Od attestation,
byte-inert cast, compatible prefix layout, strict exactness, and ledger
disclosure. Land the three; keep the fighter held."
DISCLOSURE - every NEW 3D->2D view cast in this commit, with the first-party
/Od + /RTC build (halo_cache_symbols.exe) instructions that attest the SAME
punned object at the SAME site. The punning is Bungie's: C cannot pass or copy a
3D object as a 2D one without it.
1. _actor_action_try_to_dive - ONE cast:
dot_product2d(&left_animation_alignment, (real_vector2d const *)&actor->input.facing_vector)
/Od fn 0x42c1f0: 0042c3e6 mov edx,[ebp-8] ; actor
0042c3e9 add edx,0x140 ; &actor->input.facing_vector (real_vector3d)
0042c3ef push edx
0042c3f0 call -> fn 0x42dd30
and fn 0x42dd30 is dot_product2d: a[0]*b[0] + a[1]*b[1], two components only.
Byte-inert: with the cast deleted the TU compiles (C4133) and the function is
STILL strict exact 720.
2. _structure_test_line2d - FOUR casts, (real_point2d const *)&vertexN->point:
vector_from_points2d(v0, v1, &e0e1); (v0, p1, &e0p1); (p0, v0, &p0e0); (p0, v1, &p0e1)
/Od fn 0x4cee00, call sites 0x4cefb6 / 0x4cefca / 0x4cefe1 / 0x4ceff8: the
vertex pointer locals [ebp-0x5c] and [ebp-0x60] (results of
tag_block_get_element; the 3D point is at offset 0) are pushed DIRECTLY as the
2D point arguments, in exactly that argument order, to fn 0x42e350 =
vector_from_points2d (two 2-component subtractions).
Byte-inert: with the five casts deleted (operands kept) the function is STILL
strict exact 1104.
3. _action_obey_control - ONE cast, an aggregate COPY rather than an argument:
alignment_vector = *(real_vector2d const *)&actor->input.facing_vector;
/Od fn 0x43c2d0: 0043c7c7 mov eax,[ebp-8] ; actor
0043c7ca mov ecx,[eax+0x140]
0043c7d0 mov edx,[eax+0x144]
0043c7d6 mov [ebp-0x2c],ecx
0043c7d9 mov [ebp-0x28],edx
0043c7dc lea eax,[ebp-0x2c] / push eax / call normalize2d
Integer mov pairs = an 8-byte STRUCT ASSIGNMENT out of the 3D vector straight
into the one 2D local that is then normalised (member-wise real copies compile
to movss at /Od, and there is no intermediate temp). This replaces our
member-wise copy through a `facing` temporary.
Byte-inertness caveat, stated plainly: this cast cannot be strip-tested - C
rejects an aggregate assignment across types outright - so the showing here is
the /Od aggregate copy plus the fact that a pointer cast emits no code. The
reviewer measured every undecorated alternative (.i/.j, .j/.i,
set_real_vector2d, bound 3D pointer member-wise) as residual.
Compatible prefix layout (math/real_math.h): real_vector2d is `real n[2]`,
real_vector3d `real n[3]`; real_point2d `real n[2]`, real_point3d `real n[3]` -
each 2D union is exactly the first 8 bytes of its 3D counterpart.
The idiom already appears 72 times in 21 canonical files, incl. math/real_math.c.
Other source evidence:
- _structure_test_line2d: both loop heads are `mov 1 / test / je` in /Od
(while (TRUE)); the inner break lands on the outer back-jump so the tail sits
inside the inner loop; two blocked copies. Depends on the assert-spacing
relocation identity taken from the data lane in 7583df5d.
- _actor_action_try_to_dive: the /Od RTC descriptor lists an extra 8-byte
aggregate `left_animation_alignment` built by set_real_vector2d(-facing.j,
facing.i) and fed to a real dot_product2d call; without it the body is residual.
STILL HELD: _update_alien_fighter_physics_new (1,088, exact in scratch): its
cross_product2d view-cast site has not been /Od-attested; owner: keep it held.
Config: config/parked.json - _structure_test_line2d and
_actor_action_try_to_dive entries removed (now exact). Parks 171 / 0 / 0.
Verification: full ninja all_source progress semantic_progress pass (Code
1453966 -> 1456768, 7309 -> 7312). stable_verdicts vs the FROZEN baseline:
gained 21 / 12944 bytes, regressions 0. All 11,060 function and 1,706 section
report rows: 0 lost 100%, 0 missing. Guard, ownership, fake scan, line endings
clean. git diff --check clean.
Reviewer: independent adversarial agents confirmed all three EXACT and credible
and held them ONLY on rule 24, which the owner has now ruled on per site; the
orchestrator re-derived every /Od attestation above from its own dumps.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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>
- input.h: struct key_stroke ascii_code is a char (January stores NONE as
-1; XINPUT_DEBUG_KEYSTROKE.Ascii is CHAR); edit_text.c drops its (byte)
cast on the NONE test and stays 5/5. Measured board-wide over all 24
includers: 0 regressions.
- input_xbox (27/27): _input_get_device_states with indexed gamepad and
button loops and a MIN tick clamp (park reopen);
_input_update_keyboard_devices with a short key-code loop and uncast
ascii ternary (park reopen)
- _structure_test_pill2d (624 B, previously unwritten): left/right offset
line tests via point_from_line2d and the nearer collision
- _find_turning_point: normalize2d/point_from_line2d/set_real_vector2d
replace hand-expanded helper math
- _structure_visibility_build_surfaces_traverse_leaf: the static
bounding_rectangles_intersect returns short through one result (park
reopen)
Rejected: _first_person_weapon_update (removed NULL guards, UB hold).
Follow-up: _path_test_pill_endpoint_near_wall_ok_bit is file-local in both
path_smoothing.c and path_structure_bsp.c; its owner is path_structure_bsp.h.
Stable diff: 0 regressions; parks 226 -> 223.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>