You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adversarial audit Batch 5 at d7a538e56d41ac1093ba79adcad397c21b3dfd32. Confirmed source-level predicate defect, distinct from copy pixel integrity (#87 or its final issue number). No tests executed.
Evidence
copy_channels_current() lines 566–574 returns True unconditionally when omero is absent. When omero.channels exists, all(enumerate(channels)) succeeds vacuously for an empty list or a truncated list; expected channel count and labels are not compared exactly.
Existing test checks placeholder labels are rejected but does not cover missing or undersized channel metadata.
Minimal cases
Source TIFF has CYX, channels named DAPI/GFP; convert successfully. Delete omero from the copy's .zattrs while leaving multiscales metadata and axes unchanged; subsequent run can reuse a copy that no longer advertises its source channel names.
Replace omero.channels with [] or with one matching channel; all(...) yields True, despite two expected channels.
Fix / tests
Require the entire expected channels list, including cardinality, to match the copy's stored metadata when a C axis is present; missing omero, malformed omero.channels or mismatched/extra/truncated labels should be False or a named corruption error. Verify whether no-C copies legitimately omit OMERO and keep that case explicit. Add regression tests for absent, empty, truncated, extra and correct labels, both named and unnamed channels. No Numba role.
Obsolete in v0.4.0: convert_tiffs, zarr_export and OME-Zarr copy reuse were removed in PP-2 (#66, commit 3c2802d; plan question 46). Named-axis copies of images with axis errors are now the OME-TIFF convert step (PP-11, #124, merged as 8db1f4a). Closing as not planned (owner-approved triage, 2026-11-02).
PP-11's reuse check compares the recorded copy (fingerprint, axes, channel names) with the source; there is no OMERO freshness path any more.
Reopening: an independent review of commit 8db1f4a found the closure premature. The closing comment said reuse compares channel names; it does not: CopyEntry has no channel-names field and same_plan() cannot compare them (nor significant bits). Fix: record the expected channel names (and significant bits) in the copy entry and compare them on reuse; the copy's content hash (#87) covers the written metadata. Tracked in PR PP-11c.
Activity
guijacquemet commentedon Nov 2, 2026
Obsolete in v0.4.0:
convert_tiffs,zarr_exportand OME-Zarr copy reuse were removed in PP-2 (#66, commit 3c2802d; plan question 46). Named-axis copies of images with axis errors are now the OME-TIFFconvertstep (PP-11, #124, merged as 8db1f4a). Closing as not planned (owner-approved triage, 2026-11-02).PP-11's reuse check compares the recorded copy (fingerprint, axes, channel names) with the source; there is no OMERO freshness path any more.
Generated by Claude Code
guijacquemet commentedon Nov 2, 2026
Reopening: an independent review of commit 8db1f4a found the closure premature. The closing comment said reuse compares channel names; it does not:
CopyEntryhas no channel-names field andsame_plan()cannot compare them (nor significant bits). Fix: record the expected channel names (and significant bits) in the copy entry and compare them on reuse; the copy's content hash (#87) covers the written metadata. Tracked in PR PP-11c.Generated by Claude Code
PP-11c: conversion integrity (copy SHA-256, one metadata epoch, exact…
guijacquemet commentedon Nov 2, 2026
Fixed by PR #126, merged as 6ac81ad (fix commit 4312b5a). I checked in the code before closing:
CopyEntry.channel_namesandsignificant_bitsrecord what the copy holds: as written for converted images, from the header for copied ones.same_plan()compares both, and tests cover a changed name, missing names, changed bits and missing bits.Generated by Claude Code