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.
- geometry: drop the NODUP hand copy of plane2d_distance_to_point, so the
header inline is used (selection byte only; removes a latent
collision_bsp<->geometry LNK2005).
- collision_bsp: collision_bsp_usage_times is file-static (cachebeta publics).
- rasterizer_lights P1: HCEX file statics with January's .bss layout (the
load-bearing `= {0}` follows the VC7 initialised-statics law and precedent);
lands atomically with its 6 symbols.json rows.
- motion_sensor: .bss symbol layout fix (object_audit 44/2 -> 44/0).
- rasterizer_xbox_models: five D3D wrapper rows static.
All byte- and credit-neutral (gated with batch 5a); objects stay incomplete
on residual functions and held owner items.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
_collision_debug_render is now strict exact: 4,192 padded / 4,182
meaningful bytes, 278 relocations, normalized sha256
5a365dfa90e8300c345e596646f4d2a0be40c6a2527b4b15e747a3de364990d3.
The source is the structural lane's /Od-guided reconstruction,
re-gated on 188d6c1b.
- Locals take the first-party RTC names (point, vector, vector_result,
collision_point, rotation_matrix, rotated_points, cube_vector,
textstring, position/velocity/new_*, o, p, i, j, k, bounds, v,
test_center). The RTC-recorded 2048-byte textstring replaces the
earlier 1000-byte buffer and its "bug" comment.
- The invented collision_debug_spray_globals aggregate becomes three
file-static arrays: collision_debug_spray_normals, _points and
_hit_flags. symbols.json carries the matching three-way static split.
Evidence for three separate variables:
- January's module-140 .bss contribution is exactly normals + points
+ hit_flags + the four scalars;
- the relocation addends are +0, +0x3840 and +0x7080;
- the /Od build addresses the three arrays separately and
non-contiguously;
- one aggregate loses 2 of the 278 relocations.
csplit output changes only collision_debug.obj.
- New helper COMDATs: _point_from_line3d, _scale_vector3d,
_add_vectors3d and _set_real_vector3d. Each is byte-identical to
January's selected copy (action_charge, actor_combat, actions), no
object defines any of them NODUP any more, and all pair-link in both
input orders. This follows the owner's 5e81dabf precedent for
all-inlined TUs (biped_limp_noodle, actor_type_infection).
- New point/vector cast at add_vectors3d(&point, &vector, &point): the
/Od build passes the 12-byte `point` local as argument 1 and 3 at
0x7b0c5c. It is byte-inert (stripped: still EXACT, same sha). The
cube-vertex cast was already present.
Function credit only. The object is not marked Matching.
_collision_debug_cube_vertices is static in source and in January
(absent from cachebeta.pdb publics) but still external in symbols.json.
That is a separate, pre-existing ownership follow-up.
Verification: full ninja (objdiff 3.3.1, as canonical); stable diff vs
frozen 8,245-function baseline +1 / 4,192 padded bytes, 0
regressions; parks 103/0/0; admission audit 13/0/7/0 (no new
contradiction); fake-match scan 0 -> 0; python -m pytest -q tools
1154 passed; git diff --check 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.
ZERO exact credit. Better-evidenced bodies retained per house rule 11. No new
representation-punning casts (screened), no ownership change, no new
fake_match_scan lead, line endings preserved.
- physics/collisions.c _collision_move_point (4,752 B, not parked): reviewer byte
compare with relocation sites zeroed - differing bytes 3,847 -> 6. Size
4752 == 4752 and relocations 226 == 226. The remaining six bytes (0x595-0x597,
0x59b-0x59d) are ONE transposition of two independent instructions, so the body
is semantically January on every path. Each hunk was strip-tested alone and is
byte-bearing (position block scope, post-increment placement, ...). The owner's
collisions[-1] ban is respected; line 1572 is untouched.
- ai/path.c (both PARKED, entries refreshed in this commit):
_path_state_traverse (2,096 B): rewritten statement-for-statement from the /Od
build (fn 0x4c6a70) with each fact confirmed in January's bytes. Frame and
return count are now January's; differing regions 132 -> 61; objdiff
64.6% -> 98.6%. Padded size is now 2112 vs 2096. Residue is confined to
0x10b-0x4cc, at the hand-expanded point_from_line3d sites forced by the
emission guard (path.obj is in the owner's still-guarded all-inlined class).
_path_state_estimated_distance (496 B): size now equal (was 528), 191 == 191
instructions, objdiff 77.5% -> 95.5%; residue is a three-register cycle.
- ai/action_charge.c _action_charge_perform (3,248 B, not parked): three hunks
accepted - melee arm first, the `!ranged || underwater` arm, and the two-store
unreachable test - each a pure block move or an equivalent rewrite with the
same evaluation order. NOT landed: the worker's `__inline` added to eleven
baseline-exact local math helpers (flips their COMDAT selection for zero
credit; two earlier lanes declined the same lever; needs a helper-linkage
ruling). action_charge still emits the January-owned _point_from_line3d.
Config: config/parked.json - the two path entries re-measured in place by line
surgery (base size / sha / objdiff percent) with a dated evidence note each.
Parks 174 active / 0 stale / 0 invalid.
Verification: see the preceding strict commit (same build): 0 exact regressions,
0 report rows lost. Reviewer: independent adversarial agent per unit,
ACCEPT_FUZZY_ZERO_CREDIT; partial files built by the reviewers and re-gated by
the orchestrator.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ZERO exact credit. Better-evidenced source retained per house rule 11; none of
these functions is parked, so no park entry moves.
- ai/actor_type_infection.c _infection_swarm_control (3,616 B): partial rewrite
from January's bytes. Baseline was 256 bytes short with a wrong frame and a
wrong constant multiset (missing 1.0f, -1/15, (double)1e-4f, +/-pi/2; an extra
_normalize3d call). Now residual [sha] ONLY: size 3616 == 3616 and relocations
104 == 104. Side effect: the unit's .rdata section (228 B) now matches January
(data +228, not counted as Lane B code credit). Adds the include of
ai_scenario_definitions.h for the _ai_atom_move_facing_* enum the recovered
obey-facing switch needs (no header edited).
- units/bipeds.c _biped_update_moving (4,080 B): four in-function corrections,
each read from January: `0.01f` not the double `0.01` (January's constant is
__real@3f847ae140000000 = (double)0.01f); `!(fabs(dyaw) < _real_epsilon)`;
the two ground_tangential_* stores in January's order; no (short) cast on
actor_index. The reviewer measured the worker's file-scope `realcmp` macro as
byte-inert and it was DROPPED (strip test). Still residual [size, sha].
- physics/physics.c _physics_update_old (5,168 B): rotation_axis is assigned
immediately before normalize3d, after object_translate - a store cannot cross
a call, so its position relative to the call IS January's statement order.
The reviewer REJECTED the rest of the physics candidate (21
PHYSICS_POINT_FROM_LINE3D macro sites and body rewrites) pending an owner
ruling; only this two-line change lands.
Verification: same full build and sweeps as the preceding strict commit -
0 exact regressions, 0 report rows lost, parks 180 / 0 / 0.
Reviewer: independent adversarial agent, ACCEPT_FUZZY_ZERO_CREDIT for each;
partial-landing files produced by the reviewers and re-verified by the
orchestrator (unitcheck NO LOSS, guard, ownership, fake scan, line endings).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Identical text to claude/data-section-credit-20260920 for these six files
(git diff against that branch is empty), so the two branches merge cleanly.
ZERO Lane B credit is claimed: the five data sections belong to the data lane.
Taken deliberately because three of the hunks change relocation IDENTITIES
that Lane B code residuals need before they can ever gate exact:
action_vehicle.c 0.1225f -> 0.35f*0.35f (__real@3dfae147, January's
folded product) - _action_vehicle_find_destination
collision_debug.c assert text count<=14 - _collision_debug_render
path_structure_bsp.c assert spacing - _structure_test_line2d
and three are the .bss layout law (= 0 / = FALSE on debug globals):
player_control.c, collisions.c, bipeds.c
Units/functions: none change verdict. Strict meaningful +0, padded +0.
Fuzzy: none. Data: +489 B (116+300+43+26+4), credited to the data lane.
Stable regression: scratch/lane_b_before.json -> lane_b_w0.json, 0 regressions,
0 gains. Lane inventory row-diff: 0 losses, 0 moves. Parks 0 stale / 0 invalid.
Full ninja all_source progress semantic_progress: pass
(Code 1443979 / 1770166, 7291 / 7574; Data 2360994 -> 2361483).
Config/header changes: none. Reviewer: data lane's own verification; re-verified
here by full build and row diff.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Integrate six accepted exact functions, two whole-object admissions, evidence-backed zero-credit source corrections, owner-header cleanup, and curated campaign records. Preserve zero regressions and exclude generated scratch archives from canonical history.
- _collision_bsp_test_vector_recursive: reads the leaf flags through the
typed tag-block macro inline (HCEA spelling)
- _collision_surface_find_closest_point2d: vector_from_points2d and
cross_product2d replace hand-expanded math, as the exact sibling
collision_surface_test_point2d does
- _ai_communication_update_speech_timers: includes the owner header
cseries/errors.h for error() and names the timer label
- _cached_map_file_read_header: the exact wait helper snapshots the
completion flag before returning, reproducing January's double volatile
load at both inlined sites; the still-parked _cache_files_open_cache_files
is re-measured (closer, non-exact)
- _update_client_local_ticks: countdown tick loop and a machine_index
local passed to both server calls (January calls the build helper out of
line, which a literal 0 argument does not reproduce; disclosed)
- _rasterizer_sort_external: plain indexed loops; the object's eight
file-private globals are static, as only this object uses them
Stable diff: 0 regressions; admission 28 candidates / 0 contradicted;
active parks 201 -> 195.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w3b landing, adversarially verified. _collision_log_get_current_user takes January's single-exit short-return form (law A3(c); C4244 at both callers) and is now code-identical to January; the only strict difference is a csplit negative-index relocation alias (_global_current_collision_users-2 == _collision_usage_current+2974), so its park is re-measured and reclassified csplit-relocation-alias (validated by tools.parked_functions). Zero strict credit. Full ninja build and stable sweep: 0 regressions.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wave w2 landing, adversarially verified. park reopens: _collision_log_render. Full ninja build and per-function stable_verdicts sweep: 0 regressions. 1 park(s) removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
plane2d_distance_to_point helper form; three parked recursions refreshed to closer target-size structures (evidence appended). 2 park(s) removed. Adversarially verified (wave D park re-investigation); full build of the combined wave D set: 0 regressions, parks 402/0/0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
January's decals copy of the bsp3d_get_plane_from_designator inline branches on the sign bit (jns), matching the punpckhdq upstream spelling. Full build: decals::_bsp3d_get_plane_from_designator exact (112 padded), 0 regressions across all bsp3d.h consumers, parks clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
actor_firing_blindly (actors.h), player_aim_projectile (aim_assist.h), projectile_kill_tracer (projectiles.h), unit_adjust_projectile_ray (units.h) and the remaining weapon datum flag bits. Removes the verbatim duplicate collision_surface_polygon prototype from collision_bsp.h; without that cleanup the two added declarations regress units::_unit_preprocess_node_orientations (declaration-count sensitivity, bisected). Full build with the weapons body: 0 regressions, parks clean.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reconstruct _main_loop from the exact Claude packet using semantic helper names, authentic types, and owner-header prototypes. Keep collision timing declarations behind the collision debug/log boundary so units.obj remains exact.