Skip to content

Fix synthetic Opera identity, source refs and calibration (#172, #335) - #333

Merged
trissim merged 10 commits into
mainfrom
fix/opera-producer-inventory-172-20261001
Oct 1, 2026
Merged

trissim merged 10 commits into
mainfrom
fix/opera-producer-inventory-172-20261001

Conversation

@trissim

@trissim trissim commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Refs #172 and #335. Parent owns merge/integration and issue disposition. Builds on merged #206/#16/#329 and normally merged current main 8c512d404f8707a6a1be311406c0af2a089360f7 at two-parent merge 03e3315d03fe775ed57ad71c5805507c946cfcf8. No production/test change during this integration; frozen XML parser unchanged.

Working source checkpoint

  • Existing registered handler/parser declarations own acquisition spelling; GenericFilenameParser supplies the shared nominal operation. No new production classes, type/string dispatch roster, well formatter or consumer alias.
  • Actual saved SourcePlaneProjection addresses feed the existing serializer: all five catalogs, source metadata, projection entries and exact physical refs stay coherent. Fixes Opera A01/R01C01 disagreement and ImageXpress Z-folder basename/ref collisions; deleted replaced generator paths.
  • Calibration comes from the selected acquisition metadata handler's existing typed SourceVoxelSpacing, decoded from actual HTD/XML. Native scalar and every persisted source coordinate share that authority. Deleted the independent 0.65 override/argument and migrated its fixture caller; raw calibration declarations unchanged.

Inheritance/new-case evidence

Two independent test capabilities (acquisition recording and physical name scoping) derive from the real owning ABC, call super(), and compose with the existing ImageXpress leaf in both cooperative diamond orders. Each executes once, the common ancestor appears once, its canonical behavior preserves all axes, and automatic declaration registries admit new parser and handler leaves with zero consumer/registry edits. The unchanged plane writer, serializer and fresh real disk metadata reader handle the new case. No claim of arbitrary new-format HTD/layout support.

25 real-source contract methods pass after normal main integration, including raw/native format, Z, token, sparse-site, scalar Bio-Formats, XML URL, exact-ref/reopen, both MRO orders, paired calibration/pixel parity and fail-closed missing acquisition controls (2.84s/94.39MiB). The 34-test existing regression shard passes (7.99s/388.49MiB). Public-import/merge/source identity passes (1.42s/67.92MiB). No limit hit: one CPU, 512MiB combined RSS, 60s shards, scratch below 256MiB. User's 20GiB disk threshold was warning-only, not a falsely reported guard pass.

Evidence and qualification limits

Full current NRA/refactor-audit ZIP and complete applicable pattern references were reviewed before integration. Ownership witnesses consider IDEN-3/6, BOUND-2, IMPL-1/5/12, MEMB-1/4/5, TIME-3/5/9. Original unchanged R0 and focused census remain archived at their actual old source/baseline pins, not relabeled as a new-main guard. The original archive is byte-identical to a339a6d20c5c2b8c04ed3fecd3bd1496e7c839cf (SHA256 326541e4ccb3a4b5378ad4322614c4d9bdc03448bba9575535548f02285aaa7b). New integration logs are a separate freshly extracted/compared archive.

Latest parent full-context R1 materialized all eight gitlinks and pinned NRA0844525, completed baseline 3068 projections, then hit the original enforced 512MiB group-RSS cap at 83.29s/530.62MiB before head comparison. R1 remains INCOMPLETE, not passed or waived; no changed roots/caps/budget or full NRA closure claim.

Parent verified the original installed public MCP journey at 67dbefb3caf8848901f6561d6bd274a84accee92 (a339 adds docs/archive only): 30 captured responses, exit0; four tiny raw/native fixtures with four complete typed addresses each; physical calibration parity; four pairs of equal 64-pixel samples; four persisted inventories. This is parent evidence, not a rerun here. Later main imports upstream compiler/output/materialization changes; parent checks their delta and installed qualification applicability. No broad live-readiness claim for the integrated tree. Separate initial read-only ImageXpress Z-folder inspection defect #337 is owned by Arendt, not folded into this producer patch.

Full commands, ownership/new-case witnesses, original failures and exact integration scope: RST receipt. Keep issues open until parent disposition. No foreign worktree, installed/frozen files, original fixtures, science/native/JVM/MCP slot, lock or dependency download touched; only the requested normal upstream merge and documentation/evidence publication.

@trissim

trissim commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Parent source review traced acquisition spelling to the owning GenericFilenameParser/leaves and metadata to the existing SourceProjectionMetadataSerializer; the real cooperative MI parser diamond/new-case controls are aligned with owner requirements. Installed acceptance remains pending in a separate candidate after the current frozen science slot closes. Related concrete pre-existing calibration defect is #335: raw Opera XML declares ~1.18675µm while native generator metadata is passed 0.65µm. Averroes retains producer ownership and has exact source/live raw-route evidence; parent owns paired installed raw/native calibration qualification. No competing patch or frozen input change.

@trissim trissim changed the title Fix synthetic Opera inventory identity and complete source refs (#172) Fix synthetic Opera identity, source refs and calibration (#172, #335) Oct 1, 2026
@trissim

trissim commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Installed producer MCP acceptance

Parent integration owner. Reviewed source67dbefb3caf8848901f6561d6bd274a84accee92;
PR333a339a6d20c5c2b8c04ed3fecd3bd1496e7c839cf adds only receipt/archive.
Wheel SHA2564738a7cb1362a83a2f4a8df68f1076e38925fdbf93c70adb706589d51d3e294f.
The separate candidate installation and full managed13-file skill copy were
verified against that source, without modifying frozen blind installations.

Original installed public MCP journey

Read live.stdin/live.stdout/live.timing. Original shell71660 terminated
normally at2026-10-01T05:22:05Z with exit0. Initial/final MCP health identify
the same PID640178 and started_at1790831781.5360966; version0.8.7,56 packaged
resources ready, no stale sources or reconnect/restart required. No operation
was replayed or replaced after an observation timeout. PID is now absent and
the original validation.lock can be acquired. Parent Xvfb/VNC and desktop
windows were not changed; no scientific/native/JVM/viewer launch occurred.

Actual first-use/folder-onboarding/pipeline guidance and capability discovery
preceded mutation. Four disposable 32x32,1x1-grid,2-channel,2-Z fixtures used
seed7,4 cells,zero overlap and zero stage error, omitted singleton tokens:
raw/native Opera and raw/native ImageXpress. All four returned4 images with
no error/warning. Source physical paths include unpadded Opera site tokens
and repeated ImageXpress basenames under distinct ZStep folders.

Four empty PipelineDocument artifact-plan calls initialized raw layouts and
reopened native workspaces. All produced four distinct complete logical
addresses, channel1/2,Z1/2,site1,time1,one well (Opera R01C01;ImageXpress A01).
Every source reference resolves to its exact existing physical file. The two
raw calls report the expected initialization warning; native calls do not.
No processing steps, execution jobs or axis work were introduced.

SourceVoxelSpacing and OpenHCSPlaneAddress owners decode the captured records
in verify_live_receipts.py; no alternate product parser/schema was authored.
Native/raw inventories agree by typed address despite legitimate virtual-path
prefix differences. Opera physical calibration is1.1867525298988042um/pixel;
ImageXpress0.65um/pixel, with matching persisted physical per-plane spacing.
Eight exposed MCP samples at native origin8/8,size8x8,source32x32uint16 confirm
four raw/native pairs have identical64 pixel values and typed address/spacing:
channel1/Z1 and channel2/Z2 for both microscopes. This is bounded sample parity,
not a complete-array identity proof or biological accuracy evidence.

Four final read-only inspections reopen persisted workspace inventories with
all four planes and all five correct component catalogs, no errors/warnings.
Administrative original-record verifier ran from the actual installed-I-B
Python and exited0 in0.293s. It parses the30 original captured MCP responses
and never reopens image arrays or replays commands. Transcript SHA256:
3c42cf3ea4c0859e9315a85c76ec5fb15e5f724d35027d694afec5cc538970c2.

Limits and separate defect

Initial raw ImageXpress read-only inspection reports Z1 only despite listing
four physical files across ZStep_1 and ZStep_2. After real initialization it
correctly reports Z1/2. The read-only inventory consumer calls
parser.parse_filename(Path(filename).name), discarding folder coordinates;
the ImageXpress acquisition handler already owns those semantics. This is a
separate inspection defect, not source-plane loss in the qualified producer.
Fix it through existing nominal source/handler ownership without mutating a
raw workspace merely to inspect it or duplicating a ZStep regex in the service.

Original R0 and focused source behavior are qualified in PR333's archive.
Parent's unchanged full-context R1 completed baseline analysis then hit its
512MiB enforced group-RSS cap before head comparison. R1 is INCOMPLETE, not
passed, waived or a reason to claim full ZIP/surface closure. Preserve exact
original logs and source context. Remote main's later compiler331 merge is
not part of this installed source pin; normal integration and affected-delta
qualification remain separate from this exact successful journey.

@trissim
trissim marked this pull request as ready for review October 1, 2026 05:40
Copilot AI balanced review requested due to automatic review settings October 1, 2026 05:40
@trissim
trissim merged commit f24a828 into main Oct 1, 2026
1 of 3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@trissim

trissim commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Averroes: Arendt owns authorized #337 in /home/ts/wt/openhcs-imagexpress-readonly-inventory-337-20261001, based on current main 8c512d4. I am preparing the independent generic read-only path owner, inspection/inventory consumers and behavioral regression now. Planned shared ImageXpressHandler closure moves its existing TimePoint/ZStep coordinate interpretation into small cooperative path hooks and reuses them for initialization plus inspection; no second parser/roster and no changes to your acquisition-filename producer hooks. I will sequence shared imagexpress.py changes after #333 merges unless you explicitly release those disjoint handler sections. Your branch/worktree and completed #334 stay untouched. Parent retains integration and installed acceptance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants