Files
Cesarus85--mjolnir-vr/docs/object_matching_logs/matrix_math_obj_codex_checkpoint.md
T

7.1 KiB

source/math/matrix_math.obj Codex checkpoint

This is a new Codex-owned ledger for the 2026-08-20 checkpoint. It does not replace or modify the historical matrix_math_obj.md carried on older Claude branches.

Scope and provenance

  • Unit: source/math/matrix_math.c, configuration index 226, kept NonMatching because one target function remains absent.
  • Campaign base: dd2c9e0f0d652814e79a55dc8d671c72724e8746.
  • Compiler and flags: the repository-pinned Xbox XDK 3911 compiler and the unchanged halobetacache flags generated by configure.py.
  • January authority: cachebeta.exe build 2342, split through the pinned csplit tool into build/split/source/math/matrix_math.obj.
  • Strongest donor source blob: 8926110d92a366dd20a0488e00f4062ec819a635, introduced by Jonas Volman commit 5a5fc3623f5c06b22c4e784a6bab7928038b3645. The same blob is carried byte-identically by claude/near-complete-objects-20260816, claude/finish-hs-20260816, claude/untried-objects-20260816, and claude/libcmt-stream.
  • The donor commit reported 34/35. This lane did not trust that claim by itself: it rebuilt the target and candidate from the campaign tip and proved the retained subset with the hardened COFF comparator.

Validated baseline and checkpoint

State Strict functions Strict padded code Ordinary meaningful code Owned data
untouched dd2c9e0f 24/35 2,688/5,264 2,469/4,958 incomplete
this checkpoint 34/35 4,928/5,264 4,635/4,958 114/114
strict delta +10 +2,240 +2,166 +114 aggregate exact

All 24 baseline strict functions remain strict. The hardened semantic audit has no matrix-math ordinary-only or rejected function. The ten newly strict functions are:

Function Padded bytes Relocations Normalized SHA-256
_matrix3x3_from_axis_and_angle 208 4 6cd8b35e061f4fbfbabd38a49f6962c624b64b9f44425f87fdf320479bfd5550
_matrix3x3_from_forward_and_up 112 0 274692876c7a263879d885e017ddbc91874114ce9f6cb513ee6fad4811ba2bc6
_matrix3x3_inverse 320 6 f3ae3b13d2df00d707772f2f840fd3f8707c2234a8b793782a8d28ca1af6792c
_matrix3x3_multiply 288 0 69547d2788f32f9946a61d182f43cbf0426ea84e6d1a8f75a9aa5eabb7a10907
_matrix3x3_rotation_to_quaternion 336 11 3397619a5026b50ae8add14394dd0cc2b634e62230926c83d2d8e7ce6e1964e1
_matrix3x3_transpose 112 0 df50f0d82faa4e0b9aa46ab56bdd4fdf6caeb248af84b3f7cced7c2f1538e303
_matrix4x3_rotation_from_angles 176 0 cd6fcb118f68d0021332dc0ade931be23c537acd17c6c3cc25244d40234bc394
_matrix4x3_rotation_from_axis_and_angle 224 4 7035ac5ed37d5a7abae9c331b612d9d05d72c6913ab7a15218fb20a72cc6d4de
_matrix4x3_rotation_to_angles 128 4 1d8a460b6e48f8b5fa7b95d444f0c81a1ad814b52823a61fedcbfb36cf9853fa
_matrix4x3_rotation_to_quaternion 336 11 cc56e48dce332a87c9aa94f01a0f7563b98823a1bba2aac33b9b5b3690ed29f5

Data and ownership

The candidate owns exactly the target's 14-byte .data aggregate and the 100-byte padded .rdata aggregate. The four named .rdata records contain 96 meaningful bytes; the other four bytes are COFF alignment. Every named record, its section size, normalized bytes, symbol identity, and every code relocation to it compare strict exact.

Target-owned symbol Meaningful bytes Relocations Normalized SHA-256
_data_0030790c 14 0 acf1f4de227731873d943c879edae976b9ff9c51b315c1b691fce9c48d8f6fd7
!realcmp(determinant, 0.0f) assertion string COMDAT 28 0 9c62349835769d4570cadf4bdf78502807219757245b53771b0969d5e20cb96b
c:\\halo\\SOURCE\\math\\matrix_math.c string COMDAT 34 0 65ef2078737b9c3da0ec472b0ef6bf529a34558bf805adc87ae3fb4c9e24506f
__real@3f1a36e2eb1c432d 8 0 244daf676b076b34d5be3f723196f6a9a2fa7e81a05c781394a14fa645e1d6d8
valid_real_plane3d(plane) assertion string COMDAT 26 0 c6fbf088563a229579e23e7e5fd1ed681be1060c98458c2eefb54db02c8b10f9

The two next-index tables must share _data_0030790c: the 4x3 table begins at offset 0 and the 3x3 table at offset 8. Separate arrays change relocation ownership, and const moves the bytes to the wrong section.

Accepted controls

  • Returning the output pointer from matrix3x3_transpose, matrix3x3_from_forward_and_up, matrix3x3_multiply, and matrix3x3_inverse reproduces the target EAX ownership without register coercion.
  • Two real_vector3d temporaries reproduce the 24-byte local layout of the axis-and-angle routines.
  • The target statement order, direct matrix fields, and natural x87 expressions reproduce both angle routines without volatile values or scheduling barriers.
  • A translation-unit-local realcmp macro preserves the original assertion spelling and widened fabs comparison while avoiding a shared-header macro change.
  • Only the two externally visible return-type declarations required by the exact functions were changed in real_math.h.

Experiment and transplant matrix

ID Source shape Result Siblings/data Decision
P01 Authenticate all recent Claude tips and the introducing commit one strongest blob, 8926110d... no workspace edits retained as provenance
T01 Transplant the ten strict donor bodies, two return declarations, and one owned data aggregate 34/35, 4,928/5,264 padded all 24 baseline exact; all data exact retained
T02 Keep realcmp local to this TU instead of importing the donor's shared-header macro _matrix3x3_inverse remains 320 bytes, 6 relocations, strict exact full candidate compiles retained
T03 Omit the donor's emitted SSE _matrix4x3_multiply reconstruction candidate symbol remains absent no changed_nonexact; no unsafe intrinsic pointer casts retained

Residual and do-not-repeat list

_matrix4x3_multiply is the only residual. The target is 336 padded bytes, zero relocations, normalized SHA-256 0436d82fe1070f30523ce8798bcce3b7625099794f5d0ab3fbf9a9c33802314e; the candidate deliberately has no definition, so its first divergence is the missing candidate section rather than a misleading percentage.

The historical donor's nonexact SSE body was 352 bytes and depended on pointer-casting _mm_loadh_pi / _mm_storeh_pi forms. It was not imported. Do not repeat that body, the donor's loop/intrinsic spelling sweeps, inline assembly, volatile scheduling controls, force-inline controls, pragmas, barriers, undefined aliasing, or object-byte forcing. None is eligible for production admission under the house rules.

Reopen the residual only with new original-source provenance or a readable, defined-behavior C form that measures strict exact under unchanged XDK flags.

Disposition

Retain this strict checkpoint and keep configuration index 226 NonMatching. This is a function and data gain, not whole-object admission. A clean commit must still pass the full Halo/libcmt build, semantic/progress regeneration, object-admission audit, parked validation, tool tests, and a post-commit whole-TU regression snapshot/check.