Skip to content

Derived role image publication duplicates a source artifact projection during finalization #435

Closed

Description

@trissim

Integration owner: Root in existing PR394 (generic source projection/materialization). Parent provides installed acceptance; Schrodinger retains432/434 color/compiler declarations. No competing implementation or weakened SourceProjectionSet guard.

Fresh private installed434 checkpoint6370/e2d72 compiles the original public five-step ImageMath raw alias -> rescale cap -> ImageMath cap alias -> GrayToColor STACK -> ColorToGray CHANNELS/SPLIT. Actual acquisition is one physical Calcein C2; the two derived role names remain distinct and must not become counterfeit acquisition channels.

Actual native compile c9ea4149-e3fe-4e0b-a8bc-cc2e79128b59 COMPLETE. Execute926a8d09-b816-4e66-b9fb-856e1def4865 FAILED after fifth callable, while OpenHCSMetadataWriter.OutputTarget.produced_projection_metadata constructs SourceProjectionSet: Duplicate source projection address. Exact native traceback: core/steps/function_outputs.py891 -> core/source_projection.py957. This is not a compile failure or a biological result. No rooted trial was dispatched.

Authoritative original source, requests, response, native traceback and close disposition: /home/ts/wt/openhcs-issue-batch-20260929/neurite-development-skill383-20261001/output/assisted-5-434/. Runtime3443084/create1790925530.26 was explicitly closed after terminal failure; no replay or adoption.

Parent checked current PR394 head45f3a721e115b37ab662f362fa5ab4d5e58e1f6e: produced_projection_metadata still appends produced-record projections then runtime-artifact projections. SourceArtifactProjection.identity_key still distinguishes colocated artifacts by physical address plus declared alias; the strict duplicate guard is intact. PR394 carries actual materialization receipts, but this particular collision is not established fixed by that source inspection alone. Determine whether the same named/path output is published twice through main-flow and runtime-artifact publication; preserve both genuinely distinct role images and reject conflicting duplicate identities.

Acceptance: minimal synthetic raw/cap public compiler/executor reproducer, one canonical projection per declared persisted output (not blanket dedup or disabling metadata), both role identities/arrays/float units/physical C2 provenance/calibration retained and native MCP inventory/sample/reopen. Fix with existing declaration/materialization/projection owners in PR394 and attach this installed reproducer. Original failed output remains preserved.

