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.
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.
All packets passed a precedent audit and an independent adversarial review.
No object changes status.
- Storage per cachebeta publics (source static + symbols.json rows):
- bink_playback: four globals;
- weapons: 11 rows + weapon_magazine_finish_reload;
- object_lights: 4 helpers; should_render_lights is the /Od-attested call and
its prototype leaves the public header;
- vehicles: _update_turret_physics;
- weather_particle_systems: one_over_char_max is external (cachebeta public,
HCEX Global); its globals are static;
- rasterizer_xbox_debug: 8 D3DINLINE wrapper rows (already Matching: audit
FAIL(8) -> PASS, pdb 8 -> 0).
- draw_string: the invented external draw_string_globals aggregate (pads, blob,
#define aliases) becomes four HCEX-attested file statics in /Od declaration
order with = { 0 } (a595bbc2 precedent); typed multitexture params.
- render_debug: three rule-6 hand expansions become real point_from_line3d
calls (ruling #1/#2); the opaque vehicle view gives way to struct
vehicle_datum + vehicle_datum_try_and_get; the six debug_* toggles become
tentative definitions (COMMON evidence).
- vehicles: the TU-wide REAL_MATH_EXTERNAL_POINT_FROM_LINE3D define is gone and
the pathfinding hand expansion becomes the genuine call (ruling #1).
- rasterizer_xbox_profile V1R (reviewer-amended): byte-inert /Od parameter
order, the BUG marker comment, detail_objects via the rasterizer_xbox.h API,
and a rejection text that keeps the SDK-table policy question open.
- semantic_data_matches.json: single-section '$'-defect entries with
allow_incomplete_unit for projectiles _projectile_update_section (1,548 B) and
object_lights _lights_section (1,541 B) (leaf_map / editor_flying_camera /
race precedents).
Gate (full ninja, objdiff 3.3.1): objects 384 (unchanged), code unchanged,
data +3,089; stable diff 0 regressions; parks 83/0/0; admission 10/0/2/0; fake
scan 26; pytest 1159 passed; diff --check clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
objects.h: both bounding-sphere inline assertions report OBJECTS_H_FILE, which
defaults to January's relative "..\objects\objects.h". object_lights defines the
absolute spelling first, as January's string census shows. action_vehicle loses
its NODUP hand copy of object_get_bounding_sphere, so the header inline is the only
definition. render_objects' lighting_storage becomes the static local of
object_get_cached_render_lighting (symbols.json).
path.h: the opaque __unknown140A0[0x5C] span is HCEX's `struct path_result
result`, and path.c stores through the field instead of a punning cast.
Consumer sweep (full ninja, objdiff 3.3.1): stable diff shows 0 regressions and no
moved rows beyond the batch-1/Layer-2 gains. Parks 93/0/0, admission 15/0/7/0,
pytest 1157 passed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shared-header prerequisite packet:
- real_math.h: distance2d/distance3d become square_root(distance_squared*(a,b))
(/Od build, no local); project_point2d takes short mapping locals and a
single ?: store (/Od-attested, equal to January's selected copy);
lock/unlock_global_random_seed move from the 2026-09-04 reconstruction
header random_math.h into real_math.h's existing RANDOM_MATH.C prototype
section (main.c calls them without random_math.h).
- action_vehicle, path_obstacles, decals drop their '#define x x_inline'
renames and hand-written NODUP helper copies; the header inlines now emit
byte-identical copies of January's selected sections.
- object_lights and players adopt the /Od caller spellings (0x5d0d50).
Full ninja + rename-stable 8,245-function diff: +2 exact
(_player_set_action_result, _convex_hull2d_perimeter; park retired),
0 regressions. _ai_test_line_of_sight park remeasured (size/relocations
unchanged, fuzzy 97.98 -> 97.92).
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.
symbols.json names the private profile_section static _lights_section (January name record "lights"; campaign <name>_section convention, static). light_unmarked and find_point_lights_for_object_in_cluster use the exact siblings' spelling; build_distant_lights uses magnitude2d on the shadow vector; lights_prepare_for_object_static scopes its corner point; lights_preprocess_scene uses the parent unit camouflage directly, the marker forward vector and January's radius-before-color store order. 5 parks removed. Adversarially verified in wave D; full build of the combined object_lights + observer set: 0 regressions, parks 391/0/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Retain 18 strict exact-function gains across Actions, Actor Combat, Decals, Game Engine, Object Lights, and Bipeds after removing donor bodies that regressed exact objects, emitted unowned code, or violated source-credibility rules. Name authenticated private symbols, move declarations to owner headers, record honest residual parks, and preserve units.obj at 189/189.