CARD C2  (written 2026-09-26 02:03:56 -0700, before compile)
Observed: ID-sensitive x87 sites downstream (0xf52/0xf6d/0xf7d group after C1). No byte-visible defect in the aiming
block itself (J 0x2b0..0x3a0 equal to ours).
Evidence (D, /Od 0x49c909..0x49c938): after `v0 = actor_perception_aiming_vector_test_blockage(...)` stored to the named
short [ebp-0x74], /Od computes `(blockage_type > v0) ? blockage_type : v0` into an unnamed word temp (-0x182e) and
assigns it to blockage_type unconditionally: exactly `blockage_type = MAX(blockage_type, v0);` with cseries.h
`#define MAX(a,b) ((a)>(b)?(a):(b))`. Ours: `if (blockage_type <= v0) blockage_type = v0;`.
Prior history: astra wave2 shape 1 "blockage MAX expression" measured 24,832 (vs 24,848) at a 57/3 baseline and
rejected on global effect only (no source objection). NEW context: the ID-state lever (C1) is now known.
Correction: `blockage_type = MAX(blockage_type, v0);` (existing cseries macro, rule 12).
Prediction: aiming block bytes unchanged or equal-size; downstream ID-sensitive sites move (direction unknown);
0x46b/0x630 stay January (C1).
Decisive test: gate --all on c1+C2; sdiff region list.
