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, keptNonMatchingbecause one target function remains absent. - Campaign base:
dd2c9e0f0d652814e79a55dc8d671c72724e8746. - Compiler and flags: the repository-pinned Xbox XDK 3911 compiler and the
unchanged
halobetacacheflags generated byconfigure.py. - January authority:
cachebeta.exebuild 2342, split through the pinnedcsplittool intobuild/split/source/math/matrix_math.obj. - Strongest donor source blob:
8926110d92a366dd20a0488e00f4062ec819a635, introduced by Jonas Volman commit5a5fc3623f5c06b22c4e784a6bab7928038b3645. The same blob is carried byte-identically byclaude/near-complete-objects-20260816,claude/finish-hs-20260816,claude/untried-objects-20260816, andclaude/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, andmatrix3x3_inversereproduces the target EAX ownership without register coercion. - Two
real_vector3dtemporaries 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
realcmpmacro preserves the original assertion spelling and widenedfabscomparison 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.