Matched within-role controls

Matched colour contrasts retain a repeated upper negative arc/lobe and lower/right positive structure in all five fields, separately within contributor and anchor roles. Magnitude contrasts have mixed core–ring signs and field-dependent asymmetry, providing no common width-correction justification. Joint own-template translation, Laplacian, amplitude and pedestal projections leave substantial structured colour residuals; a two-coordinate colour shift is a bounded diagnostic, not an adequate explanation. A colour-asymmetry candidate must survive independent template and held-out tests before any intrinsic or photometric-improvement claim.

Model campaign · Complete record and fixed calipers · Support CSV · Metrics and intervals · Projection coefficients

Evidence boundary: archived in-sample fits, positive fitted-amplitude denominator, scene-catalogue crowding limited to Tmag<13. No calibrated p-values or held-out improvement. The one-block samples have no interval.

Descriptive block intervals

C1

ContrastEligible armsPairsBlocksCommon grid
magnitude_role0590 / 8222201598.7%
magnitude_role12480 / 50701811197.9%
colour_role0199 / 365491699.0%
colour_role1792 / 11373481297.9%
magnitude_role0: absolute stacks and matched difference
magnitude_role1: absolute stacks and matched difference
colour_role0: absolute stacks and matched difference
colour_role1: absolute stacks and matched difference
Role 0: own-template translation / smoothing / nuisance projection
Role 1: own-template translation / smoothing / nuisance projection

C4

ContrastEligible armsPairsBlocksCommon grid
magnitude_role0654 / 10802561499.1%
magnitude_role14230 / 88133123197.0%
colour_role0353 / 5261161598.8%
colour_role11317 / 2685832197.5%
magnitude_role0: absolute stacks and matched difference
magnitude_role1: absolute stacks and matched difference
colour_role0: absolute stacks and matched difference
colour_role1: absolute stacks and matched difference
Role 0: own-template translation / smoothing / nuisance projection
Role 1: own-template translation / smoothing / nuisance projection

F1

ContrastEligible armsPairsBlocksCommon grid
magnitude_role0663 / 9922451198.1%
magnitude_role13213 / 66092341197.4%
colour_role0264 / 488831599.3%
colour_role1910 / 1915508797.0%
magnitude_role0: absolute stacks and matched difference
magnitude_role1: absolute stacks and matched difference
colour_role0: absolute stacks and matched difference
colour_role1: absolute stacks and matched difference
Role 0: own-template translation / smoothing / nuisance projection
Role 1: own-template translation / smoothing / nuisance projection

F2

ContrastEligible armsPairsBlocksCommon grid
magnitude_role0534 / 8291671497.0%
magnitude_role12650 / 54851866194.7%
colour_role0246 / 432591597.4%
colour_role1813 / 1671433495.9%
magnitude_role0: absolute stacks and matched difference
magnitude_role1: absolute stacks and matched difference
colour_role0: absolute stacks and matched difference
colour_role1: absolute stacks and matched difference
Role 0: own-template translation / smoothing / nuisance projection
Role 1: own-template translation / smoothing / nuisance projection

S22

ContrastEligible armsPairsBlocksCommon grid
magnitude_role0643 / 9361901697.7%
magnitude_role12808 / 56361785193.9%
colour_role0238 / 483611696.0%
colour_role1776 / 16563481296.3%
magnitude_role0: absolute stacks and matched difference
magnitude_role1: absolute stacks and matched difference
colour_role0: absolute stacks and matched difference
colour_role1: absolute stacks and matched difference
Role 0: own-template translation / smoothing / nuisance projection
Role 1: own-template translation / smoothing / nuisance projection

Method and record

# Matched native residual control — predeclared 2026-10-04

Status: complete; all calipers below fixed before reading matched residual outcomes.
Question: do catalogue magnitude or actual XP-u residual contrasts persist inside one training role after local nuisance matching?
Inputs: ../baseline/{C1,C4,F1,F2,S22}/native.npz, geometry.npz and summary.json; archived full A3 in-sample states, no model changes.
Code: dev worktree epsf-model-closure-20261004/model_closure_20261004/matched_native.py (parent campaign branch).

