Recover transparent geometry submit (+1,285 meaningful code, zero exact losses); reconcile COMMON ownership and Q10 85+EXT1 credit, actions/main data, and separately disclosed denominator corrections. Preserve canonical-only repairs and all held research. C09 is ordinary disclosed cleanup, not a claim of proven scaffolding intent. Clean rebuild, 1,663 tests, parks, audits, provider links and independent EXT1 check pass. Local reconciliation only.
Import only independently reviewed production changes. Preserve canonical physics and virtual-keyboard repairs; keep B3 and all unresolved holds out.
Record exactly four approved canary debits (6987 meaningful bytes), six Halo admissions and two revocations. Keep vendor ioinit/storage work separate. Full build, 8252-row sweep, 1318 tests, park/admission/fake audits and 621-object binding pass within approved debit bounds.
Do not publish donor research dumps or private assets. README and unrelated user research remain untouched. See frontier_publication_reconciliation_20260927.md for complete evidence limits and accounting.
Approved CH-P1 plus private-storage prerequisite from005f965f/af5c0f7b. Eight later-demo-attested names at January offsets, fourth riff_format_info name disclosed as later only; original riff chunk literal unchanged. Removes invented wrapper, aliases, align directive. Fresh resolved bytes/relocations identical; full build/stable/parks/admission,1318 tests pass. Zero credit.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Approved CG-P105 plus static prerequisite, from2c6b0292/dac1af35. Later demo PDB names disclosed; January offsets/layout align4 independently checked. All resolved bytes/relocations preserved, alignment8 to4 only. Full build, stable sweep zero losses, parks/admission,1318 tests pass. Zero credit.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Independently gate storage + K, OQ-4 P-a/P-b1, four static-local packets and comment-only disclosures. Preserve all 7641 exact owner rows, 71 valid parks and 1161 passing tests; code/data credit unchanged. G and game_engine admission remain held because current canonical loses populate_statistic_buffer. Existing collision static-local repair is not duplicated. No donor tree, held candidate, scorer or private asset imported.
The Xbox game state (0x345000 bytes at 0x80061000) ends exactly where the
map-linked tag cache begins and has 948 bytes free, so a 128-player
session cannot even allocate its player datums. The native builds now
place a 16 MB game state (CPU 0xFC0000, GPU 0x40000) at 0x81A00000, above
the tag cache and below everything the Xbox memory window hands out
top-down, and grow the pools that scale with the number of players:
- objects: 2048 -> 8192 headers, 1 MB -> 8 MB pool; the garbage limits
keep January's proportions (5/10/20 % of the pool, 2.5/5/10 % of the
headers, 75/50/30 active garbage objects per 16 players)
- cluster partition reference lists 2048 -> 8192 (collideable and
noncollideable objects, lights); a full list drops objects out of
rendering, collision and sphere queries
- effects 256 -> 2048, effect locations 512 -> 4096
- particles 1024 -> 8192 (render_particles' visible list, filled without
a bound check, follows), particle systems 64 -> 256, their particles
512 -> 4096
- contrails 256 -> 1024, contrail points 1024 -> 8192
(MAXIMUM_CONTRAIL_POINTS stays the pool size for the same reason)
- lights 896 -> 4096, object looping sounds 1024 -> 4096
- cached object render states and rendered objects 256 -> 1024
- script object-list references 128 -> 1024, objects one explosion can
damage 64 -> 256
The values live in port/linux/include/halo_port_capacity.h, included by
halo_port_limits.h. With 128 player datums the CPU part holds 14,256,908
bytes (2,258,164 free). Saved games and cores grow to 16 MB. Every change
is under HALO_LINUX; the MSVC objects are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The seven raw datum_get(game_looping_sound_data, i) sites become
game_looping_sound_get(i), January's own name (line-282 assert string). The
debug object is byte-identical, and verbatim retail bodies in Oct-2001 2276P
go from 19 to 28 of 32.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each of actor_types, recorded_animation_definitions,
model_animation_definitions, sound_classes and object_types had strict
exact functions and a .data section byte-identical to January's: same
payload, flags and resolved relocation destinations. But each also had
private symbols whose storage disagreed with January. cachebeta.pdb
publics are the independent truth: none of the corrected symbols is
public, and no other January object references them.
- actor_types: the address-named accessor and table become
actor_type_definition_get and actor_type_definitions, both static.
January's own assert strings name the table, and the Halo CE atlas
names the accessor at the same 0x140-byte span.
- recorded_animation_definitions: byte_swap_recording is static.
- model_animation_definitions: the seven *_animation_list_entries
arrays are static beside their public animation_list wrappers.
- sound_classes: _code_001b84c0 is sound_class_datum_get (static). The
atlas mapping is anchored on six exact sound_classes names.
- object_types: bss_00456e98 is processed_bsp_flags (static), the
object's only file static in HCEX.pdb.
- items: drop the hand-written NODUP valid_real_matrix4x3 and
valid_real_vector3d_axes3 copies (bodies identical to real_math.h).
items genuinely uses them, and all 18 items rows are unchanged. This
lets object_types' candidate-only copies pair-link. All eight
object_types helper COMDATs are byte-identical to January's selected
copies.
Five pinned entries in config/semantic_data_matches.json.
- Canonical scorer (objdiff 3.3.1): credits 6,656 data bytes and clears
5 more revoked admission rows (9 -> 4).
- Pinned objdiff 3.6.0: already fully matched (verified no-ops).
- No code bytes, no config status change.
Verification: full ninja; stable diff vs frozen 8,245-function
baseline 0 gained / 0 regressions; parks 103/0/0; whole-object audit
PASS, PDB-storage 0 disagreements and provider links PASS for all five;
fake-match scan unchanged (0 -> 0) on all six changed sources; pytest
1154 passed; git diff --check clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lane D refresh packet 2: sound, +5,088 padded bytes strict exact
(9 functions), zero stable-verdict regressions.
- game_sound.c: _compute_sound_obstruction, _game_sound_update and
_update_potentially_audible_looping_sound exact. Uses the real
unattached_looping_sound_stop and vector_from_points3d helpers; the
duplicated `state = active` store in both refresh-state arms is attested
by the debug build (strip test fails without it).
- sound_manager.c: _refresh_listener, _sound_find_like_channel,
_sound_refresh_looping (single exit) and _update_channel_for_impulse_sound
(sound_scale_value helper) exact. The worker's
update_channel_for_looping_sound rewrite changed behaviour when a next
definition exists but the permutation chain continues, and both (word)
cast removals changed NONE from 65535 to -1; those two functions stay at
baseline.
- sound_dsound_xbox.c: _channel_queue_packet exact (statement order).
- ima_adpcm.c: _decompress_ima_adpcm_audio_data exact (separate
remaining-sample counter).
- parked.json: unpark the six newly exact parked functions.
Gate: ninja PASS, parks 144 active / 0 stale / 0 invalid, admission 0
contradicted / 0 revoked, fake scan 0 leads, castcheck clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Integrate verified source and data progress; exclude unproven COMMON ownership, held UB/asm forms, and address-named data credit. Stable sweep: 23 exact functions gained, zero lost.
- _dsound_initialize: one final success/dispose block instead of four
per-arm dsound_dispose calls; create_inanity_channel chained into the
success flag like the channel loops
- _extract_build_texture_pages_by_sequence: begin the selected texture
page once after the page-selection if/else (park reopen)
Rejected: _player_control_modify_desired_angles (factor order selected
from a 12-order search - operand permutation steering; owner-ruling
queue), _compute_sound_obstruction (new _vector_from_points3d COMDAT,
pending owner ruling), _update_potentially_audible_looping_sound
(duplicated arm stores), _path_avoid_obstacles and
_render_debug_obstacle_path (unauthenticated .bss label names).
Stable diff: 0 regressions; active parks 223 -> 222.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed reconstructions, each strict exact in its whole-TU gate with
zero inherited losses, guard passing and no new owners:
- rasterizer_xbox_screen_effect (13/13): complete per-arm shader setups,
load-before-call locals, January assert texts, PIN clamp; screen_flash
projection spelling and the defined inverse-pixel default arm
- hs_compile: _hs_parse_begin (per-branch result type; January's extra
sprintf name argument kept with a BUG comment), _hs_parse_cond_recursive
(single exit; January's always-true negation test kept with a BUG
comment, byte-proven and recorded in HCEA)
- geometry: definitions in January object order (assert lines ascend),
duplicate prototype removed, _get_edge_vertex single exit
- render_cameras: view_to_screen and build_frustum_bounds simplifications
- sound_manager: _sound_dispose_from_old_map loop-exit flag
Rejected in review: _encounter_test_rule (redundant default stores),
_render_camera_mirror (point_from_line3d COMDAT), _sound_set_definition_end
(prototype contradicting its definition).
Stable diff vs 9062b1e96: 0 regressions; parks 255 -> 250.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave n3a targeted the 43 eligible parked rows that still carry a structural gap,
on the evidence that all five wave n1 landings were parks whose recorded premise
did not survive a census. In already-mined units the hypothesis did not pay: no
strict exact function, and the verifiers rejected reopens in s3tc (3),
motion_sensor, bink_playback (2).
Landed at ZERO credit, both strictly closer and both still parked:
- _sound_refresh_looping: the park text blamed a compiler-merged duplicate fade
call tail. The relocation census refutes that - it was a source defect. Removing
the fade_in_time phi local recovers January's fourth _sound_start_fade
relocation, so relocations are now exact at 43/43, size moves 1088 -> 1120
against January's 1136, and alndiff regions drop 74 -> 37.
- _update_channel_for_looping_sound: size and relocations now both January-exact
at 1360/61; the residual is [sha] only.
The verifier removed two defective hunks from the submitted refresh body before
accepting; the corrected body is byte-identical to the submission.
Full ninja, parks 274 active / 0 stale / 0 invalid, stable diff vs
scratch/opus5-next150-before.json: gained 7 / 6,832 padded, regressions 0; fake
scan 0 leads.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w1 landing, adversarially verified. exact: _sound_new_impulse. Full build of the combined batch: 54 strict gains / 29,440 padded, 0 regressions, parks 355/0/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A single-exit pitch limiter and a plain for detail loop (January has no guarded do-while; VC7 unroller law) replace the parked forms. Adversarially verified. 2 parks removed; +2 exact (400 padded). Full build of the combined reopen set: 0 regressions, parks 451/0/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
+2 strict exact functions / 400 padded bytes. sound_definition_promote uses
a single-exit short result with compound field updates in January store
order; source_audible returns its nearest listener index once, with an
else-if mode chain. sound_manager: 53 exact / 12 residual.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>