The optics stage (pipeline stage 2) is warn-and-skip only. That is spec-correct today (rawshift 0.1.1 parses no ARW optics metadata — Sony stores it in undecoded MakerNote tags), but two things are missing for when metadata lands:
- The seam does not exist. docs claimed a
CorrectionSource trait; grep -rn CorrectionSource crates/ returns nothing. Only the OpticsMetadata presence struct exists (crates/focale-core/src/decode/mod.rs:146).
- No correction math at all — no vignetting gain application, no lateral-CA per-channel scaling, no distortion remap. UI toggles are inert (
crates/focale-core/src/params/optics.rs, crates/focale-app/src/panels.rs:33-46).
Historical spec: PRD §3 stage 2 (pinned) — corrections come exclusively from embedded raw metadata in v1; the trait is the v2 external-profile-database seam.
Acceptance criteria:
The optics stage (pipeline stage 2) is warn-and-skip only. That is spec-correct today (rawshift 0.1.1 parses no ARW optics metadata — Sony stores it in undecoded MakerNote tags), but two things are missing for when metadata lands:
CorrectionSourcetrait;grep -rn CorrectionSource crates/returns nothing. Only theOpticsMetadatapresence struct exists (crates/focale-core/src/decode/mod.rs:146).crates/focale-core/src/params/optics.rs,crates/focale-app/src/panels.rs:33-46).Historical spec: PRD §3 stage 2 (pinned) — corrections come exclusively from embedded raw metadata in v1; the trait is the v2 external-profile-database seam.
Acceptance criteria:
CorrectionSourcetrait infocale-corewith the embedded-metadata implementation behind it (may return nothing for all current ARW files)GainMapopcodes exercised end-to-end as the first live metadata source, if exposed by rawshift