Primary contrasts: role 0 contributor Tmag [8,10) minus [10,11); separately role 1 anchor [11,12) minus [12,13). Colour: u > 1.25 minus u < .75, separately in each role and catalogue Tmag [8,13). No role 0-versus-1 physical inference.
Matching: deterministic global greedy nearest-edge pairing without reuse; same role, position Euclidean distance <=200 native pixels; renderer phase torus distance <=.2 per axis; absolute difference in log10(1 + sum of catalogue flux ratios of other scene catalogue sources within 6 pixels) <=.25; core-valid fraction difference <=.1. Magnitude controls additionally |delta actual u|<=.08; colour controls instead |delta catalogue Tmag|<=.3. The crowding proxy uses the archived scene catalogue limited to Tmag<13, including role2; missing faint catalogue light remains uncontrolled. Pair edge score is summed squared normalized caliper distances. No relaxation for sparse bins. Eligibility: role0/1, finite catalogue magnitude and actual u, positive replay fitted flux, free amplitude. Support is called sparse if <10 pairs or <4 independent blocks.

Stamps: 33x33 grid at 0.25 native-pixel steps spanning +/-4 pixels, bilinear interpolation of the native pixel samples at the exact renderer origin (polynomial WCS plus explicit chromatic shift), not measured photocentre. Each interpolated pixel requires all contributing native support valid. Pairwise intersected support used for both arms, their data/model/residual stacks, and differences. Divisor is each star's positive replay fitted amplitude, not catalogue flux; data/model include overlapping full scene. This display is smoothed and is not an independently sampled ePSF measurement.

Metrics: equal-pair linear core-minus-ring mean (radius<=1 minus 2<=radius<=3), signed x/y moments within radius3, and outer pedestal mean at 3<=radius<=4, on common pair pixels. Spatial 512-pixel blocks by pair midpoint, merged when distinct pairs share an observed native pixel; 1000 block-bootstrap draws, seed104. Intervals are descriptive 2.5–97.5 percentiles, not calibrated p-values. Entire analysis remains conditional on in-sample fit and fitted amplitude, and cannot identify intrinsic magnitude dependence.

## Headline / Conclusion — 2026-10-04

Matched colour contrasts retain a repeated upper negative arc/lobe and lower/right positive structure in all five fields, separately within contributor and anchor roles. Magnitude contrasts have mixed core–ring signs and field-dependent asymmetry, providing no common width-correction justification. Joint own-template translation, Laplacian, amplitude and pedestal projections leave substantial structured colour residuals; a two-coordinate colour shift is a bounded diagnostic, not an adequate explanation. A colour-asymmetry candidate must survive independent template and held-out tests before any intrinsic or photometric-improvement claim.

Renderer contract checked in pinned loss.py `_epsf_params_for_context`: role1 anchors render the current learned ePSF, with gradients stopped for base/modes/weights, while chromatic leaves remain live. No fixed raw-ePSF substitution or magnitude-profile switch exists in this replay.

## Support and inspected images

All 20 data/model/residual panels, 10 projection panels and the metric summary were visually inspected. Dense anchor magnitude samples all merge to one spatial/overlap component; their bootstrap intervals are omitted (JSON null), never interpreted as zero uncertainty. The C4 anchor colour sample has the same limitation. Other bootstrap intervals are descriptive conditional intervals, not calibrated significance.