Activity

  1. trissim commented on Oct 2, 2026

    @trissim
    CollaboratorAuthor

    Root is investigating this in PR394; the closing link is now formal. The retained installed directory in the issue is not present on this machine. Source inspection distinguishes two mechanisms: the same persisted occurrence published via main-flow and artifact views, or distinct persisted filenames colliding on the same acquisition-address/alias identity. Those require different ownership repairs; path-only suppression cannot establish the latter fixed.

    For the retained installed five-step witness, please attach the generated public source/request and exact main-flow produced records plus successful materialized image output paths, declared aliases and source addresses from the failing finalization. A committed diagnostic receipt or these bounded facts in this issue is sufficient; do not rerun the biological trial. Local work continues on the existing writer consumer and public synthetic reproduction. Strict duplicate validation and real physical C2 stay intact.

  2. trissim commented on Oct 2, 2026

    @trissim
    CollaboratorAuthor

    Parent receiving evidence for Root, PR394 owner; no new runtime or biological replay. This is the exact original five-step source SHA256 f7304c7c25507f648d40c250604bba8e4b3537fbedbdc114ef2016eec6800d98. Its preserved filename/header still says DRAFT, but this exact document created session-1, standalone compile c9ea4149-e3fe-4e0b-a8bc-cc2e79128b59, and failed execute926a8d09-b816-4e66-b9fb-856e1def4865. Original public requests: create_orchestrator_session_from_pipeline_source with this whole document, plate_path=/home/ts/wt/openhcs-issue-batch-20260929/neurite-development-skill383-20261001/input, host127.0.0.1/port5993/TCP/persistenttrue; submit_compile(session_id=session-1,wait=false); submit_pipeline_execution(session_id=session-1,wait=false,runtime_observation_export_path=.../assisted-5-434/carrier-proof-outcomes.pkl.gz,runtime_observation_export_scope=outcomes). Export did not materialize after failure. Original compile debug warned no compiled_execution_bundle_path. The six-step rooted draft artifact inspection is a DIFFERENT unexecuted submission, not this execution bundle.

    Observed fifth-step boundary: step4 ColorToGray SPLIT/CHANNELS indices(0,1), same original physical Calcein C2, named aliases raw_body_processing_role and capped_outgrowth_processing_role. Native log 03:26:41.772 kernel complete ->03:26:41.777 starts two artifact materializations ->03:26:42.184 artifacts complete ->03:26:42.198 metadata duplicate. All persisted under carrier-proof/input_openhcs/images: A01_s001_w2_z001_t001.tif (1575759bytes); A01_s001_w2_z001_t001_raw_body_processing_role.tif (4194576bytes); A01_s001_w2_z001_t001_capped_outgrowth_processing_role.tif (4194576bytes). Original bounded MCP samples returned separate float32 1024x1024 role arrays, raw-role=raw/65535 and cap-role=clip((raw-39)/5961,0,1) to float32 roundoff; first sample at y648/x154 raw260 ->raw-role0.00396734569221735/cap-role0.037074316293001175. Both retain original source spacing1.3556um/px. This is derived-role identity, not two acquisitions.

    Missing evidence is explicit: no actual main-flow produced-record list, ArtifactRefs or pre-SourceProjectionSet emitted component/alias tuples were serialized. Original traceback prints an opaque OpenHCSComponentValues pointer, not those tuples. Cannot honestly attach a colliding pair from saved records. The owner-side synthetic probe should observe the existing writer entries immediately before strict validation, not suppress by filename or weaken guard. All facts/source here are retained; no rerun, fabricated current-main success, private image upload or alternate decoder. Exact original document follows.

    # ASSISTED-5 NEW five-step carrier proof after installed-qualified handoff.
    # UNEXECUTED DRAFT: preserve failed ASSISTED-4 source and original disposition.
    # Named scalar raw/cap assembly plus declared CHANNELS split; no segmentation.
    # Cap6000 fixed;39 original measured field minimum. No new numerical tuning.
    # Actual output axes/dtype/units/provenance must be verified through MCP.
    from pathlib import Path
    from openhcs.constants.constants import AllComponents, Microscope, VariableComponents, GroupBy
    from openhcs.constants.input_source import InputSource
    from openhcs.core.config import (
        PipelineConfig, LazyWellFilterConfig, LazyPathPlanningConfig,
        LazyProcessingConfig, LazyNapariStreamingConfig, LazyStepMaterializationConfig,
        LazyTiffConfig,
    )
    from openhcs.core.source_bindings import (
        LazySourceBindingsConfig, NamedSourceBinding, SourceSelector,
        SourceFilterClause, SourceFilterSubject, SourceFilterMatchType,
        ComponentSelector, LazyStepSourceBindingsConfig,
    )
    from openhcs.core.source_metadata import SourceVoxelSpacing
    from openhcs.core.steps.function_step import FunctionStep
    from polystore.config import TiffCompression
    from openhcs.processing.func_registry import get_function
    from openhcs.processing.backends.cellprofiler.color import (gray_to_color, GrayToColorModule, color_to_gray, ColorToGrayMode, ImageChannelType)
    rescale_intensity = get_function("skimage:exposure.rescale_intensity")
    
    from openhcs.processing.backends.cellprofiler.image_math import image_math, ImageMathOperation
    
    
    pipeline_config = PipelineConfig(
        microscope=Microscope.SOURCE_BINDINGS,
        num_workers=1,
        use_threading=False,
        well_filter_config=LazyWellFilterConfig(well_filter="A01"),
        path_planning_config=LazyPathPlanningConfig(
            well_filter="A01", global_output_folder=Path("/home/ts/wt/openhcs-issue-batch-20260929/neurite-development-skill383-20261001/output/assisted-5-434/carrier-proof"),
        ),
        materialization_results_path=Path(
            "/home/ts/wt/openhcs-issue-batch-20260929/neurite-development-skill383-20261001/output/assisted-5-434/carrier-proof/input_openhcs/results"
        ),
        materialize_runtime_artifacts=True,
        tiff_config=LazyTiffConfig(compression=TiffCompression.DEFLATE, compression_level=9),
        step_materialization_config=LazyStepMaterializationConfig(enabled=False, well_filter="A01"),
        napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        source_bindings_config=LazySourceBindingsConfig(
            source_voxel_spacing=SourceVoxelSpacing(values_zyx=(1.3556, 1.3556)),
            bindings=(
                NamedSourceBinding(
                    alias="DAPI",
                    selector=SourceSelector(filters=(SourceFilterClause(
                        subject=SourceFilterSubject.FILE,
                        match_type=SourceFilterMatchType.EQUALS,
                        value="A01_s001_w1_z001_t001.tif",
                    ),)),
                    component_identity=(
                        ComponentSelector(AllComponents.WELL, "A01"),
                        ComponentSelector(AllComponents.SITE, "1"),
                        ComponentSelector(AllComponents.CHANNEL, "1"),
                        ComponentSelector(AllComponents.Z_INDEX, "1"),
                        ComponentSelector(AllComponents.TIMEPOINT, "1"),
                    ),
                ),
                NamedSourceBinding(
                    alias="FITC",
                    selector=SourceSelector(filters=(SourceFilterClause(
                        subject=SourceFilterSubject.FILE,
                        match_type=SourceFilterMatchType.EQUALS,
                        value="A01_s001_w2_z001_t001.tif",
                    ),)),
                    component_identity=(
                        ComponentSelector(AllComponents.WELL, "A01"),
                        ComponentSelector(AllComponents.SITE, "1"),
                        ComponentSelector(AllComponents.CHANNEL, "2"),
                        ComponentSelector(AllComponents.Z_INDEX, "1"),
                        ComponentSelector(AllComponents.TIMEPOINT, "1"),
                    ),
                ),
            ),
        ),
    )
    
    pipeline_steps = [
        FunctionStep(
            name="RawCalceinNamedIdentityContractProbe",
            func=(image_math, {
                "operation": ImageMathOperation.NONE,
                "factors": (1.0,),
                "exponent": 1.0,
                "after_factor": 1.0,
                "addend": 0.0,
                "truncate_low": False,
                "truncate_high": False,
                "select_the_first_image": "FITC",
                "name_the_output_image": "raw_calcein_body_reference",
            }),
            processing_config=LazyProcessingConfig(
                variable_components=[VariableComponents.CHANNEL],
                group_by=GroupBy.NONE,
                input_source=InputSource.PIPELINE_START,
            ),
            source_bindings=LazyStepSourceBindingsConfig(
                enabled=True, bindings=(NamedSourceBinding(alias="FITC"),),
            ),
            napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        ),
    
        FunctionStep(
            name="CapOnlyOutgrowthLaneAtOriginal6000Counts",
            func=(rescale_intensity, {"in_range": (39.0 / 65535.0, 6000.0 / 65535.0), "out_range": (0.0, 1.0)}),
            processing_config=LazyProcessingConfig(variable_components=[VariableComponents.CHANNEL], group_by=GroupBy.NONE, input_source=InputSource.PREVIOUS_STEP),
            napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        ),
        FunctionStep(
            name="NameCappedScalarCalcein",
            func=(image_math, {"operation": ImageMathOperation.NONE, "factors": (1.0,), "exponent": 1.0, "after_factor": 1.0, "addend": 0.0, "truncate_low": False, "truncate_high": False, "name_the_output_image": "capped_calcein_outgrowth"}),
            processing_config=LazyProcessingConfig(variable_components=[VariableComponents.CHANNEL], group_by=GroupBy.NONE, input_source=InputSource.PREVIOUS_STEP),
            napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        ),
        FunctionStep(
            name="ComposeDeclaredScalarRawAndCappedArtifacts",
            func=(gray_to_color, {"color_scheme": GrayToColorModule.Scheme.STACK, "rescale_intensity": False, "image_name": ("raw_calcein_body_reference", "capped_calcein_outgrowth"), "name_the_output_image": "raw_and_cap_channel_last"}),
            processing_config=LazyProcessingConfig(variable_components=[VariableComponents.CHANNEL], group_by=GroupBy.NONE, input_source=InputSource.PREVIOUS_STEP),
            napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        ),
        FunctionStep(
            name="ProjectColorChannelsToAlignedProcessingRoles",
            func=(color_to_gray, {"mode": ColorToGrayMode.SPLIT, "image_type": ImageChannelType.CHANNELS, "channel_indices": (0, 1), "contributions": (1.0, 1.0), "select_the_input_image": "raw_and_cap_channel_last", "image_name": ("raw_body_processing_role", "capped_outgrowth_processing_role")}),
            processing_config=LazyProcessingConfig(variable_components=[VariableComponents.CHANNEL], group_by=GroupBy.NONE, input_source=InputSource.PREVIOUS_STEP),
            napari_streaming_config=LazyNapariStreamingConfig(enabled=False),
        ),
    
    ]
  3. trissim commented on Oct 2, 2026

    @trissim
    CollaboratorAuthor

    The generic persisted-occurrence repair is now pushed in PR #394, head 919fee2, synchronized with main8551a4864. Production repair ce1b7ac: the existing output context owns declared aliases; the existing metadata writer shares actual produced records with successful materialization outcomes. One duplicate view is omitted only after exact alias/kind/producer-scope/path/address/full-persisted-metadata agreement. Different files with colliding identities, stale scopes, different kinds and conflicting metadata still fail. Strict SourceProjectionSet validation remains unchanged.

    Actual writer baseline130c03a26 saves both distinct C2 role images, then reproduces the final duplicate. Candidate publishes both once and reopens them through the existing virtual workspace, retaining exact pixels, real C2, addresses and calibration. 232 focused controls pass; unchanged original scoped R0 and R1 pass; after latest-main integration 247 publication/axis/MCP controls pass. Independent review finds no blocker. These are local writer/materialization/reopening gates, not installed original five-step acceptance or a performance claim.

    Thank you for the exact original source/path evidence in comment5948666249. The absent actual produced-record/outcome pairs remain an explicit limit; no fabricated pair or biological rerun. Installed original-path acceptance remains open, and #437 retains its separate singleton-consumption seam. #435 remains open and formally linked through PR394's closing keyword until that acceptance is complete.

  4. trissim commented on Oct 3, 2026

    @trissim
    CollaboratorAuthor

    Root435/394 current receiving ownership and exact494 failure

    Root, please explicitly acknowledge receiving the NEW494 persisted-metadata
    conflict below under your original435/394 publication owner, and name its
    synthetic fixture/current source checkpoint. No competing implementation.

    Existing named acknowledgement is real, not an inferred assignment:
    #394 (comment)
    Root retains435 and canonical persisted-output publication. Original repair
    and still-open installed acceptance are explicitly documented by Root:
    #435 (comment)
    That repair handles agreeing duplicate views, NOT arbitrary metadata conflicts.
    Planck's new exact receiving request:
    #394 (comment)

    Personally read current394 head30ebacf907273ee0d0767f392ac21281915f5a0e,
    full original435 issue/comments,516 body, Planck's PUBLIC95-FAILURE-SOURCE09.rst
    and parent's PARENT-PUBLIC95-FAILED01.rst. Current function_outputs blob
    fcaef7bf7f97c3a02426abdac21952dc61040906 is byte-identical to60b2.
    Source boundary: OpenHCSMetadataWriter.OutputTarget.produced_projection_metadata
    collects produced records, then project_runtime_artifacts joins successful saved
    outputs by destination. Existing owns_persisted_artifact agrees on occurrence;
    the strict guard rejects if projection.address!=address OR full image_metadata
    differs. Do NOT remove that guard, deduplicate by path alone or disable streaming.

    NEW public reproducer is engineering-only, not scientific input:
    /home/ts/wt/openhcs-issue-batch-20260929/engineering494/POINTS494_95/author-workspace/output/pipeline-public95.py
    SHA29350fac3cba2c5a06f0b01726b22858db9cd684c61022e033bd89e5aa914073;
    same directory point_volume_fixture_494.py
    SHAc883251abc009e9d2c7b82a3dde3b4fe4a66529b6c8117b6bf1bfd887fdc2935.
    Four source-bound5x7 uint16 physical planesZ0..3, GROUP_BY=CHANNEL,
    variableZ_INDEX, spacing2/.65/.65um; one PURE_3D function returns original
    image copy, labels and measured rows; typed image/labels/measurement outputs.
    Compilejob1/execution5177e7b7-7ee4-4e47-9a4d-cc505cdb5812 COMPLETE.
    Executejob2/execution9292bfb8-4d2e-4e54-9bcc-5af998083fe5 FAILED after point
    archive write/stream, with Conflicting metadata for persisted image occurrence
    results01/input_openhcs/images/A01_s001_w1_z000_t001_fixture_image_494.tif.
    Original client8999 terminal1; exact native/viewer closed, no replay allowed.
    Both actual compared records/fields were NOT serialized, so the differing
    address-versus-metadata field is UNPROVEN. Your synthetic receiving fixture
    must expose those original typed values and repair their semantic derivation
    through the same writer/materialization owners while rejecting true conflicts.
    Later parent ordinary installed public acceptance is separate from source tests.
    Planck retains disjoint Points source/domain/calibration/reopen consumers.

    516 is NOT this bug: repeated FilterObjects dynamic declarations disagree
    Objects versus RetainedDefault during source artifact-plan reconstruction,
    before session/compile/execution.435 is post-execution persisted publication.

    R001094 CHANNEL/LAYER owner also confirmed at current30eb:
    394 body explicitly receives515 including the automatic CHANNEL/LAYER TIFF
    case and commits to actual TIFF-to-stream wire fixture, STACK and negative
    domains. This is explicit owner acceptance, NOT a completed fixture/fix/live pass.
    stream_component_semantics blob39998938e82599a4ea06bb14ff0763ccc41c58e8 and
    materialization/core blob21dd73d80cb4fc13ab06c46cfe3be8f93e20e545 unchanged.
    _output_fields still calls for_item_fields, which excludes plane components
    without evaluating LAYER mode. Request original typed scalar-plane projection
    or original predispatch unsupported rejection; no defaultCHANNEL/forcedSTACK.
    Please name the current receiving fixture/acceptance checkpoint for this case.
    Previous exact source/receiving request:
    #394 (comment)

    Full NRA/refactor-audit skills, pattern README/boundaries and surface-receipt
    guidance reread. BOUND-2 keeps exact nominal metadata/projector authorities;
    this is source/claim verification, no structural edit/global AST or runtime proof.
    Source/predictions/closed journals/failed and UNKNOWN dispositions immutable.
    511 remains source/prep only: Dewey's actual accepted programme after next94
    SCI/custody, preserving launched88/96;494 output already retired/charged ONCE
    by H00196, no stale88 projection or additional retirement/charge.

  5. trissim commented on Oct 3, 2026

    @trissim
    CollaboratorAuthor

    435: scalar storage anchor versus represented aggregate source

    Source-only additional determining evidence at Root39430ebacf907273ee0d0767f392ac21281915f5a0e.
    No fixture authored, source edit/test/import/build/native call or failed-job replay.
    Original failures/unknowns and earlier receipts unchanged. Root retains repair.

    Personally read complete test_derived_role_publication_435.py, original
    ProducedOutputSemantics.owns_persisted_artifact, FunctionOutputIdentity.filename_address,
    SourceArtifactProjection.scalar_address_for_image_metadata, OpenHCSPlaneAddress
    from_complete_source_metadata and the writer's persisted-occurrence join.

    New source distinction, not an asserted observed differing pair:

    • owns_persisted_artifact compares declared alias, artifact kind, producer scope
      and exact saved destination. This establishes the same declared occurrence,
      not equivalence of its complete represented source domain.
    • Main-flow projection.address is record.filename_address, derived from retained
      filename_values. Its owner explicitly documents storage coordinates as
      DISTINCT from collapsed semantic components. It is non-optional.
    • Saved runtime artifact address is scalar_address_for_image_metadata(metadata),
      derived from complete source_component_metadata. It returns None whenever a
      declared component is not scalar. This owner explicitly documents a plane
      address only when the WHOLE artifact is scalar.
    • The strict persisted-occurrence join compares these addresses before accepting
      the same occurrence, in addition to complete image-metadata equality.

    Conditional source consequence: if an aggregate Z artifact retains non-scalar
    Z source metadata, its saved artifact address is None while its retained storage
    filename address is concrete. That predicate rejects even if full metadata
    agrees. This identifies a semantic comparison seam for Root to discriminate;
    it does NOT prove that the actual494 address operand was None rather than that
    its full metadata differed. The exact original compared pair is not logged.
    Do not guess that filename Z0 equals whole-stack source identity, overwrite
    aggregate metadata with the filename anchor, or drop address/conflict validation.

    Existing435 fixture is a real persistence/reopen test but uses two4x5 FLOAT32
    2-D role images with scalar C2/Z1 metadata. It covers agreeing same occurrence,
    different paths, stale scope, explicit source-name conflict and different kind.
    It is not the new494 four-source-plane5x7 UINT16 aggregate join. This is a
    specific control gap verified in the published test, not a global absence claim.

    Request Root's original receiving fixture extend the existing writer/materializer
    family to the exact public494 aggregate shape/domain and serialize both typed
    addresses plus complete persisted metadata before the join. Source acceptance
    must preserve the distinction between storage anchor and represented aggregate,
    accept only the same legitimate persisted occurrence, and retain genuine source,
    scope/kind/path/metadata-conflict rejection. No new projection algorithm/store,
    filename decoder, broad dedup, fake source channel or receiver fallback.
    Parent later validates ordinary installed producer behavior separately; the
    new494 archive-reopen-only check must not replay original failed execution.

    Applicable audit pattern IDEN-1: storage anchor and represented source domain
    answer different questions. BOUND-2: use original typed address/provenance/
    materialization owners. This is source evidence, not a global NRA or runtime proof.
    Root acknowledgement of this exact new receiving case is still pending the
    existing visible request5966735892; historical435 ownership remains confirmed.

  6. trissim commented on Oct 4, 2026

    @trissim
    CollaboratorAuthor

    Received the exact NEW494 aggregate publication case under the existing #435 / PR #394 owner. Current source checkpoint is 6f6414eb1e16628e11651e2749155314e51bf557; the receiving fixture is being extended in the original tests/unit/test_derived_role_publication_435.py, using four physical 5×7 uint16 Z0..3 planes, CHANNEL grouping / variable Z_INDEX and 2/.65/.65 µm calibration.

    The control will retain and serialize both original typed join operands and complete persisted metadata before the existing writer/materializer join. Storage filename Z0 and the represented aggregate source domain remain distinct. Same-occurrence acceptance must preserve full metadata/scope/kind/path conflict rejection. We are also checking the original PURE_3D runtime-stack boundary: forcing intrinsic Volume metadata merely to make the current persists_whole_image() guard pass would conceal a possible consumer defect.

    Original five-step #435 installed acceptance is already retained, but it does not establish this aggregate case. The new exact control is pending; no PASS or actual cause of the unlogged original differing pair is claimed. The original failed execution will not be replayed. Later ordinary installed receiving remains a separate gate, and #435 remains open and formally linked to #394.

  7. trissim commented on Oct 4, 2026

    @trissim
    CollaboratorAuthor

    The NEW494 aggregate source repair is now committed and pushed in PR #394: 38046c51a. The actual four-plane 5×7 fixture now preserves all 140 UINT16 pixels, ordered source paths, runtime Z coordinates, source 2D spatial domain and calibration across main-flow and persisted-artifact publication. All 84 affected controls pass, including rejection of full metadata, producer, kind and actual execution-scope conflicts.

    RED/GREEN operands and source evidence distinguish this source qualification from the still-pending ordinary installed aggregate receiving run. The original unlogged failed public job is not claimed to have a proven cause.

    The contributor-only Mosaic path also reproduces a metadata disagreement on the older source: persisted filename context introduces a scalar SITE absent from the main-flow semantic metadata. Its repair remains in progress under this issue, as requested; the strict publication comparison will remain in place.

  8. trissim commented on Oct 4, 2026

    @trissim
    CollaboratorAuthor

    The existing contributor-only Mosaic defect is now fixed and pushed in PR #394: a61afde18.

    The materializer previously imported representative storage filename coordinates into source identity. It now derives semantic identity from typed payload metadata and actual scope; publication also derives its address from that semantic domain. Aggregate calibration uses the existing execution-anchor view. Genuine scalar source-path declarations and the writer's declared RGB selector retain their separate contracts. The obsolete filename-to-source merge is removed, and source/output component coercion shares the existing SourceMetadataFields owner.

    The physical two-TIFF Mosaic pair is RED on the old source and GREEN after the repair: both contributors, exact UINT16 pixels, .5 spacing and actual scope survive serialization/reopen, with no scalar SITE restored from the filename. All 202 affected controls pass. Exact operands, history and limits. Ordinary installed receiving remains pending; no performance claim or claim about the original unlogged public494 failure is made.

  9. trissim commented on Oct 4, 2026

    @trissim
    CollaboratorAuthor

    The original five-step role-image receiving case passes in PR #394, and the final generic source/materialization changes now have fresh public aggregate and Mosaic receiving evidence: complete owner laws, failures and acceptance.

    The final fresh Mosaic job used exact source a0bb0f4089a85475e112cea32d60132c1cd94752. Compilation and execution completed. The complete three-record inventory (main image, checkpoint and named output) retains the same 8×5 uint16 image, all 40 pixels, 0.5/0.5 micrometer calibration, no runtime plane axis and exactly two original physical SITE contributors. Semantic address and source grid remain absent as declared. Each distinct persisted path occurs exactly once.

    The earlier valid public aggregate result was reused without processing it again. Its complete nine-record inventory and named 4×5×7 aggregate preserve all 140 pixels, runtime Z0..3 provenance, original physical contributors and 2/0.65/0.65 micrometer calibration. Fresh independent MCP reopening returns identical results for both outputs. Source, dependency, input and prior-output guards pass; the owned runtime and both MCP children are terminal and the lease is released.

    Two concrete generic defects were fixed at their existing owners: workspace lookup aliases now resolve to one admitted source projection without merging distinct projections; artifact saving qualifies canonical main output once, removing executor reprojection from the obsolete input planes. Raw return callback epochs and CP adapter-recorded returns are preserved. Exact-one source matching and conflicting-publication rejection remain active.

    This closes the bounded functional receiving gate. It does not establish the unavailable historical #494 biology cause, native parity for the full catalog, or a timing gain from these correctness changes. #394 is formally linked to close #435 on merge.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions