{"schema_version":1,"calibration_version":"direction_pooled_uint8_v1","task":"T1","title":"Drifting luminance modulation","question":"Do the bright and dark bands move LEFT or RIGHT? The underlying scene is stationary.","canvas":{"width":512,"height":512,"pixel_centres":"integer x,y = 0..511; centre = (255.5,255.5)"},"aperture":{"shape":"circle","diameter_px":448,"radius_px":224,"flat_radius_px":192,"cosine_edge_width_px":32,"window_formula":"W(r)=1 if r<=192; .5*(1+cos(pi*(r-192)/32)) if 192<r<224; 0 otherwise","gaussian":false,"roi_pixels":157648,"measurement_roi":"r<=224"},"gain":0.62,"gray_pedestal":0,"master_fps":120,"levels":{"sf_cycles_per_aperture":[2,4,8,16,32,64],"multiplier_depth":[0.025,0.05,0.1,0.2,0.4],"tf_hz":[2,5,10],"direction_sign":[-1,1],"phase_rad":[0,1.5707963267948966],"duration_s":[0.25,1,3]},"natural_formula":"N=.62*linearRGB(input); q=W*cos(2*pi*(sf*(x-255.5)/448-sign*tf*t)+phase); output=N*(1+m*q)","classic_formula":"Final gray=dc_fit+k_fit*q, with shared direction-pair coefficients from quantized_calibration.json. Analytical seed: mu+A+k*(q-Q); Q=E[q], A=E[m*y*q], k=std(m*y*q)/std(q), mu=E[y], y=luma(N).","expectation":"equal-weight LEFT/RIGHT direction pair; within each, uniform mean over aperture pixels and actual f=0..duration*120-1 samples, t=f/120","matching":"Direction-pair pooled ROI spatiotemporal mean and RMS of the perturbation relative to unmodulated N / mu. Shared k/dc prevent a direction-specific first-frame cue. Individual decoded clip differences are recorded; total image RMS including texture is not matched.","quantized_calibration":"quantized_calibration.json provides shared direction-pair k/dc fitted to actual uint8 sRGB moments; per-state residuals are recorded","classic_outside_aperture":"uniform dc_fit; q=0; avoids a hard aperture edge in the calibration offset","output_transfer":"IEC sRGB transfer, round to uint8 RGB; no clipping; lossless VP9 gbrp representatives","luma_coefficients":[0.2126,0.7152,0.0722],"finite_duration_correction":"constant DC and carrier amplitude per clip; never per-frame normalization","interactive_state_count_per_source_per_domain":1080,"natural_global_linearRGB_upper_bound":0.868,"time_note":"120 fps simulation grid; display/RAF refresh and actual processor input must be measured separately","units":"cycles per 448-pixel aperture and relative linear digital Y; no conversion to degrees, cd/m2 or lux","model_evaluation_calls":0,"human_curve":"No performance curve attached; current readout is motion direction, not a measured contrast threshold"}