| Field | Contrast | Pairs | Blocks | Common grid fraction | Core–ring mean | y moment | Images |
|---|---|---:|---:|---:|---:|---:|---|
| C1 | magnitude_role0 | 220 | 15 | 0.987 | -7.353e-05 | 1.553e-05 | [magnitude_role0](C1/magnitude_role0.png) |
| C1 | magnitude_role1 | 1811 | 1 | 0.979 | 1.666e-05 | -2.926e-05 | [magnitude_role1](C1/magnitude_role1.png) |
| C1 | colour_role0 | 49 | 16 | 0.990 | 0.0005583 | -0.0002005 | [colour_role0](C1/colour_role0.png) |
| C1 | colour_role1 | 348 | 12 | 0.979 | 0.0003298 | -8.255e-05 | [colour_role1](C1/colour_role1.png) |
| C4 | magnitude_role0 | 256 | 14 | 0.991 | 1.29e-05 | 4.877e-05 | [magnitude_role0](C4/magnitude_role0.png) |
| C4 | magnitude_role1 | 3123 | 1 | 0.970 | -1.855e-06 | 6.051e-05 | [magnitude_role1](C4/magnitude_role1.png) |
| C4 | colour_role0 | 116 | 15 | 0.988 | 0.0004592 | -0.0002791 | [colour_role0](C4/colour_role0.png) |
| C4 | colour_role1 | 832 | 1 | 0.975 | 0.0004334 | -0.0002183 | [colour_role1](C4/colour_role1.png) |
| F1 | magnitude_role0 | 245 | 11 | 0.981 | -5.106e-06 | 3.12e-05 | [magnitude_role0](F1/magnitude_role0.png) |
| F1 | magnitude_role1 | 2341 | 1 | 0.974 | -5.02e-06 | 1.74e-05 | [magnitude_role1](F1/magnitude_role1.png) |
| F1 | colour_role0 | 83 | 15 | 0.993 | 0.0002273 | -0.0001498 | [colour_role0](F1/colour_role0.png) |
| F1 | colour_role1 | 508 | 7 | 0.970 | 0.0002486 | -0.0001352 | [colour_role1](F1/colour_role1.png) |
| F2 | magnitude_role0 | 167 | 14 | 0.970 | 3.287e-05 | 9.249e-06 | [magnitude_role0](F2/magnitude_role0.png) |
| F2 | magnitude_role1 | 1866 | 1 | 0.947 | 0.0001134 | 1.912e-05 | [magnitude_role1](F2/magnitude_role1.png) |
| F2 | colour_role0 | 59 | 15 | 0.974 | 0.0001045 | -0.0001835 | [colour_role0](F2/colour_role0.png) |
| F2 | colour_role1 | 433 | 4 | 0.959 | 0.0002567 | -0.0001327 | [colour_role1](F2/colour_role1.png) |
| S22 | magnitude_role0 | 190 | 16 | 0.977 | -0.0001124 | -3.535e-05 | [magnitude_role0](S22/magnitude_role0.png) |
| S22 | magnitude_role1 | 1785 | 1 | 0.939 | -3.769e-05 | 2.52e-05 | [magnitude_role1](S22/magnitude_role1.png) |
| S22 | colour_role0 | 61 | 16 | 0.960 | 0.000909 | -0.0002625 | [colour_role0](S22/colour_role0.png) |
| S22 | colour_role1 | 348 | 12 | 0.963 | 0.0003092 | -0.0002555 | [colour_role1](S22/colour_role1.png) |

Core–ring is a difference of mean fitted-amplitude fractions; y moment is mean residual fraction times native-pixel y offset inside radius3. These are not total fractional photometric biases.

## Additional descriptive projection

Requested after initial matched images: fit each matched colour residual stack on its own-source mean unit template, negative x/y gradients, Laplacian, and constant. Bilinear renderer-origin interpolation as above, radius<=3 native pixels, equal finite-grid weighting, no clipping/tuning. Gradients are numerical with 0.25-pixel spacing. Joint coefficient shifts divided by mean pair colour difference estimate descriptive pixels per unit u. The Laplacian is a local smoothing basis, not a calibrated width change. No model is retrained.

| Field | Role | x shift/u [px] | y shift/u [px] | Remaining squared residual | Scaled condition |
|---|---:|---:|---:|---:|---:|
| C1 | 0 | 0.00201 | 0.00029 | 61.0% | 4.33 |
| C1 | 1 | 0.00529 | 0.00214 | 27.3% | 4.36 |
| C4 | 0 | -0.00028 | -0.00210 | 43.9% | 4.29 |
| C4 | 1 | 0.00262 | -0.00002 | 49.2% | 4.27 |
| F1 | 0 | 0.00129 | -0.00522 | 52.7% | 4.74 |
| F1 | 1 | 0.00282 | -0.00476 | 64.6% | 4.69 |
| F2 | 0 | 0.00025 | 0.00038 | 65.0% | 4.30 |
| F2 | 1 | -0.00220 | 0.00114 | 61.5% | 4.47 |
| S22 | 0 | -0.00075 | -0.00284 | 22.4% | 4.43 |
| S22 | 1 | -0.00073 | -0.00263 | 62.4% | 4.42 |

The large negative outer pedestal paired with central amplitude in these projections is a nuisance decomposition, not a validated background correction. Full-scene neighbour light and omitted faint sources remain possible contributors.

Commands after `mamba activate syndiff`: `OPENBLAS_NUM_THREADS=2 OMP_NUM_THREADS=2 taskset -c 16-23 python <worktree>/model_closure_20261004/matched_native.py`, then `matched_projection.py`, then `matched_report.py`. No saved fits were modified. Inputs and code hashes are in provenance.json.

[Complete results canvas](index.html). Conclusion: Matched colour contrasts retain a repeated upper negative arc/lobe and lower/right positive structure in all five fields, separately within contributor and anchor roles. Magnitude contrasts have mixed core–ring signs and field-dependent asymmetry, providing no common width-correction justification. Joint own-template translation, Laplacian, amplitude and pedestal projections leave substantial structured colour residuals; a two-coordinate colour shift is a bounded diagnostic, not an adequate explanation. A colour-asymmetry candidate must survive independent template and held-out tests before any intrinsic or photometric-improvement claim.