Preserve three data ownership holds after Claude reconciliation

This commit is contained in:
Jonas Volman committed 2026-09-23 14:48:30 -07:00
1 parent b22eddc0cc
commit 188d6c1bc0
3 files changed
+91 -3

No files matched your search

+3 -3
View File
@@ -521,7 +521,7 @@
{ "name": "source/objects/scenery_group.c", "index": 146, "status": "Matching" },
{ "name": "source/objects/scenery.c", "index": 147, "status": "Matching" },
{ "name": "source/objects/placeholder_definitions.c", "index": 148, "status": "Matching" },
{ "name": "source/objects/objects.c", "index": 149, "status": "Matching" },
{ "name": "source/objects/objects.c", "index": 149, "status": "NonMatching" },
{ "name": "source/objects/object_types.c", "index": 150, "status": "Matching" },
{ "name": "source/objects/object_shadows.c", "index": 151, "status": "Matching" },
{ "name": "source/objects/object_lights.c", "index": 152, "status": "NonMatching" },
@@ -654,10 +654,10 @@
{ "name": "source/input/input_abstraction.c", "index": 279, "status": "Matching" },
{ "name": "source/input/HaloAutoTest.c", "index": 280, "status": "Matching" },
{ "name": "source/hs/object_lists.c", "index": 281, "status": "Matching" },
{ "name": "source/hs/hs_scenario_definitions.c", "index": 282, "status": "Matching" },
{ "name": "source/hs/hs_scenario_definitions.c", "index": 282, "status": "NonMatching" },
{ "name": "source/hs/hs_runtime.c", "index": 283, "status": "NonMatching" },
{ "name": "source/hs/hs_library_external.c", "index": 284, "status": "Matching" },
{ "name": "source/hs/hs_globals_external.c", "index": 285, "status": "Matching" },
{ "name": "source/hs/hs_globals_external.c", "index": 285, "status": "NonMatching" },
{ "name": "source/hs/hs_compile.c", "index": 286, "status": "NonMatching" },
{ "name": "source/hs/hs.c", "index": 287, "status": "NonMatching" },
{ "name": "source/game/players.c", "index": 288, "status": "NonMatching" },
+24
View File
@@ -1,6 +1,30 @@
{
"version": 1,
"entries": [
{
"unit": "source/objects/objects",
"class": "candidate-only-comdat-owner",
"symbol": "_point_in_sphere, _real_random, _signed_angular_difference, _valid_real_vector3d, _valid_real_vector3d_axes2",
"reason": "All January target functions and owned data now match, but five candidate-only shared helpers conflict with hand-written no-duplicates providers in path_obstacles, action_charge, player_control and bored_camera. Exact target bytes and the corrected private symbols do not establish safe whole-object linkage.",
"evidence": "docs/object_matching_logs/claude_data_ownership_closeout_20260924.md",
"reopen": "Replace the conflicting hand-written providers with genuine shared-header uses, retain every exact caller, and prove compatible ordinary provider links in both orders before admitting the object. Do not credit the candidate-only copies."
},
{
"unit": "source/hs/hs_scenario_definitions",
"class": "source-layout-incomplete",
"symbol": ".data",
"reason": "January's data section has 8-byte alignment while the rebuilt section has 4-byte alignment. The current definitions force their layout with invented aggregates, pack/align directives and a padding member; identical payload alone does not authenticate the object.",
"evidence": "docs/object_matching_logs/claude_data_ownership_closeout_20260924.md",
"reopen": "Recover the genuine separate January data definitions and their natural alignment, including the static byte-swap owner, without fabricated aggregates or padding; preserve target code and data bytes across a full sweep."
},
{
"unit": "source/hs/hs_globals_external",
"class": "source-layout-incomplete",
"symbol": "_hs_external_global_definitions",
"reason": "The rebuilt data is byte-identical, but it is one invented 442-element array where January had 442 separately named file-static global definitions. The later build does not independently authenticate all January names or this aggregate source shape.",
"evidence": "docs/object_matching_logs/claude_data_ownership_closeout_20260924.md",
"reopen": "Recover and verify the January per-global names and ownership from first-party evidence, replace the aggregate with authentic separate definitions, and preserve every exact function and data relocation before whole-object admission."
},
{
"unit": "source/structures/leaf_map",
"class": "candidate-only-comdat-owner",
@@ -0,0 +1,64 @@
# Claude data/ownership closeout: canonical reconciliation (2026-09-24)
Claude's clean `claude/data-closeout-20260924` lane at `b3e9f9af` was
reconciled onto local canonical `jonas/exact-pilots` at `c661a334`, after the
separate ten-Halo-object batch. Its five commits were cherry-picked in order.
The only content merge was the append to `config/semantic_data_matches.json`:
the existing and donor entries are disjoint and both are retained. The donor's
`items.c` helper repair was already byte-identical to canonical's, so it was
not applied twice. Neither lane's credited data was counted twice.
## Accepted result under canonical's installed objdiff 3.3.1
| Measure | Before donor | After donor | Delta |
| --- | ---: | ---: | ---: |
| Complete objects, all | 469/833 | 479/833 | +10 |
| Complete Halo objects | 351/468 | 361/468 | +10 |
| Credited data, all | 2,568,800 | 2,578,710 | +9,910 |
| Credited Halo data | 2,562,486 | 2,572,396 | +9,910 |
| Credited Halo meaningful code | 1,549,953/1,770,166 | 1,549,953/1,770,166 | 0 |
| Stable strict exact functions | 7,585/8,245 | 7,585/8,245 | 0, no regression |
The ten objects and each section's source evidence are in
`claude_data_ownership_closeout_20260924.md`. Their whole-object admissions
include private-symbol ownership and selected-provider checks, not data-byte
equality alone. The lane's `items.c` repair was already present in the earlier
canonical object-closure batch.
## Three retained holds
`objects`, `hs_scenario_definitions`, and `hs_globals_external` remain
`NonMatching`. The first has five helper-provider link conflicts; the second
has a genuine 8-versus-4-byte data-alignment difference and fabricated source
aggregates; the third represents 442 separately named January statics with an
invented array. Their exact functions and data evidence remain available,
without whole-object credit. Explicit entries in
`config/object_admission_rejections.json` record each reopen criterion.
Correcting the three premature `Matching` labels removes all inherited
admission contradictions; it does not change the credited code or data totals.
## Scorer version boundary
The installed canonical `build/tools/objdiff-cli.exe` is 3.3.1, despite
`configure.py` naming 3.6.0. This work does **not** silently replace that
binary. `build.ninja` passes the existing binary via `--objdiff`, so merely
rerunning Ninja does not download the pinned version. Independent read-only
side-by-side reports on the same canonical COFFs show that 3.6.0 changes raw
data results for 47 Halo objects and one libcmt object, and raw code/fuzzy
results for eight D3D8 objects. The strict accepted function identities are
unchanged, but dashboard totals are not directly comparable. A future scorer
rollout must regenerate `objdiff.json` and reports together and repeat the
stable, park, admission and progress gates. The three held objects stay
`NonMatching` under either scorer; a fresh 3.6.0 probe confirmed this.
## Verification
After integration, full Ninja builds all 833 units. The 8,245-function stable
sweep reports zero gains and zero regressions. Parks: 103 active, zero stale or
invalid. The admission audit reports zero contradictions and zero revoked
rows. The modified source files have zero fake-match review leads.
`python -m pytest -q tools` passes 1,154 tests, five skips and 26 subtests.
The ten accepted objects are to be checked in the refreshed local treemap;
the three holds must remain uncredited there. No GitHub push is made by this
integration: the standing push threshold is 10,000 newly exact code bytes,
and this lane adds zero.