A 3200 K printer light exposes three 2383 records. Print sensitometry, analytical dyes, print MTF, Callier effect and projection flare belong only to this branch. V40 withholds intrinsic stochastic 2383 grain because record covariance/NPS is not public.
Not a filter.
An image-formation chain.
V49 forms one conservative stochastic density inside the negative, then lets 2383 projection and Cineon scan observe that same material image.
Publish only the stochastic component the evidence can support
Kodak's three Status-M granularity curves identify marginal RMS, not the cross-record joint law. V49 normalizes the three current density residuals, forms a symmetric unit common field, scales it by the smallest local published marginal, and applies it equally to the three negative records. Projection and scan then observe the complete formed negative.
Make every stage compute only what it owns
V48 does not redesign colour or add a grain model. The direct 5279-to-2383-to-xenon/CIE result owns the projection mean; the old safety operation contributes only the formed frame's stochastic difference from that mean.
Randomness stays inside measured endpoints and the spectral inverse no longer depends on clipping
V46 holds the complete finite-event state outside Kodak's granularity support, removing the huge-density tail created as activation probability approached zero. The three Status-M records map to net dye/mask density through an exact nonnegative active-set solve. A 129-cubed base atlas covers smooth regions; exact 5-cubed microbricks cover active-set boundaries and interpolation risks reached by real frames. Worst printer-density error over the three sources is 0.0005094 D.
Separate unknown inter-record statistics from a known shadow-precision error
With Kodak's three 48 µm RMS values fixed, the linear-Rec.709 observer envelope is solved over every positive-semidefinite 3×3 correlation matrix. Common events reduce opponent noise but raise luma grain to roughly 1.48–1.67× independent records; they are not free chroma cleanup. V61's joint spectral equations are then evaluated directly at every neutral point and ±1σ perturbation. The 29³ runtime spectral LUT misses by as much as 0.013987 D at −3 logE, while −2.5 to 0 logE stays below 0.000366 D.
Do not repair an unknown joint law by falsifying a measured marginal
The March 2003 PDF was rendered and re-extracted from its vector objects. R/G/B path identity, all twelve Sigma-D ticks and the 0—4 to −4—0 exposure translation close against V50/V72; the maximum trace difference is 2.9×10−6 D. ISO 10505 requires Status-M spectral products for colour-negative RMS granularity, so V61's joint spectral inverse is also retained. The large blue marginal is real public evidence. What Kodak does not publish is its cross-record covariance or cross-spectrum.
Fixing three covariance diagonals cannot fix the grain seen by a projector and scanner
V84 uses a native 576² T020 crop and strictly paired finite events at alpha=0/.25/.5/1. The deterministic means are pixel-identical and the three 48 µm marginals barely move, yet alpha=1 raises projection luma RMS 53.8%, scan luma 43.2% and total RGB grain about one quarter. Opponent power falls, but grain is redistributed rather than removed. Alpha=1 is rejected as a default; .25/.50 remain diagnostics only.
# V84: fixed marginal RMS does not fix observer energy
var_record = diag(Sigma_D) # Kodak 48 um boundary
var_observer = w.T @ Sigma_D @ w # projector / scanner result
# Paired T020 crop, alpha 0 -> 1
projection_luma *= 1.538
projection_opponent *= 0.837
scan_luma *= 1.432
scan_opponent *= 0.816
assert deterministic_mean_is_bit_exact
promote_alpha = FalseCompute the order the code actually executes before deciding whether the research description is true
The full profile audit found that V72 inherits post-DIR residual calibration, not the pre-DIR dye-yield calibration we had once described. V83 expresses all 45 production spatial kernels, three DIR diffusion scales and the 48 µm aperture as a complete cross-spectrum, then verifies it with direct finite Bernoulli/multinomial events. Marginal RMS error remains below 1.076% at every alpha and exposure endpoint, yet alpha=0 and alpha=1 can produce near-zero versus roughly 0.7–0.95 record correlation. The public marginal curves cannot choose between them.
# V83: reproduce the executable V72 stage order
S_shared(f, E, alpha) = finite_site_cross_power(p_rgb, alpha)
D_raw(f) = stochastic_DIR(f, E) @ S_shared(f, E, alpha)
# Current gain acts after DIR but uses an independent pre-DIR denominator
g_rgb = sigma_kodak_48um / sqrt(var_pre_DIR_independent)
D_formed = mean_density + g_rgb * D_raw
assert max_relative_48um_error <= 0.010762
# Closing marginals does not identify the joint law; alpha remains unknownA legal correlation matrix can still be an illegal colour emulsion
Every record pair can pass its Fréchet bound and the 3×3 correlation matrix can be positive-semidefinite while at least one of the eight RGB activation states is forced to have negative probability. V82 tests 7,500 independent pair-alpha settings over 60 exposure/population triplets: 3,462 have no joint solution, including 1,484 PSD false positives. A future sampler therefore cannot expose three independent correlation sliders.
# V82: all three pair joints must share one legal P(111)
t_min = max(0, q_rg+q_rb-p_r, q_rg+q_gb-p_g, q_rb+q_gb-p_b)
t_max = min(q_rg, q_rb, q_gb,
1-p_r-p_g-p_b+q_rg+q_rb+q_gb)
assert t_min <= t_max
# PSD constrains second moments only; reconstruct all eight Bernoulli cells
cells = rgb_bernoulli_cells(p_rgb, q_pairs, t)
assert min(cells) >= 0 and sum(cells) == 1Prove stochastic coupling is mathematically feasible before asking whether it looks like film
V80 showed that mixing three completed density records breaks the finite nonnegative boundary. V81 moves the candidate back into activation: a shared uniform variable preserves every Bernoulli marginal exactly, but the permitted correlation is bounded by both activation probabilities. Across 180 record/population/exposure cases, ρ=.99 is feasible in only 13. Alpha still has no 5279 measurement, so V72 pixels remain unchanged.
# V81: a feasible set, not a new 5279 coefficient
joint_max = minimum(p_i, p_j)
rho_max = (joint_max - p_i*p_j) / sqrt(p_i*(1-p_i)*p_j*(1-p_j))
# A bounded shared-event family preserves every Bernoulli marginal exactly
if bernoulli(alpha):
u = shared_uniform()
x_i, x_j = (u < p_i), (u < p_j)
else:
x_i, x_j = (uniform() < p_i), (uniform() < p_j)
assert requested_rho <= rho_max
# alpha remains unknown and is not part of the V72 image releaseImprove the standard observer without taking the opportunity to alter film
V45 linearly interpolates the same Kodak 2383 dye and xenon 20 nm graph samples to one nanometre, then integrates from 380 to 780 nm through the CIE's official colour-matching table. Status-A inversion, LAD, 2383 H-D, the V31 normal-process colour boundary and complete V42 negative formation are frozen. Dye-free white changes by less than 4×10⁻⁷, demonstrating that this is not hidden white balance.
# Replace only the 2383 standard observer; freeze V44/V42
lambda_nm, xyz_bar = load_cie_1931_2deg_official_1nm()
dye_1nm = linear_interp(kodak_2383_dye_graph_20nm, lambda_nm)
xenon_1nm = linear_interp(kodak_xenon_graph_20nm, lambda_nm)
T = 10 ** (-(dye_amount_cmy @ dye_1nm.T))
XYZ = trapz(T * xenon_1nm * xyz_bar, dx=1nm)
# Profile, standard table and 193³ runtime lattice share SHA-256 gates
assert lattice == build_from(profile="v45", observer=xyz_bar)Do not change the emulsion to compensate for an unspecified player resize
V44 restores V42 image formation because public 48 µm RMS cannot identify V43H’s guessed NPS, and no public measurement supports its Spirit or 2383-grain candidates. Fully direct analytical projection colour failed the native dark opponent-tail gate, so the accepted V31 normal-process monitor boundary remains: 2383 owns lightness and texture while period scan supplies only low-frequency dye chroma. The native 5.7K 12-bit master stays intact; review explicitly measures observer light over a 1920-pixel raster.
# V44 returns to the accepted V42 image-formation profile
negative = form_v42_5279(raw)
projection_light = observe_2383_xenon(negative)
scan = observe_period_2k(negative)
projection = normal_process_monitor(projection_light,
low_frequency_chroma=scan)
# native 5.7K master remains authoritative
master_light = bt1886_decode(decode(prores_xq_master))
review_light = pixel_area_integrate(master_light, width=1920)
review = prores_xq(srgb_encode(review_light))
still = decode_frame(review, middle_frame)Completing an unknown does not turn a prediction into a measurement
V43H freezes V42 RAW interpretation, colour, H-D, DIR, MTF, 48 µm RMS, black and gamma. It tests only three central candidates that have documentary direction but no direct numerical measurement: a finer 35 mm spatial spectrum, a 25% move toward a synthetic period Spirit observer, and weak spectrally neutral common-density 2383 texture. Projection and scan share one realized negative; FSD reads the deterministic mean returned by that same spectral integration and remains an independent control.
# V43H overrides only unmeasured candidates; every other V42 constant is frozen
negative_nps = preserve_rms_48um(
redistribute_spatial_spectrum(scale=0.72, five_size_classes=True))
spirit = lerp(v42_broad_observer, bounded_candidate, weight=0.25)
# weak common print density only; no independent RGB print impulses
delta_print = 0.06 * (binomial(900, p) / 900 - p)
print_light = mean_print_light * 10 ** (-delta_print[..., None])
projection, scan, deterministic = observe_once(realized_negative)
fsd = independent_fsd(deterministic, N=176, sigma=0.597)An executable closure of V41 research—not a second “V2” visual style
V42 adds no grade and claims no new 5279 material measurement. It makes the V37 stable integration phase, V40 processed-granularity boundary and withheld 2383 randomness, and V41 12.5% chart-bounded transport runtime gates. Production defaults to the validated Philox-u32 Bernoulli Metal realization and requires all 45 stochastic identities per frame to be complete and unique. The two 12-bit BT.1886 masters are written first; sRGB companions, stills and web media may only derive from those delivered files. V29 audio and timecode retention remains part of release finalization.
Correct a probable error while keeping unsupported magnitude unknown
T003 and the independent T005 repeat one hue/chroma residual direction across synthetic and natural colours. Full strength and 25% both become excessive after final 2383 formation, so production retains 12.5% and changes no white balance, exposure, black, contrast or gamma. Wide-gamut intermediates are no longer clipped unconditionally, but signed values survive only when all three combined 5279 record exposures remain non-negative.
# V41: chart data estimates direction; retain a conservative 12.5% step
xyz_d50 = bradford_d65_to_d50(bt2020_to_xyz(scene_linear))
chroma = xyz_d50 - neutral_axis(xyz_d50)
corrected = chroma + 0.125 * (cross_group_matrix @ chroma - chroma)
scene_v41 = restore_exact_d65_luminance(corrected)
# signed intermediates survive only when every combined record is non-negative
signed_records = film_basis_signed @ record_sensitivity.T
records = where(all(signed_records >= 0), signed_records,
film_basis_clipped @ record_sensitivity.T)Density remains the image; unknown stochastic freedom is not film
V39 correctly moved image structure into density, but inverted Kodak's processed 48 µm RMS into pre-DIR speed-layer yields and created independent 2383 Poisson records without covariance or NPS evidence. Marginal RMS could pass while sparse primary-colour spikes appeared in dark regions. V40 restores the 5279 granularity constraint to its measured post-process boundary, restores shared luminance/opponent integration in both observers, and keeps only evidenced deterministic 2383 density and MTF. This is not display-space chroma denoising; the pipeline stops generating unidentified colour randomness.
# V40: constrain randomness only where public data measured it
D5279 = mtf_5279(Dmean) + calibrate_post_process_RMS(delta_after_DIR)
delta_visible = observer_integrate_luma_and_opponent(D5279 - Dmean)
# 2383 has no public record covariance/NPS: do not invent stochastic print grain
D2383 = mtf_2383(expose_2383(D5279))
projection = xenon_observe(D2383)
# final adapter keeps scan low-frequency dye colour and projection luminance
projection = final_adapter(scan_low_chroma, projection_luma, opponent_hf=0)
# gate opponent energy and unsupported isolated 3x3 primary impulses
assert dark_opponent_p9999 <= 0.035
assert isolated_primary_impulses_gt_0_06_per_million <= 5Form one realized density, then let a scanner or print observe it
V39 correctly placed MTF and grain inside density-bearing materials, but incorrectly treated processed RMS as a pre-DIR constraint and invented independent three-record 2383 grain. This section remains as an error record, not the current method.
# V39: image structure remains in its measured density domains
Dneg_mean = mtf_5279(develop_5279(exposure))
Dneg_real = Dneg_mean + finite_site_density - mean_density
scan = spirit_2k_observe(Dneg_real)
Dprint_mean = mtf_2383(expose_2383(Dneg_mean))
Dprint_real = Dprint_mean + mtf_2383(expose_2383(Dneg_real) - expose_2383(Dneg_mean))
Dprint_real += finite_2383_dye_cloud_density
projection = xenon_observe(Dprint_real)
# no display-RGB grain overlayCode values may differ; decoded light must agree
V38 separated camera OETF from display EOTF, but still compressed two ProRes copies independently from floating-point Lobs. V39's fine density structure made that lossy split measurable. V39 therefore encodes the 12-bit BT.1886 professional master first, recovers Lmaster from that actual file, and creates the sRGB Mac copy as ProRes 4444 XQ. JPEG and web inherit only the companion. P3 and HDR are not used as unmeasured colour or brightness controls.
# V40: the professional master is the sole delivered picture authority
professional = prores4444_xq(pow(Lobs, 1/2.4))
Lmaster = pow(decode(professional), 2.4)
quicktime = prores4444_xq(srgb_oetf(Lmaster))
still = frame(quicktime, 12) # no second OETF inversion
web_video = encode_srgb(quicktime) # same first frame and transfer
# EOTF(professional) ~= EOTF(quicktime) ~= LmasterEvery film frame renews; the imaging operator should not jump as one field
V36 emulsion sites were already independent on every frame, but each record and speed population also drew one whole-field subpixel phase, rotating the bilinear integration kernel from frame to frame. V37 keeps frame in the Philox identity and fixes the 15 size-class phases as a golden-ratio ensemble rotated by 30 degrees. Grain is neither smoothed, motion-following nor frozen; only the extra numerical breathing is removed.
# V37: frame remains in Philox identity; every frame is new emulsion
sampled_phase = rng.uniform(0, 2*pi) # consume to preserve Archive sequence
class_id = record * 15 + population * 5 + size_class
phase = 2*pi * frac((class_id + 0.5) * golden_ratio) + pi/6
offset = 0.38 * [cos(phase), sin(phase)]
# only integration phase is stable; grain sites are never reused across framesThe realization may be independent; every identity must remain traceable
Production need not reproduce the exact V34 PCG64 grain mosaic, but it must preserve the finite-binomial distribution, 48 µm RMS, NPS, layer statistics and temporal independence. V35 compares complete Philox uint32 words with a 2^32 fixed-point threshold derived from float32 probability. Frame, record, speed population, size class and global pixel coordinates define identity. Asynchronous Metal overlaps CPU expectation filtering; all 45 calls per frame are deduplicated and persisted in provenance.
# V35 Production: keep the complete uint32 random word
threshold = floor(float32(probability) * 2**32)
developed += philox_u32(counter(frame, record, population,
size_class, x, y, lane)) < threshold
# all 45 identities per frame must be unique; V34 remains Archive exactCompute the total response once; encode the result once
Kodak's 5279 MTF is measured on processed film and already contains the mid-frequency rise from developer adjacency. V34 retains that total MTF and disables the later duplicate deterministic intralayer DIR term. Interimage transport and stochastic grain coupling remain in development space. Both observers then complete the V31 colour boundary in linear Rec.709 before their sole delivery encode.
Separate camera witness, film exposure and technical neutralization
T002, T007 and T031 use one frozen film model. The camera witness is fixed at 0.00 stop, film input is explicitly +0.45 stop, and Technical Neutral is disabled. The validator measures native 12-bit 1-1-1, display black, toe, p05–p95 contrast, a 32-bin monotonic tone curve and effective log-luma power.
Decoded linear BT.2020 becomes three film records
AVFoundation delivers demosaiced, white-balanced RGB tagged extended-linear BT.2020/D65—not Bayer values awaiting a second Camera LUT. V28 performs only a linear BT.2020→XYZ D65→V-Gamut primary conversion, with no repeated white balance or nonlinear camera separation.
Fast, medium and slow populations
Every colour record contains three overlapping speed populations. A logistic transition defines the probability that a site develops. Binomial sampling makes variance fall naturally at both unexposed and fully developed extremes.
p = sigmoid((logE - speed_centre) / transition_width)
developed = binomial(finite_sites, p) / finite_sites
density_delta = optical_integrate(developed - p, dye_cloud_kernel)
# sample changes every frame; conditional mean does not driftGrain is a multi-scale optical integral of finite events
Each speed population is represented by five cloud-size classes with distinct weights, so exposure selects a spatial spectrum. V40 no longer inverts published granularity into each pre-DIR population: the completed processed-negative residual is calibrated through the published 48 µm aperture after stochastic DIR.
Reaction–diffusion happens before record densities are merged
Nine sub-emulsions release bounded inhibitor fields at their own lateral scales. A finite transport matrix moves those fields to receiver layers and affects both deterministic density and stochastic deviations.
release = blur(population_density, lateral_sigma) - population_density
transport = population_matrix @ release
population_density += receiver_gain * transport
# uniform exposure produces zero local correctionDye formation includes the coloured mask
The three records are not ideal CMY. Signed net spectral curves combine newly formed dye with consumed masking couplers. The print path retains the full D-min/orange-base spectrum; the scan performs its own film match.
Integral Status-A density is inverted before it becomes dye amount
The model numerically inverts 2383 principal curves into analytical cyan, magenta and yellow dye amounts, applies LAD-centred print interimage, then integrates the resulting transmission under the xenon/CIE observer.
One negative, two observation chains
Broad period RGB responses integrate negative transmission, followed by film matching, a 2K aperture, Cineon 0.002 D/code and restrained SDR finishing.
T = 10 ** (-spectral_density)
sensor_2k = area_integrate(scanner_response * T, width=2048)
D = -log10(sensor_2k / clear_reference)
cineon = 95 + (D - Dmin) / 0.002Kodak channel densities anchor 2383—not a vendor LUT
V30 replaces the simplified equal-density print neutral with H-61B’s official 1.09/1.06/1.03 D aims. The vendor D60 LUT and digitized dye-curve residuals remain in the research record, but their final hue and saturation weights are zero because they are not measured Kodak material evidence.
2383 may reshape lightness without mistaking dye colour for silver
V30 expressed chroma as C/L and then replaced L with the steeper 2383 neutral curve. Darker regions consequently lost absolute chroma; combined with full luminance texture, the result approached retained silver. V31 corrected the low-frequency colour boundary, but its final adapter also reintroduced the full high-frequency projection opponent residual after the observer had already integrated it. V40 removes that duplicate path: Period 2K supplies the restrained low-frequency OKLab a/b dye colour, projection supplies exact per-pixel linear luminance, and no opponent high-frequency term is added a second time. This is a process-boundary correction—not a saturation grade or display-space denoiser.
The observer integrates grain without regrading mean colour
Signed grain delta is split into Rec.709 luminance and opponent components. Observer-specific integration affects only the opponent texture; deterministic mean RGB never enters this operation.
Observer conditions, display light and file transfer are separate boundaries
The 48-nit cinema condition remains in the 2383 observer and the period finish remains in the scan observer. Their output is display-linear Rec.709 light. The professional file is ProRes 4444 XQ with inverse BT.1886 gamma 2.4; the direct-view Mac companion is derived from that encoded master and is also ProRes 4444 XQ, with an explicit sRGB transfer. In the XDR HDTV Video reference mode, judge the professional master.
# V40: the professional master is the sole delivered picture authority
professional = prores4444_xq(pow(Lobs, 1/2.4))
Lmaster = pow(decode(professional), 2.4)
quicktime = prores4444_xq(srgb_oetf(Lmaster))
still = frame(quicktime, 12) # no second OETF inversion
web_video = encode_srgb(quicktime) # same first frame and transfer
# EOTF(professional) ~= EOTF(quicktime) ~= LmasterCache deterministic colour; parallelize independent silver-halide events
A 193³ lattice caches exact analytical print samples. Fixed seeded row stripes parallelize 45 binomial populations while remaining bit-identical across worker counts. Mean negative density is shared rather than recomputed.
Level-dependent scanner balance with an exact luma lock
The V26 period scan was neutral only at its 18% anchor. V27 renders a dense neutral exposure scale, derives a smooth RGB balance over display level and applies it only to the finished scan. The output is then renormalized to the original per-pixel Rec.709 luminance.
neutral_scale = render_scan(scene_linear=geomspace(1e-5, 10, 2049))
rgb_balance = fit_level_dependent_balance(neutral_scale)
corrected = rgb_balance(display_linear)
corrected *= rec709_y(display_linear) / rec709_y(corrected)
# black, gamma and per-pixel luminance remain unchangedNegative findings are part of the algorithm
The latest hourly audit found no public, stock-specific 5279 NPS, no measured 5279 DIR matrix and no 5279 parameter payload in the official JVT packages or the complete certified April 2003 provisional. That provisional names 5279; H022 switches the same identifier to 5218; the later patent returns to 5279. This proves document-branch drift, not a hidden measurement. V27 therefore changes none of those parameters.
Shared release gates
3 × 24 frames · 5760×4320
BT.1886 master + sRGB companion
144 native-frame audits
Independent sites · stable integration
Zero grain layers
V38 frozen · no grade