# `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.