Admit five strict-exact Halo objects after ownership audit

This commit is contained in:
Jonas Volman committed 2026-09-23 00:25:44 -07:00
1 parent fe77cd542f
commit 95f68ad3ce
3 files changed
+91 -9

No files matched your search

+5 -5
View File
@@ -446,7 +446,7 @@
{ "name": "source/shaders/shaders.c", "index": 71, "status": "Matching" },
{ "name": "source/shaders/shader_definitions.c", "index": 72, "status": "Matching" },
{ "name": "source/scenario/wind_definitions.c", "index": 73, "status": "Matching" },
{ "name": "source/scenario/wind.c", "index": 74, "status": "NonMatching" },
{ "name": "source/scenario/wind.c", "index": 74, "status": "Matching" },
{ "name": "source/scenario/sky_definitions.c", "index": 75, "status": "Matching" },
{ "name": "source/scenario/scenario_definitions.c", "index": 76, "status": "Matching" },
{ "name": "source/scenario/scenario.c", "index": 77, "status": "Matching" },
@@ -560,7 +560,7 @@
{ "name": "source/models/model_animations.c", "index": 185, "status": "NonMatching" },
{ "name": "source/models/model_animation_definitions.c", "index": 186, "status": "Matching" },
{ "name": "source/memory/texture_page.c", "index": 187, "status": "Matching" },
{ "name": "source/memory/stack_memory_pool.c", "index": 188, "status": "NonMatching" },
{ "name": "source/memory/stack_memory_pool.c", "index": 188, "status": "Matching" },
{ "name": "source/memory/sl_list.c", "index": 189, "status": "Matching" },
{ "name": "source/memory/memory_pool.c", "index": 190, "status": "Matching" },
{ "name": "source/memory/lruv_cache.c", "index": 191, "status": "NonMatching" },
@@ -649,7 +649,7 @@
{ "name": "source/interface/hud_draw.c", "index": 274, "status": "NonMatching" },
{ "name": "source/interface/hud_definitions.c", "index": 275, "status": "Matching" },
{ "name": "source/interface/hud.c", "index": 276, "status": "NonMatching" },
{ "name": "source/input/input_xbox.c", "index": 277, "status": "NonMatching" },
{ "name": "source/input/input_xbox.c", "index": 277, "status": "Matching" },
{ "name": "source/input/input_windows.c", "index": 278, "status": "Matching" },
{ "name": "source/input/input_abstraction.c", "index": 279, "status": "NonMatching" },
{ "name": "source/input/HaloAutoTest.c", "index": 280, "status": "Matching" },
@@ -680,7 +680,7 @@
{ "name": "source/game/game_engine_ctf.c", "index": 305, "status": "NonMatching" },
{ "name": "source/game/game_engine_bomb.c", "index": 306, "status": "Matching" },
{ "name": "source/game/game_engine.c", "index": 307, "status": "NonMatching" },
{ "name": "source/game/game_allegiance.c", "index": 308, "status": "NonMatching" },
{ "name": "source/game/game_allegiance.c", "index": 308, "status": "Matching" },
{ "name": "source/game/game.c", "index": 309, "status": "NonMatching" },
{ "name": "source/game/cheats.c", "index": 310, "status": "NonMatching" },
{ "name": "source/game/aim_assist.c", "index": 311, "status": "NonMatching" },
@@ -841,7 +841,7 @@
{ "name": "source/ai/action_guard.c", "index": 466, "status": "NonMatching" },
{ "name": "source/ai/action_flee.c", "index": 467, "status": "NonMatching" },
{ "name": "source/ai/action_fight.c", "index": 468, "status": "Matching" },
{ "name": "source/ai/action_converse.c", "index": 469, "status": "NonMatching" },
{ "name": "source/ai/action_converse.c", "index": 469, "status": "Matching" },
{ "name": "source/ai/action_charge.c", "index": 470, "status": "NonMatching" },
{ "name": "source/ai/action_avoid.c", "index": 471, "status": "Matching" },
{ "name": "source/ai/action_alert.c", "index": 472, "status": "Matching" },
@@ -0,0 +1,82 @@
# Five small Halo object admissions (2026-09-23)
## Result and scope
Five Halo-owned translation units outside the concurrent Lane D allowlist are
promoted from `NonMatching` to `Matching`. Their 93 January function bodies,
12,876 meaningful code bytes, and 4,116 target-owned data bytes were **already
strict-exact/credited** before this admission. This batch adds **zero** exact
code or data bytes; it changes the audited whole-object count from 408/833 to
413/833. Candidate-only pooled literals receive no January-byte credit.
| Unit | Strict functions | Meaningful code | Target data | Candidate-only runtime code |
| --- | ---: | ---: | ---: | ---: |
| `source/ai/action_converse` | 9/9 | 856 | 36/36 | 0 |
| `source/scenario/wind` | 9/9 | 1,917 | 100/100 | 0 |
| `source/memory/stack_memory_pool` | 33/33 | 4,678 | 1,000/1,000 | 0 |
| `source/input/input_xbox` | 27/27 | 3,557 | 2,748/2,748 | 0 |
| `source/game/game_allegiance` | 15/15 | 1,868 | 232/232 | 0 |
The fresh PID-isolated `gate.py --all` comparison passes for every unit.
`input_xbox` has an ordinary objdiff false negative for the 192-byte
`_input_key_is_down`; the hardened COFF comparator and existing accepted
semantic exception both classify it strict exact. None of these five has an
active park or object-admission rejection. The full `ninja` build, stable
function sweep, park validator, and admission audit were rerun after the
status changes.
## Target-owned COFF and pooled-literal boundary
`action_converse`, `wind`, and `stack_memory_pool` have exact target-owned
section identities, including normalized payload, size, flags, COMDAT
selection, symbol storage and offsets, and ordered relocation identities:
respectively 9/9 code plus 1/1 data; 9/9 plus 6/6; and 33/33 plus 24/24.
No target-owned COMMON or candidate-only code is present. Each surplus
candidate section is a naturally emitted SELECT_ANY pooled literal that the
January split imports and another January object selects with identical bytes
and relocations. Twenty ordinary VC7/XDK base/base pair links, in both input
orders against the selected-provider equivalents, report no `LNK2005` or
`LNK1169`; expected unrelated `LNK1120` unresolved externals remain. No
forced link, patch, stub, or attribution of these literal bytes is used.
`input_xbox` likewise has 27/27 exact target code sections, 23/23 exact
target-owned noncode sections, and no candidate-only code or COMMON. Its only
candidate-only runtime section is the seven-byte SELECT_ANY `"buffer"`
literal. January imports it from this object and selects the identical copy
in `cseries.obj`; ordinary base/base links in both orders pass the duplicate
phase and stop only on unrelated unresolved imports. The 0x40c-byte private
`input_globals` BSS owner has January's symbol class and offset.
`game_allegiance` has 15/15 exact code sections and no extra code. Its 40-byte
team-name table has ten resolved relocations to the same image addresses as
January. Its private four-byte pointer BSS owner has the same logical zero
contents, storage, size and offset; csplit's materialized BSS and VC7's
fileless BSS differ only physically. Ten candidate-only SELECT_ANY team-name
strings (77 bytes) are identical to January's selected providers. Twelve
ordinary provider-pair link probes (both orders) have no duplicate-definition
failure, though they stop on unrelated unresolved imports. HCEX PDB separately
corroborates the static pointer versus global team-name table. These
representation and literal-selection facts are disclosed; none earns new
data credit.
## Source-quality and verification boundary
The only source edit in this batch changes the private `stack_memory_pool_block`
metadata fields from misleading `void **handle` / `long lock_count` to
`char const *file` / `unsigned long line`, removing an unrelated pointer cast.
The allocation API already supplies those exact types; all 33 target functions
remain strict exact and the layout is unchanged. Other four source files are
unchanged. Existing provisional names in `input_xbox` and reserved scenario
layout spans in `action_converse` remain explicitly inferred, not claimed as
original spelling or structure members. Fake-match scanning finds no new
lead; no manual helper expansion, assembly, pragma, or new inline COMDAT was
introduced. The user's held `path_obstacles` parenthesis lever is untouched.
After regeneration, `python -m tools.campaign.stable_verdicts diff` reports
**zero gained, zero regressed** over all 8,245 function rows; the strict
snapshot remains 7,493 exact. The admission audit reports zero contradicted
Matching labels, and park validation reports zero stale/invalid entries.
`python -m pytest -q tools` passes 1,152 tests, 5 skips and 26 subtests;
plain `pytest -q` is not the repository's supported invocation because it
also collects inaccessible scratch paths and omits the project import root.
`git diff --check` passes. No Lane D source file is touched.
+4 -4
View File
@@ -134,8 +134,8 @@ struct stack_memory_pool_block
long slot_index;
struct stack_memory_pool_block *previous;
struct stack_memory_pool_block *next;
void **handle;
long lock_count;
char const *file;
unsigned long line;
unsigned long header_signature;
byte data[1];
};
@@ -1059,8 +1059,8 @@ static struct stack_memory_pool_block *stack_memory_pool_allocate(
pool->blocks[pool->next_block_index],
size);
block = pool->blocks[pool->next_block_index];
block->handle = (void **)file;
block->lock_count = line;
block->file = file;
block->line = line;
if (!pool->first_block)
{
match_assert(