From a9caeed4a13f340cf3e9ca82d4d8c246a996c8d5 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 30 Sep 2026 19:46:14 -0400 Subject: [PATCH 01/12] Move generic measurement caches and column behavior to core owners (#323) --- openhcs/core/measurement_feature_queries.py | 10 ++ .../core/measurement_row_materialization.py | 15 +++ openhcs/core/runtime_artifact_queries.py | 26 ++--- openhcs/core/runtime_stores.py | 33 +++++- .../runtime/object_label_measurements.py | 37 ++----- .../runtime/object_measurement_vectors.py | 18 +-- .../backends/cellprofiler/colocalization.py | 6 +- .../backends/cellprofiler/granularity.py | 6 +- .../backends/cellprofiler/intensity.py | 4 +- .../cellprofiler/intensity_distribution.py | 8 +- .../object_measurement_columnar_rows.py | 60 ---------- .../processing/backends/cellprofiler/shape.py | 6 +- .../backends/cellprofiler/zernike.py | 6 +- ...t_cellprofiler_nominal_policy_migration.py | 2 +- ..._cellprofiler_runtime_cache_authorities.py | 8 +- tests/unit/test_runtime_value_store.py | 104 ++++++++++++++++++ 16 files changed, 210 insertions(+), 139 deletions(-) delete mode 100644 openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py diff --git a/openhcs/core/measurement_feature_queries.py b/openhcs/core/measurement_feature_queries.py index c53ff16c64..ae9f1097f9 100644 --- a/openhcs/core/measurement_feature_queries.py +++ b/openhcs/core/measurement_feature_queries.py @@ -31,6 +31,7 @@ ) from openhcs.core.process_local_cache import ( IdentityBoundProcessCache, + ProcessLocalBoundedCache, RegisteredProcessLocalBoundedCache, identity_owner_tuples_match, ) @@ -151,6 +152,15 @@ def __post_init__(self) -> None: ) +class RuntimeObjectLabelMeasurementQueryCache( + ProcessLocalBoundedCache[ + RuntimeObjectLabelMeasurementQuery, + tuple[np.ndarray, ...], + ] +): + """Store-owned label-aligned values keyed by their full nominal query.""" + + def _diagnostic_value(value: object | None) -> str: if value is None or value == "": return _DIAGNOSTIC_NONE diff --git a/openhcs/core/measurement_row_materialization.py b/openhcs/core/measurement_row_materialization.py index cfc52af924..ac6c9bf6fa 100644 --- a/openhcs/core/measurement_row_materialization.py +++ b/openhcs/core/measurement_row_materialization.py @@ -150,6 +150,21 @@ def measurement_table_axis_values( ] +class ObjectMeasurementColumnarRows(ColumnarRows, ABC): + """Object measurement columns spanning their declared label domain.""" + + @property + def covers_declared_object_measurement_domain(self) -> bool: + """Object-measurement carriers span their declared label domain.""" + return True + + def __len__(self) -> int: + return self.row_count() + + def __iter__(self): + yield from self.iter_row_mappings() + + class MeasurementRowDeclaredValue(ABC, metaclass=AutoRegisterMeta): """Nominal declaration for values projected from a measurement row.""" diff --git a/openhcs/core/runtime_artifact_queries.py b/openhcs/core/runtime_artifact_queries.py index 9af87851cb..81e328eeb7 100644 --- a/openhcs/core/runtime_artifact_queries.py +++ b/openhcs/core/runtime_artifact_queries.py @@ -6,7 +6,6 @@ from dataclasses import dataclass from types import MappingProxyType from typing import TYPE_CHECKING, Any, cast -from weakref import WeakKeyDictionary import numpy as np @@ -39,6 +38,7 @@ resolve_runtime_measurement_lookup_dialect, ) from openhcs.core.process_local_cache import ( + ProcessLocalBoundedCache, RegisteredProcessLocalBoundedCache, identity_owner_tuples_match, named_identity_owner_tuples_match, @@ -81,10 +81,14 @@ if TYPE_CHECKING: from openhcs.core.runtime_stores import RuntimeValueStore, StoredRuntimeValue -_MEASUREMENT_TABLE_CACHE: WeakKeyDictionary[ - RuntimeValueStore, - dict[tuple[int, str, str | None], tuple[MeasurementTable, ...]], -] = WeakKeyDictionary() + +class RuntimeMeasurementTablesQueryCache( + ProcessLocalBoundedCache[ + tuple[str, str | None], + tuple[MeasurementTable, ...], + ] +): + """Store-owned measurement tables for one axis and component group.""" MeasurementLabelSliceFeatureBatchCacheValue = tuple[ @@ -433,20 +437,16 @@ def runtime_measurement_tables( context: RuntimeArtifactQueryContext, ) -> tuple[MeasurementTable, ...]: """Return all measurement tables in a runtime query context.""" - cache_key = (context.store.revision, context.axis_id, context.group_key) - store_cache = _MEASUREMENT_TABLE_CACHE.setdefault(context.store, {}) - cached = store_cache.get(cache_key) + cache_key = (context.axis_id, context.group_key) + store_cache = context.store.query_cache(RuntimeMeasurementTablesQueryCache) + cached = store_cache.cached_value(cache_key) if cached is not None: return cached tables = tuple( cast(MeasurementTable, record.value.data) for record in context.find(artifact_type=MeasurementsArtifactType) ) - for key in tuple(store_cache): - if key[0] != context.store.revision: - del store_cache[key] - store_cache[cache_key] = tables - return tables + return store_cache.store_value(cache_key, tables) def runtime_measurement_tables_for_object( diff --git a/openhcs/core/runtime_stores.py b/openhcs/core/runtime_stores.py index fb4362411a..0b3ebdb5bf 100644 --- a/openhcs/core/runtime_stores.py +++ b/openhcs/core/runtime_stores.py @@ -8,7 +8,7 @@ import inspect from pathlib import Path from types import MappingProxyType -from typing import Any +from typing import Any, TypeVar, cast from python_introspect import RuntimeParameterDeclarationABC @@ -26,6 +26,7 @@ ComponentGroupScope, ) from openhcs.core.component_set import ComponentSet +from openhcs.core.process_local_cache import ProcessLocalBoundedCache from openhcs.core.function_patterns import InvocationArtifactInputEdgePlan from openhcs.core.runtime_artifact_values import ( ArtifactKey, @@ -811,6 +812,9 @@ def to_dict(self) -> dict[str, Any]: return dict(payload) +StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=ProcessLocalBoundedCache[Any, Any]) + + class RuntimeValueStore: """Source of truth for validated runtime artifact values in one context.""" @@ -822,6 +826,10 @@ def __init__(self) -> None: self._observation_records: list[StoredRuntimeValue] = [] self._current_location_by_key: dict[ArtifactKey, RuntimeArtifactLocation] = {} self._revision = 0 + self._query_caches: dict[ + type[ProcessLocalBoundedCache[Any, Any]], + ProcessLocalBoundedCache[Any, Any], + ] = {} self._find_cache: dict[ tuple[ int, @@ -840,6 +848,27 @@ def __init__(self) -> None: tuple[StoredRuntimeValue, ...], ] = {} + def query_cache(self, cache_type: type[StoreQueryCacheT]) -> StoreQueryCacheT: + """Return a bounded derived-value cache owned by this store's lifetime. + + Concrete cache types separate query domains. Every store mutation clears + their values; transport reconstructs the store without derived caches. + """ + cache = self._query_caches.get(cache_type) + if cache is None: + cache = cache_type() + self._query_caches[cache_type] = cache + return cast(StoreQueryCacheT, cache) + + def __getstate__(self) -> dict[str, object]: + state = dict(self.__dict__) + del state["_query_caches"] + return state + + def __setstate__(self, state: dict[str, object]) -> None: + self.__dict__.update(state) + self._query_caches = {} + @staticmethod def address_matches_plan( address: RuntimeArtifactAddress, @@ -1098,6 +1127,8 @@ def _current_record(self, key: ArtifactKey) -> StoredRuntimeValue | None: def _mark_mutated(self) -> None: self._revision += 1 + for cache in self._query_caches.values(): + cache.clear() self._find_cache.clear() self._find_matching_cache.clear() diff --git a/openhcs/interop/cellprofiler/runtime/object_label_measurements.py b/openhcs/interop/cellprofiler/runtime/object_label_measurements.py index 5a442aa771..19c2890811 100644 --- a/openhcs/interop/cellprofiler/runtime/object_label_measurements.py +++ b/openhcs/interop/cellprofiler/runtime/object_label_measurements.py @@ -4,7 +4,6 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, cast -from weakref import WeakKeyDictionary import numpy as np @@ -14,6 +13,7 @@ ObjectLabelsArtifactType, ) from openhcs.core.measurement_feature_queries import ( + RuntimeObjectLabelMeasurementQueryCache, MeasurementFeatureQuery, RuntimeObjectLabelMeasurementQuery, RuntimeObjectSliceMeasurementQuery, @@ -34,7 +34,6 @@ ObjectLabelMeasurementValues, ) from openhcs.core.runtime_slice_alignment import RuntimeSliceAlignedValues -from openhcs.core.runtime_stores import RuntimeValueStore from openhcs.interop.cellprofiler.measurement_dialect import ( CELLPROFILER_MEASUREMENT_LOOKUP_DIALECT, ) @@ -48,29 +47,6 @@ if TYPE_CHECKING: from openhcs.interop.cellprofiler.runtime.adapter import CellProfilerRuntimeAdapter -ObjectLabelMeasurementValuesProcessCache = dict[ - RuntimeObjectLabelMeasurementQuery, - tuple[np.ndarray, ...], -] - -_OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE: WeakKeyDictionary[ - RuntimeValueStore, - tuple[int, ObjectLabelMeasurementValuesProcessCache], -] = WeakKeyDictionary() - - -def object_label_measurement_values_cache( - store: RuntimeValueStore, -) -> ObjectLabelMeasurementValuesProcessCache: - """Return label-aligned vectors bound to the store's current revision.""" - cached_revision = _OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE.get(store) - if cached_revision is not None and cached_revision[0] == store.revision: - return cached_revision[1] - cache: ObjectLabelMeasurementValuesProcessCache = {} - _OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE[store] = (store.revision, cache) - return cache - - @dataclass(frozen=True, slots=True, kw_only=True) class ObjectFeatureMeasurementContext(RuntimeObjectSliceMeasurementQuery): """Nominal context for one object-feature measurement lookup.""" @@ -242,10 +218,12 @@ def values( """Return object measurements aligned to this request's label planes.""" label_domain = self.label_domain() query = self.measurement_query(adapter, label_domain=label_domain) - object_label_values_cache = object_label_measurement_values_cache( - adapter.request.context.runtime_value_store + object_label_values_cache = ( + adapter.request.context.runtime_value_store.query_cache( + RuntimeObjectLabelMeasurementQueryCache + ) ) - cached = object_label_values_cache.get(query) + cached = object_label_values_cache.cached_value(query) if cached is not None: return cached child_name = child_count_feature_child_name(self.feature_name) @@ -299,8 +277,7 @@ def values( plane_projector=adapter, dialect=CELLPROFILER_MEASUREMENT_LOOKUP_DIALECT, ).values_for_labels(self.labels) - object_label_values_cache[query] = values - return values + return object_label_values_cache.store_value(query, values) @dataclass(frozen=True, slots=True, kw_only=True) diff --git a/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py b/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py index f0c66292d4..858e1e7ce8 100644 --- a/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py +++ b/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py @@ -21,7 +21,10 @@ MeasurementLabelSliceFeatureQuery, MeasurementLabelSliceFeatureBatchQuery, ) -from openhcs.core.measurement_feature_queries import MeasurementFeatureQuery +from openhcs.core.measurement_feature_queries import ( + MeasurementFeatureQuery, + RuntimeObjectLabelMeasurementQueryCache, +) from openhcs.core.measurement_row_materialization import measurement_rows from openhcs.core.runtime_measurements import ( MeasurementRowAxisField, @@ -49,7 +52,6 @@ ) from openhcs.interop.cellprofiler.runtime.object_label_measurements import ( ObjectLabelMeasurementSliceRequest, - object_label_measurement_values_cache, ) from openhcs.interop.cellprofiler.runtime.object_measurement_tables import ( ObjectMeasurementTableIndex, @@ -597,25 +599,25 @@ def cache_runtime_batch_vectors( vectors: Mapping[str, tuple[np.ndarray, ...]], bindings: tuple[CellProfilerObjectMeasurementVectorBinding, ...], ) -> None: - process_cache = object_label_measurement_values_cache( - adapter.request.context.runtime_value_store + store_cache = adapter.request.context.runtime_value_store.query_cache( + RuntimeObjectLabelMeasurementQueryCache ) for binding in bindings: values = vectors[binding.object_name] query = binding.measurement_query(adapter) - process_cache[query] = values + store_cache.store_value(query, values) def cached_runtime_batch_vectors( self, adapter: "CellProfilerRuntimeAdapter", ) -> dict[str, tuple[np.ndarray, ...]]: - process_cache = object_label_measurement_values_cache( - adapter.request.context.runtime_value_store + store_cache = adapter.request.context.runtime_value_store.query_cache( + RuntimeObjectLabelMeasurementQueryCache ) cached_vectors: dict[str, tuple[np.ndarray, ...]] = {} for binding in self.bindings: query = binding.measurement_query(adapter) - cached = process_cache.get(query) + cached = store_cache.cached_value(query) if cached is not None: cached_vectors[binding.object_name] = cached return cached_vectors diff --git a/openhcs/processing/backends/cellprofiler/colocalization.py b/openhcs/processing/backends/cellprofiler/colocalization.py index 6f55926076..01144a6bb7 100644 --- a/openhcs/processing/backends/cellprofiler/colocalization.py +++ b/openhcs/processing/backends/cellprofiler/colocalization.py @@ -37,6 +37,7 @@ ConcatenatedColumnarRows, DataclassMeasurementColumnarRows, MeasurementProjectedColumnarRows, + ObjectMeasurementColumnarRows, ) from openhcs.core.pipeline.function_contracts import ( ObjectLabelInputExecutionMode, @@ -160,9 +161,6 @@ from openhcs.processing.backends.cellprofiler.granularity import ( CellProfilerRuntimeProfiler, ) -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - LongObjectMeasurementColumnarRows, -) from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract from openhcs.interop.cellprofiler.runtime.artifact_binding import ( RuntimeInputBindingRequest, @@ -2013,7 +2011,7 @@ def columns_for( @dataclass(frozen=True, slots=True) -class ObjectColocalizationColumnarMeasurements(LongObjectMeasurementColumnarRows): +class ObjectColocalizationColumnarMeasurements(ObjectMeasurementColumnarRows): """Columnar object-colocalization rows preserving direct row iteration.""" fields: ClassVar[tuple[FieldSpec, ...]] = FieldSpec.from_dataclass_type( diff --git a/openhcs/processing/backends/cellprofiler/granularity.py b/openhcs/processing/backends/cellprofiler/granularity.py index ce6ff80943..51040bd940 100644 --- a/openhcs/processing/backends/cellprofiler/granularity.py +++ b/openhcs/processing/backends/cellprofiler/granularity.py @@ -43,6 +43,7 @@ ) from openhcs.core.measurement_row_materialization import ( DataclassMeasurementColumnarRows, + ObjectMeasurementColumnarRows, ) from openhcs.core.runtime_profile import RuntimeProfileLogger from openhcs.core.runtime_tabular_values import ( @@ -87,9 +88,6 @@ CellProfilerBackendProvider, CellProfilerBackendStrategyMixin, ) -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - LongObjectMeasurementColumnarRows, -) from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract from openhcs.processing.backends.cellprofiler._granularity_native import ( reconstruct_f32 as _reconstruct_f32, @@ -461,7 +459,7 @@ def object_granularity_measurement_value_fields() -> tuple[str, ...]: @dataclass(frozen=True, slots=True) -class ObjectGranularityMeasurementRows(LongObjectMeasurementColumnarRows): +class ObjectGranularityMeasurementRows(ObjectMeasurementColumnarRows): """Columnar object granularity rows over the emitted label-id domain.""" fields: ClassVar[tuple[FieldSpec, ...]] = FieldSpec.from_dataclass_type( diff --git a/openhcs/processing/backends/cellprofiler/intensity.py b/openhcs/processing/backends/cellprofiler/intensity.py index 1f7d1e12e2..cbb6dbcde0 100644 --- a/openhcs/processing/backends/cellprofiler/intensity.py +++ b/openhcs/processing/backends/cellprofiler/intensity.py @@ -17,6 +17,7 @@ from openhcs.core.measurement_row_materialization import ( DataclassMeasurementColumnarRows, MeasurementProjectedColumnarRows, + ObjectMeasurementColumnarRows, ) from openhcs.interop.cellprofiler.setting_names import SettingNameFamily from openhcs.interop.cellprofiler.settings_binder import ( @@ -314,9 +315,6 @@ def active_artifact_bindings( ObjectLabelValue, object_label_dense_array, ) -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - ObjectMeasurementColumnarRows, -) from openhcs.core.runtime_profile import RuntimeProfileLogger from openhcs.core.runtime_batch_contracts import RuntimeBatchInvocationRequest from openhcs.interop.cellprofiler.runtime.measurement_execution_support import ( diff --git a/openhcs/processing/backends/cellprofiler/intensity_distribution.py b/openhcs/processing/backends/cellprofiler/intensity_distribution.py index 3d3fc13900..4e2a4460d0 100644 --- a/openhcs/processing/backends/cellprofiler/intensity_distribution.py +++ b/openhcs/processing/backends/cellprofiler/intensity_distribution.py @@ -33,6 +33,7 @@ from openhcs.core.callable_contract import KeywordRuntimeParameter from openhcs.core.measurement_row_materialization import ( MeasurementProjectedColumnarRows, + ObjectMeasurementColumnarRows, ) from openhcs.core.memory.decorators import numpy from openhcs.core.pipeline.function_contracts import ( @@ -113,9 +114,6 @@ from openhcs.processing.backends.cellprofiler.granularity import ( CellProfilerRuntimeProfiler, ) -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - WideObjectMeasurementColumnarRows, -) from openhcs.processing.backends.cellprofiler.secondary import ( SecondaryPropagationBackendStrategy, secondary_propagation_backend, @@ -1464,9 +1462,7 @@ def rows(self) -> ColumnarRows: @dataclass(slots=True) -class ObjectIntensityDistributionMeasurementColumnarRows( - WideObjectMeasurementColumnarRows -): +class ObjectIntensityDistributionMeasurementColumnarRows(ObjectMeasurementColumnarRows): """Columnar radial intensity-distribution rows.""" object_row_identity = MeasurementObjectRowIdentity.LABEL_ID diff --git a/openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py b/openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py deleted file mode 100644 index 29742dee57..0000000000 --- a/openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py +++ /dev/null @@ -1,60 +0,0 @@ -"""Columnar row base classes for CellProfiler object measurements.""" - -from __future__ import annotations - -from abc import ABC -from collections.abc import Sequence - -from openhcs.core.runtime_measurements import ( - ObjectMeasurementSliceValueRow, - ObjectMeasurementValueRow, -) -from openhcs.core.runtime_tabular_values import ( - ColumnarRows, -) - - -class ObjectMeasurementColumnarRows(ColumnarRows, ABC): - """Object measurement columns spanning their declared label domain.""" - - slice_index: int | None - - @property - def covers_declared_object_measurement_domain(self) -> bool: - """OpenHCS object-measurement carriers are built on their label domain.""" - return True - - def __len__(self) -> int: - return self.row_count() - - -class WideObjectMeasurementColumnarRows(ObjectMeasurementColumnarRows, ABC): - """One object row with a named column for each measured feature.""" - - def __iter__(self): - yield from self.iter_row_mappings() - - -class LongObjectMeasurementColumnarRows(ObjectMeasurementColumnarRows, ABC): - """One object/feature/value row per measured feature.""" - - def __iter__(self): - row_type = ( - ObjectMeasurementValueRow - if self.slice_index is None - else ObjectMeasurementSliceValueRow - ) - columns = self.columns - slice_values: Sequence[object] | None = columns.get("slice_index") - for row_index in range(len(self)): - kwargs = ( - {} - if slice_values is None - else {"slice_index": int(slice_values[row_index])} - ) - yield row_type( - object_label=int(columns["object_label"][row_index]), - feature_name=str(columns["feature_name"][row_index]), - result_value=float(columns["result_value"][row_index]), - **kwargs, - ) diff --git a/openhcs/processing/backends/cellprofiler/shape.py b/openhcs/processing/backends/cellprofiler/shape.py index 6177cd3568..cedece0a06 100644 --- a/openhcs/processing/backends/cellprofiler/shape.py +++ b/openhcs/processing/backends/cellprofiler/shape.py @@ -448,6 +448,7 @@ def measurement_all_field_names( ) from openhcs.core.measurement_row_materialization import ( MeasurementProjectedColumnarRows, + ObjectMeasurementColumnarRows, ) from openhcs.core.runtime_tabular_values import ColumnarRows from openhcs.core.runtime_object_labels import ( @@ -457,9 +458,6 @@ def measurement_all_field_names( object_label_sparse_ijv_rows, ) from openhcs.core.runtime_sparse_labels import SparseIJVLabelRows -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - LongObjectMeasurementColumnarRows, -) from openhcs.processing.backends.analysis.region_properties import ( LabelRegionPropertiesBackendStrategy, ) @@ -559,7 +557,7 @@ def feature_missing_value(self, feature_name: str) -> ObjectFeatureMissingValue: ) -class ShapeObjectMeasurementRows(LongObjectMeasurementColumnarRows): +class ShapeObjectMeasurementRows(ObjectMeasurementColumnarRows): """Dense AreaShape rows that already span their declared object domain.""" object_row_identity = MeasurementObjectRowIdentity.ROW_SEQUENCE diff --git a/openhcs/processing/backends/cellprofiler/zernike.py b/openhcs/processing/backends/cellprofiler/zernike.py index 17ee6df968..325053fa38 100644 --- a/openhcs/processing/backends/cellprofiler/zernike.py +++ b/openhcs/processing/backends/cellprofiler/zernike.py @@ -65,8 +65,8 @@ from openhcs.processing.backends.cellprofiler.label_geometry import ( minimum_enclosing_circle_from_labels, ) -from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( - WideObjectMeasurementColumnarRows, +from openhcs.core.measurement_row_materialization import ( + ObjectMeasurementColumnarRows, ) _INTENSITY_DEBUG_TRACE_DIR_ENV = "OPENHCS_ZERNIKE_INTENSITY_DEBUG_TRACE_DIR" @@ -652,7 +652,7 @@ def rows(self) -> ColumnarRows: @dataclass(slots=True) -class ObjectIntensityZernikeMeasurementColumnarRows(WideObjectMeasurementColumnarRows): +class ObjectIntensityZernikeMeasurementColumnarRows(ObjectMeasurementColumnarRows): """Columnar intensity-Zernike measurement rows.""" object_ids: Sequence[int] diff --git a/tests/unit/test_cellprofiler_nominal_policy_migration.py b/tests/unit/test_cellprofiler_nominal_policy_migration.py index 8e3be53b78..2e7681ec8a 100644 --- a/tests/unit/test_cellprofiler_nominal_policy_migration.py +++ b/tests/unit/test_cellprofiler_nominal_policy_migration.py @@ -116,7 +116,7 @@ def test_object_measurement_columnar_rows_own_complete_domain_semantics() -> Non from openhcs.processing.backends.cellprofiler.intensity import ( ObjectIntensityMeasurementRows, ) - from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( + from openhcs.core.measurement_row_materialization import ( ObjectMeasurementColumnarRows, ) from openhcs.processing.backends.cellprofiler.shape import ( diff --git a/tests/unit/test_cellprofiler_runtime_cache_authorities.py b/tests/unit/test_cellprofiler_runtime_cache_authorities.py index 70030eb17f..108d2cb0e1 100644 --- a/tests/unit/test_cellprofiler_runtime_cache_authorities.py +++ b/tests/unit/test_cellprofiler_runtime_cache_authorities.py @@ -48,9 +48,11 @@ from openhcs.core.runtime_relationships import DirectedObjectRelationshipPayload from openhcs.core.runtime_tabular_values import FieldSpec from openhcs.core.runtime_stores import RuntimeValueStore +from openhcs.core.measurement_feature_queries import ( + RuntimeObjectLabelMeasurementQueryCache, +) from openhcs.interop.cellprofiler.runtime.object_label_measurements import ( ObjectLabelMeasurementSliceRequest, - object_label_measurement_values_cache, ) AXIS_ID = "A01" @@ -238,7 +240,9 @@ def test_object_label_measurements_use_store_bound_values_cache() -> None: ) query = request.measurement_query(adapter) expected = (np.asarray([11.0], dtype=np.float64),) - object_label_measurement_values_cache(store)[query] = expected + store.query_cache(RuntimeObjectLabelMeasurementQueryCache).store_value( + query, expected + ) resolved = request.values(adapter) diff --git a/tests/unit/test_runtime_value_store.py b/tests/unit/test_runtime_value_store.py index f10f3af1ee..cd053fb901 100644 --- a/tests/unit/test_runtime_value_store.py +++ b/tests/unit/test_runtime_value_store.py @@ -1,4 +1,5 @@ from dataclasses import replace +import pickle import numpy as np import pytest @@ -43,6 +44,7 @@ image_payload_metadata, ) from openhcs.core.measurement_row_materialization import ( + MeasurementProjectedColumnarRows, MeasurementSparseColumnarRows, ) from openhcs.core.runtime_measurements import ( @@ -55,6 +57,11 @@ MeasurementScope, MeasurementSubject, ) +from openhcs.core.measurement_feature_queries import ( + RuntimeObjectLabelMeasurementQuery, + RuntimeObjectLabelMeasurementQueryCache, +) +from openhcs.core.runtime_artifact_queries import RuntimeMeasurementTablesQueryCache from openhcs.core.runtime_plane_projection import ( RuntimePlaneAxis, ) @@ -129,6 +136,103 @@ def _runtime_value(name="measurements", path="/memory/measurements.pkl"): ) +def _label_query(feature_name="AreaShape_Area"): + return RuntimeObjectLabelMeasurementQuery( + axis_id="A01", + group_key="DAPI", + object_name="Cells", + feature_name=feature_name, + label_domain=(1,), + ) + + +@pytest.mark.parametrize("mutation", ("record", "replace", "clear", "merge")) +def test_store_mutations_invalidate_all_derived_query_domains(mutation): + store = RuntimeValueStore() + original = _runtime_value() + store.record(original, path="/memory/measurements.pkl", backend="memory") + label_cache = store.query_cache(RuntimeObjectLabelMeasurementQueryCache) + tables_cache = store.query_cache(RuntimeMeasurementTablesQueryCache) + query = _label_query() + label_cache.store_value(query, (np.asarray([11.0]),)) + tables_cache.store_value(("A01", "DAPI"), (original.data,)) + + if mutation == "record": + store.record(_runtime_value("new"), path="/memory/new.pkl", backend="memory") + elif mutation == "replace": + store.replace(original, path="/memory/replacement.pkl", backend="memory") + elif mutation == "clear": + store.clear() + else: + worker = RuntimeValueStore() + worker.record( + _runtime_value("worker"), path="/memory/worker.pkl", backend="memory" + ) + store.merge_observed_values(worker.observed_values) + + assert label_cache.cached_value(query) is None + assert tables_cache.cached_value(("A01", "DAPI")) is None + assert store.query_cache(RuntimeObjectLabelMeasurementQueryCache) is label_cache + assert store.query_cache(RuntimeMeasurementTablesQueryCache) is tables_cache + + +def test_store_query_values_are_bounded_and_isolated_between_stores(): + first, second = RuntimeValueStore(), RuntimeValueStore() + first_cache = first.query_cache(RuntimeObjectLabelMeasurementQueryCache) + second_cache = second.query_cache(RuntimeObjectLabelMeasurementQueryCache) + first_cache.max_entries = 2 + queries = tuple(_label_query(feature) for feature in ("a", "b", "c")) + values = (np.asarray([42.0]),) + first_cache.store_value(queries[0], values) + first_cache.store_value(queries[1], values) + assert first_cache.cached_value(queries[0]) is values + first_cache.store_value(queries[2], values) + + assert first_cache.cached_value(queries[0]) is values + assert first_cache.cached_value(queries[1]) is None + assert first_cache.cached_value(queries[2]) is values + assert second_cache.cached_value(queries[0]) is None + + +def test_store_transport_excludes_derived_caches_and_retains_records(): + store = RuntimeValueStore() + value = _runtime_value() + value.data.rows = MeasurementProjectedColumnarRows( + {"object_id": (1,)}, fields=(FieldSpec("object_id", int),) + ) + store.record(value, path="/memory/measurements.pkl", backend="memory") + serialized_without_cache = pickle.dumps(store, protocol=5) + query = _label_query() + cache = store.query_cache(RuntimeObjectLabelMeasurementQueryCache) + values = (np.ones(100_000),) + cache.store_value(query, values) + store.query_cache(RuntimeMeasurementTablesQueryCache).store_value( + ("A01", "DAPI"), (value.data,) + ) + + assert pickle.dumps(store, protocol=5) == serialized_without_cache + restored = pickle.loads(serialized_without_cache) + assert restored.revision == store.revision + assert len(restored) == len(store) == 1 + assert ( + restored.observed_values[0].value.data.row_mappings() + == value.data.row_mappings() + ) + assert ( + restored.query_cache(RuntimeObjectLabelMeasurementQueryCache).cached_value( + query + ) + is None + ) + assert ( + restored.query_cache(RuntimeMeasurementTablesQueryCache).cached_value( + ("A01", "DAPI") + ) + is None + ) + assert cache.cached_value(query) is values + + def test_output_plan_uses_its_single_scope_for_ungrouped_invocation(): output_plan = ArtifactOutputPlan( name="Nuclei", From e7500ae260305f8e4c7a587a1ab9b68f7e414549 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 30 Sep 2026 19:51:16 -0400 Subject: [PATCH 02/12] Supply ACK routes to materialization viewer fixtures (#324) --- tests/unit/test_materialization_core.py | 28 +++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/tests/unit/test_materialization_core.py b/tests/unit/test_materialization_core.py index ac4d7480d6..f1669802a0 100644 --- a/tests/unit/test_materialization_core.py +++ b/tests/unit/test_materialization_core.py @@ -34,6 +34,7 @@ ViewerStreamSourceIdentity, ) from zmqruntime.config import TransportMode +from zmqruntime.messages import AckReturnRoute, ProcessIdentity from zmqruntime.viewer_protocol import ViewerTransportEndpoint, ViewerWireField import openhcs # noqa: F401 @@ -131,7 +132,7 @@ def _memory_materialize(spec, data, path, filemanager): ) -def test_retained_full_stack_stream_preserves_absolute_calibration_and_integer_pixels(): +def test_retained_full_stack_stream_preserves_absolute_calibration_and_integer_pixels(viewer_ack_return_route): labels = np.zeros((2, 8, 9), dtype=np.int32) labels[0, 2:4, 3:5] = 70001 labels[1, 6, 7] = 2 @@ -202,6 +203,7 @@ def test_retained_full_stack_stream_preserves_absolute_calibration_and_integer_p batch = StreamingBatchMessageBuilder.build( backend, StreamingBatchMessageRequest( + return_route=viewer_ack_return_route, data_list=[output.content], file_paths=[output.path], stream_request=request, @@ -372,6 +374,16 @@ class _TestViewerMicroscopeHandler(ViewerMicroscopeHandlerABC): metadata_handler = _TestViewerMetadataHandler() +@pytest.fixture +def viewer_ack_return_route(): + """Nominal producer route for message construction without a live listener.""" + return AckReturnRoute( + url="tcp://127.0.0.1:8111", + incarnation="00000000-0000-0000-0000-000000000001", + owner=ProcessIdentity.current(), + ) + + def _viewer_stream_backend_kwargs(): display_config = _TestViewerDisplayConfig() request = ViewerStreamRequest( @@ -1538,7 +1550,7 @@ def test_roi_materialization_preserves_payload_scoped_volume_in_one_archive() -> @pytest.mark.unit -def test_roi_streaming_maps_payload_scoped_volume_planes_from_provenance() -> None: +def test_roi_streaming_maps_payload_scoped_volume_planes_from_provenance(viewer_ack_return_route) -> None: fm = _RecordingFileManager() payload = ObjectLabelPayload( variant_data=ObjectLabelVariantData(labels=_two_plane_roi_labels()), @@ -1588,6 +1600,7 @@ def test_roi_streaming_maps_payload_scoped_volume_planes_from_provenance() -> No streamed_item = StreamingBatchMessageBuilder.build( napari_backend, StreamingBatchMessageRequest( + return_route=viewer_ack_return_route, data_list=[roi_content], file_paths=[roi_path], stream_request=stream_request, @@ -1668,7 +1681,9 @@ def test_roi_streaming_preserves_singleton_projected_source_metadata() -> None: @pytest.mark.unit -def test_roi_streaming_maps_singleton_plane_from_exact_output_component() -> None: +def test_roi_streaming_maps_singleton_plane_from_exact_output_component( + viewer_ack_return_route, +) -> None: fm = _RecordingFileManager() labels = np.zeros((1, 8, 8), dtype=np.int32) labels[0, 2:6, 3:7] = 1 @@ -1718,6 +1733,7 @@ def test_roi_streaming_maps_singleton_plane_from_exact_output_component() -> Non streamed_item = StreamingBatchMessageBuilder.build( napari_backend, StreamingBatchMessageRequest( + return_route=viewer_ack_return_route, data_list=[roi_content], file_paths=[roi_path], stream_request=stream_request, @@ -1732,7 +1748,9 @@ def test_roi_streaming_maps_singleton_plane_from_exact_output_component() -> Non @pytest.mark.unit -def test_generic_object_labels_feed_napari_and_fiji_roi_transports() -> None: +def test_generic_object_labels_feed_napari_and_fiji_roi_transports( + viewer_ack_return_route, +) -> None: fm = FileManager({"memory": MemoryStorageBackend()}) labels = np.zeros((8, 8), dtype=np.int32) labels[2:6, 3:7] = 1 @@ -1753,6 +1771,7 @@ def test_generic_object_labels_feed_napari_and_fiji_roi_transports() -> None: napari_items = StreamingBatchMessageBuilder.build( napari_backend, StreamingBatchMessageRequest( + return_route=viewer_ack_return_route, data_list=[rois], file_paths=[roi_path], stream_request=stream_request, @@ -1766,6 +1785,7 @@ def test_generic_object_labels_feed_napari_and_fiji_roi_transports() -> None: fiji_items = StreamingBatchMessageBuilder.build( fiji_backend, StreamingBatchMessageRequest( + return_route=viewer_ack_return_route, data_list=[rois], file_paths=[roi_path], stream_request=stream_request, From d64002077535fb5f513715cdfe7d2d02dc4d1e0b Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 30 Sep 2026 20:13:03 -0400 Subject: [PATCH 03/12] Separate shared bounded values from process singleton lifetime (#323) --- openhcs/core/measurement_feature_queries.py | 4 ++-- openhcs/core/process_local_cache.py | 13 +++++++++---- openhcs/core/runtime_artifact_queries.py | 4 ++-- openhcs/core/runtime_stores.py | 8 ++++---- tests/unit/test_process_local_cache.py | 13 +++++++++++++ 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/openhcs/core/measurement_feature_queries.py b/openhcs/core/measurement_feature_queries.py index ae9f1097f9..15acdfb0d7 100644 --- a/openhcs/core/measurement_feature_queries.py +++ b/openhcs/core/measurement_feature_queries.py @@ -31,7 +31,7 @@ ) from openhcs.core.process_local_cache import ( IdentityBoundProcessCache, - ProcessLocalBoundedCache, + BoundedCache, RegisteredProcessLocalBoundedCache, identity_owner_tuples_match, ) @@ -153,7 +153,7 @@ def __post_init__(self) -> None: class RuntimeObjectLabelMeasurementQueryCache( - ProcessLocalBoundedCache[ + BoundedCache[ RuntimeObjectLabelMeasurementQuery, tuple[np.ndarray, ...], ] diff --git a/openhcs/core/process_local_cache.py b/openhcs/core/process_local_cache.py index c0685f96fd..f3c77946dd 100644 --- a/openhcs/core/process_local_cache.py +++ b/openhcs/core/process_local_cache.py @@ -1,4 +1,4 @@ -"""Small process-local cache substrates for immutable runtime projections.""" +"""Shared bounded values and process-local cache lifetime policies.""" from __future__ import annotations @@ -40,8 +40,8 @@ def named_identity_owner_tuples_match( @dataclass(slots=True) -class ProcessLocalBoundedCache(Generic[CacheKey, CachedValue]): - """Bounded LRU cache with one singleton instance per concrete subclass.""" +class BoundedCache(Generic[CacheKey, CachedValue]): + """Bounded LRU values with lifetime supplied by their owning consumer.""" max_entries: int = 4096 entries: OrderedDict[CacheKey, CachedValue] = field(default_factory=OrderedDict) @@ -61,9 +61,14 @@ def store_value(self, key: CacheKey, value: CachedValue) -> CachedValue: return value def clear(self) -> None: - """Discard all values retained by this process-local cache instance.""" + """Discard all values retained by this cache instance.""" self.entries.clear() + +@dataclass(slots=True) +class ProcessLocalBoundedCache(BoundedCache[CacheKey, CachedValue]): + """Bounded values with one process-local singleton per concrete subclass.""" + @classmethod def process_cache(cls) -> "ProcessLocalBoundedCache[CacheKey, CachedValue]": cache = cls._process_cache diff --git a/openhcs/core/runtime_artifact_queries.py b/openhcs/core/runtime_artifact_queries.py index 81e328eeb7..260fd32914 100644 --- a/openhcs/core/runtime_artifact_queries.py +++ b/openhcs/core/runtime_artifact_queries.py @@ -38,7 +38,7 @@ resolve_runtime_measurement_lookup_dialect, ) from openhcs.core.process_local_cache import ( - ProcessLocalBoundedCache, + BoundedCache, RegisteredProcessLocalBoundedCache, identity_owner_tuples_match, named_identity_owner_tuples_match, @@ -83,7 +83,7 @@ class RuntimeMeasurementTablesQueryCache( - ProcessLocalBoundedCache[ + BoundedCache[ tuple[str, str | None], tuple[MeasurementTable, ...], ] diff --git a/openhcs/core/runtime_stores.py b/openhcs/core/runtime_stores.py index 0b3ebdb5bf..d2840af84d 100644 --- a/openhcs/core/runtime_stores.py +++ b/openhcs/core/runtime_stores.py @@ -26,7 +26,7 @@ ComponentGroupScope, ) from openhcs.core.component_set import ComponentSet -from openhcs.core.process_local_cache import ProcessLocalBoundedCache +from openhcs.core.process_local_cache import BoundedCache from openhcs.core.function_patterns import InvocationArtifactInputEdgePlan from openhcs.core.runtime_artifact_values import ( ArtifactKey, @@ -812,7 +812,7 @@ def to_dict(self) -> dict[str, Any]: return dict(payload) -StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=ProcessLocalBoundedCache[Any, Any]) +StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=BoundedCache[Any, Any]) class RuntimeValueStore: @@ -827,8 +827,8 @@ def __init__(self) -> None: self._current_location_by_key: dict[ArtifactKey, RuntimeArtifactLocation] = {} self._revision = 0 self._query_caches: dict[ - type[ProcessLocalBoundedCache[Any, Any]], - ProcessLocalBoundedCache[Any, Any], + type[BoundedCache[Any, Any]], + BoundedCache[Any, Any], ] = {} self._find_cache: dict[ tuple[ diff --git a/tests/unit/test_process_local_cache.py b/tests/unit/test_process_local_cache.py index 52cf02905c..b92d381777 100644 --- a/tests/unit/test_process_local_cache.py +++ b/tests/unit/test_process_local_cache.py @@ -1,8 +1,21 @@ from openhcs.core.process_local_cache import ( + BoundedCache, IdentityBoundProcessCache, + ProcessLocalBoundedCache, RegisteredProcessLocalBoundedCache, clear_registered_process_local_caches, ) +from openhcs.core.measurement_feature_queries import RuntimeObjectLabelMeasurementQueryCache +from openhcs.core.runtime_artifact_queries import RuntimeMeasurementTablesQueryCache + + +def test_store_query_domains_use_bounded_values_without_process_singletons(): + for cache_type in ( + RuntimeObjectLabelMeasurementQueryCache, + RuntimeMeasurementTablesQueryCache, + ): + assert issubclass(cache_type, BoundedCache) + assert not issubclass(cache_type, ProcessLocalBoundedCache) def test_registered_process_local_cache_cleanup_clears_cache_instance(): From aff922837632b9336af16f4beb2ad2653a46821e Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 30 Sep 2026 20:40:46 -0400 Subject: [PATCH 04/12] Move persistent kernel preparation into generic runtime families (#323) --- openhcs/core/processing_preparation.py | 52 ++++++++++++++++ .../backends/cellprofiler/_backend.py | 13 +--- .../backends/cellprofiler/_preparation.py | 60 ++----------------- ...ellprofiler_callable_kernel_preparation.py | 41 +++++++++++++ 4 files changed, 100 insertions(+), 66 deletions(-) diff --git a/openhcs/core/processing_preparation.py b/openhcs/core/processing_preparation.py index 01ab268b71..e51440b48d 100644 --- a/openhcs/core/processing_preparation.py +++ b/openhcs/core/processing_preparation.py @@ -13,6 +13,7 @@ from itertools import islice from multiprocessing.connection import Connection, wait from multiprocessing.process import BaseProcess +from pathlib import Path from threading import Lock from typing import ClassVar @@ -23,6 +24,30 @@ CompilerPreparedAutoRegisterFamily, ) from openhcs.core.function_contract_metadata import FunctionContractAttribute +from openhcs.utils.environment import OpenHCSProcessEnvironment + + +class PersistentNumbaKernelPreparation(CompilerPreparedAutoRegisterFamily): + """Admit persistent Numba work only for an empty explicit CPU cache.""" + + @classmethod + def requires_persistent_kernel_cache(cls) -> bool: + """Declared pure kernel operations require a persistent Numba cache.""" + return True + + @classmethod + def can_prepare_in_child(cls) -> bool: + if not OpenHCSProcessEnvironment.cpu_only_mode(): + return False + if not cls.requires_persistent_kernel_cache(): + return False + from numba import config as numba_config + + cache_directory = numba_config.CACHE_DIR + return ( + bool(cache_directory) + and next(Path(cache_directory).rglob("*.nbi"), None) is None + ) class PreparationOperation(ABC): @@ -66,6 +91,33 @@ def reset(cls) -> None: AutoRegisterRegistryPreparation.cached_module_registry_families.cache_clear() +class RegisteredNumbaKernelPreparation( + PersistentNumbaKernelPreparation, PreparationOperation +): + """Derive independent pure-kernel obligations from each declared registry. + + This abstract parent has no registry. Concrete AutoRegisterMeta declarations + own their registries; the common parent owns identity, operation derivation + and successful parent preparation. + """ + + __registry_key__ = "__name__" + __registry__: ClassVar[dict[str, type[RegisteredNumbaKernelPreparation]]] + + @property + def identity(self) -> Hashable: + return type(self) + + @classmethod + def cache_preparation_operations(cls) -> tuple[PreparationOperation, ...]: + return tuple(declaration() for declaration in cls.__registry__.values()) + + @classmethod + def prepare_registered_family(cls) -> None: + for operation in cls.cache_preparation_operations(): + operation.prepare() + + @dataclass(frozen=True, slots=True) class RegistryFamilyPreparation(PreparationOperation): """Execute a family's declared warmup and project its admitted child work.""" diff --git a/openhcs/processing/backends/cellprofiler/_backend.py b/openhcs/processing/backends/cellprofiler/_backend.py index ed20dbf29b..e37742d5b1 100644 --- a/openhcs/processing/backends/cellprofiler/_backend.py +++ b/openhcs/processing/backends/cellprofiler/_backend.py @@ -12,14 +12,9 @@ from metaclass_registry import AutoRegisterMeta from openhcs.constants.constants import MemoryType -from openhcs.core.callable_contract import ( - CallableContract, - CompilerPreparedAutoRegisterFamily, -) +from openhcs.core.callable_contract import CallableContract +from openhcs.core.processing_preparation import PersistentNumbaKernelPreparation from openhcs.core.runtime_plane_projection import RuntimeSliceInvariantValue -from openhcs.processing.backends.cellprofiler._preparation import ( - CellProfilerKernelCachePreparationMixin, -) class CellProfilerBackendProvider(str, Enum): @@ -280,9 +275,7 @@ def backend_key( ) -class CellProfilerBackendStrategyMixin( - CellProfilerKernelCachePreparationMixin, CompilerPreparedAutoRegisterFamily -): +class CellProfilerBackendStrategyMixin(PersistentNumbaKernelPreparation): """Mixin for backend strategies keyed by OpenHCS memory type and provider. Concrete strategy families keep their own AutoRegisterMeta registry; this diff --git a/openhcs/processing/backends/cellprofiler/_preparation.py b/openhcs/processing/backends/cellprofiler/_preparation.py index f28f94686f..933a8a3795 100644 --- a/openhcs/processing/backends/cellprofiler/_preparation.py +++ b/openhcs/processing/backends/cellprofiler/_preparation.py @@ -2,55 +2,12 @@ from __future__ import annotations -from collections.abc import Hashable -from pathlib import Path -from typing import ClassVar - -from openhcs.core.callable_contract import CompilerPreparedAutoRegisterFamily -from openhcs.core.processing_preparation import PreparationOperation -from openhcs.utils.environment import OpenHCSProcessEnvironment +from openhcs.core.processing_preparation import RegisteredNumbaKernelPreparation from openhcs.processing.backends.cellprofiler.perf_fixtures import capture_enabled -class CellProfilerKernelCachePreparationMixin: - """Admit persistent Numba work only for an empty explicit CPU cache.""" - - @classmethod - def requires_persistent_kernel_cache(cls) -> bool: - """Declared pure kernel operations require a persistent Numba cache.""" - return True - - @classmethod - def can_prepare_in_child(cls) -> bool: - if not OpenHCSProcessEnvironment.cpu_only_mode(): - return False - if not cls.requires_persistent_kernel_cache(): - return False - from numba import config as numba_config - - cache_directory = numba_config.CACHE_DIR - return ( - bool(cache_directory) - and next(Path(cache_directory).rglob("*.nbi"), None) is None - ) - - -class CellProfilerCallableKernelPreparation( - CellProfilerKernelCachePreparationMixin, - PreparationOperation, - CompilerPreparedAutoRegisterFamily, -): - """Own pure kernel work; concrete declarations own independent registries. - - This abstract protocol has no registry. AutoRegisterMeta creates one on - each direct concrete declaration, deriving child work from the existing - module registry discovery without inspecting callable or module hooks. - Parent registry preparation owns kernel readiness. Generic callable hooks - retain their independent completion and effect phase. - """ - - __registry_key__ = "__name__" - __registry__: ClassVar[dict[str, type[CellProfilerCallableKernelPreparation]]] +class CellProfilerCallableKernelPreparation(RegisteredNumbaKernelPreparation): + """Keep CellProfiler fixture capture in the parent processing hook.""" @classmethod def can_prepare_in_child(cls) -> bool: @@ -59,17 +16,8 @@ def can_prepare_in_child(cls) -> bool: return False return super().can_prepare_in_child() - @property - def identity(self) -> Hashable: - return type(self) - - @classmethod - def cache_preparation_operations(cls) -> tuple[PreparationOperation, ...]: - return tuple(declaration() for declaration in cls.__registry__.values()) - @classmethod def prepare_registered_family(cls) -> None: if capture_enabled(): return - for operation in cls.cache_preparation_operations(): - operation.prepare() + super().prepare_registered_family() diff --git a/tests/unit/test_cellprofiler_callable_kernel_preparation.py b/tests/unit/test_cellprofiler_callable_kernel_preparation.py index 1b9e591493..7bb3435d1a 100644 --- a/tests/unit/test_cellprofiler_callable_kernel_preparation.py +++ b/tests/unit/test_cellprofiler_callable_kernel_preparation.py @@ -41,6 +41,47 @@ def process(image): return process +def test_generic_kernel_registry_prepares_non_cellprofiler_families_once( + monkeypatch, kernel_module, tmp_path +): + from openhcs.core.processing_preparation import ( + PersistentNumbaKernelPreparation, + RegisteredNumbaKernelPreparation, + ) + + events = [] + + class FirstKernel(RegisteredNumbaKernelPreparation, metaclass=AutoRegisterMeta): + __registry__ = {} + + def execute(self): + events.append("first") + + class SecondKernel(RegisteredNumbaKernelPreparation, metaclass=AutoRegisterMeta): + __registry__ = {} + + def execute(self): + events.append("second") + + kernel_module.FirstKernel = FirstKernel + kernel_module.SecondKernel = SecondKernel + kernel_module.__openhcs_prepare__ = lambda: events.append("module") + process = declare_callable(kernel_module, lambda: events.append("callable")) + monkeypatch.setenv("OPENHCS_CPU_ONLY", "true") + monkeypatch.setattr(numba_config, "CACHE_DIR", str(tmp_path / "cache")) + # A provider-specific capture flag must not suppress independent kernels. + monkeypatch.setenv("OPENHCS_CAPTURE_CELLPROFILER_FIXTURES_DIR", str(tmp_path)) + assert FirstKernel.can_prepare_in_child() + assert SecondKernel.can_prepare_in_child() + assert FirstKernel.__registry__ is not SecondKernel.__registry__ + assert "__registry__" not in vars(PersistentNumbaKernelPreparation) + assert "__registry__" not in vars(RegisteredNumbaKernelPreparation) + + prepare_processing_callable(process) + prepare_processing_callable(process) + assert events == ["first", "second", "module", "callable"] + + def test_real_declarations_own_independent_registry_obligations(): from openhcs.processing.backends.cellprofiler.grid import ( IdentifyObjectsInGridKernelPreparation, From 00683dbd3669ff5c8595aa04efcca0a1f9c8bcf4 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Wed, 30 Sep 2026 21:24:20 -0400 Subject: [PATCH 05/12] Retain ownership, native artifact parity and mixed runtime evidence (#323) --- .../README.md | 127 ++ .../SHA256SUMS | 53 + ...measurement_runtime_owners_20260930.py.txt | 218 +++ .../census_refill_preparation_20260930.py.txt | 41 + .../kernel-preparation-ownership.json | 366 ++++ ...easurement-cache-and-column-ownership.json | 186 ++ ...ic_numba_preparation_owner_20260930.py.txt | 130 ++ .../nra-r1.log | 2 + ...lumnar-export-frontier-probe-20260930.json | 118 ++ ...ment-runtime-all-consumers-20260930.xml.gz | Bin 0 -> 13775 bytes ...ent-runtime-before-census-20260930.json.gz | Bin 0 -> 224815 bytes ...easurement-runtime-focused-20260930.xml.gz | Bin 0 -> 3627 bytes ...ment-runtime-nra-transaction-20260930.diff | 542 ++++++ ...nt-runtime-public-comparison-20260930.json | 308 ++++ ...-runtime-public-observations-20260930.json | 282 +++ ...asurement-runtime-refinement-20260930.diff | 212 +++ ...anged-main-materialization-20260930.xml.gz | Bin 0 -> 3512 bytes ...neric-numba-owner-application-20260930.log | 14 + ...a-owner-application-corrected-20260930.log | 2 + ...owner-complete-simulation-20260930.json.gz | Bin 0 -> 23640 bytes ...ic-numba-owner-consumer-test-20260930.diff | 50 + ...-owner-initial-simulation-20260930.json.gz | Bin 0 -> 23386 bytes ...eric-numba-owner-transaction-20260930.diff | 186 ++ ...me-cache-lifetime-refinement-20260930.diff | 96 + ...ng-confirmation-observations-20260930.json | 126 ++ ...plete-native-artifact-parity-20260930.json | 159 ++ ...s-complete-public-comparison-20260930.json | 242 +++ ...complete-public-observations-20260930.json | 282 +++ ...owners-paired-main-census-20260930.json.gz | Bin 0 -> 224886 bytes ...ners-paired-main-consumers-20260930.xml.gz | Bin 0 -> 14830 bytes ...aired-main-public-comparison-20260930.json | 124 ++ ...red-main-public-observations-20260930.json | 142 ++ ...-paired-main-r0-benchmark-20260930.json.gz | Bin 0 -> 12124 bytes ...rs-paired-main-r0-openhcs-20260930.json.gz | Bin 0 -> 135366 bytes ...rs-paired-main-r0-scripts-20260930.json.gz | Bin 0 -> 3245 bytes ...ime-owners-paired-main-r1-20260930.json.gz | Bin 0 -> 528 bytes ...-runtime-phase-diagnostic-20260930.json.gz | Bin 0 -> 90826 bytes ...hase-diagnostic-observations-20260930.json | 64 + ...ric-runtime-query-hash-costs-20260930.json | 22 + ...ime-query-hash-diagnostic-20260930.json.gz | Bin 0 -> 92926 bytes ...hash-diagnostic-observations-20260930.json | 64 + ...ack-current-main-corrected-20260930.xml.gz | Bin 0 -> 1673 bytes ...nt-provenance-frontier-probe-20260930.json | 239 +++ .../phase-diagnostic-sitecustomize.py.txt | 156 ++ ...query-hash-diagnostic-sitecustomize.py.txt | 165 ++ ...measurement_runtime_owners_20260930.py.txt | 55 + ...owners_complete_acceptance_20260930.py.txt | 31 + ...ers_paired_main_acceptance_20260930.py.txt | 31 + ...lues_from_process_lifetime_20260930.py.txt | 34 + ...gistered_numba_preparation_20260930.py.txt | 65 + ...c_runtime_native_artifacts_20260930.py.txt | 87 + ...me_owners_complete_outputs_20260930.py.txt | 50 + ...owners_paired_main_outputs_20260930.py.txt | 48 + .../validated-source-tree.txt | 1585 +++++++++++++++++ 54 files changed, 6704 insertions(+) create mode 100644 docs/validation/generic_runtime_owners_323_20260930/README.md create mode 100644 docs/validation/generic_runtime_owners_323_20260930/SHA256SUMS create mode 100644 docs/validation/generic_runtime_owners_323_20260930/apply_generic_measurement_runtime_owners_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/census_refill_preparation_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/kernel-preparation-ownership.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/measurement-cache-and-column-ownership.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/move_generic_numba_preparation_owner_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/nra-r1.log create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-columnar-export-frontier-probe-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-all-consumers-20260930.xml.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-before-census-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-focused-20260930.xml.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-nra-transaction-20260930.diff create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-comparison-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-refinement-20260930.diff create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-unchanged-main-materialization-20260930.xml.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-application-20260930.log create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-application-corrected-20260930.log create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-complete-simulation-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-consumer-test-20260930.diff create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-initial-simulation-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-transaction-20260930.diff create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-cache-lifetime-refinement-20260930.diff create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-imaging-confirmation-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-native-artifact-parity-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-comparison-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-census-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-consumers-20260930.xml.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-comparison-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-benchmark-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-openhcs-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-scripts-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r1-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-costs-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-diagnostic-20260930.json.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-diagnostic-observations-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-materialization-ack-current-main-corrected-20260930.xml.gz create mode 100644 docs/validation/generic_runtime_owners_323_20260930/perf-measurement-provenance-frontier-probe-20260930.json create mode 100644 docs/validation/generic_runtime_owners_323_20260930/phase-diagnostic-sitecustomize.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/query-hash-diagnostic-sitecustomize.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/refine_generic_measurement_runtime_owners_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/run_generic_runtime_owners_complete_acceptance_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/run_generic_runtime_owners_paired_main_acceptance_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/separate_cache_values_from_process_lifetime_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/test_generic_registered_numba_preparation_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/validate_generic_runtime_native_artifacts_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/validate_generic_runtime_owners_complete_outputs_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/validate_generic_runtime_owners_paired_main_outputs_20260930.py.txt create mode 100644 docs/validation/generic_runtime_owners_323_20260930/validated-source-tree.txt diff --git a/docs/validation/generic_runtime_owners_323_20260930/README.md b/docs/validation/generic_runtime_owners_323_20260930/README.md new file mode 100644 index 0000000000..fede213c26 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/README.md @@ -0,0 +1,127 @@ +# Generic runtime optimization owners — issue 323 + +Store-bound query-cache invalidation, provider-independent object columns, and +persistent kernel preparation now derive from nominal core owners. The obsolete +provider classes, weak-global query caches, and forwarding imports are removed. +This is the user-requested ownership repair. It is not a demonstrated pipeline +speedup, and the ImagingFlow timing concern remains open for review. + +The validated production source is +`eba8e5c871a84b5ddd2581d7562798223ebd2415`, normally integrated with main +`74eac059f67389ca071055c93fcbdd556ba79f1a`. Main's artifact-publication fix and +paired-field identity fix are preserved. The independent ACK fixture repair +was merged through PR 325 and closed issue 324; it is not duplicated by this PR. + +| Behavior | Determining owner | Consumers | +| --- | --- | --- | +| Store mutation and derived-query lifetime | `RuntimeValueStore` | Generic measurement table lookup and CP label/vector lookups | +| Bounded value storage | `BoundedCache` | Store query domains and the existing process cache family | +| Process singleton lifetime | `ProcessLocalBoundedCache` | Existing process-local cache subclasses | +| Complete object-column domain and shared mapping iteration | Core `ObjectMeasurementColumnarRows` | Colocalization, granularity, shape, intensity, intensity distribution, Zernike | +| CPU/persistent Numba cache admission | `PersistentNumbaKernelPreparation` | Backend families and standalone registered kernels | +| Standalone kernel identity, operation derivation, parent preparation | `RegisteredNumbaKernelPreparation` | Existing CP declarations and an independent provider exercised in tests | +| Intrinsic kernels, provider requirements, fixture effects | Numerical/provider declarations | Their existing generic preparation consumers | + +Store query domains have no process-singleton API. Record, replacement, clearing, +and worker-observation merge invalidate attached query values at the store's +existing mutation point. Derived caches are excluded from serialization; tests +compare transport bytes before and after a large populated derived cache and +verify retained records/revision. The old unbounded query dictionaries now use +the shared bounded LRU (default 4,096 entries); eviction recomputes values without +changing query scope. This capacity change is explicit. + +The old long-row iterator was overridden by every child, whose columns are wide; +it was removed rather than moved as dead behavior. The wide forwarding class is +also removed. Typed numerical iteration remains with its leaf. The old private +abstract-class import/pickle paths are intentionally not retained; dynamic +external callers of those paths are an OPEN boundary. + +The final combined native behavior checks pass **783 tests**, with one unchanged +optional Napari skip in the headless environment. Two existing watershed warnings +are retained. Coverage includes numerical consumers, actual cache mutations and +eviction, worker transport, materialization, current-main artifact publication +and paired-field identity, fork failure/cancellation, registry independence, and +once-only preparation effects. A non-CP family runs through the existing registry +consumer and remains eligible under a CP-specific capture flag. + +Original CI-pinned R0 passes for all three roots: OpenHCS has 5,243 metrics with +only `StringSubscript -2`; scripts has 228 metrics and benchmark has 409, both +unchanged. Original NRA R1 against current main completes with no increased +findings. Its complete source/dependency context has 3,058 base and 3,056 candidate +projections; the policy configures two detectors. Existing mapping reads, raw +record shapes, and redundant checks remain visible in the receipt. This is not +an all-detector clean scan or a native equivalence theorem. + +The original ClassDef census covers every declaration in OpenHCS and setup.py. +The final census has 701 modules, 5,123 original classes, 5,111 projected classes, +and all 12 unprojected OPEN declarations. The ownership receipts include required +and forbidden owner/consumer pairs, independent provider effects, counterevidence, +and the original OPEN rows. NRA performs declaration-selected rename, movement, +and base introduction for kernel preparation. Consumer closure and algorithm +extraction use explicitly authored, revision-checked source patches. The empty +obsolete row module is removed with an explicit emptiness assertion because NRA +has no file-deletion primitive. Native tests and production parity supply the +executed behavior evidence; syntax/preflight does not prove authored semantics. + +All timed observations use the public benchmark route, one well, one native +thread, CPU 5, current shared dependency pins and persistent declared-kernel +cache. Mandatory registry/kernel readiness precedes pipeline clocks. Server +startup and shutdown are excluded. `1w_1t` selects the **inline** executor; fork +is configured for actual multiworker execution, not these single-lane observations. +No tests, audits, builds or other replays overlap the timed observations. + +| Source cohort / case | Main execution | Candidate execution | Main total | Candidate total | +| --- | ---: | ---: | ---: | ---: | +| Final kernel-owner ABBA, ImagingFlow (means of two per side) | 18.201s | 17.051s | 20.689s | 19.456s | +| Final kernel-owner ABBA, 3D (means of two per side) | 8.583s | 8.300s | 11.024s | 10.760s | +| After paired-field main integration, ImagingFlow (one per side) | 15.849s | 16.566s | 18.063s | 18.740s | +| After paired-field main integration, 3D (one per side) | 8.362s | 8.316s | 10.777s | 10.753s | + +Compilation in the latest pair is 1.500/1.509s for ImagingFlow and 1.656/1.683s +for 3D (main/candidate). The latest pair is source and parity qualification, not +statistical performance evidence. Earlier ImagingFlow cohorts also showed slower +candidate averages: +2.04s and +0.73s. The favorable ABBA cohort includes a slow +19.970s main observation; all observations are retained. The sign changes across +cohorts do not establish a gain or performance neutrality. The latest +0.72s +ImagingFlow concern is not dismissed. + +On the latest source, all 14 complete requested CSVs and 240 persisted label +images across the four qualification outputs match exactly. The earlier ABBA +plus diagnostic comparison checks 30 complete CSVs and 480 label images. +The extended latest-source main/candidate gate also compares **every produced +TIFF**: 128 images, all series pixels, dtype, shape, axes, physical calibration +and source metadata. Both native ROI archives decode, with 1,256 ROI geometries; +native members are byte-exact and sidecar metadata agrees. Only the explicitly +different, admitted run-directory prefixes in JSON source addresses are +normalized; no measurements, identities, coordinates or calibration fields are +discarded. ZIP container timestamps are not scientific content. This extends +the earlier `*Labels.tiff` gate, which missed eight ImagingFlow checkpoint TIFFs +and two ROI archives. + +Full-step owner-thread diagnostics retain numerical, finalization and progress +phases separately from unprofiled clocks. No execution-time Numba compilation was +observed in those diagnostics. A follow-up production cache probe invalidates +the extra-hashing hypothesis: ImagingFlow does not call the store-query cache or +hash the object-label query; all bounded cache lookups/writes sum to about 2ms, +and store mutation invalidation totals about 0.13ms on each side. These cannot +explain a 0.72s difference, so this route is rejected. Diagnostic clocks are not +promoted as performance improvements or as proof that the difference is harmless. + +The exact-column CSV prototype saves only about 0.19s and was rejected as a +primary runtime fix. A saved-table provenance replay costs 15.9s, but that route +was not established in live CP execution and is not presented as a production +payoff. The continuing performance work remains under issue 162; native +CellProfiler timing and scaling-figure refresh are not completed by this receipt. + +Compressed original guard/census/test artifacts, raw observations, complete +parity receipts, attribution traces, transactions, and SHA256SUMS are retained +here. `*.py.txt` files are exact task-local archival recipes with historical +paths, not installed utilities or portable product examples. Production timing +is reproduced with `scripts/benchmark_cppipe_well_throughput.py`, manifest +`benchmark/manifests/official30_portable_axis1.json`, mode `1w_1t`, and the two case +names in the tables, using the recorded revisions and shared environment. + +The validated source tree lists every committed Python blob and dependency +gitlink. Publication adds documentation and evidence only; its source membership +is checked against that validated tree. Hosted CI remains separate from the +locally executed, original checks above. diff --git a/docs/validation/generic_runtime_owners_323_20260930/SHA256SUMS b/docs/validation/generic_runtime_owners_323_20260930/SHA256SUMS new file mode 100644 index 0000000000..71486d219f --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/SHA256SUMS @@ -0,0 +1,53 @@ +ea4b6991df1088200353a4a59948cba44b16461b24e589b5917a790714f8de72 README.md +f811c8c56ad671caaa92d51be13c4fcf87eb55d098e22808f9c2dc84310cb83f apply_generic_measurement_runtime_owners_20260930.py.txt +94ce22b82a2ff871397f5aa827b79e7a390cb46c2a2fab08e77dbd19304fdd0c census_refill_preparation_20260930.py.txt +7b73fc33d3d06a0c967338f21fd1396ae51216703d200a39133117bae00f4956 kernel-preparation-ownership.json +b04939348a028e78b884376d5aa0122d130cd767aff916c3dbfc4624679a3945 measurement-cache-and-column-ownership.json +fe0a2e90822203cff4a070e47ef02e5aaa4b8216f95afcd2ea3e8c7136f9d405 move_generic_numba_preparation_owner_20260930.py.txt +cd910aa324d5f1e8fc9573e18d76a546798b0f131e27cbb8b48cdbbbe4936fd9 nra-r1.log +5c54512dcdce2b8526bf2efc5ed75f2862649632475ab6ab78f6e5be266dd7ac perf-columnar-export-frontier-probe-20260930.json +715f4ebf7e8d88180eacce70b90153c783616dcce797d36ea2135bef1ef957ec perf-generic-measurement-runtime-all-consumers-20260930.xml.gz +3999c8d302700616164169c4d2a1075263dc004984eaed8fb22ab1f465bbc9bc perf-generic-measurement-runtime-before-census-20260930.json.gz +24b9af7fa6d55c8799fc10828c6984f28042a04d55caad5b965c2fdffa244ec8 perf-generic-measurement-runtime-focused-20260930.xml.gz +351016c98e961a1908a59b828c09ee4fc293d1c126923be3e88783a148ecc694 perf-generic-measurement-runtime-nra-transaction-20260930.diff +37c1f8f5044ac4865731904290a376ec4d52ac3d9d2096961fb9883bfc3336a3 perf-generic-measurement-runtime-public-comparison-20260930.json +068e41e5ef204ed81d194e4d74ab8f680788ad89985b26976e67fdedb1a58a18 perf-generic-measurement-runtime-public-observations-20260930.json +5d6a203617b60d9f666b645db0f6418216b74c95f478babdba7a3dce941af472 perf-generic-measurement-runtime-refinement-20260930.diff +aa6ca25c2c7710b28239424328cd5db70f45a352af6103024c92c7bb9fa50d2c perf-generic-measurement-runtime-unchanged-main-materialization-20260930.xml.gz +608fd83495f1cab4d6de55f2b2594e35abee5767beef577944a0cb33fe3154b2 perf-generic-numba-owner-application-20260930.log +547bd55b8968612ee9a7fa4e1fdbc2d8cd8539f8b2d624aa8cbee6548e6c008e perf-generic-numba-owner-application-corrected-20260930.log +07fdeb69d3f170e9fb5970f81c160081a2ed9f692e6610f6ba28797b8c74296b perf-generic-numba-owner-complete-simulation-20260930.json.gz +02953b04c2af9f34709a77a5f8d31cd14fd63323cbe2d92016072db6da16e953 perf-generic-numba-owner-consumer-test-20260930.diff +0ef0e0ea3c540db1b0c2a0a67cf74aca0043fb3b05c3ba6eb3a5e02f4c17a51d perf-generic-numba-owner-initial-simulation-20260930.json.gz +a4edd93a01f35364580d1a72f4d22d535cb032a385e0528c29d8f57ffdb736ad perf-generic-numba-owner-transaction-20260930.diff +442259f07ddef37242fd141c700f2364a7aa6e188c5ad0dc461dcb4dd4349302 perf-generic-runtime-cache-lifetime-refinement-20260930.diff +231afd93b32397b47daf0a4b3d6d7400bb4dec8fc3d5262a016a75402138795a perf-generic-runtime-imaging-confirmation-observations-20260930.json +0e4f21a37c8b9efaa88162c7f28bc18238a605123e4498bf6c1ca464d0eaf6f2 perf-generic-runtime-owners-complete-native-artifact-parity-20260930.json +2ecdf52add8d59670cad2fe7bae2382bb80fa4ee3c47a5f44f038e7dcab80ed3 perf-generic-runtime-owners-complete-public-comparison-20260930.json +c9ac1892db4386160f4671a3b1b32135543b0c6aa1ac24babbf837f1ceac617d perf-generic-runtime-owners-complete-public-observations-20260930.json +93efa739dfe467693536873670c2d35ceaa988962e16d21431d9948843fb63e9 perf-generic-runtime-owners-paired-main-census-20260930.json.gz +c07f660f556cfad7606c45da0bd2e202e98786e0aa03ed1a486229fd9dcb2c80 perf-generic-runtime-owners-paired-main-consumers-20260930.xml.gz +b3c8851acfe6d889c3a4da647697a881384b3e8a06b14254c33862f8a8e4a245 perf-generic-runtime-owners-paired-main-public-comparison-20260930.json +8457700a5d399e9f1a44c5e8822844a5fd5260835424486cb5dc5e0ac5d0808b perf-generic-runtime-owners-paired-main-public-observations-20260930.json +3a090e8bc409e732966d5d5f4493b93cae8628c235f1a499e806f04493a89a29 perf-generic-runtime-owners-paired-main-r0-benchmark-20260930.json.gz +39fc10c2f32b6527ddd922b2d7422144818a74dfcc21b0daf5a2727a20c8ff0f perf-generic-runtime-owners-paired-main-r0-openhcs-20260930.json.gz +7fd1e33e5ed6bcc1ee3399f51106c6fab21fe96afb56baca13da4d24e2e39a51 perf-generic-runtime-owners-paired-main-r0-scripts-20260930.json.gz +66f0f0b649c6664db782e050c8012ac444d5ee72c97c1222fca0ede32eae7c0e perf-generic-runtime-owners-paired-main-r1-20260930.json.gz +79b09a99387139ab0eb0252e707ddec5576fb1d370a886fb19e1b15ee95b91de perf-generic-runtime-phase-diagnostic-20260930.json.gz +260e95439002eaba2f1a079d517fbf7e82ff338821bdb286cb6619b5d0ba5232 perf-generic-runtime-phase-diagnostic-observations-20260930.json +edfc603c06fc80f01c3caccb6a638ef201cef3d22bc74f0ea0fe2bb59380c0a5 perf-generic-runtime-query-hash-costs-20260930.json +1c876e12ec9e6d7d4101e6b25311397bd1396ae8d5601dcffaad7f5d85bd4bf2 perf-generic-runtime-query-hash-diagnostic-20260930.json.gz +9971939a1ba0f59790497f823c87c80b7bfc13b41089532c4be8251e5eaa8ccb perf-generic-runtime-query-hash-diagnostic-observations-20260930.json +b9848aa105498128470b5a39e84c874ae97a6c7a6b3416ebaa576f8777ea8066 perf-materialization-ack-current-main-corrected-20260930.xml.gz +6c2e8b8e742394ebaabf1b5a90a77f2cc83aff8edc2ea9b7a994bda3531774e7 perf-measurement-provenance-frontier-probe-20260930.json +ff2bc219b1a5268cf4a064f224d89cfcd3b0c69a32427bb6633d31074f4af031 phase-diagnostic-sitecustomize.py.txt +1277d57e6e12687ee2815f27309dae9e97ee5701b44b83091211e0e904e26a3f query-hash-diagnostic-sitecustomize.py.txt +788638395ab7ba7ff35bb3ad0ce15de745ad8bd028dabbca4c586d38a00ca17d refine_generic_measurement_runtime_owners_20260930.py.txt +bceb63cf7887e666b41659255b9c9a90711eabf9f19ba6be4ac4a300c7d81c6a run_generic_runtime_owners_complete_acceptance_20260930.py.txt +6d27682ebc27534b4239c6f521e57511c252cbbf33b46a6c055745e96b8223e6 run_generic_runtime_owners_paired_main_acceptance_20260930.py.txt +c75793d666d48231d018d00c5a9a5888484f19044dc0e5203aac91cf1763419e separate_cache_values_from_process_lifetime_20260930.py.txt +a1caf62cc3213dc4b22012d7bec071c96f69291da2be7e7813e8e910ba0261a7 test_generic_registered_numba_preparation_20260930.py.txt +cf1507206fed074104e432033711f4ea98762fc4a328bede9e031464fecc90dd validate_generic_runtime_native_artifacts_20260930.py.txt +77b93bf1147aed2551cb0d4099194f17b1e9d9c203c2a11ea3f751d479686915 validate_generic_runtime_owners_complete_outputs_20260930.py.txt +c1b5cb55dc12208ffad5c904da93235d6a33616a580c2775a37ab67c011f240c validate_generic_runtime_owners_paired_main_outputs_20260930.py.txt +6b28fec58c0a0dce691a0ab0bcd4e1372cb8c05ad71b3222d41158201d0ffdec validated-source-tree.txt diff --git a/docs/validation/generic_runtime_owners_323_20260930/apply_generic_measurement_runtime_owners_20260930.py.txt b/docs/validation/generic_runtime_owners_323_20260930/apply_generic_measurement_runtime_owners_20260930.py.txt new file mode 100644 index 0000000000..6b8dc74007 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/apply_generic_measurement_runtime_owners_20260930.py.txt @@ -0,0 +1,218 @@ +import ast +import json +import subprocess +from pathlib import Path + +from nominal_refactor_advisor.ast_tools import SourceModule, module_syntax_index +from nominal_refactor_advisor.codemod import ( + CodemodPlanDocument, CodemodSourceSnapshot, PatchTargetOperation, + RefactorRecipe, SourceRewriteTarget, SourceTextReplacement, +) + +root = Path('/home/ts/code/projects/openhcs-compile-perf') +runs = root.parent / 'openhcs-benchmark-runs' +base = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root, text=True).strip() +census = json.loads((runs / 'perf-generic-measurement-runtime-before-census-20260930.json').read_text()) +assert base == census['source_revision'] +assert not subprocess.check_output(['git', 'status', '--porcelain'], cwd=root, text=True).strip() +sources = {}; changes = {} +def read(relative): + path = root / relative + text = path.read_text() + sources[str(path)] = text + return path, text +def replace_once(text, old, new): + assert text.count(old) == 1, old + return text.replace(old, new, 1) + +provider_path, provider = read('openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py') +syntax = module_syntax_index(SourceModule.from_source_path(provider_path, provider).parse().module) +classes = {node.name:node for _,node in syntax.indexed_nodes_of_type(ast.ClassDef)} +assert set(classes) == {'ObjectMeasurementColumnarRows', 'WideObjectMeasurementColumnarRows', 'LongObjectMeasurementColumnarRows'} +lines = provider.splitlines(keepends=True) +owner = classes['ObjectMeasurementColumnarRows'] +base_declaration = ''.join(lines[owner.lineno-1:owner.end_lineno]) +base_declaration = replace_once(base_declaration, ' slice_index: int | None\n\n', '') +base_declaration = replace_once(base_declaration, + ' """OpenHCS object-measurement carriers are built on their label domain."""', + ' """Object-measurement carriers span their declared label domain."""') +wide = classes['WideObjectMeasurementColumnarRows'] +iterator, = [node for node in wide.body if isinstance(node, ast.FunctionDef) and node.name == '__iter__'] +base_declaration += '\n\n' + ''.join(lines[iterator.lineno-1:iterator.end_lineno]) +core_path, core = read('openhcs/core/measurement_row_materialization.py') +core = replace_once(core, 'class MeasurementRowDeclaredValue(', base_declaration + '\n\n\nclass MeasurementRowDeclaredValue(') +changes[str(core_path)] = core +changes[str(provider_path)] = '' +consumer_paths = [ + 'openhcs/processing/backends/cellprofiler/' + name + '.py' + for name in ('colocalization', 'granularity', 'shape', 'intensity', 'intensity_distribution', 'zernike') +] + ['tests/unit/test_cellprofiler_nominal_policy_migration.py'] +for relative in consumer_paths: + path, text = read(relative) + text = replace_once(text, + 'from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import (', + 'from openhcs.core.measurement_row_materialization import (') + text = text.replace('LongObjectMeasurementColumnarRows', 'ObjectMeasurementColumnarRows') + text = text.replace('WideObjectMeasurementColumnarRows', 'ObjectMeasurementColumnarRows') + changes[str(path)] = text + +store_path, store = read('openhcs/core/runtime_stores.py') +store = replace_once(store, 'from typing import Any\n', 'from typing import Any, TypeVar, cast\n') +store = replace_once(store, 'from openhcs.core.component_set import ComponentSet\n', + 'from openhcs.core.component_set import ComponentSet\n' + 'from openhcs.core.process_local_cache import ProcessLocalBoundedCache\n') +store = replace_once(store, '\n\nclass RuntimeValueStore:', + '\n\nStoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=ProcessLocalBoundedCache[Any, Any])\n\n\nclass RuntimeValueStore:') +store = replace_once(store, ' self._revision = 0\n', + ' self._revision = 0\n' + ' self._query_caches: dict[\n' + ' type[ProcessLocalBoundedCache[Any, Any]],\n' + ' ProcessLocalBoundedCache[Any, Any],\n' + ' ] = {}\n') +store = replace_once(store, ' @staticmethod\n def address_matches_plan(', ''' def query_cache(self, cache_type: type[StoreQueryCacheT]) -> StoreQueryCacheT: + """Return a bounded derived-value cache owned by this store's lifetime. + + Concrete cache types separate query domains. Every store mutation clears + their values; transport reconstructs the store without derived caches. + """ + cache = self._query_caches.get(cache_type) + if cache is None: + cache = cache_type() + self._query_caches[cache_type] = cache + return cast(StoreQueryCacheT, cache) + + def __getstate__(self) -> dict[str, object]: + state = dict(self.__dict__) + del state["_query_caches"] + return state + + def __setstate__(self, state: dict[str, object]) -> None: + self.__dict__.update(state) + self._query_caches = {} + + @staticmethod + def address_matches_plan(''') +store = replace_once(store, ' def _mark_mutated(self) -> None:\n self._revision += 1\n', + ' def _mark_mutated(self) -> None:\n self._revision += 1\n' + ' for cache in self._query_caches.values():\n cache.clear()\n') +changes[str(store_path)] = store + +feature_path, feature = read('openhcs/core/measurement_feature_queries.py') +feature = replace_once(feature, ' IdentityBoundProcessCache,\n', + ' IdentityBoundProcessCache,\n ProcessLocalBoundedCache,\n') +feature = replace_once(feature, '\n\ndef _diagnostic_value(', ''' + +class RuntimeObjectLabelMeasurementQueryCache( + ProcessLocalBoundedCache[ + RuntimeObjectLabelMeasurementQuery, + tuple[np.ndarray, ...], + ] +): + """Store-owned label-aligned values keyed by their full nominal query.""" + + +def _diagnostic_value(''') +changes[str(feature_path)] = feature + +query_path, query = read('openhcs/core/runtime_artifact_queries.py') +query = replace_once(query, 'from weakref import WeakKeyDictionary\n', '') +query = replace_once(query, ' RegisteredProcessLocalBoundedCache,\n', + ' ProcessLocalBoundedCache,\n RegisteredProcessLocalBoundedCache,\n') +query = replace_once(query, '''_MEASUREMENT_TABLE_CACHE: WeakKeyDictionary[ + RuntimeValueStore, + dict[tuple[int, str, str | None], tuple[MeasurementTable, ...]], +] = WeakKeyDictionary() +''', '''class RuntimeMeasurementTablesQueryCache( + ProcessLocalBoundedCache[ + tuple[str, str | None], + tuple[MeasurementTable, ...], + ] +): + """Store-owned measurement tables for one axis and component group.""" +''') +query = replace_once(query, ''' cache_key = (context.store.revision, context.axis_id, context.group_key) + store_cache = _MEASUREMENT_TABLE_CACHE.setdefault(context.store, {}) + cached = store_cache.get(cache_key) +''', ''' cache_key = (context.axis_id, context.group_key) + store_cache = context.store.query_cache(RuntimeMeasurementTablesQueryCache) + cached = store_cache.cached_value(cache_key) +''') +query = replace_once(query, ''' for key in tuple(store_cache): + if key[0] != context.store.revision: + del store_cache[key] + store_cache[cache_key] = tables + return tables +''', ''' return store_cache.store_value(cache_key, tables) +''') +changes[str(query_path)] = query + +label_path, label = read('openhcs/interop/cellprofiler/runtime/object_label_measurements.py') +label = replace_once(label, 'from weakref import WeakKeyDictionary\n', '') +label = replace_once(label, 'from openhcs.core.measurement_feature_queries import (\n', + 'from openhcs.core.measurement_feature_queries import (\n RuntimeObjectLabelMeasurementQueryCache,\n') +label = replace_once(label, 'from openhcs.core.runtime_stores import RuntimeValueStore\n', '') +start = label.index('ObjectLabelMeasurementValuesProcessCache = dict[') +end = label.index('@dataclass(frozen=True, slots=True, kw_only=True)', start) +label = label[:start] + label[end:] +label = replace_once(label, ''' object_label_values_cache = object_label_measurement_values_cache( + adapter.request.context.runtime_value_store + ) + cached = object_label_values_cache.get(query) +''', ''' object_label_values_cache = adapter.request.context.runtime_value_store.query_cache( + RuntimeObjectLabelMeasurementQueryCache + ) + cached = object_label_values_cache.cached_value(query) +''') +label = replace_once(label, ' object_label_values_cache[query] = values\n return values\n', + ' return object_label_values_cache.store_value(query, values)\n') +changes[str(label_path)] = label + +vector_path, vector = read('openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py') +vector = replace_once(vector, ' object_label_measurement_values_cache,\n', '') +vector = replace_once(vector, 'from openhcs.core.measurement_feature_queries import MeasurementFeatureQuery\n', + 'from openhcs.core.measurement_feature_queries import (\n' + ' MeasurementFeatureQuery,\n RuntimeObjectLabelMeasurementQueryCache,\n)\n') +old = ''' process_cache = object_label_measurement_values_cache( + adapter.request.context.runtime_value_store + )''' +new = ''' store_cache = adapter.request.context.runtime_value_store.query_cache( + RuntimeObjectLabelMeasurementQueryCache + )''' +assert vector.count(old) == 2 +vector = vector.replace(old, new) +vector = replace_once(vector, ' process_cache[query] = values\n', ' store_cache.store_value(query, values)\n') +vector = replace_once(vector, ' cached = process_cache.get(query)\n', ' cached = store_cache.cached_value(query)\n') +changes[str(vector_path)] = vector + +test_path, test = read('tests/unit/test_cellprofiler_runtime_cache_authorities.py') +test = replace_once(test, ' object_label_measurement_values_cache,\n', '') +test = replace_once(test, 'from openhcs.core.runtime_stores import RuntimeValueStore\n', + 'from openhcs.core.runtime_stores import RuntimeValueStore\n' + 'from openhcs.core.measurement_feature_queries import RuntimeObjectLabelMeasurementQueryCache\n') +test = replace_once(test, ' object_label_measurement_values_cache(store)[query] = expected\n', + ' store.query_cache(RuntimeObjectLabelMeasurementQueryCache).store_value(query, expected)\n') +changes[str(test_path)] = test + +receipt = { + 'base': base, + 'authorization': 'User explicitly requests removing optimizations at the wrong abstraction layer and consolidating shared algorithms through nominal owners.', + 'census': {k:v for k,v in census.items() if k != 'classes'}, + 'OPEN_original_classes': [r for r in census['classes'] if r['status'] != 'projected'], + 'domain': 'Store-bound derived measurement queries and provider-independent dense object measurement columns.', + 'determining_owners': {'mutation_and_lifetime': 'RuntimeValueStore', 'bounded_lookup_and_retention': 'Existing ProcessLocalBoundedCache', 'query_identity': 'Existing RuntimeObjectLabelMeasurementQuery and axis/group coordinates', 'dense_object_column_semantics': 'Existing ObjectMeasurementColumnarRows moved to core.measurement_row_materialization'}, + 'required_pairs': ['Store.record/replace/clear/merge_observed_values invalidate all attached query caches through _mark_mutated.', 'Generic measurement table lookup and CellProfiler label/vector consumers use store.query_cache.', 'Concrete cache subclasses select domain and key/value types; existing parent owns bounded storage, lookup and clearing.', 'All six numerical column providers inherit the existing object columnar owner in core.', 'Shared mapping iteration belongs to that object-column parent; typed leaf iteration remains leaf-owned.'], + 'forbidden_pairs': ['Provider modules own weak-global store revision caches.', 'Generic artifact consumers duplicate revision invalidation logic.', 'Numerical providers import generic row behavior from another provider module.', 'Unused long-row conversion or behavior-only forwarding subclasses remain.'], + 'counterevidence': ['LongObjectMeasurementColumnarRows.__iter__ is shadowed by all three current children; those children declare wide feature columns, so moving its dead conversion loop would perpetuate an incorrect role.', 'WideObjectMeasurementColumnarRows only adds generic mapping iteration; its two children now inherit that behavior from their actual object-column ancestor.', 'Numerical kernel caches, CP feature naming and CP relationship interpretation have intrinsic/provider meaning and remain at those owners.', 'No speedup is claimed for lifecycle relocation. Column CSV prototype saves only 0.19s and is rejected as a primary runtime fix.', 'Saved measurement provenance replay costs15.9s but is not yet demonstrated in the live CP path; no production payoff is inferred.'], + 'production_consumers': ['runtime_measurement_tables', 'ObjectLabelMeasurementSliceRequest.values', 'CellProfilerObjectMeasurementVectorBatch.cache_runtime_batch_vectors/cached_runtime_batch_vectors', 'Six object measurement column providers'], + 'proof_limits': ['Authored exact replacements: NRA revision/syntax checks do not prove native semantic equivalence.', 'Module deletion lacks NRA file-deletion primitive; emptying is revision checked and the empty owned file is then removed with an explicit assertion.', 'Removal of obsolete provider class import paths is intentional; external dynamic/pickle callers of those abstract classes remain OPEN.', 'Query cache capacity changes from unbounded dictionaries to existing bounded LRU; misses recompute. Derived caches must be excluded from serialization.', 'Current query IDs retain all existing axis/group/source/label-plane/domain scopes; the change does not add a new cross-dialect caller.'], +} +(runs / 'perf-generic-measurement-runtime-ownership-20260930.json').write_text(json.dumps(receipt, indent=2) + '\n') +operations = tuple(PatchTargetOperation(target=SourceRewriteTarget(file_path=path), replacements=(SourceTextReplacement(old_source=sources[path], new_source=text),), rationale='NRA original declarations determine source geometry; authored lifecycle and inheritance changes require behavioral and runtime gates.') for path,text in changes.items()) +plan = CodemodPlanDocument(recipes=(RefactorRecipe(recipe_id='own-generic-measurement-caches-and-columns', reason='One store mutation/lifetime authority; numerical providers consume the common core columnar owner.', operations=operations),)) +simulation = plan.simulate(CodemodSourceSnapshot.from_source_mapping(sources)) +assert simulation.is_clean, simulation.simulation_payload() +(runs / 'perf-generic-measurement-runtime-nra-transaction-20260930.diff').write_text(simulation.unified_diff(sources)) +print(simulation.apply()) +assert provider_path.read_text() == '' +provider_path.unlink() +print('Removed empty obsolete provider module:', provider_path) diff --git a/docs/validation/generic_runtime_owners_323_20260930/census_refill_preparation_20260930.py.txt b/docs/validation/generic_runtime_owners_323_20260930/census_refill_preparation_20260930.py.txt new file mode 100644 index 0000000000..bb17e3da34 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/census_refill_preparation_20260930.py.txt @@ -0,0 +1,41 @@ +import ast +import json +from pathlib import Path + +from nominal_refactor_advisor.ast_tools import SourceModule, module_syntax_index +from nominal_refactor_advisor.class_index import CompactClassFamilyIndex + +import sys +root = Path(sys.argv[1]) +paths = sorted((root / 'openhcs').rglob('*.py')) + [root / 'setup.py'] +modules = tuple(SourceModule.from_source_path(path, path.read_text()).parse() for path in paths) +family = CompactClassFamilyIndex.from_modules(modules) +projected = {(item.file_path, item.line): item for item in family.classes_by_symbol.values()} +rows = [] +for module in modules: + syntax = module_syntax_index(module.module) + for index, node in syntax.indexed_nodes_of_type(ast.ClassDef): + owner = projected.get((str(module.path), node.lineno)) + scope = syntax.scopes[syntax.scope_ids[index]] + row = dict(path=str(module.path.relative_to(root)), line=node.lineno, + name=node.name, lexical_scope=list(scope.names), decorators=[ast.unparse(d) for d in node.decorator_list], + status='projected' if owner is not None else 'OPEN-unprojected') + if owner is not None: + row.update(symbol=owner.symbol, bases=owner.declared_base_names, + resolved_bases=owner.resolved_base_symbols, + base_resolution_complete=owner.base_resolution_is_complete, + methods=owner.method_names, abstract_methods=owner.abstract_method_names, + is_abstract=owner.is_abstract, + is_dataclass=owner.dataclass_declaration is not None, + is_enum=owner.enum_declaration is not None, + metaclasses=owner.metaclass_names) + rows.append(row) +report = dict(source_revision=sys.argv[2], + module_count=len(modules), original_class_count=len(rows), + projected_count=sum(row['status'] == 'projected' for row in rows), + classes=rows) +destination = Path(sys.argv[3]) +destination.write_text(json.dumps(report, indent=2) + '\n') +print(json.dumps({key: value for key, value in report.items() if key != 'classes'})) +print('OPEN-unprojected:', sum(row['status'] != 'projected' for row in rows)) +print('artifact:', destination) diff --git a/docs/validation/generic_runtime_owners_323_20260930/kernel-preparation-ownership.json b/docs/validation/generic_runtime_owners_323_20260930/kernel-preparation-ownership.json new file mode 100644 index 0000000000..dd9d70dea2 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/kernel-preparation-ownership.json @@ -0,0 +1,366 @@ +{ + "source_revision": "01e8994018c62cb4ea8a57d6786ed3f4f2e8b262", + "authorization": "User requests all optimization behavior at incorrect layers to move to nominal platform owners. Pure intrinsic provider algorithms remain provider-owned.", + "domain": "Persistent Numba cache preparation admission and nominal registry family consumption", + "source_witnesses": [ + { + "path": "openhcs/core/callable_contract.py", + "line": 148, + "name": "CompilerPreparedAutoRegisterFamily", + "lexical_scope": [], + "decorators": [], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.core.callable_contract.CompilerPreparedAutoRegisterFamily", + "bases": [ + "ABC" + ], + "resolved_bases": [], + "base_resolution_complete": true, + "methods": [ + "prepare_registered_family", + "cache_preparation_operations", + "can_prepare_in_child" + ], + "abstract_methods": [ + "prepare_registered_family" + ], + "is_abstract": true, + "is_dataclass": false, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/core/processing_preparation.py", + "line": 28, + "name": "PreparationOperation", + "lexical_scope": [], + "decorators": [], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.core.processing_preparation.PreparationOperation", + "bases": [ + "ABC" + ], + "resolved_bases": [], + "base_resolution_complete": true, + "methods": [ + "identity", + "execute", + "cache_operations", + "can_prepare_in_child", + "prepare", + "reset" + ], + "abstract_methods": [ + "execute", + "identity" + ], + "is_abstract": true, + "is_dataclass": false, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/core/processing_preparation.py", + "line": 70, + "name": "RegistryFamilyPreparation", + "lexical_scope": [], + "decorators": [ + "dataclass(frozen=True, slots=True)" + ], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.core.processing_preparation.RegistryFamilyPreparation", + "bases": [ + "PreparationOperation" + ], + "resolved_bases": [ + "home.ts.code.projects.openhcs-compile-perf.openhcs.core.processing_preparation.PreparationOperation" + ], + "base_resolution_complete": true, + "methods": [ + "identity", + "execute", + "can_prepare_in_child" + ], + "abstract_methods": [], + "is_abstract": false, + "is_dataclass": true, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/core/processing_preparation.py", + "line": 261, + "name": "PreparationCacheBatch", + "lexical_scope": [], + "decorators": [ + "dataclass(frozen=True, slots=True)" + ], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.core.processing_preparation.PreparationCacheBatch", + "bases": [], + "resolved_bases": [], + "base_resolution_complete": true, + "methods": [ + "from_callables", + "populate_child_caches" + ], + "abstract_methods": [], + "is_abstract": false, + "is_dataclass": true, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/processing/backends/cellprofiler/_backend.py", + "line": 283, + "name": "CellProfilerBackendStrategyMixin", + "lexical_scope": [], + "decorators": [], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.processing.backends.cellprofiler._backend.CellProfilerBackendStrategyMixin", + "bases": [ + "CellProfilerKernelCachePreparationMixin", + "CompilerPreparedAutoRegisterFamily" + ], + "resolved_bases": [ + "home.ts.code.projects.openhcs-compile-perf.openhcs.processing.backends.cellprofiler._preparation.CellProfilerKernelCachePreparationMixin", + "home.ts.code.projects.openhcs-compile-perf.openhcs.core.callable_contract.CompilerPreparedAutoRegisterFamily" + ], + "base_resolution_complete": true, + "methods": [ + "requires_persistent_kernel_cache", + "prepare_registered_family", + "prepare_backend", + "requires_explicit_prepare_backend", + "for_memory_type", + "for_callable", + "available_backend_providers", + "_resolve_backend_class" + ], + "abstract_methods": [], + "is_abstract": false, + "is_dataclass": false, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/processing/backends/cellprofiler/_preparation.py", + "line": 15, + "name": "CellProfilerKernelCachePreparationMixin", + "lexical_scope": [], + "decorators": [], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.processing.backends.cellprofiler._preparation.CellProfilerKernelCachePreparationMixin", + "bases": [], + "resolved_bases": [], + "base_resolution_complete": true, + "methods": [ + "requires_persistent_kernel_cache", + "can_prepare_in_child" + ], + "abstract_methods": [], + "is_abstract": false, + "is_dataclass": false, + "is_enum": false, + "metaclasses": [] + }, + { + "path": "openhcs/processing/backends/cellprofiler/_preparation.py", + "line": 38, + "name": "CellProfilerCallableKernelPreparation", + "lexical_scope": [], + "decorators": [], + "status": "projected", + "symbol": "home.ts.code.projects.openhcs-compile-perf.openhcs.processing.backends.cellprofiler._preparation.CellProfilerCallableKernelPreparation", + "bases": [ + "CellProfilerKernelCachePreparationMixin", + "PreparationOperation", + "CompilerPreparedAutoRegisterFamily" + ], + "resolved_bases": [ + "home.ts.code.projects.openhcs-compile-perf.openhcs.processing.backends.cellprofiler._preparation.CellProfilerKernelCachePreparationMixin", + "home.ts.code.projects.openhcs-compile-perf.openhcs.core.processing_preparation.PreparationOperation", + "home.ts.code.projects.openhcs-compile-perf.openhcs.core.callable_contract.CompilerPreparedAutoRegisterFamily" + ], + "base_resolution_complete": true, + "methods": [ + "can_prepare_in_child", + "identity", + "cache_preparation_operations", + "prepare_registered_family" + ], + "abstract_methods": [], + "is_abstract": false, + "is_dataclass": false, + "is_enum": false, + "metaclasses": [] + } + ], + "determining_owners": { + "CPU_and_persistent_cache_admission": "Existing algorithm moved into core PersistentNumbaKernelPreparation, a CompilerPreparedAutoRegisterFamily child", + "provider_kernel_requirement": "Existing CellProfilerBackendStrategyMixin provider declarations", + "fixture_effects": "Existing CellProfilerCallableKernelPreparation fixture-capture policy", + "scheduling_and_readiness": "Existing PreparationOperation/RegistryFamilyPreparation/PreparationCacheBatch", + "standalone_kernel_registry_identity_and_derivation": "RegisteredNumbaKernelPreparation in core.processing_preparation" + }, + "required_pairs": [ + "The core persistent Numba family owns CPU-only admission, explicit cache-directory admission and existing cache-index detection.", + "Backend families derive this policy and retain their declaration-derived kernel requirement.", + "Callable kernel families derive this policy and retain fixture-capture effect admission.", + "Core uses the existing compiler family and preparation contracts; all old provider imports migrate to the actual core owner.", + "Registered standalone Numba kernel declarations share type identity, registry-derived operations and successful parent preparation through RegisteredNumbaKernelPreparation. CellProfiler retains only its independent fixture-capture overrides." + ], + "forbidden_pairs": [ + "Core imports CellProfiler preparation classes.", + "CellProfiler modules copy the generic CPU/cache algorithm.", + "The old CellProfilerKernelCachePreparationMixin or a forwarding alias remains after consumer migration.", + "Unrelated backend families automatically opt into persistent Numba work.", + "Provider-local identity and operation-derivation loops duplicate the generic registered-kernel contract." + ], + "counterevidence": [ + "Fixture capture has CellProfiler numerical-input meaning and stays provider-owned.", + "The algorithm is Numba-specific, so it is an opt-in specialization of the generic compiler family, not a universal operation default.", + "The existing any-.nbi cache admission is retained. Mandatory parent preparation still fills missing specializations before readiness.", + "The move has zero direct pipeline-clock saving because mandatory preparation precedes those clocks; this is explicitly requested ownership cleanup." + ], + "OPEN": { + "unprojected_original_classes": [ + { + "path": "openhcs/components/framework.py", + "line": 198, + "name": "_ComponentTemplate", + "lexical_scope": [ + "ComponentConfigurationFactory", + "create_openhcs_default_configuration" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 481, + "name": "_EventBridge", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 485, + "name": "_StartupWindow", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 612, + "name": "_StartupWindowPresentation", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/mcp/http.py", + "line": 76, + "name": "OpenHCSHostedFastMCP", + "lexical_scope": [ + "create_hosted_fastmcp_type" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/processing/backends/analysis/dxf_mask_pipeline.py", + "line": 107, + "name": "_RegistrationCNN_torch", + "lexical_scope": [], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/pyqt_gui/widgets/shared/services/execution_submission_service.py", + "line": 102, + "name": "_ClientDisconnected", + "lexical_scope": [ + "ExecutionSubmissionService", + "start_completion_poller" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 2618, + "name": "DimensionScrollbarListener", + "lexical_scope": [ + "FijiViewerServer", + "_add_dimension_change_listener" + ], + "decorators": [ + "jpype.JImplements('java.awt.event.AdjustmentListener')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 2696, + "name": "WindowCloseListener", + "lexical_scope": [ + "FijiViewerServer", + "_add_dimension_change_listener" + ], + "decorators": [ + "jpype.JImplements('java.awt.event.WindowListener')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 3064, + "name": "FijiUiWorkUnit", + "lexical_scope": [ + "FijiRoiManagerProvider", + "invoke_on_event_dispatch_thread" + ], + "decorators": [ + "JImplements('java.lang.Runnable')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/utils/import_utils.py", + "line": 67, + "name": "Placeholder", + "lexical_scope": [ + "create_placeholder_class" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/utils/pipeline_migration.py", + "line": 358, + "name": "MigratingGroupBy", + "lexical_scope": [ + "LegacyGroupByUnpickler", + "_create_migrating_groupby_class" + ], + "decorators": [], + "status": "OPEN-unprojected" + } + ], + "external_dynamic_imports_of_removed_private_mixin": "Not inferred from source; no compatibility alias is retained." + }, + "proof_limits": [ + "Declaration rename/move/base preflights check supported source dependencies and bindings, not native metaclass execution.", + "Final consumer/import closure uses exact source patches checked against the projected state. Native registry/MRO/effects need existing real declaration, fork preparation and readiness tests.", + "The registry algorithm extraction is an authored semantic source patch against the source selected by NRA; this is not claimed as a native equivalence theorem." + ] +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/measurement-cache-and-column-ownership.json b/docs/validation/generic_runtime_owners_323_20260930/measurement-cache-and-column-ownership.json new file mode 100644 index 0000000000..345cc05b9f --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/measurement-cache-and-column-ownership.json @@ -0,0 +1,186 @@ +{ + "base": "447c926346084b5da434edf5bef3a1a602792f5c", + "authorization": "User explicitly requests removing optimizations at the wrong abstraction layer and consolidating shared algorithms through nominal owners.", + "census": { + "source_revision": "447c926346084b5da434edf5bef3a1a602792f5c", + "module_count": 702, + "original_class_count": 5121, + "projected_count": 5109 + }, + "OPEN_original_classes": [ + { + "path": "openhcs/components/framework.py", + "line": 198, + "name": "_ComponentTemplate", + "lexical_scope": [ + "ComponentConfigurationFactory", + "create_openhcs_default_configuration" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 481, + "name": "_EventBridge", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 485, + "name": "_StartupWindow", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/gui_startup.py", + "line": 612, + "name": "_StartupWindowPresentation", + "lexical_scope": [ + "_run_startup_window_child" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/mcp/http.py", + "line": 76, + "name": "OpenHCSHostedFastMCP", + "lexical_scope": [ + "create_hosted_fastmcp_type" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/processing/backends/analysis/dxf_mask_pipeline.py", + "line": 107, + "name": "_RegistrationCNN_torch", + "lexical_scope": [], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/pyqt_gui/widgets/shared/services/execution_submission_service.py", + "line": 102, + "name": "_ClientDisconnected", + "lexical_scope": [ + "ExecutionSubmissionService", + "start_completion_poller" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 2618, + "name": "DimensionScrollbarListener", + "lexical_scope": [ + "FijiViewerServer", + "_add_dimension_change_listener" + ], + "decorators": [ + "jpype.JImplements('java.awt.event.AdjustmentListener')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 2696, + "name": "WindowCloseListener", + "lexical_scope": [ + "FijiViewerServer", + "_add_dimension_change_listener" + ], + "decorators": [ + "jpype.JImplements('java.awt.event.WindowListener')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/runtime/fiji_viewer_server.py", + "line": 3064, + "name": "FijiUiWorkUnit", + "lexical_scope": [ + "FijiRoiManagerProvider", + "invoke_on_event_dispatch_thread" + ], + "decorators": [ + "JImplements('java.lang.Runnable')" + ], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/utils/import_utils.py", + "line": 67, + "name": "Placeholder", + "lexical_scope": [ + "create_placeholder_class" + ], + "decorators": [], + "status": "OPEN-unprojected" + }, + { + "path": "openhcs/utils/pipeline_migration.py", + "line": 358, + "name": "MigratingGroupBy", + "lexical_scope": [ + "LegacyGroupByUnpickler", + "_create_migrating_groupby_class" + ], + "decorators": [], + "status": "OPEN-unprojected" + } + ], + "domain": "Store-bound derived measurement queries and provider-independent dense object measurement columns.", + "determining_owners": { + "mutation_and_lifetime": "RuntimeValueStore", + "bounded_lookup_and_retention": "BoundedCache, extracted from the existing storage algorithm; ProcessLocalBoundedCache retains only process singleton lifetime policy", + "query_identity": "Existing RuntimeObjectLabelMeasurementQuery and axis/group coordinates", + "dense_object_column_semantics": "Existing ObjectMeasurementColumnarRows moved to core.measurement_row_materialization", + "store_query_domains": "RuntimeObjectLabelMeasurementQueryCache and RuntimeMeasurementTablesQueryCache derive from BoundedCache without process singleton APIs" + }, + "required_pairs": [ + "Store.record/replace/clear/merge_observed_values invalidate all attached query caches through _mark_mutated.", + "Generic measurement table lookup and CellProfiler label/vector consumers use store.query_cache.", + "Concrete cache subclasses select domain and key/value types; existing parent owns bounded storage, lookup and clearing.", + "All six numerical column providers inherit the existing object columnar owner in core.", + "Shared mapping iteration belongs to that object-column parent; typed leaf iteration remains leaf-owned.", + "Store-owned query domains do not inherit process-global singleton policy." + ], + "forbidden_pairs": [ + "Provider modules own weak-global store revision caches.", + "Generic artifact consumers duplicate revision invalidation logic.", + "Numerical providers import generic row behavior from another provider module.", + "Unused long-row conversion or behavior-only forwarding subclasses remain." + ], + "counterevidence": [ + "LongObjectMeasurementColumnarRows.__iter__ is shadowed by all three current children; those children declare wide feature columns, so moving its dead conversion loop would perpetuate an incorrect role.", + "WideObjectMeasurementColumnarRows only adds generic mapping iteration; its two children now inherit that behavior from their actual object-column ancestor.", + "Numerical kernel caches, CP feature naming and CP relationship interpretation have intrinsic/provider meaning and remain at those owners.", + "No speedup is claimed for lifecycle relocation. Column CSV prototype saves only 0.19s and is rejected as a primary runtime fix.", + "Saved measurement provenance replay costs15.9s but is not yet demonstrated in the live CP path; no production payoff is inferred." + ], + "production_consumers": [ + "runtime_measurement_tables", + "ObjectLabelMeasurementSliceRequest.values", + "CellProfilerObjectMeasurementVectorBatch.cache_runtime_batch_vectors/cached_runtime_batch_vectors", + "Six object measurement column providers" + ], + "proof_limits": [ + "Authored exact replacements: NRA revision/syntax checks do not prove native semantic equivalence.", + "Module deletion lacks NRA file-deletion primitive; emptying is revision checked and the empty owned file is then removed with an explicit assertion.", + "Removal of obsolete provider class import paths is intentional; external dynamic/pickle callers of those abstract classes remain OPEN.", + "Query cache capacity changes from unbounded dictionaries to existing bounded LRU; misses recompute. Derived caches must be excluded from serialization.", + "Current query IDs retain all existing axis/group/source/label-plane/domain scopes; the change does not add a new cross-dialect caller." + ], + "head": "eba8e5c871a84b5ddd2581d7562798223ebd2415", + "current_main": "74eac059f67389ca071055c93fcbdd556ba79f1a" +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/move_generic_numba_preparation_owner_20260930.py.txt b/docs/validation/generic_runtime_owners_323_20260930/move_generic_numba_preparation_owner_20260930.py.txt new file mode 100644 index 0000000000..27d56d7639 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/move_generic_numba_preparation_owner_20260930.py.txt @@ -0,0 +1,130 @@ +import ast +import difflib +import json +import subprocess +from pathlib import Path + +from nominal_refactor_advisor.codemod import ( + AddClassBaseOperation, + CodemodPlanDocument, + CodemodPlanSequence, + CodemodSourceSnapshot, + MoveSymbolsToModuleOperation, + PatchTargetOperation, + RefactorRecipe, + RenameTopLevelDeclarationAuthorityOperation, + SourceRewriteTarget, + SourceTextReplacement, +) +from nominal_refactor_advisor.ast_tools import SourceModule, module_syntax_index + +root = Path('/home/ts/code/projects/openhcs-compile-perf') +runs = root.parent / 'openhcs-benchmark-runs' +revision = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root, text=True).strip() +census = json.loads((runs / 'perf-generic-runtime-owners-synced-before-census-20260930.json').read_text()) +assert revision == census['source_revision'] +assert not subprocess.check_output(['git', 'status', '--porcelain'], cwd=root, text=True).strip() +source = str(root / 'openhcs/processing/backends/cellprofiler/_preparation.py') +destination = str(root / 'openhcs/core/processing_preparation.py') +backend = str(root / 'openhcs/processing/backends/cellprofiler/_backend.py') +sources = {str(path): path.read_text() for path in (root / 'openhcs').rglob('*.py')} +sources[str(root / 'setup.py')] = (root / 'setup.py').read_text() +snapshot = CodemodSourceSnapshot.from_source_mapping(sources, analysis_roots=(root,)) +operations = ( + RenameTopLevelDeclarationAuthorityOperation( + target=SourceRewriteTarget(file_path=source, qualname='CellProfilerKernelCachePreparationMixin'), + new_name='PersistentNumbaKernelPreparation', + rationale='The CPU/cache eligibility contract has no CellProfiler semantics.'), + MoveSymbolsToModuleOperation( + target=SourceRewriteTarget(file_path=source), + symbol_qualnames=('PersistentNumbaKernelPreparation',), + destination_path=destination, + rationale='Move the existing algorithm; retain its temporary source binding until consumer migration closes.'), + AddClassBaseOperation( + target=SourceRewriteTarget(file_path=destination, qualname='PersistentNumbaKernelPreparation'), + base_name='CompilerPreparedAutoRegisterFamily', + rationale='The generic preparation capability is a declared compiler-prepared family.'), +) +documents = tuple(CodemodPlanDocument(recipes=(RefactorRecipe( + recipe_id=f'generic-numba-preparation-owner-{index}', + reason='Existing family declarations consume one generic CPU/persistent-cache policy.', + operations=(operation,)),)) for index, operation in enumerate(operations)) +sequence = CodemodPlanSequence(documents=documents) +projected = sequence.simulate(snapshot) +(runs / 'perf-generic-numba-owner-initial-simulation-20260930.json').write_text(json.dumps(projected.simulation_payload(), indent=2) + '\n') +assert projected.is_clean, 'Initial nominal move/rename/base preflight failed; retained complete report.' +after = projected.final_snapshot.sources_by_file_path +Path('/tmp/openhcs-generic-numba-projected-20260930.json').write_text(json.dumps({path: after[path] for path in (source, destination, backend)}, indent=2)) +print('Initial declaration-selected rename/move/base simulation passed; no source applied.') + +def replace_once(text, old, new): + assert text.count(old) == 1, old + return text.replace(old, new, 1) + +provider = after[source] +syntax = module_syntax_index(SourceModule.from_source_path(Path(source), provider).parse().module) +owner, = [node for _, node in syntax.indexed_nodes_of_type(ast.ClassDef) + if node.name == 'CellProfilerCallableKernelPreparation'] +lines = provider.splitlines(keepends=True) +def member_source(name): + member, = [node for node in owner.body if isinstance(node, ast.FunctionDef) and node.name == name] + start = min([member.lineno, *(d.lineno for d in member.decorator_list)]) + return ''.join(lines[start - 1:member.end_lineno]) + +identity = member_source('identity') +operations_source = member_source('cache_preparation_operations') +prepare = member_source('prepare_registered_family') +common_prepare = replace_once(prepare, ' if capture_enabled():\n return\n', '') +generic = '''class RegisteredNumbaKernelPreparation( + PersistentNumbaKernelPreparation, PreparationOperation +): + """Derive independent pure-kernel obligations from each declared registry. + + This abstract parent has no registry. Concrete AutoRegisterMeta declarations + own their registries; the common parent owns identity, operation derivation + and successful parent preparation. + """ + + __registry_key__ = "__name__" + __registry__: ClassVar[dict[str, type[RegisteredNumbaKernelPreparation]]] + +''' + identity + '\n\n' + operations_source + '\n\n' + common_prepare +core = replace_once(after[destination], '@dataclass(frozen=True, slots=True)\nclass RegistryFamilyPreparation', generic + '\n\n\n@dataclass(frozen=True, slots=True)\nclass RegistryFamilyPreparation') +provider = replace_once(provider, identity + '\n', '') +provider = replace_once(provider, operations_source + '\n', '') +provider = replace_once(provider, prepare, + replace_once(prepare, ' for operation in cls.cache_preparation_operations():\n operation.prepare()\n', ' super().prepare_registered_family()\n')) +provider = replace_once(provider, ' __registry_key__ = "__name__"\n __registry__: ClassVar[dict[str, type[CellProfilerCallableKernelPreparation]]]\n\n', '') +provider = replace_once(provider, 'class CellProfilerCallableKernelPreparation(\n PersistentNumbaKernelPreparation,\n PreparationOperation,\n CompilerPreparedAutoRegisterFamily,\n):', 'class CellProfilerCallableKernelPreparation(RegisteredNumbaKernelPreparation):') +provider = replace_once(provider, 'from collections.abc import Hashable\nfrom typing import ClassVar\n\nfrom openhcs.core.callable_contract import CompilerPreparedAutoRegisterFamily\nfrom openhcs.core.processing_preparation import PreparationOperation\n', 'from openhcs.core.processing_preparation import RegisteredNumbaKernelPreparation\n') +provider = replace_once(provider, '\nfrom ....core.processing_preparation import PersistentNumbaKernelPreparation as PersistentNumbaKernelPreparation\n', '') +provider = replace_once(provider, ' """Own pure kernel work; concrete declarations own independent registries.\n\n This abstract protocol has no registry. AutoRegisterMeta creates one on\n each direct concrete declaration, deriving child work from the existing\n module registry discovery without inspecting callable or module hooks.\n Parent registry preparation owns kernel readiness. Generic callable hooks\n retain their independent completion and effect phase.\n """', ' """Keep CellProfiler fixture capture in the parent processing hook."""') +backend_source = replace_once(after[backend], 'from openhcs.core.callable_contract import (\n CallableContract,\n CompilerPreparedAutoRegisterFamily,\n)\n', 'from openhcs.core.callable_contract import CallableContract\nfrom openhcs.core.processing_preparation import PersistentNumbaKernelPreparation\n') +backend_source = replace_once(backend_source, '\nfrom ....core.processing_preparation import PersistentNumbaKernelPreparation\n', '') +backend_source = replace_once(backend_source, 'class CellProfilerBackendStrategyMixin(\n PersistentNumbaKernelPreparation, CompilerPreparedAutoRegisterFamily\n):', 'class CellProfilerBackendStrategyMixin(PersistentNumbaKernelPreparation):') +changes = {source: provider, destination: core, backend: backend_source} +for path, text in changes.items(): + ranges = [(max(1, j1 - 2), j2 + 3) + for tag, i1, i2, j1, j2 in difflib.SequenceMatcher(a=sources[path].splitlines(), b=text.splitlines()).get_opcodes() + if tag != 'equal' and j2 > j1] + command = ['/home/ts/code/projects/openhcs/.venv/bin/python', '-m', 'black', '--quiet', '--target-version', 'py311'] + for start, end in ranges: + command.extend(['--line-ranges', f'{start}-{end}']) + command.extend(['--stdin-filename', path, '-']) + changes[path] = subprocess.check_output(command, input=text, text=True) +closure_operations = tuple(PatchTargetOperation( + target=SourceRewriteTarget(file_path=path), + replacements=(SourceTextReplacement(old_source=after[path], new_source=text),), + rationale='Move the existing pure registry algorithm and close every provider import. The provider retains only its fixture effect policy; no compatibility alias remains.') + for path, text in changes.items()) +closure = CodemodPlanDocument(recipes=(RefactorRecipe( + recipe_id='close-generic-numba-family-and-provider-effects', + reason='Standalone declared kernel operations own one generic registry algorithm; provider-specific capture vetoes are substitutable overrides.', + operations=closure_operations),)) +complete = CodemodPlanSequence(documents=(*documents, closure)).simulate(snapshot) +(runs / 'perf-generic-numba-owner-complete-simulation-20260930.json').write_text(json.dumps(complete.simulation_payload(), indent=2) + '\n') +assert complete.is_clean, 'Full owner migration preflight failed.' +(runs / 'perf-generic-numba-owner-transaction-20260930.diff').write_text(complete.unified_diff(sources)) +assert 'CellProfilerKernelCachePreparationMixin' not in ''.join(complete.final_snapshot.sources_by_file_path.values()) +assert 'processing.backends.cellprofiler' not in complete.final_snapshot.sources_by_file_path[destination] +print(complete.apply()) diff --git a/docs/validation/generic_runtime_owners_323_20260930/nra-r1.log b/docs/validation/generic_runtime_owners_323_20260930/nra-r1.log new file mode 100644 index 0000000000..154b8ac1db --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/nra-r1.log @@ -0,0 +1,2 @@ +R1 74eac059f67389ca071055c93fcbdd556ba79f1a: NRA cache=miss, projections=3058, prepare=52.648s, analysis=3.121s +R1 eba8e5c871a84b5ddd2581d7562798223ebd2415: NRA cache=miss, projections=3056, prepare=50.489s, analysis=3.104s diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-columnar-export-frontier-probe-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-columnar-export-frontier-probe-20260930.json new file mode 100644 index 0000000000..2930f7d699 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-columnar-export-frontier-probe-20260930.json @@ -0,0 +1,118 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "fixture": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-boundary-diagnostic-20260930/ExampleImagingFlowCytometryObjectsInGrid-1115133-140175649535680-000097-spreadsheet.pickle", + "tables": 31, + "rows": 89796, + "carriers": [ + "openhcs.core.measurement_row_materialization.ConcatenatedColumnarRows", + "openhcs.core.measurement_row_materialization.MeasurementProjectedColumnarRows" + ], + "kwargs": { + "delimiter": "", + "add_image_metadata": "False", + "add_image_file_names": "False", + "select_measurements": "False", + "selected_columns": "()", + "calculate_aggregate_means": "False", + "calculate_aggregate_medians": "False", + "calculate_aggregate_standard_deviations": "False", + "output_directory": "''", + "export_all_measurement_types": "False", + "file_selections": "(SpreadsheetFileSelection(subjects=('BF_cells_on_grid', 'SSC'), file_name='BF_cells_on_grid.csv'),)", + "nan_representation": "", + "add_filename_prefix": "False", + "filename_prefix": "'MyExpt_'" + }, + "timings": [ + { + "mapping_csv": 0.8895826921798289, + "column_csv": 0.6970774931833148, + "bundle": 1.5463167941197753 + }, + { + "mapping_csv": 0.8806390082463622, + "column_csv": 0.6915999259799719, + "bundle": 1.440112757962197 + }, + { + "mapping_csv": 0.8824338377453387, + "column_csv": 0.6934090838767588, + "bundle": 1.4530350952409208 + }, + { + "mapping_csv": 0.882154902908951, + "column_csv": 0.6945731760933995, + "bundle": 1.4576297379098833 + }, + { + "mapping_csv": 0.8832375118508935, + "column_csv": 0.6956049990840256, + "bundle": 1.4590663341805339 + } + ], + "medians": { + "mapping_csv": 0.8824338377453387, + "column_csv": 0.6945731760933995, + "bundle": 1.4576297379098833 + } + }, + { + "case": "cp_tutorial_3d_monolayer", + "fixture": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-boundary-diagnostic-20260930/cp_tutorial_3d_monolayer-1117601-140663293691584-000104-spreadsheet.pickle", + "tables": 14, + "rows": 590, + "carriers": [ + "openhcs.core.measurement_row_materialization.ConcatenatedColumnarRows", + "openhcs.core.measurement_row_materialization.MeasurementProjectedColumnarRows" + ], + "kwargs": { + "delimiter": "", + "add_image_metadata": "True", + "add_image_file_names": "False", + "select_measurements": "False", + "selected_columns": "()", + "calculate_aggregate_means": "False", + "calculate_aggregate_medians": "False", + "calculate_aggregate_standard_deviations": "False", + "output_directory": "''", + "export_all_measurement_types": "True", + "file_selections": "()", + "nan_representation": "", + "add_filename_prefix": "True", + "filename_prefix": "'3d_monolayer_'" + }, + "timings": [ + { + "mapping_csv": 0.0033728820271790028, + "column_csv": 0.0028793630190193653, + "bundle": 0.013520533218979836 + }, + { + "mapping_csv": 0.0034099621698260307, + "column_csv": 0.002901966217905283, + "bundle": 0.012121559120714664 + }, + { + "mapping_csv": 0.0034123267978429794, + "column_csv": 0.0031471573747694492, + "bundle": 0.012317898217588663 + }, + { + "mapping_csv": 0.003419840708374977, + "column_csv": 0.002910532057285309, + "bundle": 0.012236004229635 + }, + { + "mapping_csv": 0.003414199687540531, + "column_csv": 0.002904138993471861, + "bundle": 0.01233057165518403 + } + ], + "medians": { + "mapping_csv": 0.0034123267978429794, + "column_csv": 0.002904138993471861, + "bundle": 0.012317898217588663 + } + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-all-consumers-20260930.xml.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-all-consumers-20260930.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..00e53d117eb0f626c9bf647195087de85a10c8e6 GIT binary patch literal 13775 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 F0RVEF5?cTO literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-before-census-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-before-census-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d870c00d102886fba7441eff8b95d67cb47f8024 GIT binary patch literal 224815 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

?YN7t(Cp;d|~Jl^21=AU{SJK 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 z%0A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 asg5x1DNO$h9TNQCfBipZ$gG(x<30cf`@IhU literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-focused-20260930.xml.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-focused-20260930.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..796dc98b1307483d728b80803a4602ba5d5b5136 GIT binary patch literal 3627 zcmV+`4%G1%^ba_5LnM}tc zS*AKu<>Gu?yZO<}@%L|DJ87M*6?~0KQONUgwZuasIzEohcTU4p#%N>D$1v+$sJu23 z{x}_v?4_zInb8Tl7M6Z?2EP?veKt9LdBT5KCyEL#nV!Blnw}j!n|?ewd-ePj{!N~} zIGw&YIhsCyHHBF&v~|3;vquY20Dg}v6;_VYTv+SR<9d_2RBnPl6H}MCQgS8oS|-+M zBgdn5C?83R+6f0VvWY5Tq{@VoiOBOLlSW<1Ecv6BW|?HV5URAFj7+u3K8HJ+PNq}1 zqvO3Is&bLa#{?cM+;V#a{$Av7kS;CjFK;uG|u*=nD4!1WG>7^_|NAQqw zJ0s9m=1D5j3&h9s^X<^F1CRJ8+LM3c;2+!R|Ahnpf#cc<9d4HW`i#*uAL)`!lhJiZ z5Qa&A9&7|Z;jLnV(Ky)ivYH4hj1kL&PbZ*{KOcT`xEX2Z@`LePU{+v?AKw1_etZZM z1yWC7>qVHOnMln?EpMKW0;jdxzqWNN8$2%MHLla$M>zP^?UVWX;>_HeSEqBga*jWb zd$PsKEK8f#r85WdwN`e=U2AhG%~vF(9e5iZ`RqC={Z+T!(_a?uuWO)5BP4oer9l~| z73_hZY4z}77v+~ezuoeA@-7;5XSMj`32F0V)aJ*xY4b_7e0B2T<*Rnu*T-HHzj=Ke zOvFPP3l?}LP9osIOxI-w^b%#3D64Z&p;QZ098=l zB>$Fx8R<}iC(K>;KE^8*C2mWl(#u?eeG*j#Zc}CS%`$A=_|1x4*$ULbJ_y5Hv9 zU5?I%kt3j51%v~ITqd;zUQo^^7GUQvI@Og-=Gr86xiGp0_a9voowB#niyXBp#mLm6 zMA3!SQRcWcNkip~cmMv85&O87Nf zCT>X#jQpeAayT%TQf^?9uz{eAm36?_u3v`X^RlSi(qm!qu3)Fo$FK?W3)oX+so}|F zBq~TyJ}`_RWNJQ_25E(MVn`t5o+fpL5g2&xwILKUU?fnC#8kYexo2-X9603Wq!2E> zKqzGIqHqy7e(t0Rw=j@SWG`%PbOBJh)`WFY|NFNIOVCXbCL)|9kxTUzFjvM1?f%fM z8Q^fy;H2|(G8*L&m9~|6E0L|{TGQnxePaTzjgiP3Jcv+o=}>p+tWJU7NtF!>DI!yY z?n;0|3c=DUtvcNGY(Qk*^GB{~N#($&PQ;DspgJ88RdD7kI4r^>6&Rx&NLGR~HLGDh zyU&dj6;jIwN}2bB9h_XHSnt5lhbgTyb=r93h@;s^)(?ZjV$0X!@w>>n0;yP+#9}hr z*ER;Vg;J<;pp?EYgQ6cen)y0dCMS5z5Ym9tVaDLI6`jh!A& zgK;DQ-k8~M5i zLFEB-LFwA0edXjb2^XV}R|$n*>4hjuur-{|XO<5hp(?}z=8%pok-X_C8e2ia2$_?N z-&%IK0jV~ z|4rV1_~G4u9x=j??|*#v^H1+TeB2+#YnkT>>Ui&BeER$JKqL)n4i15;Ge%!Gcfq~|Z0-zH-G! zC=C1jn4t#qe}r!CqedE}J?+(jEDej~cAKKsUB$sEozq%L=RmmOA03gO+R+ zPQu9vuqF;<39AZ6&6p!U=J5d?fgcqu7L1y-X ztS(#nbxLdl8N@jDrnVy6_7#PSDAgXgyNH`*gz34)7l-?C<^(gBjUuEbIS(??W#6T% zm{Qa=hVClhl(thk7TJ{mEO-!o)LpZLoidQZtjDHg1&JM|EXfCMv*nZtt__%mLRm}I zKM0QOr>Mj67k$kglpkQ;Bknj!aE;H8ANa2n8@$If459b20_SD=zK2b`%C)+XAF}X& zA-GctLKaWkhsmjZ5n2ohSN2^+jpW!|J5)H>GD>UhnoZjZ4Hu$~q_lAZ1&8#BCN@`j zU6d%tuwoORfMqM?hIX6>hG9X$Te*TkgK52$_tz5E4~&R(>s;lIO57e_mozL`$j_da z8_DgFnKx1@)gqS`^8$4RhMl_J5r1ew0h=Wj)D^e~R{G*L_Q_MM{;)2j<|>B8dWl;F zKmz?h>}K#*l#c{#CzEH>=RISy5{8wjyf3z%)g>=UyyRPic{f*>kOuUC4TgWFLrkn2G1WG}@`@S&pV~ERv3FlN6$LcN@37t_X z`B=TW4xwqSgB14(jnW)!53rm}L8GM24cK}PfmELy9}@(E;0nh}5wq463V;_#ItPMG z36CDR{X&A=>xC>O=6o4fFyBBa#zATopKve%Bj{t%r!UHdQwv7A>ni73U)EK(eT_%$ z-kx$tt6hm@u0?h$EN%+HKsd(NC$tTKHZ?)9iHzExco*RatTHe@Pp~$hu}(E??dj7E zyB$>sc$#>#?LoQ~-2>BXMoRQ6QeZ*rf`$Miz(#*Hn=!0Rwxyb;lJ#W?J?+8oVY&so zIIC5j*(TBLjkdUv1L4?E@e7X3Em$7fm!aI?H8=$nf8~0`D3Yd!ebYI_Y2a$XKB?BI zulj%w437Nv;LkU9xN&Y+Z=s~+QDT$rxE<8tq8(*B?RV6+z4Up>!ocwa&K#W1n>N3k4!v|^rG*Y9|hceE$feSVUc`L^< zd$33R(EXtNy~U6#H6MONf0YJ5ndQ#I3CLoQ($ETy` zy_ycIMkr-vw$oRg2sB_|S4q^chyeq88&cmSiZt_@p0c{W%D1r?wkL?Ig%yP$b)KWM z;UBu=3Y#4aqWAUKe~zC$$AHnJq6%q99@2E%G2k{7jAbKwV@Bs`KbiuY#=xWIi18ul zSL%XNl9dK!umsJ%F#Z{dSl>Z3fi57A33maqqBVAJUW28V7vf6kNG{I4JMAA)VKk*i zjKVh^=y^C!YZVf3X4W@C@-g1!7Ug%}_DMIr-UPo=akwtqC*0VQw*L16u-~0f8o5xG zt4D!dXF5Zv^%-EF9F8ZJWnCoQ*7@fzzwHrZvmnq*nlx^36|1Q|-yq8!5304iCzF?F zXLrW9UjB6cB^2xE{*=IoIH*lhVYC<0>H-)PbDm8>jvI4!38e0Wt_2lJxWSQIF&peX zsgn9(x9!W=4jG99r=Yxya9c)0GEYkoYJoN9!Lc#P@L?Z?p$s?#7K8dmo_C2F?gMKr zuG^I3DCGjKyb3Pf4o@iU3T-VT)i!zfH#T62JZga4&ZgZ5=1l2aFYpx_@w)U%Axs95 z%8Ta%ZzUT>92zy!c2#)Y!HMmlDe2uayS$Cyfj~8H|7a3dI1WAe0bxaDa}NuYoW%El zwAo`vVe<}!!uufWhF6hvw$i|wpZm@{ST+gU2V)P6uu~r9Tq>J~0R*&N8!<6qe2=3i zoWd-mi5t==?bSc!KoL-#JO1p+sC;&iu;HsM zQ62A8t=<`)z}G-g+Om{n3t(%(7lkMroOwW;(3|RFo;x||SDoCtw=g#B=l~+xh0%Fm z4%tpFricD$YA0_xrRm)C^ZxLfMOSyM4{Ui8{%jW)=#3%sx~>DJom4RId0zA9sjm({s(h^%eoL;003{>@!J3Z literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-nra-transaction-20260930.diff b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-nra-transaction-20260930.diff new file mode 100644 index 0000000000..8ed87673df --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-nra-transaction-20260930.diff @@ -0,0 +1,542 @@ +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_feature_queries.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_feature_queries.py +@@ -31,6 +31,7 @@ + ) + from openhcs.core.process_local_cache import ( + IdentityBoundProcessCache, ++ ProcessLocalBoundedCache, + RegisteredProcessLocalBoundedCache, + identity_owner_tuples_match, + ) +@@ -149,6 +150,15 @@ + "RuntimeObjectLabelMeasurementQuery.label_plane_domains must be " + "canonical positive object-id domains." + ) ++ ++ ++class RuntimeObjectLabelMeasurementQueryCache( ++ ProcessLocalBoundedCache[ ++ RuntimeObjectLabelMeasurementQuery, ++ tuple[np.ndarray, ...], ++ ] ++): ++ """Store-owned label-aligned values keyed by their full nominal query.""" + + + def _diagnostic_value(value: object | None) -> str: +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_row_materialization.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_row_materialization.py +@@ -148,6 +148,23 @@ + [str, tuple[tuple[str, object], ...]], + str, + ] ++ ++ ++class ObjectMeasurementColumnarRows(ColumnarRows, ABC): ++ """Object measurement columns spanning their declared label domain.""" ++ ++ @property ++ def covers_declared_object_measurement_domain(self) -> bool: ++ """Object-measurement carriers span their declared label domain.""" ++ return True ++ ++ def __len__(self) -> int: ++ return self.row_count() ++ ++ ++ def __iter__(self): ++ yield from self.iter_row_mappings() ++ + + + class MeasurementRowDeclaredValue(ABC, metaclass=AutoRegisterMeta): +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py +@@ -6,7 +6,6 @@ + from dataclasses import dataclass + from types import MappingProxyType + from typing import TYPE_CHECKING, Any, cast +-from weakref import WeakKeyDictionary + + import numpy as np + +@@ -39,6 +38,7 @@ + resolve_runtime_measurement_lookup_dialect, + ) + from openhcs.core.process_local_cache import ( ++ ProcessLocalBoundedCache, + RegisteredProcessLocalBoundedCache, + identity_owner_tuples_match, + named_identity_owner_tuples_match, +@@ -81,10 +81,13 @@ + if TYPE_CHECKING: + from openhcs.core.runtime_stores import RuntimeValueStore, StoredRuntimeValue + +-_MEASUREMENT_TABLE_CACHE: WeakKeyDictionary[ +- RuntimeValueStore, +- dict[tuple[int, str, str | None], tuple[MeasurementTable, ...]], +-] = WeakKeyDictionary() ++class RuntimeMeasurementTablesQueryCache( ++ ProcessLocalBoundedCache[ ++ tuple[str, str | None], ++ tuple[MeasurementTable, ...], ++ ] ++): ++ """Store-owned measurement tables for one axis and component group.""" + + + MeasurementLabelSliceFeatureBatchCacheValue = tuple[ +@@ -433,20 +436,16 @@ + context: RuntimeArtifactQueryContext, + ) -> tuple[MeasurementTable, ...]: + """Return all measurement tables in a runtime query context.""" +- cache_key = (context.store.revision, context.axis_id, context.group_key) +- store_cache = _MEASUREMENT_TABLE_CACHE.setdefault(context.store, {}) +- cached = store_cache.get(cache_key) ++ cache_key = (context.axis_id, context.group_key) ++ store_cache = context.store.query_cache(RuntimeMeasurementTablesQueryCache) ++ cached = store_cache.cached_value(cache_key) + if cached is not None: + return cached + tables = tuple( + cast(MeasurementTable, record.value.data) + for record in context.find(artifact_type=MeasurementsArtifactType) + ) +- for key in tuple(store_cache): +- if key[0] != context.store.revision: +- del store_cache[key] +- store_cache[cache_key] = tables +- return tables ++ return store_cache.store_value(cache_key, tables) + + + def runtime_measurement_tables_for_object( +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py +@@ -8,7 +8,7 @@ + import inspect + from pathlib import Path + from types import MappingProxyType +-from typing import Any ++from typing import Any, TypeVar, cast + + from python_introspect import RuntimeParameterDeclarationABC + +@@ -26,6 +26,7 @@ + ComponentGroupScope, + ) + from openhcs.core.component_set import ComponentSet ++from openhcs.core.process_local_cache import ProcessLocalBoundedCache + from openhcs.core.function_patterns import InvocationArtifactInputEdgePlan + from openhcs.core.runtime_artifact_values import ( + ArtifactKey, +@@ -811,6 +812,9 @@ + return dict(payload) + + ++StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=ProcessLocalBoundedCache[Any, Any]) ++ ++ + class RuntimeValueStore: + """Source of truth for validated runtime artifact values in one context.""" + +@@ -822,6 +826,10 @@ + self._observation_records: list[StoredRuntimeValue] = [] + self._current_location_by_key: dict[ArtifactKey, RuntimeArtifactLocation] = {} + self._revision = 0 ++ self._query_caches: dict[ ++ type[ProcessLocalBoundedCache[Any, Any]], ++ ProcessLocalBoundedCache[Any, Any], ++ ] = {} + self._find_cache: dict[ + tuple[ + int, +@@ -839,6 +847,27 @@ + tuple[int, RuntimeArtifactQuery], + tuple[StoredRuntimeValue, ...], + ] = {} ++ ++ def query_cache(self, cache_type: type[StoreQueryCacheT]) -> StoreQueryCacheT: ++ """Return a bounded derived-value cache owned by this store's lifetime. ++ ++ Concrete cache types separate query domains. Every store mutation clears ++ their values; transport reconstructs the store without derived caches. ++ """ ++ cache = self._query_caches.get(cache_type) ++ if cache is None: ++ cache = cache_type() ++ self._query_caches[cache_type] = cache ++ return cast(StoreQueryCacheT, cache) ++ ++ def __getstate__(self) -> dict[str, object]: ++ state = dict(self.__dict__) ++ del state["_query_caches"] ++ return state ++ ++ def __setstate__(self, state: dict[str, object]) -> None: ++ self.__dict__.update(state) ++ self._query_caches = {} + + @staticmethod + def address_matches_plan( +@@ -1098,6 +1127,8 @@ + + def _mark_mutated(self) -> None: + self._revision += 1 ++ for cache in self._query_caches.values(): ++ cache.clear() + self._find_cache.clear() + self._find_matching_cache.clear() + +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_label_measurements.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_label_measurements.py +@@ -4,7 +4,6 @@ + + from dataclasses import dataclass + from typing import TYPE_CHECKING, cast +-from weakref import WeakKeyDictionary + + import numpy as np + +@@ -14,6 +13,7 @@ + ObjectLabelsArtifactType, + ) + from openhcs.core.measurement_feature_queries import ( ++ RuntimeObjectLabelMeasurementQueryCache, + MeasurementFeatureQuery, + RuntimeObjectLabelMeasurementQuery, + RuntimeObjectSliceMeasurementQuery, +@@ -34,7 +34,6 @@ + ObjectLabelMeasurementValues, + ) + from openhcs.core.runtime_slice_alignment import RuntimeSliceAlignedValues +-from openhcs.core.runtime_stores import RuntimeValueStore + from openhcs.interop.cellprofiler.measurement_dialect import ( + CELLPROFILER_MEASUREMENT_LOOKUP_DIALECT, + ) +@@ -47,29 +46,6 @@ + + if TYPE_CHECKING: + from openhcs.interop.cellprofiler.runtime.adapter import CellProfilerRuntimeAdapter +- +-ObjectLabelMeasurementValuesProcessCache = dict[ +- RuntimeObjectLabelMeasurementQuery, +- tuple[np.ndarray, ...], +-] +- +-_OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE: WeakKeyDictionary[ +- RuntimeValueStore, +- tuple[int, ObjectLabelMeasurementValuesProcessCache], +-] = WeakKeyDictionary() +- +- +-def object_label_measurement_values_cache( +- store: RuntimeValueStore, +-) -> ObjectLabelMeasurementValuesProcessCache: +- """Return label-aligned vectors bound to the store's current revision.""" +- cached_revision = _OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE.get(store) +- if cached_revision is not None and cached_revision[0] == store.revision: +- return cached_revision[1] +- cache: ObjectLabelMeasurementValuesProcessCache = {} +- _OBJECT_LABEL_MEASUREMENT_VALUES_PROCESS_CACHE[store] = (store.revision, cache) +- return cache +- + + @dataclass(frozen=True, slots=True, kw_only=True) + class ObjectFeatureMeasurementContext(RuntimeObjectSliceMeasurementQuery): +@@ -242,10 +218,10 @@ + """Return object measurements aligned to this request's label planes.""" + label_domain = self.label_domain() + query = self.measurement_query(adapter, label_domain=label_domain) +- object_label_values_cache = object_label_measurement_values_cache( +- adapter.request.context.runtime_value_store +- ) +- cached = object_label_values_cache.get(query) ++ object_label_values_cache = adapter.request.context.runtime_value_store.query_cache( ++ RuntimeObjectLabelMeasurementQueryCache ++ ) ++ cached = object_label_values_cache.cached_value(query) + if cached is not None: + return cached + child_name = child_count_feature_child_name(self.feature_name) +@@ -299,8 +275,7 @@ + plane_projector=adapter, + dialect=CELLPROFILER_MEASUREMENT_LOOKUP_DIALECT, + ).values_for_labels(self.labels) +- object_label_values_cache[query] = values +- return values ++ return object_label_values_cache.store_value(query, values) + + + @dataclass(frozen=True, slots=True, kw_only=True) +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_measurement_vectors.py +@@ -21,7 +21,10 @@ + MeasurementLabelSliceFeatureQuery, + MeasurementLabelSliceFeatureBatchQuery, + ) +-from openhcs.core.measurement_feature_queries import MeasurementFeatureQuery ++from openhcs.core.measurement_feature_queries import ( ++ MeasurementFeatureQuery, ++ RuntimeObjectLabelMeasurementQueryCache, ++) + from openhcs.core.measurement_row_materialization import measurement_rows + from openhcs.core.runtime_measurements import ( + MeasurementRowAxisField, +@@ -49,7 +52,6 @@ + ) + from openhcs.interop.cellprofiler.runtime.object_label_measurements import ( + ObjectLabelMeasurementSliceRequest, +- object_label_measurement_values_cache, + ) + from openhcs.interop.cellprofiler.runtime.object_measurement_tables import ( + ObjectMeasurementTableIndex, +@@ -597,25 +599,25 @@ + vectors: Mapping[str, tuple[np.ndarray, ...]], + bindings: tuple[CellProfilerObjectMeasurementVectorBinding, ...], + ) -> None: +- process_cache = object_label_measurement_values_cache( +- adapter.request.context.runtime_value_store ++ store_cache = adapter.request.context.runtime_value_store.query_cache( ++ RuntimeObjectLabelMeasurementQueryCache + ) + for binding in bindings: + values = vectors[binding.object_name] + query = binding.measurement_query(adapter) +- process_cache[query] = values ++ store_cache.store_value(query, values) + + def cached_runtime_batch_vectors( + self, + adapter: "CellProfilerRuntimeAdapter", + ) -> dict[str, tuple[np.ndarray, ...]]: +- process_cache = object_label_measurement_values_cache( +- adapter.request.context.runtime_value_store ++ store_cache = adapter.request.context.runtime_value_store.query_cache( ++ RuntimeObjectLabelMeasurementQueryCache + ) + cached_vectors: dict[str, tuple[np.ndarray, ...]] = {} + for binding in self.bindings: + query = binding.measurement_query(adapter) +- cached = process_cache.get(query) ++ cached = store_cache.cached_value(query) + if cached is not None: + cached_vectors[binding.object_name] = cached + return cached_vectors +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/colocalization.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/colocalization.py +@@ -160,8 +160,8 @@ + from openhcs.processing.backends.cellprofiler.granularity import ( + CellProfilerRuntimeProfiler, + ) +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( +- LongObjectMeasurementColumnarRows, ++from openhcs.core.measurement_row_materialization import ( ++ ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract + from openhcs.interop.cellprofiler.runtime.artifact_binding import ( +@@ -2013,7 +2013,7 @@ + + + @dataclass(frozen=True, slots=True) +-class ObjectColocalizationColumnarMeasurements(LongObjectMeasurementColumnarRows): ++class ObjectColocalizationColumnarMeasurements(ObjectMeasurementColumnarRows): + """Columnar object-colocalization rows preserving direct row iteration.""" + + fields: ClassVar[tuple[FieldSpec, ...]] = FieldSpec.from_dataclass_type( +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/granularity.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/granularity.py +@@ -87,8 +87,8 @@ + CellProfilerBackendProvider, + CellProfilerBackendStrategyMixin, + ) +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( +- LongObjectMeasurementColumnarRows, ++from openhcs.core.measurement_row_materialization import ( ++ ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract + from openhcs.processing.backends.cellprofiler._granularity_native import ( +@@ -461,7 +461,7 @@ + + + @dataclass(frozen=True, slots=True) +-class ObjectGranularityMeasurementRows(LongObjectMeasurementColumnarRows): ++class ObjectGranularityMeasurementRows(ObjectMeasurementColumnarRows): + """Columnar object granularity rows over the emitted label-id domain.""" + + fields: ClassVar[tuple[FieldSpec, ...]] = FieldSpec.from_dataclass_type( +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity.py +@@ -314,7 +314,7 @@ + ObjectLabelValue, + object_label_dense_array, + ) +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( ++from openhcs.core.measurement_row_materialization import ( + ObjectMeasurementColumnarRows, + ) + from openhcs.core.runtime_profile import RuntimeProfileLogger +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity_distribution.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity_distribution.py +@@ -113,8 +113,8 @@ + from openhcs.processing.backends.cellprofiler.granularity import ( + CellProfilerRuntimeProfiler, + ) +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( +- WideObjectMeasurementColumnarRows, ++from openhcs.core.measurement_row_materialization import ( ++ ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.cellprofiler.secondary import ( + SecondaryPropagationBackendStrategy, +@@ -1465,7 +1465,7 @@ + + @dataclass(slots=True) + class ObjectIntensityDistributionMeasurementColumnarRows( +- WideObjectMeasurementColumnarRows ++ ObjectMeasurementColumnarRows + ): + """Columnar radial intensity-distribution rows.""" + +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/object_measurement_columnar_rows.py +@@ -1,60 +0,0 @@ +-"""Columnar row base classes for CellProfiler object measurements.""" +- +-from __future__ import annotations +- +-from abc import ABC +-from collections.abc import Sequence +- +-from openhcs.core.runtime_measurements import ( +- ObjectMeasurementSliceValueRow, +- ObjectMeasurementValueRow, +-) +-from openhcs.core.runtime_tabular_values import ( +- ColumnarRows, +-) +- +- +-class ObjectMeasurementColumnarRows(ColumnarRows, ABC): +- """Object measurement columns spanning their declared label domain.""" +- +- slice_index: int | None +- +- @property +- def covers_declared_object_measurement_domain(self) -> bool: +- """OpenHCS object-measurement carriers are built on their label domain.""" +- return True +- +- def __len__(self) -> int: +- return self.row_count() +- +- +-class WideObjectMeasurementColumnarRows(ObjectMeasurementColumnarRows, ABC): +- """One object row with a named column for each measured feature.""" +- +- def __iter__(self): +- yield from self.iter_row_mappings() +- +- +-class LongObjectMeasurementColumnarRows(ObjectMeasurementColumnarRows, ABC): +- """One object/feature/value row per measured feature.""" +- +- def __iter__(self): +- row_type = ( +- ObjectMeasurementValueRow +- if self.slice_index is None +- else ObjectMeasurementSliceValueRow +- ) +- columns = self.columns +- slice_values: Sequence[object] | None = columns.get("slice_index") +- for row_index in range(len(self)): +- kwargs = ( +- {} +- if slice_values is None +- else {"slice_index": int(slice_values[row_index])} +- ) +- yield row_type( +- object_label=int(columns["object_label"][row_index]), +- feature_name=str(columns["feature_name"][row_index]), +- result_value=float(columns["result_value"][row_index]), +- **kwargs, +- ) +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/shape.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/shape.py +@@ -457,8 +457,8 @@ + object_label_sparse_ijv_rows, + ) + from openhcs.core.runtime_sparse_labels import SparseIJVLabelRows +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( +- LongObjectMeasurementColumnarRows, ++from openhcs.core.measurement_row_materialization import ( ++ ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.analysis.region_properties import ( + LabelRegionPropertiesBackendStrategy, +@@ -559,7 +559,7 @@ + ) + + +-class ShapeObjectMeasurementRows(LongObjectMeasurementColumnarRows): ++class ShapeObjectMeasurementRows(ObjectMeasurementColumnarRows): + """Dense AreaShape rows that already span their declared object domain.""" + + object_row_identity = MeasurementObjectRowIdentity.ROW_SEQUENCE +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/zernike.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/zernike.py +@@ -65,8 +65,8 @@ + from openhcs.processing.backends.cellprofiler.label_geometry import ( + minimum_enclosing_circle_from_labels, + ) +-from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( +- WideObjectMeasurementColumnarRows, ++from openhcs.core.measurement_row_materialization import ( ++ ObjectMeasurementColumnarRows, + ) + + _INTENSITY_DEBUG_TRACE_DIR_ENV = "OPENHCS_ZERNIKE_INTENSITY_DEBUG_TRACE_DIR" +@@ -652,7 +652,7 @@ + + + @dataclass(slots=True) +-class ObjectIntensityZernikeMeasurementColumnarRows(WideObjectMeasurementColumnarRows): ++class ObjectIntensityZernikeMeasurementColumnarRows(ObjectMeasurementColumnarRows): + """Columnar intensity-Zernike measurement rows.""" + + object_ids: Sequence[int] +--- a/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_nominal_policy_migration.py ++++ b/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_nominal_policy_migration.py +@@ -116,7 +116,7 @@ + from openhcs.processing.backends.cellprofiler.intensity import ( + ObjectIntensityMeasurementRows, + ) +- from openhcs.processing.backends.cellprofiler.object_measurement_columnar_rows import ( ++ from openhcs.core.measurement_row_materialization import ( + ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.cellprofiler.shape import ( +--- a/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_runtime_cache_authorities.py ++++ b/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_runtime_cache_authorities.py +@@ -48,9 +48,9 @@ + from openhcs.core.runtime_relationships import DirectedObjectRelationshipPayload + from openhcs.core.runtime_tabular_values import FieldSpec + from openhcs.core.runtime_stores import RuntimeValueStore ++from openhcs.core.measurement_feature_queries import RuntimeObjectLabelMeasurementQueryCache + from openhcs.interop.cellprofiler.runtime.object_label_measurements import ( + ObjectLabelMeasurementSliceRequest, +- object_label_measurement_values_cache, + ) + + AXIS_ID = "A01" +@@ -238,7 +238,7 @@ + ) + query = request.measurement_query(adapter) + expected = (np.asarray([11.0], dtype=np.float64),) +- object_label_measurement_values_cache(store)[query] = expected ++ store.query_cache(RuntimeObjectLabelMeasurementQueryCache).store_value(query, expected) + + resolved = request.values(adapter) + diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-comparison-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-comparison-20260930.json new file mode 100644 index 0000000000..83f4540459 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-comparison-20260930.json @@ -0,0 +1,308 @@ +{ + "parity": [ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-2-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-3-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-execution-owner-diagnostic-production-ExampleImagingFlowCytometryObjectsInGrid-20260930", + "label": "execution-owner", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-boundary-diagnostic-production-ExampleImagingFlowCytometryObjectsInGrid-20260930", + "label": "plate-boundary", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-2-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-3-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-execution-owner-diagnostic-production-cp_tutorial_3d_monolayer-20260930", + "label": "execution-owner", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-boundary-diagnostic-production-cp_tutorial_3d_monolayer-20260930", + "label": "plate-boundary", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + } + ], + "means": { + "ExampleImagingFlowCytometryObjectsInGrid": { + "main": { + "compile_seconds": 1.7246606349945068, + "execute_seconds": 18.285399436950684, + "total_seconds": 20.772463601781055 + }, + "candidate": { + "compile_seconds": 1.7278814315795898, + "execute_seconds": 20.32276690006256, + "total_seconds": 22.77059645927511 + } + }, + "cp_tutorial_3d_monolayer": { + "main": { + "compile_seconds": 1.7805291414260864, + "execute_seconds": 8.578970074653625, + "total_seconds": 11.104258916340768 + }, + "candidate": { + "compile_seconds": 1.778443694114685, + "execute_seconds": 8.467295527458191, + "total_seconds": 10.936539251590148 + } + } + }, + "public_observations": 8, + "limits": "Unprofiled CPU5 sequential ABBA, shared current dependency pins and warmed declared kernel cache; mandatory readiness preparation precedes pipeline clocks. Server startup/shutdown excluded. 1w_1t selects InlineWorkerExecutorResources; fork is configured for multiworker processes. ImagingFlow has one requested combined spreadsheet and no persisted label outputs; 3D compares all six complete spreadsheets and120 persisted labels. Diagnostics are timing attribution only. No native CP/scaling refresh or whole-goal completion is claimed." +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-observations-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-observations-20260930.json new file mode 100644 index 0000000000..eb71be869d --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-public-observations-20260930.json @@ -0,0 +1,282 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "447c926346084b5da434edf5bef3a1a602792f5c", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.944549322128296", + "prepare_seconds": "0.0", + "execute_seconds": "19.26464295387268", + "total_seconds": "21.96428576670587", + "wells_per_second": "0.051908566506755564", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2545.4765625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "46fd388a00f03ecb90ebeb942623e8633fe171c18c850c5378932a105109073d" + } + ], + "cli_seconds": 30.683438082691282 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "e7500ae260305f8e4c7a587a1ab9b68f7e414549", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "856c2f201f713304ab63cfbaa4bfaed59841d997b2ed76b6725e95724d580053", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5198655128479004", + "prepare_seconds": "0.0", + "execute_seconds": "19.53387999534607", + "total_seconds": "21.75780025497079", + "wells_per_second": "0.05119310655324232", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2726.0546875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "8d22604ab07a5075f9f3b912e425037556c915f34741029c817cc9c487c4bb82" + } + ], + "cli_seconds": 54.659147483762354 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 2, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "e7500ae260305f8e4c7a587a1ab9b68f7e414549", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "856c2f201f713304ab63cfbaa4bfaed59841d997b2ed76b6725e95724d580053", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-2-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.9358973503112793", + "prepare_seconds": "0.0", + "execute_seconds": "21.111653804779053", + "total_seconds": "23.783392663579434", + "wells_per_second": "0.047367203405619965", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2233.1640625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "8d22604ab07a5075f9f3b912e425037556c915f34741029c817cc9c487c4bb82" + } + ], + "cli_seconds": 33.80502866534516 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 3, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "447c926346084b5da434edf5bef3a1a602792f5c", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-ExampleImagingFlowCytometryObjectsInGrid-3-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5047719478607178", + "prepare_seconds": "0.0", + "execute_seconds": "17.306155920028687", + "total_seconds": "19.58064143685624", + "wells_per_second": "0.05778290711241566", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2603.6640625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "46fd388a00f03ecb90ebeb942623e8633fe171c18c850c5378932a105109073d" + } + ], + "cli_seconds": 41.53069085069001 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "447c926346084b5da434edf5bef3a1a602792f5c", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-0-main-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.889394998550415", + "prepare_seconds": "0.0", + "execute_seconds": "8.576169967651367", + "total_seconds": "11.244689151644707", + "wells_per_second": "0.11660216667485844", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1446.16796875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "b9f55c7eed6ca5d3a8e901f04d4d7637c1a89d5a41f677682abbb4c5257db6fb" + } + ], + "cli_seconds": 20.699423050973564 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "e7500ae260305f8e4c7a587a1ab9b68f7e414549", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "856c2f201f713304ab63cfbaa4bfaed59841d997b2ed76b6725e95724d580053", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.742201566696167", + "prepare_seconds": "0.0", + "execute_seconds": "8.472699880599976", + "total_seconds": "10.930816314183176", + "wells_per_second": "0.11802613264866255", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1539.53125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "6e38b252bc64069f348eb68a5e37c6e56e2e6c520c43139de72f14c08025af8b" + } + ], + "cli_seconds": 32.382107578683645 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 2, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "e7500ae260305f8e4c7a587a1ab9b68f7e414549", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "856c2f201f713304ab63cfbaa4bfaed59841d997b2ed76b6725e95724d580053", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-2-candidate-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.8146858215332031", + "prepare_seconds": "0.0", + "execute_seconds": "8.461891174316406", + "total_seconds": "10.94226218899712", + "wells_per_second": "0.11817689206819479", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1414.99609375", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "6e38b252bc64069f348eb68a5e37c6e56e2e6c520c43139de72f14c08025af8b" + } + ], + "cli_seconds": 19.51060658413917 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 3, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "447c926346084b5da434edf5bef3a1a602792f5c", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-measurement-runtime-public-cp_tutorial_3d_monolayer-3-main-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.6716632843017578", + "prepare_seconds": "0.0", + "execute_seconds": "8.581770181655884", + "total_seconds": "10.96382868103683", + "wells_per_second": "0.11652607548703271", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1563.6328125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "b9f55c7eed6ca5d3a8e901f04d4d7637c1a89d5a41f677682abbb4c5257db6fb" + } + ], + "cli_seconds": 31.77321644499898 + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-refinement-20260930.diff b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-refinement-20260930.diff new file mode 100644 index 0000000000..a3ef7ebd30 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-refinement-20260930.diff @@ -0,0 +1,212 @@ +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_row_materialization.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_row_materialization.py +@@ -161,10 +161,8 @@ + def __len__(self) -> int: + return self.row_count() + +- + def __iter__(self): + yield from self.iter_row_mappings() +- + + + class MeasurementRowDeclaredValue(ABC, metaclass=AutoRegisterMeta): +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py +@@ -80,6 +80,7 @@ + + if TYPE_CHECKING: + from openhcs.core.runtime_stores import RuntimeValueStore, StoredRuntimeValue ++ + + class RuntimeMeasurementTablesQueryCache( + ProcessLocalBoundedCache[ +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_label_measurements.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/interop/cellprofiler/runtime/object_label_measurements.py +@@ -218,8 +218,10 @@ + """Return object measurements aligned to this request's label planes.""" + label_domain = self.label_domain() + query = self.measurement_query(adapter, label_domain=label_domain) +- object_label_values_cache = adapter.request.context.runtime_value_store.query_cache( +- RuntimeObjectLabelMeasurementQueryCache ++ object_label_values_cache = ( ++ adapter.request.context.runtime_value_store.query_cache( ++ RuntimeObjectLabelMeasurementQueryCache ++ ) + ) + cached = object_label_values_cache.cached_value(query) + if cached is not None: +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/colocalization.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/colocalization.py +@@ -37,6 +37,7 @@ + ConcatenatedColumnarRows, + DataclassMeasurementColumnarRows, + MeasurementProjectedColumnarRows, ++ ObjectMeasurementColumnarRows, + ) + from openhcs.core.pipeline.function_contracts import ( + ObjectLabelInputExecutionMode, +@@ -160,9 +161,6 @@ + from openhcs.processing.backends.cellprofiler.granularity import ( + CellProfilerRuntimeProfiler, + ) +-from openhcs.core.measurement_row_materialization import ( +- ObjectMeasurementColumnarRows, +-) + from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract + from openhcs.interop.cellprofiler.runtime.artifact_binding import ( + RuntimeInputBindingRequest, +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/granularity.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/granularity.py +@@ -43,6 +43,7 @@ + ) + from openhcs.core.measurement_row_materialization import ( + DataclassMeasurementColumnarRows, ++ ObjectMeasurementColumnarRows, + ) + from openhcs.core.runtime_profile import RuntimeProfileLogger + from openhcs.core.runtime_tabular_values import ( +@@ -87,9 +88,6 @@ + CellProfilerBackendProvider, + CellProfilerBackendStrategyMixin, + ) +-from openhcs.core.measurement_row_materialization import ( +- ObjectMeasurementColumnarRows, +-) + from openhcs.processing.backends.lib_registry.unified_registry import ProcessingContract + from openhcs.processing.backends.cellprofiler._granularity_native import ( + reconstruct_f32 as _reconstruct_f32, +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity.py +@@ -17,6 +17,7 @@ + from openhcs.core.measurement_row_materialization import ( + DataclassMeasurementColumnarRows, + MeasurementProjectedColumnarRows, ++ ObjectMeasurementColumnarRows, + ) + from openhcs.interop.cellprofiler.setting_names import SettingNameFamily + from openhcs.interop.cellprofiler.settings_binder import ( +@@ -314,9 +315,6 @@ + ObjectLabelValue, + object_label_dense_array, + ) +-from openhcs.core.measurement_row_materialization import ( +- ObjectMeasurementColumnarRows, +-) + from openhcs.core.runtime_profile import RuntimeProfileLogger + from openhcs.core.runtime_batch_contracts import RuntimeBatchInvocationRequest + from openhcs.interop.cellprofiler.runtime.measurement_execution_support import ( +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity_distribution.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/intensity_distribution.py +@@ -33,6 +33,7 @@ + from openhcs.core.callable_contract import KeywordRuntimeParameter + from openhcs.core.measurement_row_materialization import ( + MeasurementProjectedColumnarRows, ++ ObjectMeasurementColumnarRows, + ) + from openhcs.core.memory.decorators import numpy + from openhcs.core.pipeline.function_contracts import ( +@@ -112,9 +113,6 @@ + ) + from openhcs.processing.backends.cellprofiler.granularity import ( + CellProfilerRuntimeProfiler, +-) +-from openhcs.core.measurement_row_materialization import ( +- ObjectMeasurementColumnarRows, + ) + from openhcs.processing.backends.cellprofiler.secondary import ( + SecondaryPropagationBackendStrategy, +@@ -1464,9 +1462,7 @@ + + + @dataclass(slots=True) +-class ObjectIntensityDistributionMeasurementColumnarRows( +- ObjectMeasurementColumnarRows +-): ++class ObjectIntensityDistributionMeasurementColumnarRows(ObjectMeasurementColumnarRows): + """Columnar radial intensity-distribution rows.""" + + object_row_identity = MeasurementObjectRowIdentity.LABEL_ID +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/shape.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/shape.py +@@ -448,6 +448,7 @@ + ) + from openhcs.core.measurement_row_materialization import ( + MeasurementProjectedColumnarRows, ++ ObjectMeasurementColumnarRows, + ) + from openhcs.core.runtime_tabular_values import ColumnarRows + from openhcs.core.runtime_object_labels import ( +@@ -457,9 +458,6 @@ + object_label_sparse_ijv_rows, + ) + from openhcs.core.runtime_sparse_labels import SparseIJVLabelRows +-from openhcs.core.measurement_row_materialization import ( +- ObjectMeasurementColumnarRows, +-) + from openhcs.processing.backends.analysis.region_properties import ( + LabelRegionPropertiesBackendStrategy, + ) +--- a/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_runtime_cache_authorities.py ++++ b/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_runtime_cache_authorities.py +@@ -48,7 +48,9 @@ + from openhcs.core.runtime_relationships import DirectedObjectRelationshipPayload + from openhcs.core.runtime_tabular_values import FieldSpec + from openhcs.core.runtime_stores import RuntimeValueStore +-from openhcs.core.measurement_feature_queries import RuntimeObjectLabelMeasurementQueryCache ++from openhcs.core.measurement_feature_queries import ( ++ RuntimeObjectLabelMeasurementQueryCache, ++) + from openhcs.interop.cellprofiler.runtime.object_label_measurements import ( + ObjectLabelMeasurementSliceRequest, + ) +@@ -238,7 +240,9 @@ + ) + query = request.measurement_query(adapter) + expected = (np.asarray([11.0], dtype=np.float64),) +- store.query_cache(RuntimeObjectLabelMeasurementQueryCache).store_value(query, expected) ++ store.query_cache(RuntimeObjectLabelMeasurementQueryCache).store_value( ++ query, expected ++ ) + + resolved = request.values(adapter) + +--- a/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_runtime_value_store.py ++++ b/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_runtime_value_store.py +@@ -165,7 +165,9 @@ + store.clear() + else: + worker = RuntimeValueStore() +- worker.record(_runtime_value("worker"), path="/memory/worker.pkl", backend="memory") ++ worker.record( ++ _runtime_value("worker"), path="/memory/worker.pkl", backend="memory" ++ ) + store.merge_observed_values(worker.observed_values) + + assert label_cache.cached_value(query) is None +@@ -212,9 +214,22 @@ + restored = pickle.loads(serialized_without_cache) + assert restored.revision == store.revision + assert len(restored) == len(store) == 1 +- assert restored.observed_values[0].value.data.row_mappings() == value.data.row_mappings() +- assert restored.query_cache(RuntimeObjectLabelMeasurementQueryCache).cached_value(query) is None +- assert restored.query_cache(RuntimeMeasurementTablesQueryCache).cached_value(("A01", "DAPI")) is None ++ assert ( ++ restored.observed_values[0].value.data.row_mappings() ++ == value.data.row_mappings() ++ ) ++ assert ( ++ restored.query_cache(RuntimeObjectLabelMeasurementQueryCache).cached_value( ++ query ++ ) ++ is None ++ ) ++ assert ( ++ restored.query_cache(RuntimeMeasurementTablesQueryCache).cached_value( ++ ("A01", "DAPI") ++ ) ++ is None ++ ) + assert cache.cached_value(query) is values + + diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-unchanged-main-materialization-20260930.xml.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-measurement-runtime-unchanged-main-materialization-20260930.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..9827bbcb3ad3bfc115e205b734f30049daee35b4 GIT binary patch literal 3512 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 + provider = replace_once(provider, identity + '\n\n', '') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/tmp/move_generic_numba_preparation_owner_20260930.py", line 61, in replace_once + assert text.count(old) == 1, old + ^^^^^^^^^^^^^^^^^^^^ +AssertionError: @property + def identity(self) -> Hashable: + return type(self) + + + diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-application-corrected-20260930.log b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-application-corrected-20260930.log new file mode 100644 index 0000000000..05cfe3c61f --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-application-corrected-20260930.log @@ -0,0 +1,2 @@ +Initial declaration-selected rename/move/base simulation passed; no source applied. +('/home/ts/code/projects/openhcs-compile-perf/openhcs/core/processing_preparation.py', '/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_backend.py', '/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_preparation.py') diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-complete-simulation-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-complete-simulation-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..89479339c6a818e228be9bb2bf40e12f0dd72aa2 GIT binary patch literal 23640 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 literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-consumer-test-20260930.diff b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-consumer-test-20260930.diff new file mode 100644 index 0000000000..acdfe30b7d --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-consumer-test-20260930.diff @@ -0,0 +1,50 @@ +--- a/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_callable_kernel_preparation.py ++++ b/home/ts/code/projects/openhcs-compile-perf/tests/unit/test_cellprofiler_callable_kernel_preparation.py +@@ -39,6 +39,47 @@ + process.__module__ = module.__name__ + process.__openhcs_prepare__ = hook + return process ++ ++ ++def test_generic_kernel_registry_prepares_non_cellprofiler_families_once( ++ monkeypatch, kernel_module, tmp_path ++): ++ from openhcs.core.processing_preparation import ( ++ PersistentNumbaKernelPreparation, ++ RegisteredNumbaKernelPreparation, ++ ) ++ ++ events = [] ++ ++ class FirstKernel(RegisteredNumbaKernelPreparation, metaclass=AutoRegisterMeta): ++ __registry__ = {} ++ ++ def execute(self): ++ events.append("first") ++ ++ class SecondKernel(RegisteredNumbaKernelPreparation, metaclass=AutoRegisterMeta): ++ __registry__ = {} ++ ++ def execute(self): ++ events.append("second") ++ ++ kernel_module.FirstKernel = FirstKernel ++ kernel_module.SecondKernel = SecondKernel ++ kernel_module.__openhcs_prepare__ = lambda: events.append("module") ++ process = declare_callable(kernel_module, lambda: events.append("callable")) ++ monkeypatch.setenv("OPENHCS_CPU_ONLY", "true") ++ monkeypatch.setattr(numba_config, "CACHE_DIR", str(tmp_path / "cache")) ++ # A provider-specific capture flag must not suppress independent kernels. ++ monkeypatch.setenv("OPENHCS_CAPTURE_CELLPROFILER_FIXTURES_DIR", str(tmp_path)) ++ assert FirstKernel.can_prepare_in_child() ++ assert SecondKernel.can_prepare_in_child() ++ assert FirstKernel.__registry__ is not SecondKernel.__registry__ ++ assert "__registry__" not in vars(PersistentNumbaKernelPreparation) ++ assert "__registry__" not in vars(RegisteredNumbaKernelPreparation) ++ ++ prepare_processing_callable(process) ++ prepare_processing_callable(process) ++ assert events == ["first", "second", "module", "callable"] + + + def test_real_declarations_own_independent_registry_obligations(): diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-initial-simulation-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-numba-owner-initial-simulation-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8b144a6dc9102dab2bb04e88a8a52873f674c31d GIT binary patch literal 23386 zcmV(}K+wM*iwFP!00002|Lna>lVeMACbs9VDC^B^rn}?)kX9o~D~S?q#958WU>+Xs zRp3Pe*#NTctsa~IuFsK~Rdt`|T#|WE!)da+x)MO5+~at-e_w<@{@dTZd-sRS{^99B z*Zt}EhyUf>f5R(y?JVD)_gA^#mH&Es<=x9W&+pzoO$Wi-fB2^l^6u~d@xT0;iSai% z?BDOl{;_z$obtx9_V=8^W{%}_>W({`SvUO z@pL_%zy7y>{O`X=$oogx?Wf7`UXF6!^B<2-4}<>rc$P@u? zAF;HM8|P97b>>Q1;*Xx*=fD4dU+vDnJki0H*uL#Wtv`KH>rbz0{poA9{`9KW*W3I> zR8!4gf8D*FjV;0#^MmCc25mp5O`zqa>!iVY4UOWb(x{pvIM+y48XbN|Ku>-+C#@BM2q%_jBFYLb9etGxRU)_DVlp$H&;D1-U?;lPd<=xdb-VgiB6=J-j!+W#S z4-fzAyR%$re|)#UUf#hhA5UjGe|q=)Jl_o%seSwjoA6*;_44$9ZTYZ&|NQ;$_;9+& zCcD$G-kqlH|NH4-oDP?NI{m|GJ{{zq+mTOa`N{%T2EXzz4}K-(>}FAwz>b_JpJCAul)4TsH59WoR|Ls@DdfDh-|C@h)+arVc8}1@(ON6JCd&pDCm8nx>tc^R)=t^hhtK;`_@xdiQMRGT*&uaemn)ctz=9fB3WoE(xo*;eVR*?+39;u0i<6iccqlsifPeY@=+<$M8(mE-mQwnwt+ zpxgcO&dToBb{4Vbp_K}K!^b&)_ti4}0pD|x-A6j?=a189@ZKvuGQ}>}-Q|(KtkNG| zensZ)vwAGoi%F?y*g#NvzIw%0 zv_L37To=|>M$bd)h;?vtUFsZpPOwMzcrCRJL>_R{bN3RB>1pn-zb$e}R1jsPMxy4N zXzyBQk{n`aRkjfMGelXm-PvKfu6u}>vrk1ig6XB2+`b22z>BrKiz1F#WapX@T{w*>at&zW)#xlb%{a~d0km^yb#KIg3je%*Ax zEp6;0%pM>q=U!uFvjh*LAj$%fH#0Zo2yW{EmgUt5}ZY;*=J5~6Em|c%4aq)>;aS}K+jvGn)z>mKzXO`qd zc(^>BkT^f6g~-0(b?>rlBFDL*wFhdPAd-t+u%c~q4wA%CZ4|fu$8a}kgf#} zR{CfYA=bqLt8IXeJcBQz&w-$}m9akUcjLTYG*&->#Zzxp%ZzCPB~ar6oRb?ogVT+q z{kWI!<-9-~LWZZB+9EqRTbQV$I6(OWk#gC>*~$+rk1HIO$&`8#r^-ALz&u=4CQc)A za(xRM*gxQZcXXt~r_27b`wK0BMYGRI>I;uJ8{Af_K1K&%o=V-qX?=FDy9YY%RW1w6 zA%QxCSeT^&AkLhz%hd2#O3}ly-9_Zxg+Iu{!eZAxC|B>C2Sy07`J^+)2!I9;=Qg1c z_6@to(_zn_7NS{k)hK%s8XR+i?0Mz@Nqb2W{RXn0h7bi#4q*fvQKUMMcivLsuLx37dlMC>dY3gXMQH)8Q z?}bv-o;TeAr(wUdyIeulcDk3t+8D0U5`OCJJ6EeL&{)( zi8j^2ct4QQZ_J{Ep1s%ad3m zzb_)@e2POHZc)G#=R{z@z9tHxZ7Tn#@u zQ)ct|L~Nbt&2bCK+wwDDGy*bfY_m*{O`V;)kLcGk!3mwt*QIqYDP)&tC!G!0uIIr@ z1(bk@^QQj)`D}0Z8Dr1=g-_VR3kMI0LKhEn_q_qz1-P49D=|zz0MY3kRQP^>oTu;C znNQ6d z)+YB@&%(mV@WQ%MORkKWNB|DB)d9aA*?IW-0N}ZSs9$y?t+~A-pXcBS8`jFeEt&&M zRB$XyKc00{iRJile?A=_@ajTdM$HN40LX$^546Hmi#F&HdS&>NO{LyX{JbJRBL}Hb zStQiyTQ4Q1=x4`^)j4@%;}}nSAaro=!|H=dr%5RWqS8Bi$_{Itw36$thCVhE_pfq3 z@eV%CATBufVd*ZW`kLB|3ZB$k@K7O0a@d8_hmzkI+45n(kfy^qM{GAixZpgB*4hKY zh|#(cgq<)?vIa8*O$c3h07sFuz^I*^20S1DKK1C8B&Ga8>g7v zvX$4Ffo~j{;Hk>Y!%-{^$YIn$(JpASe|tIUu&0Y1-{7t50`d)0LXb(MLlAbSi`+{9 zesFd_-@+!+zCVJhK3^g~(x=0T=7Q}4p{L<#WM4p>!VG2{2xtRtxXikN(C6zOB<=du zG0oD|rW(SH;%ke+1EKdy!7+I(KPbkAB7Y~JcFzX{%Tmt)N;C$-ZpZ?5J-Y^~@D?)( z)_Oas7rYqeiF@jYO&07d+bwl#r3Qx|zQOxkOBj7xx7iqu>Rg()d z!)tiYp-~ub9y3htANCh3?6@w$unZrYM&aTF-Yja2h`_E{zMMqOY5rLYs<3* zo8ZBSYL$S=i-ggA0*07a-{e`|IOptH;OBSdZe@yR7ncEW5_LF<3>XR5FpDq25Bx3Y zh7!Y!AMNmM$w7!6mt+KEz+jE35jbZJH5a8cHEtvE4OH&lpHEMZy9?v(1;}2rkZ^Xs zyC`82H?Pu%AXr!KbxWZyvc!!;?$u+rbu6tN%GRy|(nie{z#!gG*wsK-shTSr@C%)l zfzpznSarZ*M?*Fh`O8v&q{Gt^sjmPN8o=RPP6I46i~8n5Q8+ zB?1-B0)7p|m}hYy_p{X8dIKQUZ6&`Iw4HYkawUAhdyu_{MFncC;G>|;GC62S(pwzh zsx4FWllrC#d?}M$*qsE&tR)rzez<9UKHOvv;j^p3Z6WlELI>{7&?ZHity9Y$fIH*1dFzkZ_wlC(fh6d%%BC5-DW>iRKM3tOM0tN*@ z$^iB)IIHNy)`O3WJ#GLsri`bBoi?M-sgDS2z1>6>pM9ULP2VQfk~b3ab3WGE9F93d zn-Q)+0{htKh<3hKXbSdRm~AV$?ec5)fL}cKaUeMq3DWrN5pe|g#?qFJ8jN;feP)3_2y^+*H;Qc5Pf+X%CQ zl7zag%yd4}r==4BN)B9K05Q4G(tEB!P1;d%?Qedv{S%3;{(s4W12CqP!9WY+c5eVM zVScTJ*sFw%1;(f7yuU0t3P6Vz1nV0cVS)3kF}dL#=oHT^X5jq+S5?H5q=#P)&W$W^*~}$s?IF6*#{J|!+Z)e+ zU%J@==&&PwE>^u5XUGMh+7h8uiyQrpI-HhbrHc5H)cP?%@X>0D)Y9-Vc5XvAmi;9u z_CP}pyRQ^k$_%i)*POGrgK~+U(n!<6sTZ=d=#4kQ>FN6Tv?MY$uDe8a=LkD|IGSyPdCyzGB&P6tq9N%=6^HMeg(>zHhEIMgxnFW+zT7U~PRm}=y8#ZWpKz4?AEi-Ug4`_whCSlOc+SofVn?sr&)}-JkpZypi(9k z58enompyi0aLG}uA*Cs)Y$5K)6W!;oO$EV%PP??2@((fCb`$2MiS zDQE8RA`{z_8*L`;6#PWiaeOJyV7glDAZ%98w!X#Z=?0bNIQvZu`$`fo>z7 z%tzSlN7-FJoQ39M>dEjNO6$%~qCQ(_MA}>O(e4vbB38?j^U0sppM{Vy!$ESIOl5_gWZD~MA}&R zuYXtwJq-~i0AyEh)k5&%Trwb5od`(akQ)nb+{Ox~*O?5}1o4YqEaloqj}<)Fak3I{ zYu#`k;SY3NEY^I^^Yz2m0lLt{N{vI&M7hLV!hHmPo)EAYp0Kz@t8^FPVY~y)sn+(j z1t46Pw%`)C4t^^F|M1jim=QR3`dENait~ZV_oy!Vypg0Yr;`R@`NQJ!_B6q5j2~q0 zow1zMhjDqPVI|)i2>sHvW-WTlk%I(SLFrvC{*+fA%_yg=_GUVuyvZdu|=XVp`8}1W|{L5W|K_JV&QB zLf2~JG=K_Qj39KQrb;D>E0*;dwn(J5FM&slI(-fy z4;do}^^O1w2Or!f1-d^I__=%F(it<1qJn0!wM^6Q?FK59Sv)71$!&1P{7jW^-?cw} zgxsg4CQ*)DPms_f?&s*8x%J{_3uF@lxNar$^NILMp&OM3gcyrhlSUiSWYrRi@Z&ln z(gwLZFLfTf!-?szhD4O8oSQgrgdT8fOlw`!bV~GPq_&yJzde@jrzhaPhLl6K@fKkB zF-5HW@Pl+ltUGNY_4_l#UfWh%VsKqK*=Z*suD8yqR0N&CQ&~3@__>r~ZLNxHF%0iV z3b7O`HEt0BKDRPwu`ae73N8UO7~v z%{FWX4q&S`OP-Tbsvj*_O+`pyLy-@5kiS0pw&&q|ncA9{L0IDM#k(=!{j9LQZ7BI# zgTD0(5!-!6oebpcXJR0vDVFWmvC3fWJx#~#wlR)>er|vJ43(ZU;1~Fo1J8xWfTPv~ z7+qa)vzKNqO|7l+22wwb!=88axX^GeCj>h;TQAx}^mYuNdIfH7!8_6|!r!Os2Rk); zmg}%b1f;`42y`x1>yKPppUIDD)5;JIGY4{D=5H_bt7qHY&fxLGk{y>Zh9&N#FtW`9 zg(Tcne` ziv3lw&(dwu1bxc0)L2~TF~;0DjoJpbq7&Uv;R()0!i& z8l{p{aUo8bqiGmSAms&~aPpnxzqR>Z&bJ^N0}UF^PC*nk;Ys)iO{RK;pmZnU=jnm= zi~aRWDn8qUWgaxE4(c{5B@If!=K9@7_N5(K3+3o|dbM5{Kr%J9ShJ`#5u~u8&^IQ& zGA~E0vO}p*ceP`y)`D%DLbSYGhGXAO?ALsvHJ2B`3jQ_qQUVZnM$n<)YANI<$Fd=z zv1?{o-vG)dfb5=}E7P)XZO!p#ls+ShQ3G9k%5~rA*Wc78rww=(I!z~GCT~WH>f#aS4PsCu~uUjq{cwpBCFd^&X3jM@KZbW-T$oQHN%e1{zrg`F7G?X*?b1 zyo!mXAWgE}3y^O<1D}G7#T3AQeXo53r?GOZKYwOLx$P*bT4wzwigX)Ud98UoJO*%ll2z0eCdoTEs#XPodr(MZ4*szU3td`%Sr0rCg`JV2>nG~O2wf#88dbDKTR?d9H|mJa)C=}B5t1-i4z3BES55i4W(n0a%7 zU+#t0p^(}~Ng%YV=t0a5IC#lssWB)p05j3@mjY zHkaCdT)1GywjAPev@~k!s*`BM4%}KZk4?_-ZXzS>2tDk+9#prA4 zwu)esGTb=W<0eaPlE0kl-3B=cA6`nh7OMk7uP(JJDomvWtK7^$lXDBi=vA~ zex+5`+$`yLG=xr2;U2^q6tptp7B^j&Psi&AfqA^NAbKxHSvCK(XJ8kAm+aMhn?D^R z50?>^awXY-1+VDk=m4`3Fk^7Qg2`1GsW|viZ4tyJ9fPa)U=YJmO@0Fh^3o9rR(-zi*35sf{8=Z$SZBKq^;JqsqU>h(eQeQ$ z`G@)b_9aUxV>VSo10bt(0%#rVedboD7xGx@Hx+cs!)YbuCF^xS90v=)k`3`4ea@`b zawX{Cx0iF!#RAAnLxH8bcGU{%QoPOl3O%Pbiu0bT@2axWSX>V){dOAPQ)e6}0^4``LVeYl(=wiFH%m`wW znib|WYf2Y#wcc)A& z-KHYHrXA1yg-;)4i3JY3-|}P3SVvW3u`^|!j%RO~>22?8-#_i2!Q0d0635P(T@DeP z4{q5_Asd$6TPmr$H_qzbAF-gP$Cbt)o?K`$^>)7*A*9Www%#sHN9MALsMeAAB_(=o zXXu%uOED0aA(rbpU82_1F_s*L+_#te*->9#YRwi_-DbgvI_u01?qNkmJZiNuhT7X3 zPpJMy>A(KrwcLFv6?P)%UJHZTpb4hI;pySHZnna}7ETlaxvO11*3h*F(hzJmx8}UP8qaw{ zNAvgVuEtUbGuh3wo!RJw89^D>ybZR6t8e#G;Ud@F@#$dzAgn0+g5a(C+MR2$!W-GF z=92wjusPmdg|8=GtTLoTUd0+OOR6!9EX7eKYXsoQ=QkeNyr{zSxRHe%G#8l@7;|yX zQWSZLUBbg#(F8uO_tgL}=W%Jsk{zRrP)Z3lS|SDP=Nv>yYDZ9(J1g*VN%C66wA3oc zR|cdn5f7mOWq67<_+_@}Ya#V_Q06qB4qr7qSQ#jSE7oPJH{TLR3I*^!7H~r?dDb^h zZCs_u`b!{eikgC5a}q#@_*o)JbHNJwI48QBE^IX2E&*ulmvU`F)C~0Br8EkIvBO!T zbvU;v8+tbt)<1>YsSVTcA{F?l6BXY|at-0HWmoT}!tb9c-oShv!{z4O3VhY*fU(no zRL0V&+|Qs8ysyi7?RKL9c4l>oCHZJWQp2=P8(~!c){QNHQ~c}siLw56KO=`%2fRw9 ztTq;``(a~=(saeHGmt*xS#wlowpV^Tm$>Zf=ikjXoOlp-2?=P zZWk2sj^e*UjF-Bb1*BBjns!W}@aU*1*)0}#&czQc)!$E#pHHP;nf_R93YL#8Mz%vz z>#8zAGklV)>O#7oN?+!oE?mSw-q;b)5|H>XgfVEqH^Jt{V7a3PmUq9?!|D5_LEG35 z3cyrHuH7b;%;sWM?oydTy`utO!KE)PJYYh(EHMIO~ zD0Q|8j?4Sr5hG5NAOsAR!6kC&+NzI2)9SXr5oH!{q<}l5Sj!=Tv+8hTtvVe5vMQQl zPv3?fFG3&bVG*29iD6dkbf9rpEw>ni1ME8nJe+#Zo%4)xS2|$^ik(CenoJw$=WF&xrcZ^!!Z){Rd zAQwIWExOt%$0o5c@H`jx&fi_3Uv$$;O~7q@XR4K%hd zI>?Hx#JwZ<2W>8o*?~5p8g`Sja^v3nH>cRjO;yGS(~|Xxz`RPARtHoJP_opVzA3e? zcF?tyUI4Jxr?u#)DQKlsKx?!Fiit{T-6keY4oKv@Et5vf)z-ON{#L!wLPSx6v z+)<X%ks{n+QNH;9)4uz}>kyooKqd8qb*RmOQ;!uhU%>pdIf5sDV|r z#!|3v273{^WdBB#Sp=XZ>Qp?L>av|}w^BN=n=zis&g&h$+T(fuK<7`N=NhfY38W?G zSQ3biokhwQ$31nry|8K)R)E}b&J=9KYY70M@YI5xuQ789cLWDt_qN;p zKAtcmTLUHUlhaVF8LY%Q8@pE6T0z}Wso&FQkQ6b6s?VbqO*6P&t({9z2lpJ~9q7T! z3HKUqBkV_rHga`P5%L^prlzp5IW#tRH{mb0v$CZlKd&DCO2N>)CDMezA!KW*UafLv z-hu!Bt_B}bX6EJvRwC-t@TqXNZrKG)Ciy$8{`aTz!|xz1!o^t%;UH_EExDu#ziN%B zoz70%qmkWb+h3nJqeL0taPnj@6mUmyFDXk8-SHUZoIw3YkKy%oL$qZEx3ZvT`dI@P=ttqMc@cF zk@9>x+|n*j%R{ITpl7mUlmJrh0G|v65`)}M_r|UCP1-3Rch8ov)IdVTl1gSy%7itI zF<1hSXK6jZarM=Y1+`CSmf=r1r)u@-tSvYE9IY9t1FkEB?;!KqZZu(r8mL-V zUEhEyTxcM3pBDS>nH@ z#4QD2fdT}n(Rf(a3J?wAJYhU;&K&VX-uTA$*W`ZMFAcJugL{cRTF;A8fJNt!5;OMc z6uHl0KUY;R;EISP^@ThIu=)ZwBTBFwOa1~F8ruqfUaCU%B@G)JSV#7~X^iBnM0N1l zK5Z-Q*&1=3<-FFZz!ubpP?~hF4TjQMEiM+;!H(;^kL=HFFBWGta#El-4nx$2uz5|@ z&1$E?Z=D1DtCD~Ahf72HqE746T&}(=`xLzL@ zTQ{T%5Sy(BYpcHS;1Ht?3wAve-9*G4JzWLTzZy(%W zO7msztcAnk+@TP2@4~FUrYhQJ@XgOyW6%EWP4%z`R{O+D2kI(-&xDwrMrko;FoBM+ zSM44rj{Npi<^fB2{$%xD?~kX;bzc`C&VNwoWQ`k3}5^9^6n1wbmRrw z4I%oG#%w+Y7y);LYa2!t5xGOuw}(j9Flli_BL^McI$)54ONaz4YN-gLWuWKr_BMMt z@prP6g=q5^i>KjUI+yx+inY=8r9ncQL=nW5Npor;E>y-F zd#XL3Pq)gwwamj6>UL=CoOT?&b2m)OOgQj1=|Jnpg5yYJ<2*nKCTmI~;HX6K|f z1Yi)3G{ps?W__>4zj069uO*isSRPjttW~TrRUihyTv5v@P2GWEi&SsTEjAPQ10APb zmVFs`zovJc%~?@uMG=+9Om?#C=B$BI2U1J2nfSLXkRKk;a#)U`N^>JU~!MjV%FmF@r_w|bklovhEVEu8L$M2^6ceDb-I>oJF7&AEFiDqgmf z_Ds9S4|3f9us}r+&w)Q$t&XxdR_@KRloSXm@*B4W`8APuKRg_EYpOv3;?*XETS>Gr zDJ@bEE+=c|1dzI!^go?C^%8%UdR67(!Kk8>1Yak>l<%EX`)=5daDsQbbdmT%0n1O07PY zq2-O);E`a?``!7pw+{ITm22BrRfL%V#OEa!1woJ?2rx-|F14}r&84>G<^x?WvRGe^ zuvo_!y_aZN2b_m;%CMEd{*4bgenIm6Kd)T!9l1hOKV5aAom9-O@K9qq3O z&Zpx?S*jHzIBocj78r?zqLyWB&|mA zF3#=u=V$4yE7IxxVhLS|@Z#CB5om;BGp?=hbky9qz42J<-;(~T7Z=QaYPGp>e!2o2 z*eC?}`IItzdnxs8k-!ZK{`v9n^nQPQ{$cm}*4m3)D@c%NWwGoO8#PWZ5#h9gE3?0s z^z^ti5Pe$btnS3eo?!Xd1F>fSvEuURE#Gb3pUzAD{W{_gSSPp8)V0iPL)r>au=aQq z?k2h2YAtb~>XpbwDZ{*zAO`4dJFy9Ss{h32g2%4BEzAZzb&@{!Z4Xmz9*Wn?-@J*pc9{!9+!KAuIc( zrk-pP^S6jT{s?NOTb{t4)_6^9WDzFpyk$W1X3UKn^b9c*;@_z!a0M3 ztxd`?$rylj*+xVMZ~?2`@a+39#W9rn}OX1%`n(h+`XI64Cy<(W8Fs}jgPrxLS- zR@wFX##er;b+S?&n|HfvBp%TA$X1>M2T@Y-R^!E4L~=sl)O&gdv%Q^};boPP8r=Lr!Qd|6tsPfVqIZKwiNnTRP58SEqzlw&qfyfxtxQk+ zba~!0e_djum2;qxTrAld`IB!+(`Xr9JGBt+_&7d1JnZO)#WAiy^p@hUHKma2tkXKT z$b@IkZ+*7AO8(vTbYAMAI%Y}TdbSAslpj{tBnU2!?E+@@d_OJh~~jrc<#gaKv({-nBQo_vs`P~5ZKp|7v&=4~RZ4MEGp8WJ?V^vX0Shw1y^~)mIwU8}N?0T+g(B|KTdf-AggWl7)#x zE*DljDB4_zQ|Pk4Dib? zB+1g+aMcn*XV=*%wQot6#S@I~Y<@IXOBl}F9N=-*W|>~8Nx82w_;W@5aUC3n;y#_b^72wOJ_D?HQG|_%=$=ZmqJ6( z#EjOUfvN!GGsHIp2}+-)AN`H%0T%V3!~Xqoc?xN^)-nunA$s<1j4F*nqwcf95BqOK ziQU7~ZBq39_?(w*kocr}SuBSDDbCF%mrhD?LO1*mgTOSag%0D+>YaslCq_8g%Ul{H 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 bool: ++ """Declared pure kernel operations require a persistent Numba cache.""" ++ return True ++ ++ @classmethod ++ def can_prepare_in_child(cls) -> bool: ++ if not OpenHCSProcessEnvironment.cpu_only_mode(): ++ return False ++ if not cls.requires_persistent_kernel_cache(): ++ return False ++ from numba import config as numba_config ++ ++ cache_directory = numba_config.CACHE_DIR ++ return ( ++ bool(cache_directory) ++ and next(Path(cache_directory).rglob("*.nbi"), None) is None ++ ) + + + class PreparationOperation(ABC): +@@ -64,6 +89,33 @@ + with cls._lock: + cls._completed.clear() + AutoRegisterRegistryPreparation.cached_module_registry_families.cache_clear() ++ ++ ++class RegisteredNumbaKernelPreparation( ++ PersistentNumbaKernelPreparation, PreparationOperation ++): ++ """Derive independent pure-kernel obligations from each declared registry. ++ ++ This abstract parent has no registry. Concrete AutoRegisterMeta declarations ++ own their registries; the common parent owns identity, operation derivation ++ and successful parent preparation. ++ """ ++ ++ __registry_key__ = "__name__" ++ __registry__: ClassVar[dict[str, type[RegisteredNumbaKernelPreparation]]] ++ ++ @property ++ def identity(self) -> Hashable: ++ return type(self) ++ ++ @classmethod ++ def cache_preparation_operations(cls) -> tuple[PreparationOperation, ...]: ++ return tuple(declaration() for declaration in cls.__registry__.values()) ++ ++ @classmethod ++ def prepare_registered_family(cls) -> None: ++ for operation in cls.cache_preparation_operations(): ++ operation.prepare() + + + @dataclass(frozen=True, slots=True) +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_backend.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_backend.py +@@ -12,15 +12,9 @@ + from metaclass_registry import AutoRegisterMeta + + from openhcs.constants.constants import MemoryType +-from openhcs.core.callable_contract import ( +- CallableContract, +- CompilerPreparedAutoRegisterFamily, +-) ++from openhcs.core.callable_contract import CallableContract ++from openhcs.core.processing_preparation import PersistentNumbaKernelPreparation + from openhcs.core.runtime_plane_projection import RuntimeSliceInvariantValue +-from openhcs.processing.backends.cellprofiler._preparation import ( +- CellProfilerKernelCachePreparationMixin, +-) +- + + class CellProfilerBackendProvider(str, Enum): + """Typed CellProfiler-compatible backend provider identifiers.""" +@@ -280,9 +274,7 @@ + ) + + +-class CellProfilerBackendStrategyMixin( +- CellProfilerKernelCachePreparationMixin, CompilerPreparedAutoRegisterFamily +-): ++class CellProfilerBackendStrategyMixin(PersistentNumbaKernelPreparation): + """Mixin for backend strategies keyed by OpenHCS memory type and provider. + + Concrete strategy families keep their own AutoRegisterMeta registry; this +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_preparation.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/processing/backends/cellprofiler/_preparation.py +@@ -2,55 +2,12 @@ + + from __future__ import annotations + +-from collections.abc import Hashable +-from pathlib import Path +-from typing import ClassVar +- +-from openhcs.core.callable_contract import CompilerPreparedAutoRegisterFamily +-from openhcs.core.processing_preparation import PreparationOperation +-from openhcs.utils.environment import OpenHCSProcessEnvironment ++from openhcs.core.processing_preparation import RegisteredNumbaKernelPreparation + from openhcs.processing.backends.cellprofiler.perf_fixtures import capture_enabled + + +-class CellProfilerKernelCachePreparationMixin: +- """Admit persistent Numba work only for an empty explicit CPU cache.""" +- +- @classmethod +- def requires_persistent_kernel_cache(cls) -> bool: +- """Declared pure kernel operations require a persistent Numba cache.""" +- return True +- +- @classmethod +- def can_prepare_in_child(cls) -> bool: +- if not OpenHCSProcessEnvironment.cpu_only_mode(): +- return False +- if not cls.requires_persistent_kernel_cache(): +- return False +- from numba import config as numba_config +- +- cache_directory = numba_config.CACHE_DIR +- return ( +- bool(cache_directory) +- and next(Path(cache_directory).rglob("*.nbi"), None) is None +- ) +- +- +-class CellProfilerCallableKernelPreparation( +- CellProfilerKernelCachePreparationMixin, +- PreparationOperation, +- CompilerPreparedAutoRegisterFamily, +-): +- """Own pure kernel work; concrete declarations own independent registries. +- +- This abstract protocol has no registry. AutoRegisterMeta creates one on +- each direct concrete declaration, deriving child work from the existing +- module registry discovery without inspecting callable or module hooks. +- Parent registry preparation owns kernel readiness. Generic callable hooks +- retain their independent completion and effect phase. +- """ +- +- __registry_key__ = "__name__" +- __registry__: ClassVar[dict[str, type[CellProfilerCallableKernelPreparation]]] ++class CellProfilerCallableKernelPreparation(RegisteredNumbaKernelPreparation): ++ """Keep CellProfiler fixture capture in the parent processing hook.""" + + @classmethod + def can_prepare_in_child(cls) -> bool: +@@ -59,17 +16,8 @@ + return False + return super().can_prepare_in_child() + +- @property +- def identity(self) -> Hashable: +- return type(self) +- +- @classmethod +- def cache_preparation_operations(cls) -> tuple[PreparationOperation, ...]: +- return tuple(declaration() for declaration in cls.__registry__.values()) +- + @classmethod + def prepare_registered_family(cls) -> None: + if capture_enabled(): + return +- for operation in cls.cache_preparation_operations(): +- operation.prepare() ++ super().prepare_registered_family() diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-cache-lifetime-refinement-20260930.diff b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-cache-lifetime-refinement-20260930.diff new file mode 100644 index 0000000000..0fda6cc93f --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-cache-lifetime-refinement-20260930.diff @@ -0,0 +1,96 @@ +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_feature_queries.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/measurement_feature_queries.py +@@ -31,7 +31,7 @@ + ) + from openhcs.core.process_local_cache import ( + IdentityBoundProcessCache, +- ProcessLocalBoundedCache, ++ BoundedCache, + RegisteredProcessLocalBoundedCache, + identity_owner_tuples_match, + ) +@@ -153,7 +153,7 @@ + + + class RuntimeObjectLabelMeasurementQueryCache( +- ProcessLocalBoundedCache[ ++ BoundedCache[ + RuntimeObjectLabelMeasurementQuery, + tuple[np.ndarray, ...], + ] +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/process_local_cache.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/process_local_cache.py +@@ -40,8 +40,8 @@ + + + @dataclass(slots=True) +-class ProcessLocalBoundedCache(Generic[CacheKey, CachedValue]): +- """Bounded LRU cache with one singleton instance per concrete subclass.""" ++class BoundedCache(Generic[CacheKey, CachedValue]): ++ """Bounded LRU values with lifetime supplied by their owning consumer.""" + + max_entries: int = 4096 + entries: OrderedDict[CacheKey, CachedValue] = field(default_factory=OrderedDict) +@@ -63,6 +63,11 @@ + def clear(self) -> None: + """Discard all values retained by this process-local cache instance.""" + self.entries.clear() ++ ++ ++@dataclass(slots=True) ++class ProcessLocalBoundedCache(BoundedCache[CacheKey, CachedValue]): ++ """Bounded values with one process-local singleton per concrete subclass.""" + + @classmethod + def process_cache(cls) -> "ProcessLocalBoundedCache[CacheKey, CachedValue]": +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_artifact_queries.py +@@ -38,7 +38,7 @@ + resolve_runtime_measurement_lookup_dialect, + ) + from openhcs.core.process_local_cache import ( +- ProcessLocalBoundedCache, ++ BoundedCache, + RegisteredProcessLocalBoundedCache, + identity_owner_tuples_match, + named_identity_owner_tuples_match, +@@ -83,7 +83,7 @@ + + + class RuntimeMeasurementTablesQueryCache( +- ProcessLocalBoundedCache[ ++ BoundedCache[ + tuple[str, str | None], + tuple[MeasurementTable, ...], + ] +--- a/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py ++++ b/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py +@@ -26,7 +26,7 @@ + ComponentGroupScope, + ) + from openhcs.core.component_set import ComponentSet +-from openhcs.core.process_local_cache import ProcessLocalBoundedCache ++from openhcs.core.process_local_cache import BoundedCache + from openhcs.core.function_patterns import InvocationArtifactInputEdgePlan + from openhcs.core.runtime_artifact_values import ( + ArtifactKey, +@@ -812,7 +812,7 @@ + return dict(payload) + + +-StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=ProcessLocalBoundedCache[Any, Any]) ++StoreQueryCacheT = TypeVar("StoreQueryCacheT", bound=BoundedCache[Any, Any]) + + + class RuntimeValueStore: +@@ -827,8 +827,8 @@ + self._current_location_by_key: dict[ArtifactKey, RuntimeArtifactLocation] = {} + self._revision = 0 + self._query_caches: dict[ +- type[ProcessLocalBoundedCache[Any, Any]], +- ProcessLocalBoundedCache[Any, Any], ++ type[BoundedCache[Any, Any]], ++ BoundedCache[Any, Any], + ] = {} + self._find_cache: dict[ + tuple[ diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-imaging-confirmation-observations-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-imaging-confirmation-observations-20260930.json new file mode 100644 index 0000000000..b342f9aaf6 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-imaging-confirmation-observations-20260930.json @@ -0,0 +1,126 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 0, + "label": "candidate", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-imaging-confirmation-0-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.974999189376831", + "prepare_seconds": "0.0", + "execute_seconds": "17.312246084213257", + "total_seconds": "19.956717803142965", + "wells_per_second": "0.05776258003355688", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2537.04296875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "8d22604ab07a5075f9f3b912e425037556c915f34741029c817cc9c487c4bb82" + } + ], + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 1, + "label": "main", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-imaging-confirmation-1-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5193252563476562", + "prepare_seconds": "0.0", + "execute_seconds": "16.02342963218689", + "total_seconds": "18.275223518256098", + "wells_per_second": "0.062408611823729726", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2602.6640625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "46fd388a00f03ecb90ebeb942623e8633fe171c18c850c5378932a105109073d" + } + ], + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 2, + "label": "main", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-imaging-confirmation-2-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.960972547531128", + "prepare_seconds": "0.0", + "execute_seconds": "17.503740549087524", + "total_seconds": "20.144600269384682", + "wells_per_second": "0.05713064571516003", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2541.3984375", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "46fd388a00f03ecb90ebeb942623e8633fe171c18c850c5378932a105109073d" + } + ], + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 3, + "label": "candidate", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-imaging-confirmation-3-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5604984760284424", + "prepare_seconds": "0.0", + "execute_seconds": "17.66849160194397", + "total_seconds": "19.967063021846116", + "wells_per_second": "0.05659792711959494", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2402.03125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "8d22604ab07a5075f9f3b912e425037556c915f34741029c817cc9c487c4bb82" + } + ], + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-native-artifact-parity-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-native-artifact-parity-20260930.json new file mode 100644 index 0000000000..3d97717a7c --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-native-artifact-parity-20260930.json @@ -0,0 +1,159 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "main_revision": "74eac059f67389ca071055c93fcbdd556ba79f1a", + "candidate_revision": "eba8e5c871a84b5ddd2581d7562798223ebd2415", + "exact_images": [ + "results/W001_w1_bf1__qa_checkpoint__declump_response_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__initial_components_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__seed_markers_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__seed_maxima_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__small_removed_objects_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__threshold_support_step8.tif", + "results/W001_w1_bf1__qa_checkpoint__unedited_objects_step8.tif", + "results/W001_w1_bf1_step8.labels.tif" + ], + "exact_native_roi_archives": [ + { + "path": "results/W001_s001_w1_z001_t001_bf1_step8_rois.roi.zip", + "native_roi_count": 986, + "members": 987 + }, + { + "path": "results/W001_s002_w1_z001_t001_bf1_step8_rois.roi.zip", + "native_roi_count": 270, + "members": 271 + } + ], + "normalization": "Only explicit run-directory prefixes in JSON source addresses; ZIP container timestamps are not scientific content. All native ROI members are byte-exact; all TIFF series pixels/dtype/shape/axes and physical/source metadata match." + }, + { + "case": "cp_tutorial_3d_monolayer", + "main_revision": "74eac059f67389ca071055c93fcbdd556ba79f1a", + "candidate_revision": "eba8e5c871a84b5ddd2581d7562798223ebd2415", + "exact_images": [ + "images/W001_s001_w0_z001_t001_CellsLabels.tiff", + "images/W001_s001_w0_z002_t001_CellsLabels.tiff", + "images/W001_s001_w0_z003_t001_CellsLabels.tiff", + "images/W001_s001_w0_z004_t001_CellsLabels.tiff", + "images/W001_s001_w0_z005_t001_CellsLabels.tiff", + "images/W001_s001_w0_z006_t001_CellsLabels.tiff", + "images/W001_s001_w0_z007_t001_CellsLabels.tiff", + "images/W001_s001_w0_z008_t001_CellsLabels.tiff", + "images/W001_s001_w0_z009_t001_CellsLabels.tiff", + "images/W001_s001_w0_z010_t001_CellsLabels.tiff", + "images/W001_s001_w0_z011_t001_CellsLabels.tiff", + "images/W001_s001_w0_z012_t001_CellsLabels.tiff", + "images/W001_s001_w0_z013_t001_CellsLabels.tiff", + "images/W001_s001_w0_z014_t001_CellsLabels.tiff", + "images/W001_s001_w0_z015_t001_CellsLabels.tiff", + "images/W001_s001_w0_z016_t001_CellsLabels.tiff", + "images/W001_s001_w0_z017_t001_CellsLabels.tiff", + "images/W001_s001_w0_z018_t001_CellsLabels.tiff", + "images/W001_s001_w0_z019_t001_CellsLabels.tiff", + "images/W001_s001_w0_z020_t001_CellsLabels.tiff", + "images/W001_s001_w0_z021_t001_CellsLabels.tiff", + "images/W001_s001_w0_z022_t001_CellsLabels.tiff", + "images/W001_s001_w0_z023_t001_CellsLabels.tiff", + "images/W001_s001_w0_z024_t001_CellsLabels.tiff", + "images/W001_s001_w0_z025_t001_CellsLabels.tiff", + "images/W001_s001_w0_z026_t001_CellsLabels.tiff", + "images/W001_s001_w0_z027_t001_CellsLabels.tiff", + "images/W001_s001_w0_z028_t001_CellsLabels.tiff", + "images/W001_s001_w0_z029_t001_CellsLabels.tiff", + "images/W001_s001_w0_z030_t001_CellsLabels.tiff", + "images/W001_s001_w0_z031_t001_CellsLabels.tiff", + "images/W001_s001_w0_z032_t001_CellsLabels.tiff", + "images/W001_s001_w0_z033_t001_CellsLabels.tiff", + "images/W001_s001_w0_z034_t001_CellsLabels.tiff", + "images/W001_s001_w0_z035_t001_CellsLabels.tiff", + "images/W001_s001_w0_z036_t001_CellsLabels.tiff", + "images/W001_s001_w0_z037_t001_CellsLabels.tiff", + "images/W001_s001_w0_z038_t001_CellsLabels.tiff", + "images/W001_s001_w0_z039_t001_CellsLabels.tiff", + "images/W001_s001_w0_z040_t001_CellsLabels.tiff", + "images/W001_s001_w0_z041_t001_CellsLabels.tiff", + "images/W001_s001_w0_z042_t001_CellsLabels.tiff", + "images/W001_s001_w0_z043_t001_CellsLabels.tiff", + "images/W001_s001_w0_z044_t001_CellsLabels.tiff", + "images/W001_s001_w0_z045_t001_CellsLabels.tiff", + "images/W001_s001_w0_z046_t001_CellsLabels.tiff", + "images/W001_s001_w0_z047_t001_CellsLabels.tiff", + "images/W001_s001_w0_z048_t001_CellsLabels.tiff", + "images/W001_s001_w0_z049_t001_CellsLabels.tiff", + "images/W001_s001_w0_z050_t001_CellsLabels.tiff", + "images/W001_s001_w0_z051_t001_CellsLabels.tiff", + "images/W001_s001_w0_z052_t001_CellsLabels.tiff", + "images/W001_s001_w0_z053_t001_CellsLabels.tiff", + "images/W001_s001_w0_z054_t001_CellsLabels.tiff", + "images/W001_s001_w0_z055_t001_CellsLabels.tiff", + "images/W001_s001_w0_z056_t001_CellsLabels.tiff", + "images/W001_s001_w0_z057_t001_CellsLabels.tiff", + "images/W001_s001_w0_z058_t001_CellsLabels.tiff", + "images/W001_s001_w0_z059_t001_CellsLabels.tiff", + "images/W001_s001_w0_z060_t001_CellsLabels.tiff", + "images/W001_s001_w2_z001_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z002_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z003_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z004_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z005_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z006_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z007_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z008_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z009_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z010_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z011_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z012_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z013_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z014_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z015_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z016_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z017_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z018_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z019_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z020_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z021_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z022_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z023_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z024_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z025_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z026_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z027_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z028_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z029_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z030_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z031_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z032_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z033_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z034_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z035_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z036_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z037_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z038_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z039_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z040_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z041_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z042_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z043_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z044_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z045_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z046_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z047_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z048_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z049_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z050_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z051_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z052_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z053_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z054_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z055_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z056_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z057_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z058_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z059_t001_NucleiLabels.tiff", + "images/W001_s001_w2_z060_t001_NucleiLabels.tiff" + ], + "exact_native_roi_archives": [], + "normalization": "Only explicit run-directory prefixes in JSON source addresses; ZIP container timestamps are not scientific content. All native ROI members are byte-exact; all TIFF series pixels/dtype/shape/axes and physical/source metadata match." + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-comparison-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-comparison-20260930.json new file mode 100644 index 0000000000..741a18be8a --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-comparison-20260930.json @@ -0,0 +1,242 @@ +{ + "parity": [ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-2-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-3-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-phase-diagnostic-production-main-20260930", + "label": "main-diagnostic", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-phase-diagnostic-production-candidate-20260930", + "label": "candidate-diagnostic", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-2-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-3-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + } + ], + "means": { + "ExampleImagingFlowCytometryObjectsInGrid": { + "main": { + "compile_seconds": 1.740203857421875, + "execute_seconds": 18.20097017288208, + "total_seconds": 20.68897635070607 + }, + "candidate": { + "compile_seconds": 1.732829213142395, + "execute_seconds": 17.05138075351715, + "total_seconds": 19.45638925023377 + } + }, + "cp_tutorial_3d_monolayer": { + "main": { + "compile_seconds": 1.7364786863327026, + "execute_seconds": 8.582533955574036, + "total_seconds": 11.024320675292984 + }, + "candidate": { + "compile_seconds": 1.7398372888565063, + "execute_seconds": 8.30009913444519, + "total_seconds": 10.760253278538585 + } + } + }, + "public_observations": 8, + "limits": "Unprofiled CPU5 sequential ABBA, shared current dependency pins and warmed declared kernel cache; mandatory readiness preparation precedes pipeline clocks. Server startup/shutdown excluded. 1w_1t selects InlineWorkerExecutorResources; fork is configured for multiworker processes. ImagingFlow has one requested combined spreadsheet and no persisted label outputs; 3D compares all six complete spreadsheets and120 persisted labels. Diagnostics are timing attribution only. No native CP/scaling refresh or whole-goal completion is claimed." +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-observations-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-observations-20260930.json new file mode 100644 index 0000000000..1073c59b3e --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-complete-public-observations-20260930.json @@ -0,0 +1,282 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "8e478cb21f89fe74c3d6ead0cb54c67a5e1047dc", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.9565770626068115", + "prepare_seconds": "0.0", + "execute_seconds": "16.431968212127686", + "total_seconds": "19.104486318305135", + "wells_per_second": "0.06085698238278879", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2562.51171875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "db1219c5b159e6833e050878f0ca2fcec519de2c42d21501e3b0fa16a51f7543" + } + ], + "cli_seconds": 28.711489841807634 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "aff922837632b9336af16f4beb2ad2653a46821e", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5156481266021729", + "prepare_seconds": "0.0", + "execute_seconds": "17.098694324493408", + "total_seconds": "19.284983435180038", + "wells_per_second": "0.05848399772651223", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2584.0546875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "308b15301ae26e3c386f34a80f73740ce56ce86e06f2619df72958c653664c8a" + } + ], + "cli_seconds": 40.94556597014889 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 2, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "aff922837632b9336af16f4beb2ad2653a46821e", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-2-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.9500102996826172", + "prepare_seconds": "0.0", + "execute_seconds": "17.004067182540894", + "total_seconds": "19.6277950652875", + "wells_per_second": "0.05880945948195033", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2516.55078125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "308b15301ae26e3c386f34a80f73740ce56ce86e06f2619df72958c653664c8a" + } + ], + "cli_seconds": 28.650908724870533 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 3, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "8e478cb21f89fe74c3d6ead0cb54c67a5e1047dc", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-ExampleImagingFlowCytometryObjectsInGrid-3-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5238306522369385", + "prepare_seconds": "0.0", + "execute_seconds": "19.969972133636475", + "total_seconds": "22.273466383107007", + "wells_per_second": "0.050075182544478736", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2130.3984375", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "db1219c5b159e6833e050878f0ca2fcec519de2c42d21501e3b0fa16a51f7543" + } + ], + "cli_seconds": 44.04017790593207 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "8e478cb21f89fe74c3d6ead0cb54c67a5e1047dc", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-0-main-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.8216681480407715", + "prepare_seconds": "0.0", + "execute_seconds": "8.508339405059814", + "total_seconds": "11.053738381713629", + "wells_per_second": "0.11753174766456909", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1431.390625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "9445e2147a0eb20033f983b4ab39e2b853f91533eb3dcbeb4d31416c3eb63b7e" + } + ], + "cli_seconds": 19.692984067834914 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "aff922837632b9336af16f4beb2ad2653a46821e", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.6764357089996338", + "prepare_seconds": "0.0", + "execute_seconds": "8.17212462425232", + "total_seconds": "10.570601303130388", + "wells_per_second": "0.12236719898180598", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1574.55859375", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "1fb6fe69f4bb6b34967442ed6e6628a5897e330771ab65efe36a9560fd540088" + } + ], + "cli_seconds": 31.47478622291237 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 2, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "aff922837632b9336af16f4beb2ad2653a46821e", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-2-candidate-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.803238868713379", + "prepare_seconds": "0.0", + "execute_seconds": "8.428073644638062", + "total_seconds": "10.949905253946781", + "wells_per_second": "0.11865107522360104", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1406.6328125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "1fb6fe69f4bb6b34967442ed6e6628a5897e330771ab65efe36a9560fd540088" + } + ], + "cli_seconds": 19.538009203970432 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 3, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "8e478cb21f89fe74c3d6ead0cb54c67a5e1047dc", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-complete-public-cp_tutorial_3d_monolayer-3-main-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.6512892246246338", + "prepare_seconds": "0.0", + "execute_seconds": "8.656728506088257", + "total_seconds": "10.994902968872339", + "wells_per_second": "0.11551708007207369", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1544.6015625", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "9445e2147a0eb20033f983b4ab39e2b853f91533eb3dcbeb4d31416c3eb63b7e" + } + ], + "cli_seconds": 31.615673600230366 + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-census-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-census-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c2d2136632f787a56cdef6cf5efac6a66f528b9b GIT binary patch literal 224886 zcmV*HKxn@oiwFP!00002|Lnb4kK?$~CVW4?qHwNefS!K6F9Xa)R%TUqy{EG)Pr9lb zcn1SPmS`tW$ qa_PbM-#=247g^lov}JL*I7_7#GeXZ33%%|5(w%{^H=Fj|*=RZTeSa{X_5JC1GMLV1gTW9i{lTa|{>M+`1)Ipv z0^oR27N+>=X|JFEIYMv^LpN}|z)h0f<#B&7%&*5N`Zw@W;2&J-7mwyofCT^P|KNXq z`0)So|0d74=@S`X6oc@|Oa8-MgE0LMH%p)JuZ3&;rZ5GsY4UUYmX9reD1afr5B0~p zzl83F{N*1v+Xrup=N_Xh1qTm;SLk5@5)c0#8O;CPUGjk!AvcZCevrlA-PFxT|KC?A z`WuA*`y0x@Pal#XN|XHm|Bru^H}Bt-q;8s#_v}@&A4BrCSw;c5_!Mox&sa1s^1;vL zoypIoCjO@vZDJUJ{}}_c+Wzt9Ts=Qi)FTjl>6Y5x4-$bS3ZC)DqFf_?a`GFp6eGwX zV+lY?RF)F)xA$!T{#F0zVRxCN$n{c(dKD(l_6B@m z2k830`QQJ)pU#J}0^D4b-2prT3?4$Z=2+_#Zm6Q{5VEJm&Bxn1?#~RV{jZh7bylti z(quOB6e+1-LUs3k>COlue%kuAP62%w8H8~-;f(7L9R$eVJ<6;g}U}o zpVy%Nh&^|>0pHjW| z;M2Oxk|k-h`J9CwQBP?JRdraTWU(;U9p?RBef7D>gPkAovK>GDXM}#N@Dg8DTP`Jw z#ku}CuP;GAy}Cprw-Ji7L{WV6Ww5x`AJ=nc^l+!u$1DJe;sHc~Fc#_BBfVc=a(>z1 zH{677@RqYk9iJQnZT z<9%3PiGGKFzyvM>)twcw92VdDoWCNL!{S?ee2?mD%{#En z)@$|mJH>KXeCv~4u@?olO6h%T1 zi*W4`J{~e-;Ky23H3-g@g91xYAY+*%%9cpj zCAqT;UA0bfI#AU%Nq-w_p*mrq#v{4YAF7+HhC)$nfYd>ft{NTL!CO{#f|b*W>{%7P zj;YA-P^!ejhh~R+x=LGFS+8}1$Xbl9Sd6(uZlUT%qk%vtuRVl`j34+(KX%n2of7(? zy*wssr#fP%hW!~kM^yP86|o?+9TZV&X=is%BnEC-*9q1QXWYzH)rlu33xy6U&g6EU zQ-N{gsYF(->bz?r5pADRCKE@T!rR$x$hH%Wq*P_?LnrJ5Ey71HcCLJ=uc=tHn4er7 z_y&82{B>|QgMrdYP<`{TyPV08<&#Gk;&a(eh{IBte#68gEJdO`l&C&el(nt65E zPEllJjh@14{Glo~hkSr@wHT^>M*X2Qpk&?RQ7+;DrmCTcGH?r^ivx(_Ou2EIp$jzB zyFwE^iV|w#UA}GJVUM%&u*N&vj9s;*o*c5MN4}HH4T{-9S9sB7w5=IW#t|hP^bJ8b z`1A~Y5PI6$DTa_1Nhc#|I;8mBcfclY1IK}Q+a4HbpgiPiE}ri z-8mw%XP{0uLnT65P_~?YjmUB5U(+JQ_p+xuirrki# z3G;D%O8q@5i(u9;at~i&s1DGj1!*&7Zih;Z7mK4wJq%Gl|iSyS$6p91LfAR_&q74UR$hj>c#%a~zFa z62@7cn3Bt)KU%p`w+Yt7djcD`*u&HqePUzz2>!}Il70!F@pP1z{8H%%U?X7|yXFVx z=ob(I1icnF(m`H#8+2@=`>YtG1-FE;BU(09tRvj%I8 zdqYYMhVsT;D?eUVENkkof=f!H3g!pguK4wWC08no%B!GqJQ6w}`ByXC4H4;}i8I2Z zK}TH@+K{bd(vWJ?sfcRjylpnu#7byFHg!Tff-zgVHKW^%xwPJC{P*Yvt+NgOn;xE) zP#)`JT?L7K#)@?Ry|yihjWYRi;){*F2=<+_@~pvH^WKnDl*R~0s@7={ZI{m7GwZ`C zFG7{>X9xm6IR}%j$qFe+Si}%gssof@j?tbHVSs+l*rLAMj`EC?$TgwgKpsl~g9tG1 z_n2FBE4Y4eQ}0Q2?8}K_VQ&)bSt)aWK=1<4pD^^J7lYRi&D3D2V@_wm`B1zI5d+Vt z6FF6Z+dQ7=IB}Gu4h&&hZNdV{(MczLi>qgBvy}GdB#TL7nZ!wJJ!THCCdJ8fCqAl_ zkPGPgP80@jhktx2kLNqm+}4HRCtbV0bJxgm6p#erqU(v1Z6kGL9LcLc9ML&1kD7PE>XA6*d6qR zCm9wcgN;J%vCOt7@=53#PGv1)k_BcO#;V{JXD8uo+!I@|+?85@pvZqU%$%`=*Q^lo z^^qv9sc;AIk0T|+dVCqK-ut55GIYYoam$VVL*H(D+1n+-)2=3Y&JF)Lxtq|D(|d3i z_fk=8f_6_DISE<$n%sP&KN|EHjhJ^0TlYX!tcbm=97?(gSC2ts=+vt&-9Ze7XMo=J z%2udiH*fIbgp)%ve*L5p?r1E8O9+qZ*6*KT^b!Dn4OE0MckmX%IzpJ1k&D;DFvXuB zLrS7pG=2&ICFlANbbem}>+%D>oMo`2Vv%Yxpmg9Vj=bICkp|IPMP5mWVCM)O;XEBu zisF;3qC4cSQWc>r7`}zEjxe6p!+{Sl2IRW3Ko$yMp{yg6=k-HB4}qJ42mC%IVayx6 zg|LPY9{1{*biV@E4?vQ9%ERxur>P#4rG&7M))CVEdWOX!TW(;A0r#KLQbjb2#!ri- za0qaXNJ*37SSXiJ9@L@y9ezYm(ZDuu?A8|R2w+O}-5m%5xUapZG@3<%P#{TR!WAGb zGYSjk63U|y1;EqD^2BsC;VY8B+GV|AJ)^<;>ymtiMXKzgP#}N>wcenf)0~Y(=*G!Yq^O^Ij*o_q(Ax=5*_n3t#+yGKV3Lxb%-b@+` zavecF6rLRarBc<&gu(?!61Q2cAcbk5bM@)|WF)LB_gJ1qHwtrgq1%LAm=_KxYr8pV z6a|&~R7H6ztzkJE3w!F}KPR#40d>3R)g@@RB3iu|n&YhTS4~rN{O4r%=gXn)`qS@} zlJRhR@X#Yxb%s18BV4j_yz7uEtrUR)hg7A+wmxo2vPu2q_u>VBxLD(V3jH{OVVWqJ zwJa$I1^FGJj)ig)D9@;8NrLq0_6exDJ1rQ#1+EsrrF9Da4KH{OodgxpD1OX3>LzAK$vn0@Lw4~Z@CsfV|^>RW|t7b0$2|KPwTtQ3zz63SL2tBtEjs!A%lgm z77!lvhLn^z1l-Nuf_;mMla^}c!pX~GA*~0bhqMxdrC(WTNst@2M9rdu&E%n$A!M~@ zxJn^H>A_f-moT69DKO8S&x$UU^`jdJV*#!mz=xCw2UcV5o7T;qqNQUSNMj+cAH*qp zs#uM=&sw*8D*NH5No66gALOTXtA2yLCzxVAW(a(XV(2Md0IZobwDPhCFSstgWk+Jc zU4nZyr6!}*A)#tAnw%sS)Ea?$L`h)&^cn{)3>m6a2GNpYSUBqhXG#Hgsc(BA>z!A(6S69*;5uwd2(%wtM3 zwnq^90F|zSvLQq{DJ+!rf%0I?a4Q~Q49H#TIu<+$Xen3a?HvHI^iV8}OBho!x^H}c zTmEE`f>_BN9kB=&$a(>JGGO}2DqCb387!3bg7R#@@RGNxRNYS&%V8m{6{IJW%)r9e z{EECMK*YenT!17|wY*~!VQ6u0;Q9f6;?pbevZJDT*NAC18IA>c3G%^E9^{`7T|gUd_1Fh-a8#C-7!W&3JMwv zQsA-uXSBR7qGd;7!CZoQI%BkkQQAsNh+wU=mVlo1#`JD>UtdDtKW1SHH$d6`bs`}s zSS;^e0Q3ydZ2)hhFa+N9(S6#uEX+%oQ@VVAT_!}Cssmk83=4Hrpgy8(`2Xo_tZGbrHI8@)V_i!qAUilso_@DF+3b z#iQjT-NE`v!?IA%p+4;Od-RBVMXRbt+(klIkedN=dgtatos!^%qJ1yr z`$rIYaNmN+^%D)y&J)D~-VDG~eD!+DjMu5HFpYXx{2-b?G z@k)wefo=xSDT!c3tEfY@D&AjKN)!utGXOuOq=aRgjf>#l6`(vuP|eJ+Cc;?In*sVc zS9qW;LQL$#drVReTHi{ zReo1VRt^hwGoVg6QvC&MjJ22<(o-k zVQ&WPDaWuMP_$Iur;!rEg4_&{kH*Zh|5~KWG!n*w-VD%B>kHQJkTm=Lh@ih#^Q4kc z016hr!{YwyVp(Ps7P=*L=QQXR`cwCasaOIYc)Mej8xP6Cx`6elKVVqoTl_)pA}`zE z_b6Npz4EP1=G@l zv7jzNO<68}hrfUd7}SKcgb)_c`T?4`6uiluH-+spM*s$pH*T0h@1_%uwESo+luIbj zXtw!F_#FKJH7zQHWsw9H%o>7u-0xGsT$$efjL?r&pyn1#15vEgp&z(MeTLIf1oRbl zIyeGQfn3{wyb6NFqp;8|p*yDe%bz1JOVr&E7YbmZs{?eWBMNl437#sWS1f}Cum%90 z^k@Li>)xo0UV#7>x;j92Fr_W$lrOF(BZCF74gelc=^Gz^lKuYl8v^QXd+;1SsjAch-;atLbHekkz3vH?&F&4>Tfvq91r@bj7wDxsLzCy9ZOOUH@kWESy zD!dP#yf(Hahhl+U0(;1CKo0cy8G^u1l=VZTB(bp83)T}_mfRgkJOr2E7!hhhyNNUw z-g?1%KBK_FF^2$v8Z_9zg3 z1PR6;szXDg$xQ18;3u0YBJRLL3!MLIKq;@?R zwgeWyx&U}ib0!uqF!i1a04SPUCy>AbSPuY?di^0|a~tc~C8|-mwvn71w!)F#5FgSu zy8m=x`Z+>7csv3Rz*y0RUjtz**i{C*pGN=TI532%{NtJ#0WDGT^3nlWMz1a2!?AKtmMRAX=_B|n14*hUwsxu!N^RkF3cUJbA-)U)mPM2hQCPA~6jI%J3Y^Gew*kCC>pazK z5d%Hv!BQ)Hc`c?IV~XZjl{!9s>boj5*mKt&U@V9f@4Hj`xC}=%cQ^w~Fs$2)7>RW8<5W zf}aEBPZx!FTGHND*5tG{vN47xjCuDHLJ`s)K}S+v9zT2akg+?t9ZCR#ZUFzrKeBP- z_z=-sQw3f<5R>1y;HJfOaX4q#vPY0)LHa3t1_43d1pxWu#fie;tt*gZ3EU<&4-g3m zLy}^ybn-8AfX)1(15>a`m{8UguzkvT&in(COjy6jTQLZ>T&ZbZDh2E9?YD6VXYiIA z5A1C79A(G@WV2FtXMrlKbvc`ZX;cT(BM5zfum#CAtTU8Yl3E}!ffTMFJp^4Z@pPNt zOj3*VwMe--7=l_9HAc~3z(CQ$djcC*=S{K-mKfqvTrWEIKGdVDZ8~%uR(!Zj5cV9N zVzZzqE7*EktW-g+PFP$u!rId zHC)3aC98})$=(3NNSD`Qs`;9#H{gN_y_sUASn^s>H3wC{$62YH0w|iS7EC9AY0h1+ zo3c{3O98cEJYd22!A-p<{ZV`*rUkKzARe-oAd7OVjBIw86GG()ZKwL?@EWoF#BcJ$Ns{(UWthvGw!JU~4&iuO8^l)lZZxTomA zoRd!-p~}B8(!zxN(b-_x72kv5qIFs~%a2)@!VOpe^bF9qC<;_LVX+rfECS2YUTMqo zV!M*6mPFx$cEktm-q2_OUx6?bEHcsG9-<|vc&R;i$|I8V}`o zuriSYD~o^a@jsWr|1AP#q|DIyfT;iqocWQKYcQkXh|X5OK;wu_pOSg_0AoNd7rPe5 zx>L>7U`b>qi3YuqfJ8Sag(Q^l5V+x&kmT>DhVn>K6K%%tO+hK;U^>OBndcPQ)q&=# zgTZLR-bMY-XnDyK_s+IKsX6rvoR+@ z*9|=o1O{z6$%)=(aL;k#C`rpEds>J0=KO_TL3@MNddC9GF86-w%5e$F$W6yjWl*cf z;xVrAYgqMTF@I8kHZXJpohdu)^C??3qS_v3qT`$=ygk{Z0r)BP^|qUX_ikF+iv07F zu9rHuY~1Uqi2|&{ej4oN(y$BM&}`Vz6kuU@66{87Yq!9V!LKn7Zal#)%ua&YxX*;y zmoUy!^FYQHo90Ebk$H`EUz6cj29yk#G8teV_$}^@!9Aq}^1Tbg&q4HJtY6zi0oLI- z33k)^!LvUgcmZgUBH(UdxHboFGJ;!}odmPlkd@)%FH#VjgE67h7GNga5%Y?AmOe@S1-oouPxXopz{1j+k3|=6$X`2y8 z&To{n&ZYa-8uiJcl&wDo#%&NKhT2}b==Rk3C6G8A$|CVn`vjdf&s5p%jc@d8M|duSs5pvq_;(D!Fv-v7Y_LX(Lpqh` z3JY*B1sq%?^9aP#hVO81JDNidj|XMT0D1@7JiPe#=C7OxPKJWxzvCxTgx`8B&f&GA z$M%wf(2pY+rd9nEU*zy_2cJ8Dc<74Heyc3Zb)3*!fz+7&xxD`tk28qyVkuYaJxCJ# z&Tnt=Dd~>w@^vq916e535B`P~CzgC1iTO*4)3r~0!KtKnv2~bH3JKFc&1d3_Di5$D zDJ--u2rbH)fbB=QT#MW*IU;r3aa!WqT>mC0swdWc*$}URbTPO{yVQp#n!;_^e>*_-^x_+g+QVSg+ zufGKE4`&S^sq>L(85rBc(?_PeMw;z~r(#~w*_e-o>&D+B{1vc*J|Pq#b?rDq3>Nx7 zyB-YJ`OWw66;?Kgwuk@nH?_kH@aloMkc&RNCd`nSN1V%_;_kq-F_|=*HuTQSlAJr_ z(zEPpRI6!XI%w!%>3!~1*3FVT`)awO7gw4rMv8{*rgMd%1XW)Ifea4>T&t;csA?R#Qs1 z5v{yDCvqT@uo`8Sj>io+cZa_a3@!Zxs<2Gde5M*qhNrQ{(uLX{uf-i`R6jPjzm%Vv z(%9M$dt>HG;sLKR@oxiEbkJ0A4}&Q|_jaHiCj>7?XMoB>IzC7|1mg?WDZc)`!f-6i zkobh>qc^j{Jx3zTtZ5H0R81D{#A5fSv;TxZ$al>W8?addlsv)M2=9M5m6;E8Juu3f zK{|3qRA=nX+1T5jW;Y0WbdfFcE^*AUU*D&_1wrtDq80vTX!|KX!qA7|y4FHo&!t-f z1=zz!r=6}Habb5K`B?z&0RH`QZ`?TGiB({scM|l5?76ng)60W@Wd1P%bh5%*xSa&I zabK`uZPZS+h0{CXM2WT^XUX7K8I~7Rk=O$3Bw$S&o(DJiFu2{`G=~?npD?=2}$B_*fk!y{M$1VRrO$xEU1mYSBD7cEQGn@jqU4`pQ<6aC1V>=d&6 z0z!bG*J4$nJUx_>6qH7e4?V53fyTqW^ztW(@k_u*tZ75nKr{t(0>Ip|SQy3IqFAUD zfmtX~8T< zjHpUH8#O+$uMPMGo!D*d>+@AD?l(E>{%%{V$!T|?X>P%}w*K=`0p)@8&VaJ6fe zpjUjWQRbi9`-xibA}?>(Srj@r=#r~ruxPKThB~lG(WhXKa!QS^ca0AUi6GbhF`>QA zUSRs&cI&38#`nA6mW|ojhW3bNVa&!GR z7p*~R;#7Yud7EHeL5$0!oZmG@VZS%w!;ma2@tZzIS?DJwp^zbXn;-gH^6ztxaXidZUP~=zZ-u9U3R?GH2wiL7! zd{1C-EQk!2+W?m(Und%fvfQ;}1=x*!9bhlHNH!Pubq!eHYXJPoT*l@46&mPnRfM+t zj3>csI+ye4FO@i`hHa&5!P-|P2(a;D>SDH@DtPb3i@fX9ufPq`R#1N>oD-c0q-CM| z8{7cDIJ$Oah)a#c9Gu561_awwu(JHNttnF8+II!78e-k*%Tr(utaryJkbIl4_n6;0+=ci<1gzG_EydBCG2=s%RVYd~%9$>GT8WgFg{XLL-zl0=x zOQEWKg@l5!+cJC?g3+iig3)ahu1L#g52y(x+W0M;E(9k^>-wY5foG(wbfMM66IB2U zs7nEAE&|k-B+0-n{=90!i86c(rVD{-R-fz^Ajm&<{#8EXkM}Q98{p()o!0=AoCp?F zmjV^TLj4(`A4%+z3M{+QyhDCXMOZaZUkK!CBq4SomZ@lzQ%c4ubvx0^_3w*=vJGCL_fu1wq`GDWG|72R{we2w~5c*mN3pB1L!vyAF z#ESN9@Y9Q&u!f+LC$WWOiF@0L*RhsbTqjU&r9k|mm9t5L~q#leL4`z~yJce;i!b4%O ztR9!UD$^u}b3L}L@ZgFbGP)CO(i=%kZKkYBr6sph+WScciGH0jLa95=C^fum=FpU- zjjZ5yMmzJ2mgIWYoomx6#dmxQ(OO#7}U+r&|b z-;|$5GG`B!CAU2;-xy?ld64PclaCLxEA-^k4rqh1Fw>m)`i}%SzHw0F$!@{c7;Hm1 zu;uFtBcVo>+ybpJ&_+U_6-7*lz6~{PLIqgZHHO`IA`iO<1fC&yF%fVz(Jj;(Lv1<| zru`UX)C<1!EC#TxkFfe}m89>oY(kGkO8=|AFaS=gZ{plD_~PSNoo3w{&Fxp3 z&+7nY3vM@1P6OGD39_3w4ltJT6P2dnj4Qi^+DT9wv1ishka!5j7&FBw%9Sxd<4A5{ zb`s1et+~HL(s=kT^748*1{pKH*lpH2axqNGfjDqG61D3Z@nJZj!H~G!V3DDfYn1QC z7rSK`CdD|+K;e{z!avFFCYeE&z;=c`4OBEoZUHtfRG?u&;R40LI zHll#)#xrd7$r6|npR1X*_I4^bw$<)bu<$*n&cvY~y%;qU(*o6`{YbxFQm z;gAz>8H7Et=yvKp1!%+GNCIeozyvN~a3QF5$~BY`z4bcN8#j(&xYpU?4F^3w5I>Vz z+eLADr8aLxBG`<8OQLExkU-UMFiCZ8an6GyRdzdfLZPR}dx^eOpnG~{Pi)?{) z8n9>^{kIuHr22cQ?3~gjY>RQlwg5W`VB?`+-?h~GBY4LC@MS7lba?xfDZPc;X>gkf z;Pw$K%22G)MYljZ320MMK1t#Fx`DxfOcuf6o)5f}0@q1<5s&!d z2L;aCSJ`pmC`la{!qjoJ=I*d3!CjqOBJ=1f(|(*u@@rC2JQ(Zpm-rt`;C~SV&p7Z` zg{ENk(<|_@qH!+u89SM^F_}r69zSfYuJc^RsaEhQ^y3I#_PARI*~}JOj?WLp2o3|7 z3b7h&1^QW9H0u&`jmWbbWI$^hGM!4C%ifhDGQ*1S1m}3fys`m2D{{?gUohrNn+NNr zGiW*QOO{J8j*?ZO&oQlY=x!%=DIF;`wU^%sKeW~1p)hf_#3s>6$~H$DPyXZnM8eAa z2@!a3--5{XjWae>*)L>s3^ym%6=0BbFp?mt&aLQp@L@NjJ1Xo-GD!TQ@F8smYfRu% zo&An^7KdeL1u9b9ZJJINSf6D9-BA1?wDspY()>rVUw?a%Hv__9Sri`+^eGrdU|6%!XRn zeHm=64eVed;D9LxmMgP0uqT0QNZXeymHU8Sa*uzUj9CBKnBV?Kx%#v|6*-yD1dD!CECp9)`hG00RhxvRXiyifGj>HJbI0w@!+K3H{pDPhkeA-LoG8{9*3h z5WfUHMlTnu1=_7OHCJf6xIPJ9Q(8dq0mgvb@X3edpiK&5Ll7pC+k)&Qkj+HvvP)K( z=x|SLsTvcxtNjR)EJ&|#VD!-67Y)L~y@30CBABwxo3B}Rlof)Ymt)Y>%NGf5mlJk5 zaVFa|>(Qp--{3R22X2xTWu-rbDS9)*MoCC+eZG@`Ht36imKX`L#7>5GGPILn2W-@E zCK3EFG4NsSleJIQK3&~DjcGpA9av`To1zA}5ypuvFooyWG8Pu2k-!#Wr$B5@?Zf$iqBYh{vgNZO0TI5`7GS3VY{s%-WpC%t z$h}}^>+ZQ?9I>fUH<=0cgK%QFPT)*(?Cneyb{)>3=wQGJi64GKvjXEB$!&PthR1Ep z@EW#i++(B|e0>J!8G@I4kRs?Akzc?P*?Ov{L2D|2)|V7)i~?3wU<<30U^STuV6`}^ z9Bu-#YBF1Jodm9_$Yz<7ZO4$FRqbNysOtB6v~ByM!1wW& z`I@CzQ9vnlNlMZcknMlZaYFFoIEO>Xs}4ad#1C-E+UQ+C<$z}F?z1%idSy+gZ&(ld z2O{`F+epM|_!>d2Vk5UWXg`@y*#Q8YV>&?h_R&3Dyq!y z2oxH~|E_V_zJ8CIa$X)^F{JMfLt5r>oudMoS2?RA8pFF-0e7ykv(8-PI{=|7KX$`$ zmQfb^&Jzq%t$EU?X3Q7JF{L*TLt1);%X*iBE7hcw7>IRDN|4W|+^EtIV=7W}Wu^kY ze1chvx*pr4bP2zW!WBfDo#zdU5**YgWIXiF)UIZ0=W?;*%k>zS|4gl}$851|RSfN5 zJQf;SQoPVGJ6jdmMi)-Q)?`kN;fH?ovMq1uU8s0zr?ABnxy=|u5vXUjN7V^>Q#SM# zVB=y9c=s;)aZ&{J+CX9nV0R=h3aQyh2&oH3<@W}ya}j!h4(#lC8s4Z&;8NFy#6ua< zGCGjcPZ|Ayx6$os?ofXM<=qMZzBB}?A_)R|x?rzHMQHr{$=nz1LF zulQXLQ2;$t<{O&8)`>X{SA!7`SLiU3Xr$N7RszS#`NCYnx9Hul2Vucqf`8a&g8y^m zWr@karz?O1`WjQN34ZZl&bBq7wRb<7h!|qT<^xCKQ@s4E%@Qqp_;wjC9OSFR~UzgNb*=I7#9ID)$`cRFuVDWbv{$^7N{Izfjs^i!b zpMg4b#$}Lu9rydBky)}7WSR8(g3_ht5k*RRDUx*KfLG&DS#p%*==Ztdp5O78F=YK! z7nd2@A-6S&nc6sG9eBfu$SSvSsJ7ddS@NK**p{D++>68#+2cKP#E;xf=&}#CX&p$L z3OUtct+q}xt4aMfaqL^Ml4}Jr#GJ{JYmye~Ov z8IlJg65M82UMa&lI_d_q*P9b0WHuQMDSaoD+wPX=Pl-9T3u4U%;kSPYeei0Y z^{q?ZW<6yu3R4$yahGJyOQ1hFaoIizH#cc(6`;EnHN04CRJ6)hTt zwZ$d$hkZ%t|0@FqIw%y$S_}WQY|l*0$1{kB@XPTJ);2}*R%eb|^3vE%fVoue zVPSSJ9}en#3L;Grl3}7wgo5n+L+8PuC$$zh+5k123`}iM9Wu$yvgIBHVejrFD6SQT0NJ?{qZL@{|s!m4t8_-7cT0AV$IN9NwR1!8|Tl1mZV zo`^9pMW`maP2SLda_oyH$3mS1{06gwDZkC4I|+5zCzC*3;g;A~9aRxFPNxG8q|!CW z=QlH5gCe<2*N{lpAPIlizXxbjc?7%?+9XkiJW$C7Jh-QFHGmtKR*&|i84Bxv&vA(V zj0Z$X5;1G7F&xu^@8tC4UF7BR|KSGEZ*K>@1H_h;p1R^Ve0FzI<|o!2U-Q+m8+>$0 z3kI@mKJeE%6Ppmpbdettsm2~SSHr%{n%Ea34j;-1FK=BsWE8CL%%TA`a`7>L;5G_Z z5N&c4T&^p8$5xGE(WwNeKSpdfM1a8Xx>3E;hGq#;5QN^7tI+93O z;LiyCSOw9GDXx#4@DvE2=(bRntSY!Loto_VIqKkDITNP5RJW3GVB$KCrR-oV;7hCyJG(?U2OhheSVCp@Y;%0DV<~SKtAN-nbhTMQIwEKXHX=rywNNYD_ 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 z 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%0A-?YP5-DX>Ha2+;)8b6|+zH?*DxO{#`@C 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 J-Apg$J^;YEI%)s_ literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-consumers-20260930.xml.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-consumers-20260930.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..6de5fbfeebd8086f1ad4521177dde4b5c68e7024 GIT binary patch literal 14830 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 U4_CMU_x3OUAA;1=Km_Cg00F=D7XSbN literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-comparison-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-comparison-20260930.json new file mode 100644 index 0000000000..d1ad1d4231 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-comparison-20260930.json @@ -0,0 +1,124 @@ +{ + "parity": [ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930/ExampleImagingFlowCytometryObjectsInGrid/wells_1/workers_1/images_ExampleImagingFlowCytometryObjectsInGrid_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/BF_cells_on_grid.csv", + "sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c" + } + ], + "exact_label_images": 0 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-cp_tutorial_3d_monolayer-0-main-20260930", + "label": "main", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + }, + { + "case": "cp_tutorial_3d_monolayer", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "label": "candidate", + "control": "/home/ts/code/projects/openhcs-benchmark-runs/perf-plate-transport-full-candidate-20260929/cp_tutorial_3d_monolayer/wells_1/workers_1/images_3d_monolayer_final_source_workspace_well_throughput", + "byte_exact_csvs": [ + { + "path": "results/3d_monolayer_Cells.csv", + "sha256": "4d8c029000d5886e4cda889fd1c5f7f13ea31330ee34b1737feb190e2079b32d" + }, + { + "path": "results/3d_monolayer_Image.csv", + "sha256": "75ac32ff5ef57bc285ec4eae1c9b501c27a35b486bf35435af5d499d856d34a4" + }, + { + "path": "results/3d_monolayer_Nuclei.csv", + "sha256": "2acbac3e2cfa9b62f17d1fccaf8b079a47076b0ca842f652324cb0acdf2b905c" + }, + { + "path": "results/3d_monolayer_downsizedNuclei.csv", + "sha256": "4b689ed9b94031f1ced06105b2617ccac539d60fece387450d2573695e0aef08" + }, + { + "path": "results/3d_monolayer_erodedDownsizedNuclei.csv", + "sha256": "9d640239186d1e243a251263f250761d8e0aacbd802952eda56d4ba3e4b758e0" + }, + { + "path": "results/3d_monolayer_erodedResizedNuclei.csv", + "sha256": "e49c8600995126ac6f9695896eaf5572567bace3a5872437f2b740ee73af308c" + } + ], + "exact_label_images": 120 + } + ], + "means": { + "ExampleImagingFlowCytometryObjectsInGrid": { + "main": { + "compile_seconds": 1.5001981258392334, + "execute_seconds": 15.848503589630127, + "total_seconds": 18.06339219212532 + }, + "candidate": { + "compile_seconds": 1.5092723369598389, + "execute_seconds": 16.565940380096436, + "total_seconds": 18.740222160704434 + } + }, + "cp_tutorial_3d_monolayer": { + "main": { + "compile_seconds": 1.655738115310669, + "execute_seconds": 8.36199951171875, + "total_seconds": 10.77700023399666 + }, + "candidate": { + "compile_seconds": 1.6831753253936768, + "execute_seconds": 8.316172122955322, + "total_seconds": 10.753202839754522 + } + } + }, + "public_observations": 4, + "limits": "Unprofiled CPU5 sequential paired qualification after main PR317; two observations per case are parity/source qualification, not statistical performance evidence, shared current dependency pins and warmed declared kernel cache; mandatory readiness preparation precedes pipeline clocks. Server startup/shutdown excluded. 1w_1t selects InlineWorkerExecutorResources; fork is configured for multiworker processes. ImagingFlow has one requested combined spreadsheet and no persisted label outputs; 3D compares all six complete spreadsheets and120 persisted labels. Diagnostics are timing attribution only. No native CP/scaling refresh or whole-goal completion is claimed." +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-observations-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-observations-20260930.json new file mode 100644 index 0000000000..0302c8fa8a --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-public-observations-20260930.json @@ -0,0 +1,142 @@ +[ + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "74eac059f67389ca071055c93fcbdd556ba79f1a", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-0-main-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5001981258392334", + "prepare_seconds": "0.0", + "execute_seconds": "15.848503589630127", + "total_seconds": "18.06339219212532", + "wells_per_second": "0.06309743972637975", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2524.1328125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "a66d2ec852ae6cdb16bb4c0b70d3f8a32c48b6044ae301be3611fa2db8351560" + } + ], + "cli_seconds": 28.73978745099157 + }, + { + "case": "ExampleImagingFlowCytometryObjectsInGrid", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "eba8e5c871a84b5ddd2581d7562798223ebd2415", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-ExampleImagingFlowCytometryObjectsInGrid-1-candidate-20260930", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5092723369598389", + "prepare_seconds": "0.0", + "execute_seconds": "16.565940380096436", + "total_seconds": "18.740222160704434", + "wells_per_second": "0.060364819446137516", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2584.3828125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "03e0512487d859ace264e90f1e50a2b127ebc600e59aedfbc8d65b62e3628556" + } + ], + "cli_seconds": 39.863566623069346 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 0, + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "source_revision": "74eac059f67389ca071055c93fcbdd556ba79f1a", + "runtime_import": "/home/ts/code/projects/openhcs/openhcs/core/runtime_stores.py", + "runtime_sha256": "b7de53edda4d2d7abf39d052bf4b2f0079282efb7e1ed332aecc7a3a74ef0438", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-cp_tutorial_3d_monolayer-0-main-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.655738115310669", + "prepare_seconds": "0.0", + "execute_seconds": "8.36199951171875", + "total_seconds": "10.77700023399666", + "wells_per_second": "0.11958862214696028", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1550.23828125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "aea4d49f55e391523f659db6eca1b7a18590833166348a0cba97f1bb5380039b" + } + ], + "cli_seconds": 31.87670122459531 + }, + { + "case": "cp_tutorial_3d_monolayer", + "index": 1, + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "source_revision": "eba8e5c871a84b5ddd2581d7562798223ebd2415", + "runtime_import": "/home/ts/code/projects/openhcs-compile-perf/openhcs/core/runtime_stores.py", + "runtime_sha256": "5c68d952a8e86d70bb1d3a0b48a0cc6e3bdc04e39057dd8b9391d2ee14ef8167", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-owners-paired-main-public-cp_tutorial_3d_monolayer-1-candidate-20260930", + "rows": [ + { + "case_name": "cp_tutorial_3d_monolayer", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.6831753253936768", + "prepare_seconds": "0.0", + "execute_seconds": "8.316172122955322", + "total_seconds": "10.753202839754522", + "wells_per_second": "0.12024763138796477", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "1561.3671875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "5cc07c45ab49b0f6426daf93160288605a5ae84dffd79fe9b75878c5372adf49" + } + ], + "cli_seconds": 33.588328421115875 + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-benchmark-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-benchmark-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c9cefbf2a2a31a60900bdc50c4d6081b41484ddb GIT binary patch literal 12124 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 W-iFT!?{7cfL%1{I_b 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 IS4oN&0Q8CrYybcN literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-scripts-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r0-scripts-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..97aa8635095963f67f9c602c26e77c951cf60468 GIT binary patch literal 3245 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 E4X2z!LjV8( literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r1-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-owners-paired-main-r1-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f57ed8cbf970e3fe5811cbe8bacf0fb1883b7de GIT binary patch literal 528 zcmV+r0`L7FiwFP!00002|Ls`8j+-zLz2_^UoTDa?I6!};T3KUz2yVcpwrQ1J?Z4M1 z%{Fb>fJk;%mAD`n`^`MhjNeE+&F1q31B;8#^F^{n;A@iQyJVAQ9M(y+CWL33oHHQ^ z*)d46Jc7kCpb7*LP{<%f!qX&zbjyekA|`1h60(bvEREw0G7)bhazgO})E)!yi~sZn zU85?vU2$!2RUz2MV1>%j9Krc_`mI4D(SE9rt%qw6qkqr}oZk8a$hL~};1 zH2aD^MhOf{dXb8;jxMwL-5a#&^7K0+D+c_4O4vWW(qHCL*y~B|#dF=(^!57pde|FK zO$kQ2;~03zv$D5>sgTwg$(pgJ=%}bqO;af_;i8PHt1Y0$F~CPON*-FMM?SPtz%chM z|Dps>?X#5#&}r@VvY!*y!%NAQHU`k59y*Am? S4}yo;^Xw<=99Ju$5C8z_(gsri literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..191406a910209b0421d4afbfc7467ea846c4e0ae GIT binary patch literal 90826 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 z%0AQ5pa?lJW(-km$TU7zdJa#dwJtE@h5!nGD>kI4@MW#0-Ckp>HJ?Ajmj$YqPI<^$ zQp}NcUbzmG>0EJbQoOIkQCU85tfoojIF%c4Owtc0DUNbq4;n9s7 z)`Fy*mKm8_kL~&b$r5M&KS`7 zCJQW(%mw0{3KfYMrLtY9l3`PJP>OTVJZuGcw7Hqh9gbT^CDlb36y0RUtqEs>t=Dg_N#@NP1aI&6jKD~V#o(x&1B^E;TYgr6IAyo?LN4QDUB%KUFu|ft*hDMdN zkZD#UIo#nyOc=~u6l{lK7?hVl$KUf`EWn0f?Fl6(@Q5-M&+AZ2hn|lLF(m>bWarnD zW35I%v;m)d`-M=DP%}Pmq=ZCpI~wl2;1)S)GE=w@gZHFTGA9BzO2^D%7RrMWoxt`W z{6&O-AJ47aeTJ;!Ogqv^)>!I#@gO(9+!1DF!dSE#<9e-Q;i`gNM`QMbHOXRQS3v* z#VEC~gVN`3fwNI7Ws{6Fl{g6SOsdvSW6waV=!Vomj z&(`yN zxVU=1uT+vk)lyOe=DX*CFX@|>HfxhW!oyW-@c{#1RfGv(^YA4lcfSD)UJ&h2hP}_pbN?k`zi}Yd53Xge{Rc>9 zRSdpV#d+Kdm^wVb;&aGyZDC%SHzZr^e6+QRj$@)EE`v{{F9;H5zT>-}uC5=89~XDG zzwGhC5dgK69w}83^3|p9wR~x*bX9mY2Tj#W8Mv}(Lmpeo;F6A{|M}7lcBDq4Xg%V~ z_22x=GzS=IF9I8CBP^U1V=F%U=~C=J0Ex|&?XA*iMh3hA-T`+eQ}YSlUVj^%i{k!o zlnzw~Tmozsj9wF|v|JIsx({R%S-__ zl2I;{km)K`f>Fwd()e*EIr4Lp52i*|CKq44lO%Ek&Ny5!^(OK&KLzw9p85Uuhs#gb z56fueaFh!RJB8XBDOz9P$t0XvNd(loF-f3vh{bN{@H1e{6rCU=5fzpdw?<#|%VPNQ z()B)$TQ+!CLV;eKuJFRkI(P8Bh-E6_VL%*WI2|$RzGz_Sz_XyrtsAf!{ue!`UBKqO z$De{IGw6a#&4XSA5vt|^vp9xLp5e%zKYB8&^ZT+f;(+w>0`M=+Od=hN5Wp^S&=xM8 z!+aF5q?)Kij1U^r2uG6Wk74Cga`3)geftKV1qfEEIR)2 zc*c%{m2ozhA*<`nYzA<+Y-*%E^VHyIfoqpnn&Fqph2LRTKHIn*@^nv1FPF#;5X_en zZTY1SaOzNm&~5+rLd7PL1Oj`SFIo`}`wN`%^N*D0sT%jMv#E z*AI;InCD_?o%MVcZ=QAH&K~Dcl(XT3_azVOCM&L!LX)1WnNBU;?3!dIi%JpAl3Bz* z1T2>_22^{>`TOD1_4VVG@dToNf6D~U3(p>bdrf5B!JZ~{!%MGv*$KP7zrT0{y&rtt zxWT>6Vt)g(`97_t<%8dCe|*G{!wx-M?LildkTJFdYO^*zwZ21h4mW1#O0RK$*xqfi)34xWz+u=2v(6+vC+!P71#G>31Ml9HXz#tr zx|TMfHR4;7qqxJ!v$Q68`wNp}LSoBfx}3i74C4rSrJe-C5|?$)aA-s~h}|d-?ZwL4 zXSgD^bH9!hz6sY-J*v8b|V4XE+pcXp%*V{N=D;s~uv6_ka~I*m#lR%#|vd-8?co_jU2@OiFkhYe`BKZp? z3*$+!!X>z%ydh123fyn%-j%7C`-D!G%=CnmCY(bCgLPm*@I2tu;`>_-I3Z(UL56M2 zCj1<<6gkx8)fpC~q_?2_1GD)1WG%iATO*@7)dN%nu&3IiWL7N z_89@$^VYJX_sN%|>?@qM`d7iZPE^3IS*d5aUJ~?+neLKfxb%PA&Snw#Hlc45`Zl4{ zCv^Dkun?6zTqHO1SG5E!P5y$2&ZyrMiC-iVblqCgm&KYXy=}w^i3ML=6@oj%US*cY zbhs&QOU{TK5O5}Y#g%NeitPccd}a?93;L;Gs##xUj+Zw#hrHYJIcts$NmtVv)B9TG z*yC{8<`f1}nM)yxyhB=I5?V`Ch$V3fDtb(d@_gM;wgi}1KycN%K5Y=vW4Uni;-P1< z#qP4bussT^9?LQG%^^PngO}3}l@9vwM+`ljO1NWbsP$u__b)osgSz zXFXHKStfOy3l1>$MuDHBv5Z4-YIdjQx3jg<(zysud6ZWUM1Io?YAK4GZ6Scu)eA1O zq$R7Fo<|=m8Mk7PSdu66^YEMOUcl*fq8Ce?&mK!HR_ePG3`O|mBKT(7kcpn!=R)?K ze4>7FCeBAQZUrhBXFFZMIFoNk*%XKG8`5$CWA1Tm5}a2GJNfDQ#etG;*k3SQl=PjY zUrf!?LdDD|%-IdYk;)4@`A>iQh=us`-CusXySn-L3=UaRypXu0Ho8A4weJ*8K#^uq zp;Uyy7U>Z%%(jhtfunWbMm~#FRyPqwFvHu7g{qt7ShTwTji345CrodWW;T+fpZaJd zx{PtHdCkL*3Jgz>2Cm;J;^o!W?PPUf^8J~nj95BSzxuS9p06)Ft!j4W9HyyS6Sd(a zC+zlQDSGcY%%E(Ao5~a*wM&Z{Ttn?Vhr>sSI)edML`tEM_R-ebs~w=Hb4Qz9&SkX_ zM>ZFd`y52lrg9E-tiylCZ9*|Z3NT0)dp?UpHj+LDr=4^)t-Yk{&@r5RJ<~533!GSZPE_A)?e2H!@ zJ{d20qFT6RMpDpPlb6S#r-y98WhDw)l_aEnGv>~+rP0Ep~V+0>;@Ga3sS?aay8bC z@Vdw;M3VR)r6)w-e~$L7$C_~b6^0sdzvNX7)M*?_m|>LIxE4HzEIq|%b3&|5lSKc( z*8xijF_w*59(Kv=P_R@bLx%_QwwC1LYha}mhqOlV#%vf|*TG6P`XsU`1~1q!qqS!v zYxT-dj^aI~>MBqvjGCD4f>o+c;;+seN|8CNWU#I9Utnz4@}{PhXW>Y(!PsLi&28zE zn>nsL>u_gFt~jR&-*~l@%v|AFvZ9tmq35bz)0$bMN#)s`*-F61l!!RQ*O}OHS2-*EKmz zwT_v`9Ofnqr53kLZ}NEqVy~3*Vgjdgzr%z8Ee>Ub`{yDFci5OY9O82dO|U|CotP#^ zO0x?mFq7A*aSm8&43n`Q6Ma2<9y1^XE-VT%4lk*cI&e0}5e4KWiENW?Bz7`z9+PxW zY~`{_3ShXdVdPXMWoQe<4{%lzxwm4ME&H-8FEf91ZwY=HOF&9quZBHuR@;r-14}S- z(leE4bqY!l3|E-4IgTv*J4TZ+O0>%CX(W3SO9lCCHmLGcB(AK}B9Ltw6N|9~yu1S2 z_7NS2ofTaSC4f5wC&itTySSJaK?&qDv6PVov{LRR*Oby+ECF7E@)aa-&Dfzh_KVO2 zvY}Ws8THwbT~9<41XGfRG~!U6_v$CZ2`Gbz7lk9+*Z>0C$o+ANEWA4_m)$_tWauG0AxeIq0z5Z~Bzh0^>b=}^gcf}LO{LrX|?8hSf53z9$SoAvFjY&WTI3mn zP0Fs)kD_fTqzv`LncVX>?XfC&B?z*4Q)<4i3eaT|CkSR_{D*s+;ydwJ8Td=Vle4SO zh&->qwD#=x>A{-Y1~Pv$%dbg2%Aq? z!Y3lBf#*Y1&1iObx#5;u>@dux(1EX;8gn0M@Y5k!M)iJ@WS((x;tnm83$-%v4aG9E8K2`fCreT96Z4RABp)50Gz# zn^2qh9hJSx0Cm+GF?Ta|TBM}?m&mlZBS_CtGh1i->p#MEF3R41(jJ~h)O3dUDcq_C zlO)4rj-~@oBH=;!Jd_W@iFEVDuQ;uJ>Xjmq*1B&zr^T;zhJ_O%-Et69C#&Mnh4soj zAwD1z@FnIEG-dFg@NBA92kK9iuDjojtbDj##gnE19EwyiAYz$Bs;>RTPjQf%@@yzZ zWZD4nQ?`|)l!*9+)ARLdpT3fTV}iGOBIAL1DS7BQ)W+M^@}>A#W3*4W0^`H5uhZHsCdIySAZjJgan+B85ZXV_6RAi$`{yJ9*jT3M_|tgK#mDZ=fcn6+IlM z_5|+6$}TAa8ADZeNDe1C#MvaH5nR*=f4-EJSPm&-%i~apek4?!L|f*P$W_V0Uff~pO`|}HoOK0VX?zh>g<7f;c6S)gVn(tQzLTg zi@P|3lj+0}XHqc*Qa!Urz^Q|HjN@nV_|s@frCv=?R+bPxS{X2l36x~fNWzUkonfmZ zmSGYeNhX1&cwJ)5b;KG>!6Ip7s!&`ckW=#rEOL4VFOh{h@gsZTgVQibI*l#PmFS_} z!aZP+6O)}OhG|pqM{*m69L$O5lsb$`DTc&OASDf+7u>Gr!XNbsA6OBVv+JBzIQo>(-c%rKi; z5gyAS3}y|>F_=!4FK;N>VtOpDcqVqg1cRB#8W38u6z+IWM=_W$gpW^}%oGDtHd^+= zwtf#%WXvq)VK9S4xZ9Pz@sjpwp?8_i?sp%5^WuB#o(bOHLvwg^U^egy-fi23w0TrB zyWhOqUSH$iW327n=JBO>1LKdKj|z>75V)~Er9#H>dCPPzCR8>ELnvwp_ofm!;`2Yz z*_hD0iKNlfpr*?1=uTtL0EJQ2ud1-dZ)1u9ZMWZVx5TB$3+!l8FMN-fI=t7 zm=6lw0Zkqq~4!xje zMer7kwdI=pjG?CRpu_@(LI(%8b8@pW`}Hs$G;gfd7=$??#9znT)z6s30uCfLK9O)U zlSfkrQy@_=q3$?GSbz7GIFMLHfHNE#p|BSl&VfYyA~V4f^CFs_B@#_m3b!_8*kjFS zzTycSNQK;`B`Dldt7SY15~=w~wVhxX$zU^%1*z6ruv=sGnqyh+bDvP!tMDE&LRW7h zRCW3*Ufpb|KXcXrp|&5~21-ORdt&+AVW$oVPKClnWdBYuSi^J1ntMdjrbO)1j0j2z zfGyK3VG9P{_qNXPkTlb5Z>)OOnDdTEJ54fMLb-)0YZym> zT?^5u)y0!Y@BvuVl&CC7C1&2pD?znL*jbIVV@9_4kp~g?1$J?87I`TBl*d6)aW5q{ z4!~DTY%5**R%bxq*d>P>ig$C$*@v!cBKHwuOPE!>_c0ixE`t!WXS*>O@Qp^`yko-6 zQ;FGOqhbHU%UC6mJdh%D1LVRJ=|d8=gm-N@od+lz(I%RvttL0XKs%FNS>dWG`x^5) z)<@U~o$YB-!Y$) z`k9RsHE-1nIL7ctLXv^mm(zfvY&Ng#P)i|~D5)dCD{0tcBsqvgvc0W?6lMPllROA_ za9VV*9Ja89f;^Q4Zb4oFC|VFmk`k*>c?Je(C7@_)PDR`dZv-(2UUs}1cB;6eDbC4D zBCdoJbwmz0qKPc&*-LkvD9f45atkq&q57Cq@O12K_;U)n$AO|&i4=pw z1$)aYe^3c^CU2`X>aL7H+O7Dw!txYMG_iv|Ra~=)%t?7fCHELel!%w$i7b$bx}!_K z{}f2H!CIUxm4)?KnLSP~jA(b?Jg1Cs(CbX)KOwN?GRV{Iw6Ts^&`nMi@ui-h|fDac7dLdQw9B z*gPV%>qpS2izhIHMHNvO8J=S%QD+=5i3vGYil15~ZK=@D9x#DPSg@BwqLRXfetZib zFo)x~U?XuW1=*Njh27J$HsedEtxf#MUR>=YE|~sMDU37;VXK{B!4q?x2@6h>tf;I! zVv5{!#o_3TlUS|n-PFcn8pZl4tP*J4G!+n4NLk8?ii2M(8%yazhjbPy7zRx!Bw>}8 z*14!)>@0=zsbsFR9UgTSD{8KpmM>NHZ+63F3CsC?vB(Czdo9bKVp_w@0W?JBAygV4+kUuUi(gAK8_d0LwVR?sHnGlgiH16ao{J1 z97gHl$30`uWL4GFGO_|2gR^~XcwtK z0J!rY#%UADzmVC57%in_D?yAIdqpZc;Sy#HIvQfkvW&t6I5`e{1&DFon8VsI#Rgj^ z`>wq~2xImk;Hq3Y8ddTptOkonU503Nc#%9IoTe;u!R6*sZLKOfIh;x)VWGum zdI3GEQe7<|pEjC&^Ia>I=ct_=z=;An6_N=7t=P&K(pF2H%;a9m8Jj)h zI#CiR<~370lVnV6xq=Hw$CRs;oqfnNWo1KH8F==3yzd2>rx9w z?8ex{WHhX!ixD3C90%7c7dxXYkL6FI#;mv&A2W>^)p__pm0cE<_|Cqwn6KfbPRf!N zDwXH>@82?bp>_uWoco!Ng8>rRdJ5i;(qS)v?Y$;(NNTlIRx2o(7;8PIw7PKonc#q; zWN~2$%HSfzV`cHPCo%&hpyUjTflTW)?~|_THk;#U0Vi=0*?xp-#6EH&lc)hzqex9{ z{W#$$YT(?tOtFfwep?G04A?ig53;*pDlbd(Y37gat;bKo32@+IrDi=mwI~g9)&oy4 zbJ8=_R(+Cg%-JTYm@Uq2nXMVS09GKGjM`-KgsCv;hbvI*qDW3uy2`SYZj3V7#5a-k zufTaY3s`{5AW+jMvOm>4<+G3lBrkJT_Hm6D{B1VhSb|^b#G)FUdt0WqY8w$UGFhPx z9|_D(BOFU)ffram+>Nk>rxT8)S_ul*jMElMS&l1cnogBsU38A+bXY;9U?)3c*tjaQ z_{I<|GpUy{8%1p#-ox>c-S3wYuP*riv#dd|Io|BkW_D3+IME4eK8n{@c^BfMJ zCU&cn>lW^M!BwZa)@JQc_@6u4e3cujlOR}UZY!tfxr+(J&1`HzBX?yqpl~ruG3#Q~ zXL64zU0-s-z_}`YN1nzOuzpL}C%eOor9Q(?(vj_wFiHytSJ%4?I!R21K`kqxznL}N zwNBMBWC4QV8W@^;3m;ay(-$BMQYmocBPn;Oh3aF;%ZLG{XcxQoTvp>Qi%!`Uc;@Wc z_rbUVtuQx%4W^VYE@c&90SOymeX z&uX}V?T1VJsdvAtRwLjiuY2p~k9N53egw0D%g36|X~g5;YAixl>}SzkjI3bNg*q2B z!LT-U8M2~0ZIl2rPBk?q!*R#XMOGk2rVNf5+^~|Qq=iy$UM-hM4r9aT$|oT!j3R-# zmo%myM531E0{ zrfad?>he+NBP`V5dthr@rJ!s%q^Ow}v4^V*`vSz_eVd)6?l2cYp={1qIENuq9Q_zQ z!U>;h5;_r$$FkB3#ElZdAw@PmA_yzQzr`acgyvnGSHgTW z0SK?65>ad-8f3w6leJ58oYR2Q*$UNp!4M}1w85upxTe;2qj}*H&MsF{y1cNp#1fBk{#`rNys2QBjKG%=wV9 z!pe(M+4;lottF8+*(-@h5?!1a%aP3d$wSX9Bh>(pu`4`|OuoKGdKZ~h~5v)A^OC}JbM8%o=@@3g2PyW!} z>dLVyk#AtDQ)H(C4)JfqXg#V#lhb`!ABy|lpiI?=1Qs_Y+^)jBU@gNsPa{dQgX3Yr z*g|%8=V|;*A1zv}60%GL5w5X?1ro$pkwm#sw8ov(+Vaj*3KOwj1wXu0^Yc1S6A2Bd zU`IeWLX^4n5i<7W?8JL{ARX~SPHUBv6N~>fvHz}|R3H%&#**X*uBE%k$@LMsYbX@^qWRdW9Vqm?JRAPF6%k;-H?>95_MEJ!n85o+Tf0{c?;lu6y{l)hfeoH^$z}q4g(nfTeLeu=V zJ=NIdqu*_Re5|m+N<3WcDYrztbZ!cD78|m!@6a6i{^H^C`|B-xWA2~dsfaubUQICE zZ#6zPoO!P~G(Yce@M*S}Fa+0E@8MhSp(T|>0~y$7@v@|P#tOip`*eTt!}jt4KeUJD zFS|0;(MS(t^lnT4!}e~Ay?zBh05|$R8CJpBtz;3Wb8kHc{xA43S3f`g=EeQHed(11 z2OS$+@DJ>FJ8qfyB2N!JxP-WO6LY6n!<1hngU?yP-GD5D?akCh*5CJ~4M%M>wxsZQLHl(j5gD3K673R#fKprq9-9$Bx6 zPP0nQ``TsXIVMjKE>#xfEmPGgpKtQid14|tMJWzYRx^392G}x%=@ANSt!whIQ?Yr7 zlS}!9cXbhDBKm)-ZQuTKe>|dEdI)*+5_6fZh83uJiczmy4^%Z1ur3MyGYxCW~H@GEN~zrR%~-Rw^7M!e0;y^j~?n z%Dn#A{*ZCpMi?i;g-por2$%9XVDS9MQ{$G`xX|HOFWsL{Y!LRQ;db>9Rl8nqk`UCE zM&ngeIqCZ@VYtW}>P6B`i48$lrjlJJ5L~dgBC_kJz?IsEKI_kKkv0}8jRvl8#H>1& z-Gb<;7zEyNfM31>xdo1=G+uTppH^1C&U?Yxa50Lbl2b!tjOV@SJaUUx0AiMfeQ>p= zmB=kB1v_x^GW<(c1Sc}2U)<(j4zmxu&}u{E%|HkzIi*UHi}gwmU(9rulZMOn;}oLi z+l0PN=-Y(Onb6_8L*b?%GBaxQ!ItYQPO_D!UZnhB2_xmWl{|WN-5TzfHPQ*-Kf*M) z782l(6=n)wXCV*w1f&fGl_|RJim$$QHT-ug*-C`l{ShaLQ6g@olBsp@DigfCxw(C~ zJTyTbnGo3VgUh)fCVZ7SK2cbG>3Hl3a6DJ9#XZ!9h+Y+9aKI~had1i@r6QskYDC(a z&d3yu9EOn)Zpsg8D?P0=wWF|dOiGn72L#?`;yv|mD5BEYzQ zUVD$81?DTNsn3xrass_^Fv;?mGOp(o^>nznlTODHK2J;VkqfXMUzac7;*V2cPD|nT z!b8fIPl1c;?g7PlKoBA^{FtJ#+5Jq0v8T9BC3Lb51B=%~*7;xVE^j_vU)~Y2aXL_( zB$z~K7xLUb2WOu(_z6rlR#L9yC6R>XpMfj;@wZ{mQU=;(LnFhZXmF?4KRFeEeEG@; zJp6gnn?i_t)<~MrNG=c9owepQi|=My7je)8&q0T~G-)7A+oM()1`qcV8*y|=k0|sJ z@bI#6GQ)WdDW(+5Xn44o!uw)=>jj%cM|e2VF2o76!db{uYd0H*f(yUVO1ibarURu+ zIA`At1)$G6f%7?UDzR~7k;_fQzRLu@{3G`W|F-uRKX3Qg?NS^52Fr;UCw4O1U;YsS zLYXtTq1$~22mIyEq?`&)HOc1-?(W=u4s`n;gmyl4OocdKZeEQ+hi}}SZF@e8Og?sraJv$9Gvlfz6}ux_ zV>CtdcftsSfu1S^9^!jiKQ<^cP z@;WwEMcDU*WuX#^*VNllK0^Nb)oPuEEv8a_&a+ylEWWx46(s*N_s3g^>*(x;z ziyzXU?1)9p1fj-CE#GX<9n)b@)QnS*1%?}T+iLC%MGeNfF&yp3s)MYR2enA6o&?0xUj!4lgOs7wv@*)r<|8FTrDJ0E}GXV`W^wCwi&4w zY8V!#MQfJ`@;Ks@gA$TZ0^%^%nHJ_PjHV?ullnswE zj9ykob(RL<6Y{1YP|f%VQJcj3SbTyfybLTwB@dD2QTPORjn;I_ikroC>Fau<2O4}J zDmER@a9+98CDiDs2H)RGETabB0quUedKk0bb6+v=VIgd)px&ro zj8ZuE8cBDO+mISW^A0|)>m=RV+b7~c$XKnN%IfQqwy>lYB!~;6bUT!Ck7f(VC3Hg~ zog%4fV6piWW}{^(eMavJmoidU*mBR5J~7~Uuq4NSSK^j{OQW>eR@gIlOy{UaO5d{7 zTysG{hXWnT8Yz9{h#qlGnB}@wN*@M8i9bP*t?qevM&B75V^0>c%f;tK!C@(V5?N5R zHdKZby)*inax%PDk;;5jwr_dRZ`1iUoxhiqej)8uB@&j+x%Rd)`nXL}k*1wN3uxW*)egnS?lXDL5Fp%7FKvsVShXj?CnTB!6M0vl^AMVm}c?NyNIn9=DtGN_m zexhcVr&bR1m|my96owVHD@XQzNN`!ReuE*I%t!dl4q<;&^_xm6`<-@Q##wkn^_#kZ zn?_g&yK;lb4Edo~FWozK}*o1Ec<8PGRe5Kw`1hz$tordPw z`<$K=lrl=<=ctuy5D!({ay-LmQ>8t7u;{!5U&Cq}4?rcwJ8KZ>6&v<7QW47w+zr-< zU$KFa>NLjIU!m}?)mLn#R4fKzn z9dc1gp;qFRah<)c)sCg`29XS7spO-49kVTr>Wj60b&74Q+Fcr&R5wNM;EP9lmG075 zn24uLN{J-SDQk6?;^nRNe^)UN_3Hw<$i`S7fTyg1bWP!ygjXzmkSJ2PV(>52>2`HQ zqO|7*Qo`bXx4IG%g|!v-B}CG+=g~4JxdwbMT4QR;uc31in#)dpxCH;St|W7Umn)1| z@JY)H<)#s>r5SIBD(}i@D+23eeDSbO4n7#4>tn$X%N)>(pbHDIDSzUaK z5EP1-L?w(hHlC!n+E$vl6A?HN_|qYXm6lHXoeX+Ugl6pAkFc@F+o zx=Ja+O1kn=TaKx`epe~WH_n<#Wi!<}O{GLWx1w^$1l9TZ@Dn))lt2t!s3|gel2*ke z#NgD(V9LNNVyQO;N+`-sKBl?MRPvi@DrFyTMJQ;YhJwiK>*y+_SWaXwEZm};M&S}F zd1q^@`-y2DhD!)4qNLcxJBrYb1T`ZKX;o zecaQc;;F3OS4t;jzO-#Ac^r^GbY?f^USYJkl-Aqm|34U0zyJ-!!6;boP5}&8tQ~HIC{2n|f#4Vn` zWkSDA=i7AtZhA}M{Y58FEG~}vwpvSZn>fM^HwzW9M|z{Jr2+0&WPrxlENiv5mewaO zuWI348D6nL_efgb5!wcesxc(^uy3`oR0_o+gbk)u?F}dO*)@|%t`~{Jd3$}OoL))n zAB%y=yZTldOL0C-EIBb>iR6H<-&jf&u99e8)Qab@PGc!4A}gYn9V=VRG9a@*tFbf^ zapIvcXPC{u^_33mD~&Z68Tg#(#`-#KrJkDpB}{_~qLDQ#I4+*K*T_&U`lh-{9j2Tz z)|q{2E7DQVE8uu6Vl|R&oN?+`AzK=&5LqnQVB=Ir6>u_f?p10rn9*Fv6>vzoY(~!n z{~b#UO74ZkjvBmKtul-jRF!?@EEGi?fIV5qudB0^uM?88NDN=sSFLDdw!^SJEv1lh zex2S@7%@u-m1=5~ov+wi%0#S`SaX3BT3@lFQ(fW#=TeWBwcDO1*+2u8* zR%6tr`AUzsmRH;-v~HLVya8%u$?J;X1t#^iCfLGikxT`z+oxo>0I+kb7o6)lUjB7| zn^H=O%ZQCK5r(;X9k%|$7c;A7P>3nmg@aVAx%y$k~` z_?zcfZZB1hWQL{7A)&rxaDRzE_ingm*7S0KAMS*jZy;7*L z!oGFYF3r&i+GYc~mvy>JvFWj9BxjIN_Q909(wsZCS|Phus^u*5@A=K8A;D{hi7O^B zcDfQ2CE~6z%`j_L;HT?&o^xC&Y>dDOK)ke?aw)EkrsFFyil*LBlpGRHcA^xFSIOyH z{r=l@zD?)v1&WfLWmmY!&AMrNV?5^+hzxWaz4gkyQ7{VqyJEReE1b&RZw!lKB^q0_ z9Kotce3QzhkyKte5lKxh$TzE8YDp5JOB|aV%3DUGP}Pt(JN)%j-yj;L#uQ4)oF;~zQX$=S|FqUae21@iJA%&>I$Pzdi= z?zzO6ETbiO{~GK6c{Fn}DmuuT#3TNUWL?!jAl$P4|51QlrK+WyNzvSeQolm+sz)ETgr$yRwQ9tXooF zne)!%h|oQP<6}4@VY%UtlE5j$SspE33Pauch63A-eGTzac7-r{#5JLwbS3dpA$LTf z^rn+VdWEb$-qM=7T7sWiR?F%ujyQbeUUJI`O5MbxuYKJLZNW_^@tLLP-ls88lSrG+udT@1Lvr+d* zT3=J821r9QRy@fsd^_u?By`;-zrLD*W~svs=ZEw7 zT0$V~fojevy#eV`IJsKfBor@X`dUZ26mb{H*>Ztl3mQk{^=EaMhD82Og=u9W=(zyM z*VtnE!`00$YW%SMaC`Ub{;Y^>NMysskEC?3jTyj)%mViA?yCLz{oXi%O@tyWU27B? z6d5&@`-i*j<%j(X5;wSF;jWOtGgIn1jhe;ha?@i_|KiIC_1)5rt4gHksEOQu+}`~3 z?jHN(0g>aw<@3CPHk2yvq69y#?8z&fI*tE$`csHyw}0cJ*Ev6jKlASL<~_4H+duG6 z{~^{te7w8;@osy6zxmJmW+wjo*%ifhw_F&}5>TQ|3}Kgv;<$$07T8p)MO*R*KJ~*c zVt1 zfv7QZCH{41(Ef!M_uqEAcyn?2@#FQcPi3a>u}*y4Q%t}o?jG3Gd`LsfEFT`I6A%35 z_U`BVkIV>7KUxVask}un?-J6yx$a6LXs)5u5t^W#nVkGFT*e|k(tZ@5+$&&t|gOo>JoUJXi-1$;~Nnu#j%gHL)2vA&psl93-Pf$&u1;0J#4 zAs+AaFCS1Vf?TcCAIN^_0r(hS{0#pxa{H!;t@R(jw>b+^^g_jH!Aep!EFGqRjM|rv zLJryeKR5sEk2eq7oBO4d6wPl(#0GacK8L@YJAo4*AGiV8_eQi;!SaE>&Wq=(dLSg3T7WsE7r7vGi`d$U zfd2I+HjniJHj9FvLE)*@T4z8?I?Zq~rUVXu#rMVqQk6-NFbGqE#bH-$6EQ4W-Iot@ z6jSn8#w)yEB~ZSxsEp$+w_s|cp^HRQ`0|TW#^z7#HGUHA!y6Z z=CCBpn7|a0flM}{SXXa^71HOeSAj9;h8m8H1K~a6754P;{kAd07SUuUmQMv?6RD-8 zo&;l->1x7zuPLJ80P`MyYM!GXGl{1HQG0$Fes(#fS4|% zv{w5jHhiSc3M>RpR~ZlVAQ60|B6z@y=Cyzxjb)V-?Luki&Oi@?Q|asw$m~4ID|+mG z>f_($^KCxg=JV@$fDgiZ6@GDwIjKk2*PG;Cq0k)3R#gzRlhk3=gvSYh4|>{0D)EMw zw)h%zJle(?s*zqHk&DCCfqP0;7C5S}F~^yZ z5Atq#6vr`_7o{^EZ;Df(j}nTrp-Xa&JlX3^>?rI5Q>tt( zHCKV%?vTWof_$*nA_&FQBCJ|kFyOg-;*aGTClP5jhKFOy8p{D6OGloG`LI^1ikX*7 z@q8FqaQ-}|Q6Hv4+EaWIOEv1q*&GLcAe=6h8Ee(R65_y#Ok+QI>*HG0k|b#zIF;k* z4~2oK!ZdCphV^9mNd;J{8%Ht*uK@$`$J%~uT4$*>(=wqii(w#-4}_yb!Du`#!WTE|fC71Xa-mXC zAR#O3>vlE>M4z5ZbedKvh1}8QBn-&z8O(e-du(u|gT#C~1VjmRNLW0>rHv0AF{MQa zkjIyz@LMDaBZ;ta8<#}@5bB<{{#}I|QJCI^+kFIm@f-f5O{3{BdPDp<{<#4Ep+v@r zh_WE7Az3IpZ1)@h$kQCiZ%Y|Lh6*PEKz0v67$nNPEMhf{6Zntaj}-2yl<`CA66`Sk z<4kl$IAods@AhvG_{S1hMy=Vgg~>}yJVfm@^eKRhVs8B8WHBvs*vcPvW1h*sVMQrh zjW8|E)FXR(*8~3h^t2{4mjexiJif-K?Dr3 zc|z*OYNKd2G{ZC`QO8y7(FW0M)J-Hmc2K?#u9`BIW&^GP<=hF`#^2K@nhnpYHC9;m zu($BJ3|vJ5)LfhO$4W`EgR05$-B8fQ^r4%Nxq#av)ceT1kTmGoqt94OY;KpPb3<`F zk#eN8?u#nZ#E=M_#Vpuxdj*uwEPcZpC81IY%uCeHk5@b%&Jn&zFh_8gjyzu%O`pt! zT1tZZLz*?|`~pNCVBW>aGLQ*4=|4b(4;JCKXD4F6bROW5F)vbxyYc3wP-@o~sH}LZ zF(nSCE_Yv`MnYW>h!K@vbjbQpn25qoLbj5FU{hUm1elBsDW>2l*6ushNc!)QLbh7X z^`!kX7xX1jvGNqxtc{UNdYbk*psx&9Pnvjrp@U^T#-GA`2^rmpR)DjeN{}vtu1Q^^ zmJIGt2!(xqrK{b=MhKb38!9G-0f;HY`#DvFrnowC*6xt6R1T&Iu+yg^h} zbtEe*d8zvVs%B*T&#)4>z5BbDR7VU9@r>4b#5bVSr^0dK9RUBV`v9>fTryOIB7b4( zeGc*_8g`Kr87Ww;5idZ+T{!oVtP|e<6A*Stz@vnmxLWHh|?kY2b_GzGhLK$O*b>tRfTv*}R>d}Ma^;`@2Wo84r?3mdiSBVC zErqM$1H%kego<&%5+RDih3PrLqjMQB0DDr3P{Jw=cmv}YWS2zv*Zmu$ zP01zjx=$1pkrCHfj`+B&k#ifR0ZWt-+-Ir`6TDCd>>{e6WfD7)>t{d!$YK-oZicI% zijVNR0$ZJSG!Zu7##iRm5Zn`-;W-R&Olw6X7mRoL=$^iV&F-4(HF8y+JONYsJ&y zeT67P^8eJML~vttzH;`inJy{J`{NiF2IBp9kgBn?CT;{sdFK)v2FRWylCO`wi31!K z7zVACh~z{`*a0OxCb>+Q47A$+3?t|WH6{u;!bl9T(+n#E9J*xGaPj^=DMP+sj*Y6s zCw70nky_D`W~)R`*$^WX$(DjG3OkyUmA(rU6s}@&Iz=7_l$n_Xk7U^)6=NOX(3z+^ zZhFO6t|<<h-Yfgfmd{X{YREFYn#$FBeyj$l!w*sZNzRW5)$m za)=PkYPoZkUEw|8@u`~2h!nE0Sq3qgy5b5RQ0ah^LixE!S^*!hH_3bfH;$R)%wqq5 zfG;A_fc0cNDS3>Sh5w{NWsS&ee*bC{e7DHEjQMIGkbxE40)}V+-@3?v{3W?ZqQYBu z)^$g`LGwb%CSc~>gMl5W71q;IFk#vrw2-S}%;~>Lij40|_k{m6Pu?ybf5V#Z;DVgyUBVe+a zJC|IExWQrGVGjm;0wET;1{iRq_Z7$o;9X@eJW=_Bx`J#m%3H{&0454=8gu_dgB- z&X|mdx^c4bb;%vveACiBvz4246GnlVgE>kg913#l=FApA(ef1*%M!Eek=a)#in9Lz zh&W)3Qh}>N5dJ9xEa5eyaTPX#B9z7IZV|lG z%+MgGm3Ylc4g9E%h>*NKbB@AkJc6Eb$Sp&T!K5RNAmR@r9g$<-hq8)Vq;4v!ne6?I zLM+qR<0jh>8%&(a0bZNfRome{i9o2`>?Hjo5r_k{M}9Ci11^Lp%IcK zcJJn3tIut(;A6@Z;SNqb0GajHXyHGB_mACHq|R3a)T*JbIk#hcf6@|}j;pjVBenXf z9i;igUL$2SaU+GQIP8L5ab^?Ter$`cENV7iTqn8xdQNQ?rC%$yrs~ATkhU|gKp!!a z$xqoxTM&Yh!3iIDxB;1B@M9MY+!1#BWy1f5&gUp`A7;XKduO|P)aO8*1*1*z_Ob2Q z5ji(vZjB2XU%%w-i;H;sR13CgCB+bRzDj4pn==UemJ;2(Axa;_5jbotJ6ldKlpR)~ z^oiL5YRG|5Aqk4Ma}iOiFGDIUUP+) z(YR z$gF@0+Xs9QuG}Lt^F^q$+4%*u!ivPEXc9x{|Ba~#U153?wh?2J{>(l`X1N=X@B}43O+TcsU)0C={^9R59i${ArlAJc>vwuBv{GW4L5l0jzlaZ;3?GX zBPnzDmJ;1qNK6=23zR4Ce|I!u9Jn~R1zC$5fMv}_(RPZSVjqP8-Is8jE4C5tCxmJP zT0SI^z#JEBp*r>mK=g39Z-OCm!mjD(+W^9ah}jnadpd&T%GkCN=uog9aKHd0$1zHp;1kCY3{Dz2 z20lazL#Wu`MyQjfh&Nj4ZifP+4mc~VBy8D7P%I7ZUm4r4%8%@gWGs;Y7iaqGBgYW} zcuAqf;`;#R7pyyJuIQ~8GsGjlairHs&}tkIfg8&(1lMOtafC}pO4sT_Vt-s}19&r8 zxGI6|dLgF)eR`!LHj9n$tv{38V;WGog9_sBj3`Z{FNbwZSRe!)DMi)Lzf6^}G!>TG zv%y~+(`HD-Pz{K~3zo?G=IBT?g7XUt4X-YYAPe-|bngrif$0D;Kacc-;BX=4C}}{3 z#akx??qil21`sG?>yWFFHZ;ID9bkpX9HiN_$;A#x5h0u;;veULG{*xHjct$OKP5D| z<=$6W-LMyeLI4P!5I_yMX{a<1QVQhmEd%^5V-l0fQQSeWdi@8mikO=W$L5v>@CpzH z0e_AqJl7FkJG)eaq|&&D2YdqDG^79{ae?`%GBU4B@52t^S`245kwva^hC0GaZ0uI} zt^+dQ1ad@}24^)Q3?QTkyyMxGM&+0h?B`>P1WzDM_$NUuFmq6PQ(gq>;~`iL{MsY< zkA@R0)uxrp%a|(CBRHsVzRbvumP;H!xIn68HY@ND<5xp`QHmh4S6&0N)xE1IZlo(v zLS07CH)V1M!9yYSa2z1RF#ZrAlngmrEj3b_XTTDBScS>G@N5N z#u(`#pr_z9K62@7g_!tr_A#hv8S#Z_Bq+aH2ZWR4o^YC>6xrApN66Wb{-2=J(1aKU zT$O=JJc&*4IM8)Sz>Q!vDgB@Z59nG4ZA>F@K}Y26Dcn);{6NjFYG0$c!&vzX*&uin z>N&v)Dg#ow5-AT7D3pT(kOnvrk&H?RGuuetbp+&_oA%G8SG5TZz7pssv4kulQpEd^fCOPH6dnc{MpA|{J7k1JQ9-p<^_h9rX zl*P`tv~yu=<~P=sZ`1fTjjxT-Co}I@yb1wJCHos;^uZkz;SRz7BT>j3BlIC29ga7G zIY}YI2EGwOpGZc^s7xhScw6ahG5U}qlL=f?iZn)lON>6|LXK3cn_=y!}oGh5I?CcHc zdj_c9Dv^TB#jO7srf?QRGrD|kojQm zQGdEAlO@rwj?D*~g35nX1WGUT6VC3v$9XjNQDw23y*n2U^<5$?OH%R&NbFCx!|dz- z&)(ZD$B`phgRinS*V}0T+#L?=ZBO^uT(r&D^xln)(O6Pe6~CfLEh%+X?f3F~4w6(! z%#6s$NFYV^s=Di^yT||n0XY2U_&Hb@SS^Y?=I&%WSRhJDB$L!Mx4P5e;NGTEJxS+u z$CQ%0wqUS#p)}D*EKm2#NjKO)h(Z)Dh>`?)K;t^0$uPUjis*n&Dk-?TYbJOApLsxE zwkU}`N!rA3FyMO4rIE0}dyUlQlkO}d!<$qP?=_WTiH)2#jUaGPs@E3k`wS2&7VMnB zAe`OnUdKRiJuy?l`QtOYOXofzTm!rRh}sC2k)a^yhVc~!a@yp7!U&1k%99+_h=u;v zAh>P*r0vA=#AG#oi$HycFG0NxlCi`QY)6ju7u7^*vm8fI`HXJHfRAqh8%WqB-=ArR z)CV!K5(#@ZfLw1pp;aWe5SzG^IyF|on)Q|P{fDq{O&t$P&lU-SXR9Zl5* z;S!l@Vt<~U9Gny>IKBdRR0cGL5rCiJtYk7!3~4Jg#*+;`mHL);WMhR&CRv!kF^tlE zf8u%}Usn>GRCCG%Dr|xMgxE zIA(%~&uoCNNS%_3(^YYkA++i5?ZSh@_DnfcdW$2@K+2`S5aF^!>`}fU4jAYL0UjbQ6>Oa%r3sYF5coz6)o}t4X;*9`ueEdD z*boL|*Rw6R)c6f*6=-5B8Qviji318uNs5r>F=7}UP~&s*0M^)rkIouLp`>nZ6FtL~|Fo>_szt|z4`r z^O~~`sKHgfK&?WB9M2<)pzz`<3E%^^(15D|HziwG3WXdH5ex~qE3SN)i1v*o_m0LW z$(J%hB{qH!2={mq1l}@K{TorhO6HMhl^UaW562R&0@xo51wJ)yn-Mw1n3~9G;&n5C z0e(E&*Ko3($lV{Q-=y#uM+g;A*_c4qOht+T9$gWIJLCe-7jaD*&*qc0F>w%N6}^3v zUSvM_&ZK0)h7~ir43|%2J`lSY*LCGq8%*Yt43P=d49F7plFNM%nNKMpYm;M?bTF_R zLgvHbIqt?R?4~cn$wj=VQvFMsh*`Z5w@6_|t-=O6>9n*zkq_>+K!Ho9d{dN;L_WBj zot)%2!%q71%P{%CH72thhI9l%aqMYhe1hxSn9W1jcme7x-4OOK+F}=~_Fag|2O%ZP z8-eMeIGo8R5&`Z!aScb8FLT)F2@pGvzZQPm-aI}|uwEu=DT(g&Yk%iz`96*B)A$B> ze8}LFSz_cr#MeRNLyQv@(A8p4j+VC2($u)K5Jng!7JkMVZNLqvv3=$kN>Ji zDSV>vL&lIjh~}?I;1iWF`b^@0y2lGOg1?9Amy%d4Ope&@JpLY8$KOL?y_6cbQ$4@r ztNfM-e15#S+XZLuw(ssAem~sX8#ffVVNV0Rd;D#mrn$!iV7VS{+CRTN=!-YiM3RtK zgl*0Sml4x={P3{7emAuaOj;u(W)E z;!pl5g+IN2xc}*4`}nx|UyscM{O>)II0}d%>}MU(wRKwWlBoQ+8q7nbQeBatZ35RH zb|EDG$MzrX()z#tkN-Y>w)odi7vOWoH6MC`_@|xKf&DuC2A=4=lE$Hk#8?(i|6l&z zn1BAAXX@XdAT=9$G52?jd!Ik?)vq@ne!hBl^Z0mk_tVvn5BKl*wi#QCYsUm3sU~Zs z6K$ER@Si(-^>4JM|Fzq-o2%>h?{9y9CL8(zYs9BLyXAb~)APu4i2I9V%Dl?-$OC`9 zfB5C`J##BZAFWhyaM);TbS4X@y5lY4qxjUv?YnFI)SLFj<>|T18mW?cpDmP=k8SK^ zH+M|0?KsLlJtDPCYg5S}?_O$C`x{LCUt#J0)-3R!@9+MxeR$*^c+>vz1I*!P?}!KK zMskeQXC{50>`It?(qEr$zdzqUZ2$7any}$IUAAwE#0fvt%nF`=p zvQ0ezU*ps7cp?QNHY~Sl6#1VojZHtUy*Oou|D*Xu|9TW4X4VWB@xPHQbYyk76EyM9i5y2QPT$I@0n{SQmGil74pw^tm7{--6R|0xzG| z8lB~h(s&@xAAT{I3`Y_{m*QfDT`MvLCPP%dnzSk#1t3bzwAgU1x-RY#+A73!B=;a} z&RMnXGlQeNRXExb**sO5(=hMz-WMURk`3IJT4=5XJ5y)zymeJyRz!@=WNI@^b`ojQ znu2=Wv=-4oWTx^e>Q+$K4I2~-0(RVSwH)Hc8v$P-{1eU)(X1hl2Crmnftc}r=6itC zG1!%eFt14^B{p>(YBw1pM3qcx$YLs?#B>4lN|J_oCO0AO<_n=$+{nNJvk1=~>zq4R z)Ro#hBtv7&Kn077d8B>nmfz>|eLmmk^ZS_v`3hf_0`bj~YyEn2JY1Pq_`4P=lZnv| zb<134ibreoxg|Og9#+iKSrGdzC-H?B)7nzr`^vnqDN&kJm1Q36iiHhrGx)l;=+yY?cxb zyA^Y$KXYf|`6t$M^U7jsMFeIpIyTWy_Jv3}3^z(OG0M#-8?xx3k4!$R9zt89UeE!)I{jL%BY$AnRGI?cr zeh(H&+DUxep;+aWr1|MZnhB}gn>fj9OY_H4Dw(Y^KJ`I@&sUJ<&r)KbJQL+E4?$L5 zNtPcTogrQzSsV4LUU8OR%t$AP=-X=4SD56NrfD0k1WJKi(D)qf;7ep7i_xi&9rP8X z_=OykM(K3yK=oEGsU0Qb@P!X&jRV!*#z;j(C|ISKP1P`CMF8@ z;`0~8lJ*sI{I!yg#VwN7GsKG}`LmL?Jt6KgcPX!|Wq_FcT7|L!R{eD)`6EACjYfVm z%u~LNmH{e|my}saJ&2g?l;k(J+#28Db03mR?bb3-C9@4ZDiJ7yll*R)sPT)xQb=J~ z%Rr8`z?-Swu7Ynl%gKLFJmZwAtM=~aOcZqn}z<(>1nPLX? za)FKk(zCJ^xE;479SaFZ6_@)L67oiIaAGEBoT%nBwvNE|BL#*$g&NSLO*-j)H((ec-cYcN~% z*Hui&o8W~qI)yZPF}~8C0XSxX4WkqyDJHMAnt-WgG8DkA3vT%p_YCBijC~?ON~ziM ztLzz|FheA6j+&Pj^g@pJ3<$F%wS_?V-mjx+K&X-wEl1Wm(j}S(w6L$VlC+t5sWU4I zva)Fa0WP8A5!aQA{qqzQ7SRQ!jk9+@!hYABQkY}OJAWd_X#<5EbreIV7)dl4Ih}d> zK+gyUCGRBGLMS6=a+F5UD*}GXrD=k%5=YKuo=q@ss(7f>w^sg5XV?T!n94p+UtIdT z2g&)4u?xm(HIhKWvJ`KvLOsX@mri=0WKa&hN17)YgkPgX>3r~_u zHqsmBcrM9c#{7%86ZH|Q*4&R|FvAC^)!J6rU~~lK1n{0XE4E6tZpflLcK>>#xscB&8;9z z1RAATbQRBF-Kes_W|6l_6G+JmSq9q-N+UZg#ZBczl0p8ygenpkYns;M9D_X4xBzjO zD`J&gVj0FUm=;>+f4#vydGo`rPZlm?wsRghom036v88InZJK#%R7S}Fp7Q59gpAL2CKJ{}j5IC@Gt?&>9zW68zL{@`|+P)ZW@>p~!o9ibB_6blI_;S~{R znAWuZoonNC6P+4#LSa&kC#ibgaO^gL>pN`w5BFEww+C|eLQjpP5t5rg!t9sZJ@ei5 zZ#VBgzPoyVk9R!q(VDgvss4((r1C;P@8BcfVBcXeUfAISD>Ib+3+q=Ee0O6{coztYisV^x-&;Pn#%;9jJRk`#{ppqwN4IpH82LCTy zqMKjnjNK!Ydiee7m+b)`#2UK2;IhL8C_4MC_MZ6e=I&~H_vZG#g=TMV9^Tv@*kNo= z6SArjhgH;08iMAB?)3Yc-(ZdQ{W>bdldh0}04l7X^zefTL8hU&(=r=Sa@5cOj0)iEVImv%5) z$*?RL^QO+3XX#+#4 zvJTBO-yG?M^uUrnC6L&LkKlwrcPsP6_@}T^@XQMZ2}!bkDfx6MaOYx?OnQNHwZ)IJ zQqXa%~Yd8*v40n#$_s%Mj^xO#Uz; zwjiiO#3dA=sPPq4qfUd$(xq)gS7atjMPAk9=lD334uY!XBGq!VSGe+%;M%mQfefgz z)rzvay@IOOX{cMK)SN(;Xlg;rtD5{mau4#jSi}}m3jNeqQ7~PI({%}%QmJfxV4rRoDR2Yd`&(6A>&l2vq zAk;}?N$AH*PSqjsm@~k?Jz+7g8z>aAN74qcw}1tu^g4h-O?ZIjsbmD9@oNBu@&=As z3+-#G8RysG9~`A6!EsNS7SdBK;adUm#7L*TVMJ01`ptuQQjFNVF|nzmi~;e~O{kgS zj=EXiX|jyrF;Np70}W&)zy&;*tlUIvfm2u+x zEnK!_;P^VlYO{c=B#{oD+TFPW#wO*OoGPGJ3yiW!mtwWt)=6>ToGjSoylS|# z1BZwN2f4&O*JNZhJi9f48VV>^>mQCS1@R=@(~@hHlC8{Nq6@KynivnK6hjPbv*}gG>1e7@ok<6PsdIX%uy^SWcsb1;|2*Vu=F~JXmD% z$iqCxl56M-JQNDzXl)uY^X0~c21{GZnPdvxYq8n|b||T)${xIEIhmb_I)s0X>zov{ zaD8(w7liM?jpMCjh~^6W!M+N7C*r$jHqBGVJc#G7jNYNL28k~UW+WQ)()gXW9)!rl zn&FD|5eT9V_?>lBZ8Xz3K=611BJrM@FNlH*&Uz|r_;y2cz10t|QM7d5$n=u3<_y3l8GDHjuci6*@5$evrf z!)uC#LXk15zu~REBLcop^!r4=PxLjzYe*@{yev`WHS0HouOaD3%2Z_*_^{s?z-H%j z;=(19dnGygHv_OCkvs109D`@m{B7ZDlzbd4rAcNbvV3#+8iSKj;l2>xp_aZyc#XI* zoM*qL>!}JbUlU$~Lz@DLI1vqK#&;;M9bVIBOu|O|)rbmsz33WFHELt=V0yB~d{J}_ zhfkg;pG_(vIe++b1$sE6CNmW&R5`5%{~cU&X%-%qm=n_w8S!3xK}qq|z%{XE5}*?# zEhSj`Iy5}$RT_O(+q3>{plj$#TFMnZO)0T_E8v=x5;J>=sT7N^0bH}3@u*l9=3^*Y z@^ZyLlPj@~@Ey-&p)6D`q4QTpk?_=ldnCa-V>a!8Y;!mK4sP{Ou#8y|ba^;c3Fs6SR5+1}#jovvkH#n$Py8DcOl>XZF`SZ<(ld23$O1}g* z2n+Azv?9I0*Qos#L)b5s%yXh5Ux~k=vCSncf#QhBX{Fi8?}O)Bqp62s-}n4h7Evu0 z!U_<;L?eIuncOYJ>X4{2lC+M5W0$L<1~zBpaZWP3rClJSd7PqYBdVBu#};Ln>YoE>Pf!P4zOY zA2pE1n&@xwOG(J3DCY23$hlWF>3Cd%YmOu(Bka4@3*iz7s)q@#WHFov5w3wH(5O4S z^qj(;hV1uB>i3C$pXm3AzCPBE>Ry>&C#?RPK_#?4=tk-&mfgNN+7G&%iVGfp8X|)D z&7czCeg*c(IsEnTO_6@cCbHuS9xFUM&q=>MOo9b6K*ODn@PJ?0$}a>Zs7l6bVE^C+ za`~1xKO!RdNM)I-QY2-4{iGj6;b!cWM7kIWnqM>PM>I_cBn$2#O{oL##;MwVW)fkJ zo5o-AuE2zqI)7#r@w+h~RIl-$ADOUF|Bo$7_)`hbQkOZ!y}q+LE(S;mgKU%2<9_=1uJ<*F>vLy z_J#P;n&%u;;5()yNZPjKctdvGly)ohP!e480?SkdWnNT}U9!e*dTgQ+QWVLTP!$w^ zQWa$NurUXuM!!*4%L=C51BIYXitOTzO7fKoW*y3xr8smwE4GPfY~I}mBNYC&V^U&V`i}kh)G@~Dzb`{ z1XDEIRC302cK`P2UtaxyZ+RrGF*S!LA9DkD?9H~h4x1-z%H!tE_VyP4KgQZVY@S|v zH!yze&}aH1c>UtWY8UAN!U;k?1z(PkDXOwATc_D^-#=ilASQc%e|z)h_p4uiy?*#< zFVH}s8k8PbsEIet@^5rx?E77o>FKo(4W2h5jJO!T$3TVYPJ@5)J$Km0-TUvQq^m_N zxG63Ntb3=Sr_Loj&KP+U<6wrer%>DLSatw?9vx#jy0apt*5tUtidu;SO}uPydQu}n zh$T_6a!#Qot{5S1D&f(vsnrA7bxu)hJO%zuS_L@#jbvGt4zLtUgd2(oRpO#|DC`dV zU;$`I*!WKdW;kJKRtb6e4xf5Mi`WMg;}bYgWU4r0uwzvr4wkDH@~KAztEyv;^>l&9 zHwqUWF`|%LEz2m!>?kwX+hzlDiwjd&WXkD6CEzZPbEw2|Hv^K z>6p%0!4rsG5=?_cg>9e`ZawqUEk#hl;mNp*v1f2&lzP^Xix5=Q8zwZH-bRyVTQMR` z!800hH|G7__7MG>lP(I@h(NdySI1VTNQyDt5lI_{voJ?L^!$D|cUz({&OCrHdq%>p ztgdQ)?y$%3g)p$8l9t~@Q^{wIwe*B!xHcH8#)8q)E_}`12R`(+PCoEl0&E-!g7mCG zm!S;V9Tr0+Rk3T3RYNX2B=AnDX2H}N&SDL90C7N$zwIG;*xokR|MBOW_s^H&-N$!7 zY#$Jd{{94txjD3*vQrQw^Nd<8SqJ*ZPc-wfMj}Cq2R0ezsqR88s~lv!1ldysJ~I9+ zrL%_|H~L~TYu6?%9ESOAbhJ>M@GVFqmuGY zqzA*vkT5lr&>TcfED%V~0n!HktvUHj$-8u*efQigpd_=jgd04R82X=boDBGS6(>;G zW7U5EONAs)LfDHV^jp1$-~4=Y`&7rBfUqI1#Cb{Lq3tUB3YR2#bBn75SY=qBfk($S zO>|rwyMny-rT5;GO<}7&t}pIxTrxIb^SMecxMeE#_kcSrwQ9X46=Q{Jz#9}S4l-iZrp#O77ItzhUZNpUH<^f|pqb6dr4Hsv zCZ-V9(hHTcG4l9+#Ii9S8}-J%fWJ*=3%d3rhD;9rikN_s2WG?j5fOkWZy;*f%ga9V zaSe$%2a2RH2K9NZh{MPKGeGLWE=w^noHR{v5Q+?f5FAa9VB^*ZV+1#!wFS2`Y~b@K zhigNTvb41DO@lqwL1=}i^YRB$`T$-bZQx$A6O@i7<|N}V9LL%Kh)itOgH$3+tBycT z%t8B^MJViDiG*uuTwO#vhT(4@HJ)PZb~gKz#RGkg)_=SG@%rQKhgFz;g4_sBuekH+ zlJ`MEJrDhaD}08;9cpog8x=|GVNBI)*U>-0@}|ev5);vJild(PEY6uYu+QOi?FtzK zsQa|opMwVvve_v%T54*0A@%*xZ*I5Oci4?Dr4hy3QNkIn;ZRC+<*@5yg02b40&^;XGHzwS6z2OQ zgh?Y8#YYGv7W8vA;$9dLE8Uby;_V9_wx(wM2wp z8acYb~oTHG?G%W5#fj6{n{H^BSxXl5tXbYZq)!tBc zPeWL*&DFJ>o_ETU<_0oSQyzgCE`l0&O%^A&H>3^2R7&l_HXA}KJ*mL~vuMmM+06)w zDRy#)Lm)aSxaOVMK%MEYInv^w0)rJ07Fv_-s;721MAFcRVAoQZ%FLE@I3V(MM%}ID zjmff69S*wRGk5*?OWSsSvEhgDN|cwi_Z5SlKnLCUekl3Kz%$HJj$*W(sadJ0 zPTuy24bj9b4mp3H^>crEvzKk#bCWpA-^|9YOyUZU6f*2P`m!DXSQe+)IdxQa$?)8H z5l%zeGs{wwvnPoCM6~e7=W{;JUMlvyQ%;hdTtSzu!`T>n+bA^zao8wyN0G=5124eW zJg8k&|&l7R^Yf} zPezZksu^o)FGWkVS{v0pKp z*i2>PgdrEQNfFzc8z_-dmt{JczG~>>1r36f16x`V-ltkp-wDhYGvI8IX&SyOv$BW8 zjm{bSXd$B-;a)}%BNl&-$ZO5;$4H(SkPEH;9i zbIKoVXL%}rumTbtUm-Hhvnp#Z8@TzbJSi2c@D=sEtUc+2c;|Yu03TS-$=b)H%oM|0 zAZQSaxHN4~mmgj+tNtzZ?<+}(B$2eioTPbJX*(%vk4fO86w)^02*d3>IceXTL}E}9 z<27X6>YRP7q>wD+N{Kn9Q*-u2*u}tR3&HE8MJfB(>}NLIoQ0n+k4o9wo(25-yZieO zKd;HxQ#JzeD1xfWisDNkVA4vWXNjsT7)_7{Gig z$OkF%FCwWI%#P+ zrdeDTEdTi#`9w$AiHgCxA7Ox5Ht6wmylyIW?kMJ?lzGu}2VItmCm$3{RBD%*mU9O^ zxS8_?7aMGQ;k6*S=Mn0Ven0%|M--=>k5hgA9ntS4?1OVw| z1fQRocDf*)cK39O{aL>l@ea9-5@qmemthyDzVilgOw&A|n42^!IXd;t92nbVN#B{0 z*Fm?(JR_^)e$=O<%x--KcXXXVa`5E-2NZr*IEWLSiwS=S}@m*u`$`C(%aPerkl zvg`|!-{N%gDFcPDCCeI1bv*HHqAP5W4OfAAjMAom`4Qx7+NBlgZDw$f&0+`dNmQWkTfBFz$uU@=Y>bh zy%NP$#QsPe5FC><<(0&GM&f)Y9aEX`^EB0;aBAeYHf?@tP&=P9NBoYhFNpg{P3&3w z40$b zlgmcnb*4bB4~8V(aonRh@~qE9AAz~ejzf17L6{kNFX?PkKYA#=JeL^H8+P5oR@H{K z4Y^-pd}@x%vf}wDo*(y#uyq2Vg{A5-k4lSM<_%J6A?bWoJ2xvX&p`Vajciv4ETb?+ zUzHWt4P~IBDQOQYT?9vX0AmOPtdV^e=pr~#DcQhZ;$-;3Dc*j$cM+zUH~5p|LeF=`w! zhh^Y)d~`RD#U&GyFqc?8Ye7y(rt3yvgCbcwBBI$7zS8+A^_VFx&T6hCUSEsXqXW(z z14fa?wt`RGr^TaY z`d8!_K@@5$hdhCVolV=sqdOIVp%BFav=P%+C=sVmjX8jYL1S__F z(4**gSZ91KgkMaq`W%k&*ic9D?-)u0;)+U00NGqeoQ63Re5;99tStN;&2`9uTm*%8 zW7gLT$>3|6RSb$})B_Slwa6sPhBB8+)C0T`f+CzIh&+tI!e=7N7_j5g^kPHH0n&82 zLa`>ybqG1xw;Vvy>fHK7xJC20Y5)m~$ZktsI4oxWVgMpLHc}(RNEYT)B#t_F$4UZ- zL>d(nTdm;U%McH9IU-((iU@%;Y_Q(bi1c%&a}*aZR`I7GPBn!7p}*HX4~`ea_mU9n z(BPI@SAPAY@OVbzl=EQf5Jp`VU(UU12`!Q@EKpLHph)Z)${tVnBmS?%a4;dGGDU~9 zE}&hT_Fwm|N0R@_=rNIUu~w3^^c?zN2|zYh0Y_q`Y=TjV5pzcGbBhaF%rgiP0maWnD0*g;;5g%h!~WJO*J|;YCzJ_{d{HsO=W$#B zHk12#b9k(U6$0#L5;|9ALrk;IWka6d>P3h!J%I(vw@R@&+68#fQ-=InbFTA9>_0CVb5ZUeb^xYu*In%M{5A^*U6S>O*&x!xVMwzC zKYP?g(y?BsvlCgUcPqut9`)d!F7SWw9aUo_cd7S1OdS&Z(+~gguT$GVg$fX%t`>*;`RR;dR88j~<@YWlI zif!%nA~Y{imjm*1g==Acl8Eb@S;)<(A)Fg?V{85jksu=@P?ZYD_pB8MIUKwh}jt(!M zjJ@twJH<}NbJMUaDl7%E$cgaVJ4H}y^U^23;*pdz3_+l9BNb3{5a~4P!EAKeXd+VB zu&My&1F8(OxfB>J;C7E%~)U?m1xGZ0?ls3CZh1?*^Djnl!&EIKz}>8{yR%+8C%%i zPTF^;dtqngnPCzm&f)$nGreZ zZAkzJKYmG;xw1%^h3vuzw_QeMnaiHd+nuE!fB(;2=Iw~~%v{nLhZb%HX_hi8j;ej9 zusjEyNlu6F$G&9pl25yw9D&D5+xs7`Z&@GP8y2piBhbJ*0$4d>$a>A@FtVN4KsKl22&f_)>p2ga z);~7V0g2sIl}=MGOegd)<(S^>)eqYrStfkDeRKQq-TQqkJ>{0H3id;-Y#-_~^v&JP zhZ`8v-T%3F^kLf!e-s@5%07Zlch}QP;yWPNzdKMAC9)h|F=LeAvrKzyhJD;J>2`l} zcc^xO;2tqt5%TF$!l3Wa__<%O6(^RP%1EXWe=+l-N%{=_D=P_)KX2b2ws{=6wq9p= zSa4G)Al-Z5DJnulJ~+n8oI0G;&fod)?NX@EsDUUQk&rvB@tgbizwbWl)jzHuZm#e4 z<8Eh79L}=0T1^YQy_*4H&gzHzhqv2@Lt0UpEX_{%GyF2^I_Tp;pP?8Tsf#e_?CyS{ zSSrA2h)SVXL1-K2f}MSQ%_mcQ{Ucv&$`VuE9sk9e!Y1pidveNhK5P#g1*$Ex!-u@1 z#Pf6-?uU;zxCnO}b_R3deReTl+->QMN6!TnXu_PS=G@`dk zQ-4sBQ(h)QE6O(4$o}gju6mIWjfwF@qBy4Pv7^f17%h;Zs?tk|OqglCV2tLtNeylx zTawzh{kkz433w44Qy|giwI9dEXtp5}FfKi6^^)N&f6W-J!G__-1T$hW{BD=k? zB^#G7Qx=zt(Nc`Y!gzq=V?k6e5~JbvP_NWbwsTeJl+@xyRct*5?T`)+qmWvRQ zGtrB`aFmt_Lm+Ey6t>*?<)XAm=0l2h1(_GM?HZ-gtA@|3*kaYlcX@#@jU-et7~OeF zb>(ugFs%uR5K8E==9cKXOq51FqfB0qg7cK6Tp&t=ccN@~WH1~>I$Fy45XzhsAYPfG zC%^UB2r9)~E5cB^NCo#ozGwu6>yL1$oUKyFO9nv_!J2{4Ueq$baEg4Bx!T-NjDu&QuFa?UvO$%~yi>QP#= zMrBx8iom`UJ!eH1cY!4`G$4Xu!?~9^#hCR29}4B+&%*^M6f|N8b=K}#)E1Vi;>;T* zXhRNl#efUD!#o%-e#Nd)6W1>0?A`YI5oY`yaoSI#x2t*I50Fe%jYxqPV&5)oKR%!5 zAW$Ic8Z$fTURRAy2H0!Khknz5iuHN&r34m%k8{3Tx=^+jHMYTlFChSA}$(nk*P=& zz=*;$ZcKah8>ftS;MDHMJ~V1=T4klhpZY?yZjnLwte5KG^P3(S>=JAe>0d79@fHOf?+oE5@Q(Zfo{0I-Rep`@XD-PB9TEF)~=pv6Q*a0 z4lk%Dz12d8gtAky0e-!T^++cYkwF@SoB!PVX&bMP<$^do}gdc3!t3=s32}CZs^U3NKX|CX9BJ$F~249tV zeF70aH4%^4`A+NW&8uQ}@X(##m_IZe}rdRC)o#BEj(q-vcLazKQ4&YdD~>2ajp;dGRAi91EDQ8g7x#Y-M> zrwHv8>>x&gi#YaRX`_2nlKd3W(dP<-7!|Q$nM`sSc%u*=l<}bwS#I6>2M`i)YMp(_ zM*iB%x>5vP6gZ?L%g`i)?~_bmrVDfMbbv?QCv2&r{EU((!Nz)0xE$e$l0ZMJ9&F(1 zyYa;wZ>0!aNZh_k|7B^KjvCy=nWtp?neHAzgvWM}b7J?lmVD8jPli-@H8hYC1{?gw zynt)WY4hnyjoSI}f0>s;be`iLNWXLJ%=B%cP$&*uweg-*h?PmVlqvEpBOR&gq~L}> zWoZDtp^B)JfjVU|s?<^a!!LT@F*+v;HH&@cu^d5VP8fZHD-^;@ zgxY5Ss?eKu^6U>i%R)&pJn>ZA*z4k@jG4p~DJ5|RC6c|~bM|SXz_sHqq^NA|Y8Bxs zFJF%{LPh6KP`J8viS5F@e0(SkA(Oo??`SU?4)L- z9h7wowcMGVC2h!pToY^5r8{{|+AwwBa`#p=S=9amC^;>XQj`;M(g^YzCfq1em4z*% zeW#zZ?&vw#qmLV;^Za!~qP-Y}e0QPNkUO&n*~VDI3&sKiZXxgeg>6G^BPVwS;h657 zUqHzrZ3M(9RT)a}=O=iu3}pmSyc6ME`o94Ar`^0z@uv6s3k!Z03VV|xK5)t1=MO&` zUQ~o@sl^X+nVoyc$etRgcm$6w=k64f6uoL?0EAL$r^nlO0N7=? zKRCL!E4TI^Ks~UdnEYBPXn!AqKndIchHc7@;r=fmWJDmr54#+!`|}HHjqoCHhoxNV z5CcT*ph%r3YN7<~JAX=Zx>?0G(i&yJ4q|*nQF(_28u5IRT~s)_w4pH%*g=)5MuK1u z@o*Y&#!@7^c)&Ta-k+JVI^hPo$fpBh+xjG7c*`fT`C=%Y)@l5ix5i{SR@b zmL>v8++&spSW)#bqXJl?($0P;CTRTBKr?bc88oS`_~&aDMe0bLXBw6R@P@)?q{s zueA39VS`2zQDzvq0heVH2xUl*EN`AWM?fFvcGu4|=4CBk5!J^nlKMgF+fgr#2YdZu@8MV{1{2CL~oJ z5EffeYHKAj@=Ny}R5!w`M=dZxT%$aq@(@Y+fImpJt;~XVO+6v#Ryq@zJmUSY0h}%t zKIx<&=8*nYx=^H5f{2osdw`WDKn<=U)+bo$Z{wH{s+f2}M4W2>1K@;FkVP!VT=Eb{ zNW8cc=1aBo5c-P0up)-Vr=gHqWWWMtPi!)F7-*3+-~$x6SOxBuAg=5lZ6xxglMv6b zKFSQyfH%lOB?nju%DJB8tS{A!4I5AFB@b{&aaHd1(_8@TQ#QhuUVJHGs%s0}`rnR~8NLzGljy#)>$a16g86U7PGzt9>`SaW*N*!y7Fbz0ZurdB{VkqV!$jF# zL|9q%Foh_;_1iSb0Y{4g+uUjYvr`{+(Dfc@!g03{Nk_~HPDRH?5Y$pqu z(oqyZ@RC#q3_~D(f7~qm-UBDIzHs<~w{UH7S_aomzw z8KdO+Gq(<(hp(Jj4rR+@odwCSjp>LRtwtCT;<{Pvf#-F>brq7_NE3>(T4s-2S#6nE zS&!suVf8*u`ryXo=xeN0FW@7x5mz1caSVb#5Oj3f_tUqAU*IlJ8wJF}vCf46E+l3K<1q6KbFk1}I7FW99h<8asSB@6C z&WY$6GdU$J6UF)_8-;acCdI9I^O}f8FJayz$SaRsqeX*rQwSyQe$^Q(BBVpeY&OfY z9eHcFlV$3BH2+e(MjNo72uDu|VX5=NP9weqOFHa(3dA~=`Gs2hv5SUAu^KaBt=&iP z)>qQ%Uxmr)`2@i_&k0@=WuICh8yDW(2x(nlT3TaUHn#ANuzuJ+fxuZcF}DFO@>58c z4V#I@X4qIQla7<+mFJqNO9U$96SXjZ=ycUpR|BCCm83j4e>xzPfO9SEGN&FeZj9Lx z)@5MH3*CH6sq=kqYs1pWBs;EZl7yC7Sk}5lLNpZEs>dQ-Wmo=)m@#W4V#M z&Qwq){URdl7zgYn6UK}R?^R~sU~N!Jq%;XUEF`l!@4c>T>e5i~0$87r5OB?2535Y; zlg~u)uY&EKG8sjueWsN~l|)VN5Ss_?^JhA)E1^jYB*~~bNg3hfGqkQ$pSR2|todBi z+E|G66!2XQ7qukO5m9LodVP(3FLjSe>5~yCM1EL;&bqHr-mn1|&OHH7I*-Fx9WOSS zVw|=>mDDm~1ngD30X*a=GLPq38bSx9QF5-X@5CG9t zazau<8jyRf%Ff@|LOHP!J{hTbLc}#euB+5P9?cuC*=uUt)#7r5a$@ML;AOpN_grg*0wBpfsk8Su7QDv~#FzBf>?dUMc6E5N`Q=SiS07 z6T`u9u_$$reYRoC)>hpmv#}E!*79tUy{vDR$W3!4ve@hTl2P)rXl^Bd4OTS~aBY!V zE7BdUNcEVQs*#Jin#`Yvw9ena1|nMu9DU0C$bdj4vi291peBkWjR+TW>jW1snOU0I zRZ1(94~Z30COJHZ`R}m0nrup42Ns{4oup;5B3@R;DS-x~(0b?Dl<2wQEMGhzohoBHP(E(12W=6$4pAmK*hIE@`&=K6GK=K zFvi?KM+54YY#GaKnV7ol9xpxxbA&SqDKP|L-ArX}B@W!lKGrJwSg#aEl-wPTS%iTi zT-&7#@W3-3jH|kkrVwY`1_X@kf5`;PW6$EA=x)N9L2gFFiew^#W=B|ytgSVXoTm`H zJ0fCq0=41$Cbm39%_Az}E$n{OyP6Y2jBMC-8V}jWpCG|H^F7d&A;J-QMS6b%N4Kz3}aP)2}`0{skY9aTC{#=WlLlRgc* zlM&F7UT(g}dSysziW3LtG9)WUtn11+MX3WFQ%P{cOC3@wH3}LqDviu=3<-LdBh6Q$ zgNYTT>0tOie+k8vw_IQ&6)}X)j8h&J&yiyh_gp3iSk^ij&*@s%FA)eCYc|;0JOo}# z-d%_5Dg@b{Ho_;ew)^+nyPw}YUcK9XxPE*6;riuT!PCbW4DAq?CIr7{lePWN^H1K~ zz1{xCvh31d#m~LDzI)q*T>r%1_*41Q`-l6V9=4B z30drxm2`L5!LaI)KyGRO>hZ(%huwSqy~)=8J9RU6v-$A*=FR=P_xE@BADerhO zKVQAOd3?ON`|0Y(hx>Q<<^N9U|J-ddr`jDmp%AYUJI6O~kNnS_^!VSN9<%xJ{^9Bt zlj2jJ1am31&c*oesJo}(LnP9%y9W}Br2pY^Z2y7jaK`_=Mhvk5{4vP@S1C-g$!dwK zgtjD5X1r1gg>ntu$q>aeOUJA%TIetHkv1vgMkX^Id4a6|3k1?Bllh6{%2l<$5>p}d zi5Od+tH#cZwZa!5ZGVIrh0C3~&p#mAWIuij-L$__n?)LE!r-i!#{rDKF$q>iiRiDe zKa-cty7h-oL{t=_LCwJj$VIZ;LwZSib|T&PPp0P^Gc{8^OMfLY-t4UofFmH?=dYWl z?-Js4cb%_5Itd#dh7*OduI5t2Mqi0_Uie0 z^?=5W9K837sJ{2Z4rK0P=PNkFoO%1%&NHa_@o*Ee^6y}keS zZ%rHi&-Zu#*giaR5#F?a{IGqCuh$&Hrzxfl>8}eJlmfQK?%?xDfBks(hRgTo`-kmc z+FIT}Y<|Gk`h#=%?e%*s#b@st5}UM{v5$cw6soJ-&?hex(WSs1k$s5}N-LAoy1Dzu z{V&^36JhM0EoJgcH+u5PUwpj&#~<9$pETol&k=HXM^*2#U!-V z@^G_x%9{9_2RF~tZ{owWfBD%Hluc;x=~)RZTBe?W5AxYBQOz(D52cNJVcK_p{*G`u+B$F?o8+-I3WHmVH+y zC_Ws5e=HkGTT0(4yx723{P;L6hw2@$0;M|K5(IVB^Z0TiKR#^)KJ?vg=&SoS_SGW; z-p50uzj@CS^mz3iBj507Tw&o~u7Ye*q}o#<15&a>Iih#>Z$IA7y)}P)Ub^oNio8$>&D>?e7ohR`E*IXTsqGb6lJ4P z$cMT`*HdsKx}|_Z&+u2ad${=?=QWuI8zIyubapzrpq_`Pvis&F#%wc&~f!pPIOq2Wr!^AGX{3!)5&Vc=hA<`U8Gxf8B); z2;Z}cFV2JrMr$)5CWI+_(WOF0a9KF zbW)R7Mg*8bIw`f-KK{WE&U7mo5*6_!d-`g3=j`G7S48!<2S$cR)R>0gcvdm%Gx8@d z^f?o9VAyJu7q*5W>=a9X77Fh2H&+k$zdp{pzH8BsbS@D2;-it>O{Hszj+y~Ni|-K; zU_C7Zyjy_JLmRBZ)y-3GaWd%awJ=Otldq2)5=?e=J%57rNGV3co-wl_a;Id1rqW;$ zLLRg9H6XS1pj2TN4_@ghFYuhB`ux+vU1*>C9|(!xUhjWZLdnQ7V1z%0sO4Cg`aB2| zJ~upfyMx4p>|PzP2$hORw~Etnz}WtBbNBW|nEg2QQg`Kbz?;M}~|4r|prn&-V#^ zpV0RSoim~7%Yz+VyVltCgn{F&ZgEu z5Y$Milw5&dx~f8i-}#A15dPHL?T^x5T7-roOu(5!Yxn|$g$c-H_?pCCRjt7XBGx#Q1>;Qv4pwBI~n1s`tOKfgT~ zQp63SK)4a&xhVB(Y~XAjKRj%&-yL2RCSD|xJR0Vi8nPpo_O1vzr2`WI5fjacu0pC{_XnlmxiPKVv6lYCZ>3B5z_`H z1?Py8oW=bU5A4_(K6|Kpb4-Wl$X1CU#f7q%)^Cb`e|LZX;pfFGC=)B_?n2HboPO6& zf}jKEH@SW~wSH{<46d2#i9Kidm%E>@@7`?x^7iT4TC|RKc$NawHt;K(c|S5prkDQwqN36!9-pRK%_{W@`*I(5An zk+9q35BmMruwN(c)kJbNCP5VDE9Rc}|8MUR68*=+-+z9%x%=hRjXQD6D&|PvzShbn zC%yP|C)ao4&V{#vgC>$gs3BR$qxN6hTSS|uu4|nzv{5p%=ti08;Bv8PPOayJ;Ucs* z;6^B!5*jsM=8~P9hcnMEGY+7m@4h zxd9|kE^i=)T1oOR)-mk*kAG|*Zm)m;kB=XiHe0^36L%|2RSY}9nw(S5fa~Z)C)ac; zl9d$6C!Gs3()G2tg)(uw3O#KJK_mOmLw-GO;e<&@#R!vxla)fO>6KVqow#n5T>GU_ z4@O-!nVc|GD~{o6wpDI;NR~)Z0{aV*{)N!tsABRZ?-xD zgJA*q%zP(TI8PV@AzeF;R-saNsH126uQ!h$9&Ud4)H%0kwSDTIAk{+7*dSW7%h#Rz z}NfRSj=Rck(=DtH>uvp?)}yf_YxW zZ1v36DpZ7O%=AKfAzR99g+Q)m*3hV-7$}myirOk|Dv9@%^*C0y8y(+rYO4@P7D(=D zZc0X&Cv#ij5e1Px88PuENpF^rTZLFCWQV;)ZStUI=QGn9IiO33resGiHmOpWR;x#A ztww23Rnj-c+Lf1(k|j;<2p3AMr91Itp_WfITm!jatBh#Aj1(u#@H&~Quvn(LFJaB6 zsJzy3n1z3t$;GcCiRAr4=9elJx6sUDrD`jf(P$Z+*`y!aol__y7VFOcHLC$)$# z0c(({6C{^fKw$jyshw=htBFV-t#z>OKY6+1AiEgI)N+dC3m*oW==Yy9IQR{Kz|aUe-HnN?Ga?w;#8<1XXn#yv)c zN8CJKlJ%!=5j?eOrJSE>DE$YBaC4cJbB&Q{u2Tm1?9;SQGS#j~+5os=1%Z^5?6e7; zcEt5hKRs-JV(Z+&CXHv7QtB&^HWG2gd7EMZkqe1XSP8B0)f8b-@O0*g$GSl|Vj-x3 za4d#~W3R>Owokaj*rc_|q9FnbHr63o%*&x0imVIqe};o}h+h4fUEvXK=FRnO8+MgN zfd7{~u{)_!I&2M@$ui!L-QG5%(Z}6J7)H_4UurS$hqd;ivJ>H0KhAR24+;e^SyEMC z`+Vg`JC*fAlS`s2XTi3MXb#^yW?1EZ_AHm()k(87kL6s8twC@-ngorw`JEfHkk(k zYP3V1;QSumQ$}0Vw=0BXRX9Ak1mC=t?m26GL%h(4L% zW)8L_x85&*q$Rg(OyO(5cZU-Yv&7EBAM3(xY?4J|Aeo^a669Ps{9YexnEUY;<*1{r zw#2!X>Ty@msC8BO>|{AK))kDRWzPHQR4JA)k5Ha$-fe3VkCo_B+Lb>F=}tYCbdd^O zeX6|F;JA@+M;g77n$9iJMUpjUg{j4@l7f|fB|1c_2)HY}Qdn{v@?IsnD2=2jq*R1z zA-bYOhd`_`U?LnVPV(uMHM-ggFv{IP^}cjojV|q;)D+5b?Vcq*Lm~_-6z>srk4r0b z*aERBX%$kDi>#{8898SQGn*0vRV+>_&#|)#p0HV=(3X^Pa&-=_QlM!sEIi{=Pd?y@ zff6r*FZ1zkPy2`h*`&g^KwYkB1)E)P_T?h%(&1E1rJ__a!fqEy;8391oYgABF|X#M zByi%tEW_fgP{3i%omELhhJ`9V)^!F;3vI z<~L8T_EfESgk_qF7mwGLY=f;)Nmm@bvSgoAjF?}80B;L|YSQae*rRKFr zTqiNohEdX}jB{iz?caUjPN)q%Ck+dfNbQPfyg!}UiN`dHJNmt0njVolGD$D?McX->GQ z<30OS$fWG02ZK>#`C&?o0}F7dptDb`|HH?d+r7OSoePL4HIXJI=5$dTb&47WTyTLo zwT#{76a?HC!&_f=59;O(*Bd;CpqJ3Y$joqL$HAdUm6y?S7{*ekv{XRQG+qvaS0FJ* z2+v7sQw|WI4pGBMtc+7}*PUt(!^JSLb4ul|F_QL_3yEQPMH~vt5NV$5m=?x?M}Jln zJM?^Jh2!qk;+~M{IFIV6O^(i%2}I$6F=$NMC($&E5{QJ%6{YZ1fQMWCVtJe;aDlXe zqmTPn@VylGgy) zF!)?C;`v~LRtzAbgc!WA=QMRnhCh{Io@)pP3`;GJ)ga(mV^$e6jZX!Q$%*jNRdRxQ zDs@k(;LK?pszoOIIFRCyHdJ{asde%sBj*v?nGKV*}+v_{**O%hxQ~;yKV@TQl zAhzl^{$j*Q#xck#d6QP220ffTjRi#U6#T7;VX^ugCHlE@nMa{$)P`ZS>ToXdxM>_g zq{yZ?)&f30qOL;h)wrq5qf-<&f2=Jv!ur-BknHIb*@J1sg}?a%o^ceik_CIa;^uW$ zTw^}3R)CQPTp~_F32pv4jX(=`LbsVb`&|8e4(ugDb{@ScFgE zOTiV)!V#Gv_=2@cT-p50&rg3M<;ZM%J_%hRfxchCHIT`xc{;d40&R9R=Gx3^^tI>; z$~k4SDQ9dG1nBW(bcK__zTj4e1y8l+CFlxav$jT}Y4HWB3FP2tHd%*dydP zX);Ig4ABa)cfrjirZQ$0i_i`4*ZNV>sB#FGb1XR+|GVm3K2RSVC$q$!9^)_q@u z<3GoHKj0^iNS95$<&!V7fn)Gy+is-I4>&$s{Nm=#_VyP4KgQZVY@U{NH!yVp&cSs-It{)Eg@HIe!|t#; zp`mE6v8PTxzOOOyMir8P5eJ!{4q%I;V=RYQuq>K!GsAUr_M~?hbRIPzqD*X-29wlK za)%KYUVQI7%yR1&r2qvG05u;6EmbrcnVvEVQpvtD>b8*)7y!2rZ+ zaE)<2@oncx4bGUvii$tJLCPUkXK|*=$b!Fa*x=q24cL>Za*=w!ZgPqwp7d-94sIG; z@7HJ!D*>kvu6(hJl>3=O%`xR7Ci({#;qY>QWL88IMrFfJ9bfNf6J%tUYtclR-ht(Q z*nHO0$ol4@verH=J{@Fch$OpXRL&@F0chjqZcBZ(v(ATX$OXuXdWLzbQqCRr*Z~QR z77AyCjUu6>bH-YFL=ZW}g26N?JeM7_i0>yd62L$d|qLh%An*0-INgTQD{H`BONUT=oKbDu-Y)k3ZkMf4&p%KEC^5 z`+z{}_a}k%o41EbBotQ1sAh0{B@TSYyx~>cbUN|r%n$6*vjDHU5oQkEViGbHdVl5@ zYJp|ZNZ>^css8|(=n9OG8FE$a4+(Zyrc~LcgP^MW673EsE5C-zv*c1$qjw!3Ho$FB zWy7e$7npc@Mtr_vfW$DtE4=m`b{w*&@Dr{+hQUZxhm%3hbC?|+cn)n-DrsMpKm}qq zPugZ*yyBamZ*HIJ9#;?dzwX0HaOLOH)WU->GFbas>laoFjVd`dB58J$3|(2odxgYM zrKwnSK3%dYY;iNvzQA*n{szulA6Li-mRho@zx~075Mc$1fm!VSe0J9tdhP7<3R3#N z0Jcz(NKF;Pb=LnAQ1>RV5{Um|l>P&#ES{OE7-xGr5%D_5=RH5jF%)w{ z%oLV-MH_qP;(VGA!zu_fAvY4(gHN)Dm%U2oB2JD%mxbv|a~7K;yLPni z_{TBJ@ZH${j%~&rUnfD4D{(KY(aLKVd>*EZPn;Z|n}~6*TKf)u5T7iYb~6f@4K!<= zVIwQIE^ zZGZdla&h2GGnG~?2(P_kxyb2ZcAEr#(@%H&w=c&bZ9FV(ER?ZG>)&RVte+U>3I0So z&JfU4s>YQAJxOCWxbdNUWZh^J)MIG>ES!8Sfz<&&d&=qf@#F37)1~o@n0|XtziW@T zt|Yp#h5Rt3?KST(gLn6jk5^9!_sN%~Vs9dPnY4KsTRzQ8o}D)O!}g~qyf}=+hnoX9 zVp0dt8%{|PwM*(dG6#OV`f&Zj?Usds$CsCOBFSSRb|O$p^}r@NV+zfS{0&ai_8Lau z_U7%Ap6-{_T-d)grq*pt)UR|~062^vAFqDgUQ<_nf8m8}F2M)&FTY4yLf@8%b_ZplWlYX>v(J9tlE`%$0+%h~A-S!YCnqX%wfzl*i%GRgYGq#e_ z`62d3WAkI2lV%*=N*fwct!#CS5hNSU2X!)|oMaRne2x*R6 zYKGZ-p|vyXAm^QRL~yB5qELcrun6sS8g8owNLF#>3NBg<(#8W_vXZsXQVqhHOaGvW=c90!UxBUywnH8VM#4Tu2*H`IcC^z zBDJTg=^>2DDKC2Mg@<@AvHzhLgJ7dZ!Z~FZ*k*8>3YkNTm9w_-{{5dJX5M{x%q$)a z2}i998$w{U3e_YAA3oL4v}B=nKO3E9YNoVLVVNTav0?qPTYs z5-4`Xon%*V{3#x_6cnG)vjVTWMekNA*!|m(B_@oRu)9cx5jqzJM4UFEu`tGLSkX;j zK<15n0$5UB0UN=9NGi~XZ>3NLuAljAiG&`u%==T}M{WcK5*#=(i4-cz31KuX|Hleo(oj;-DcL$sYW(ur! zPu{cMaF#ud{i2hnz&~TDUK(z2-?r5AZ7pS?f1fczg|md{L|OZho6Pd0hBRYMmN%Fg z(R#y`?4^WwtX35}dZZg(aFul-cABOd~Ty^;3p;r>ZvU9$5 z*?3Q??SugEfSD{KFiBxg^&aA1w6r{PI;WtRn2F@BUDu%(>456Oz?m$7GBd7RB~7Ol zstvaAnUh&kE@qZFDJfRHCD#+^%rmC)68@Oi{_Jzm;}TwzJsi{&htCQp#yXsR1YUFP zgqJ0VWeK=h*z1?IbfB`WrntQTx9JtvLn7cKX)19oZc`q$fyumOg}6dvle@` zvDjxJH!%lX1{t>jTqykhY~W_;5FvNTB@ z4ESipX(Eo9-c_7x^nU0Azr)e`(ucm5KSv5S4?ONpbbO3iM$Ioojta@`5>7`HTHI4X z@ZlwW=FhKv{S~-TOBqgG3WE`;Sc9$RwTi!%0yaSg(S+j#=lc|c=kSF)SA93P&TES+ zkeDV{J#VJhtM8J+4`E}o%1!_|f3XJey&8LPFb(NDO9#(k1?_9zQ7p`1KPWbp_dFXT z=WzTe5x+^ciYV9#O*T8?0}!oejCKY$EafY6s)cEwkTP`mlPs}0*9woK2$cok8RboG zlD2D1$CgqBZoxsZy5rEG^XO;=Z&w|`9bFH+rVd%#WkgD*VrL?|g_4GU$f(OX?%WJ6 zretExN~&9(tK(^H--)u1yj4;V$03-)q-kA1V{2SAtRO{p^K2NyGjJLY8x&p8>usSYhzX~XWPo% zSu~k2Ssn;2;d&~3o;Ji@o@P_hmW&jfSO@|L+Gg2_HS|gdH5+9MQf2FP+-Vl zN1xZ=7kQsb@=CHS^ZJyq8-XKOIp1ZaSzUq=@UXJEl>nf~Y{8hOHLE#EsX4?7o5$+a z1W@%+*cAr~h7VU@Z`Hk2YF4PY%cqdBVc&RmF^m9VL{LJlBC<|+*hMgcC!7Q(2KS0U zq{yA{axIX6w{a?P7V!luezf|9YO{x!`Bp;-lCgzbS$-$mZi}nP-_aIHV94WGtG|k`ab3>93Fr&s_pc-gf4D|TmS;t= zv$ShI9CcUD9C|%2KoM+GN;Nz2E`FlPyc427T&X0B-N&vg?YN_MDyI9}_j?vIEzV`B zH17x)U>6EC-q{c~XBO*(WJ7xPilR*=+R2*gm5Xw2*_|l@$K6!$4?7X(p4^KURNE;_ zQVhOGR|XSZza#_7?3FqmRaxGqYW<+GSCrSgJ-`*33+|c-Q$GQlKV#^lryy6C#-ssx zMKtF*yKX=UeQ}KSg>#`(5XBmn*yCbzx0;tm3_b&$JKX*h5j)157kaU5Yo_)INm_HQ zhMgM&7IHl_QgQ2Af7EU6f}iZ;(Nija&ua0l$tHcD~h3xn6rCBlt-jvKYCvD@R?dJ>!xi zODgsk#(d5Zch*qr+wS2Y6B@=rO(45yyi? zYm9@}!|g_(#--=ua?!Cs^hLZ&DsaPUmgzniTP_u3vskss z?{)m)QX|U6i)CyHo1oB2wp(wFJcbDOb;28zD7d_G5Gz`B!V5^`%vN01OJY26CA@OV zC{af>5O8cGZ)#Gylp^8)9LOjW523T6idsSNZdhPenPW7cOUM%OQ$`4aYD(ax&>-iNpS0Qbe!6O+n{z4)mdgjmU>2(n@&gV zS|-IOZVEaBCF@40UB(QE9Oxc5eHPD+K<$=9znh1Sk~idkyCkwB3L^=7zQzKc z#^rY5sst~kx83`TeKV{$xlZPkd_)a#8T2*VmOeRcVQTH+%VF$2$ z;a2yd!st0HGAnfd%ds94m;xt~X$)OgLq6~q4tPT0ltNhH9*rBbmJMhTm<*^{J)gV?~{dm3~VeNro) z3BRN;YqM$WNp_k3^+{ADKbn(orNH6B@5cL_#08fPtSgi&fA|DKL@2 z9+}#y6i;FOu9(jLzdruQcfZBa@2rpby|C3h}QvZT_%}{GkN7<2UEs>L-+!nR1I35>_ zeCTbRdnh^nBIkXJs|HjY8FDTBv=DEWoQqqmUF;)Vfj+I+xSB`{ z#wM$J=?vChlNxkZvKIv4EUzB}pPF0*4u$hWPNPDKaf(w82JYyN#Jjn2CsMj@f+lZC zr24_8D1`{B3D_n^`BX^2Yp{=GJUC0KPr$mq7Ml@#y=l7S2Z#&M1}nyk8Q0~=qP41KQ(L{+k^1E_dHW;o{DNy&q%;q#toFH zR;$c)8x-@3`d5N@-gUW zWm1{W$pSBjwK(2GicsN4D=CQ1AHmP{J4jS6k=TzW9Df>C= zyqfYNAuF9MGF#PF*j_rLhEf$*k#m(<%*<|Y5%DvMIm4J%iHNDZ z5vrQVSVYJ&!77#*_LBKAxVyQOvE#2`RxR#C)ToiO{e?)!r4zWCQT5UVKh2~nR&XgI zx?r&_tB)Q02!kq--OOdNHC#0O1oraGfmgzSi8y2*vEbIiO?gV;^Wq7tkY811Wn*6| zIjMPi=_F18fnnM+^OjLqUuAGSVFHUlV8TKTS3H~tDXJ5ua2f|}yGNyMb`JR=wz@MW z@Dg5Y3qSH4OS=dIZqe(92}cJf*V`Z%@WMQoVZdbx2AmOJrVZa4}BOFM@9V?pKbtu|u0;&*VaG7WQ+ zwK(96(QE3kbQiD5FVs!ZQ= zHD>wYcNe09m5D7XYO+)mW2bNiXDWp$)QNv_61AO(_dYz1{N#zlFunW3fx%bOry_W# zN5EoP^X#VruEX#AEaW+3dW&MGjSVxrg=&=-b=7(ES_SkiUU^&Py3V>v~Wxc|@qV<~Y)x^!(3pHMZAxj7PWf|bj1r#O`u z&Z!1!)odfZQ|nYnN`-|&DxcZVUxnwy4!vBu(Q{=Ch1dea?Ot-rb)McS;i+9y6%H^g%$SH^bwQlW*wzSYAkCTNO%2GI6>{o_ z7r3~YfYWNH*bFx)uCkOip-w70(k9{KGy79;3+JhQXm%>OcUA4;aN7Bnj1OY zu;4^WwlQw!Lh)STyHt378TSwwyEjWwtW!L#l;-X@XgI1_H_h%W71)_^B#CCJI453? ztHlnT*vXnZA|_IiBX-Bl+fJce*ABN-erFyTzOPZU-C0VwV8~IG_@0r@LE)AlFg)hu zW0!04EQLp7IEM%}PnyOW(Nl8NQi9I<0ZKM@Cac>$a>Gg}nS+RLf35=ib0ROxa2UX~ z-}*Eh02Y(gV8Pd>zoT;|aZFgXX~W9)Ym8cQCu*@5PGBuOz>O?~#sUsQiW61ot0%I8 zFN_L!9r>NJm+TW~bDB78IgvSRB8$SR8_s13Ku|2h-zZu#?v9#=?An(V`m*vzpO@tq z5e2@FHxfZt*k7ZF#a7ODSy~Rm`h0#dwpMD#B(QrhE(aCB?NPEDlPX7AoKG<3 zguCU6U95<>*MSO1Ovn+7TH>!jLGK?-ng8>#!dx>$-lb_VMa1&Gu4kZz(v zDARj9vUuntzr)%3(#O7v7EBq_)LIFsND9yORLpr){`$h{Eg}kF^a9@o`#A}l3%8os zI_@xjuhgQrQmXS*<#zbOom=kDjoxbX0F4rNXU_EcdOzvA5h22z=py0gFV+AqFTy|A znA-_Jiw&N`s&fAsu!jq#aQq|*wZ98h<^#7?72Rs54k-7p9c?wzh8WG(a8q{vhv%u~ z1*FY-M1eI;u4MeO-oHG=qOXD!P^mdFD^&42IHfvt=oN?p>IpNGUcBgOqO(i3(y_NL z_@)^bDPoo8Hs%IhLKI+7C5~7Vd~_71^84rl5qD7{=^!#q(OKB>Lf?bMPU5JX5$IOau7~Hu8`Vd6Dl#f(PU`OS!r>$ z!xJ#CVqGSomL?nE3A9vFTGOK{7jc)Z#1l~GE8)gY#MG*dG2yH61deT_xFkupRV;i{ z^KmAgps+nha+iuSF9Y!eieOA|l?9HJ**0*3)ZsuXB!tEdJ{wPvE2RUJ?1NNRpN}V~ zyKJRqTuTf(rEZ2NVD_vEbN9U+W)nw`NtY5xF`GPC(I&-Wq~`QMzJ0oL(y-L#Fc6$B(S#0N*J!3$oX6Oq7-BlwFYwTw#niPVP z>}V1H%0%o6ECGe&a$-PW$#u>&)?f(&;arEG(VXOJV`s8jEg2y^8_as=;|qm|pEDKe z!=VJ%e(KXu0+&jMJyHz{^Uj&WF(d(%H)>N7$5cNBB)D+=l|TZ<646MSm!wHLC3AK4 zM3#XB2u=e&615#%Q`p4WoCXrOspd+;=G0O?iLbbJB8xx*)&y~JBF=jvTI)!=6&UlKCi+r0}0@o70Pch-P4K=0urp8?=p}emVgANTz+gxO4$2) zAi-54WBSBekQEoBrcUb+?YNND`yYS&{;yB>EK5Ut+&55wM^Hh=^AH>)W{AnQW(yDe z^QX^$`tl?F&E-c^x{$Pr2+AWNyj(ZeeJPO7>R^F~AKv3nefKvNYBhRF%^4nN)8lhK z0n;dr1V*G|W|9n7&_!s9ytBq4N~;K&Sx>tTPLX*HX|teko14i+fQtGAL=kv$aQUeO zf$zH(PoZRvG$JraJYjJuo&sJIu>{0JAOJlJPJt;9z*z#Hy2|-#ZJiyeu*m6!(gGKv zDXhX5hQ(^|0pXqGv!N8E@E|iKJn2%@*B~hjQFRy8$dtJCJWs4GUfd4!`8U<0mrd2P)+kf--0AMD^#>eoTJ3gM+SQVql7a3{k-r zMJ*@6`p;kUS@gPMMoUl$%6Pz^72FRNaXgy7ekSX%5ir!Si?{@6hV*2ueZb9mY}O^69WmC#6FLCtuwsf&Bt zUt@N?YSbkZ20U1*)?gherC!r@7x5DOf}^qim!y$%d*U5)9B)x}3=IiGX6v4w)`Gio zB4^Nr!`LRJa#72OQ}lQpvAY)6l`S97KaNc#8Xb7e^_cYB$>A33m3R{-g{TNk^vDH6 ztfvNtBM%1wz7<9-dIHpN{&)wetp5g7f5}Lz3X>F|rkI{p@{LqEXIHFLLF2`viW@f& z0qH3=l95glTL|L)0aR%5|a*SXFd;V)Mewrw&`DRha0HFO}JpOiw|+4R363 zk4aNGSz2RufxXwbTT9P%T)riiYHG|P;Nnr3WCEc4oD1mNVp_hajMj4yVS;PPG>Q1= zFnqCi#q>p|Sqa28@?079`dIwpiqgfeyiiNZfndtu>AHnD*Q+d!N=lT{&*OB}sNu}>{~9}aPO?>B zK7-}HQ?ta~5Wzl!C{t#!R46hyEiinz+H2=hzH(o_thvPE4?QofoT?7_j%*xCMj)ad z{VA{;Q5{;G>C3uMem42KR2LHRCrTB%*(?UwH0o+zJHQV6Hjzja)7c4 z4nEXA^?yN41n#7y!YEyW=Tq+fOTSnTz1`a8(a5z?Pl|2a?IgVL$f`bzGR~Rc zQca|@z9askvOr~1^mbEQRU}~|qstK}{*mKkk!0``zs3FjO}D~NHgsQ2IDoegR?w@$ zmUY>u7oYsxk(lCp_{-N99VM{52;y+NB62(+!m@gp{Vsv;^oNi9ug}M6HPwm>yck7c z^!rCl;Pa=n&nILbomsz7x@>sOb_p22fqLCJ2D z{lojO_@P5Ifs`{1mi0?9&BF%%{ln)6Z1oRtG;pIINM=-cT;xSn>g-yn0|x%TaFjm$ z>G40l`|{nPjE#3nyUvBmlv_ zE3}>Moagu5b#O<)C(?q*$S5jrR)+iJpWpxaU=e;l_#UR-9@XESi2i!0 z_2k3=`vv}+Hseo!e)r)qSA8_iFl^z?dfQBIoKP9MF7PdlU1 zz-omdfOXdmxGcCsh~pG;50Hc8O39JcP%#od7xtz!crfLvA=i;v;2aQlOCfNawXMi3 zaQv#WktqeGKNoVC-(2Y5j&caH&_kO_nVw2SF~Z3r8&(Itndv@j47ckKOE{Xh3B66| zZ9>;f==j|stE~JA}>Xb zgH5N-@;FxCcDzvN0EKC$p!W@zvX}854u_rMB%{epxH5CpZZgI9A3uKj`u^Ay3G^;Z z%pfTD0v|cw=G;8-R(Zu_$Dt-Pt8@}iBRR9WC*=Yz%Zj%^1+sU-@PDN4DJKgWL}Ga^O|9#c!?;Jgegu8&V6(-)S%QJGX8 z*JuGN?gV)&ob+NwHlRq^&WDOSG4vG%o2>nr-gK#_G4$VH#UH0o87xrTfPvyUP;u=) zuUQ*)J{#$4YzZp9|C!tSS9GWp_e!O6CC47JqkVy2v&EA<=MlUehM zi2K`BJrX&rSb!A}aej1$*Mz9WbCTwH(^>@&&sZ%S zZi^0-nFgW5GkG(q;6g;t0Uez&=dZoj#kraeF=sqDF~kVAY+Hpqtv% zLc$njv0r-o=1pv>Q`{R)vB88`tZBlSWmDnYkVy^R4tbU0b`~TVd;Zw?7r1Xt{f09k zl-AgFZ;>5#{)SVjII6klvY5NN<>$dKV)YTos^Rq5ZS5*Wff2h@ZbJhN5d zoW0{p$dPK=07%<*#5`B(1vt$^+ej2nGO0l_-R_L9snc<^%vsU?dbR8?05j8ov~VIV zQ?-(!uu;YWX;W_xq*9W31aAJVvZ!Mahi}t)o6g&GE{4u(qUp?D;6p@?7B`#Y0pzUg zqL?sG+z_d0G2gQIv>G?NcTsWubpTPig#kSUnO$ZS+-MDt0%nC!II{4uMXq>0z~i&c z9G4KYaN}?ZH|pcCTrM}5;##;Y6&er|kQ*@RmX*;}VAn+kJ2VAzHLz08iX8*l@k%Ea zD>Mc)1+N;I&HO)YYWyss?QpIj~4vnhp%&1d_Cf$Ff|6F>6Dv! zrEj}dtq6W|S1Df=lxzrls+tdvD%NL60S#PW(IA!6Y z6m3o8HodWAPiCMT>Rpo|mP~ZNhxyD=L>a~TN$}MhcEjc#+ zth$Z1!dyAK1}N1vt!^ViIs~@nOOux8)@>Yb!ks8haadxSsu2;~g-s5){i>H&UbrD; zLWav&`tM}ZLWbuiq}6Z4^T>owvo&p2Qo?F=Or$Z(aT zI47Q}kUg*YI0+ToF<_#5E?vzj*+wvt40kH0(uJ(!P_1SpPy{}c8?)VHohYqr0u(_Y z*b08Zzm7xA!ILCZgp7^3!drY!Lo-7_rQjeFsHyC6t+tthiVKPE$W#f4rKBEM+$mCo{#|Lwgei+Ky*Hpp za;xOIPS)Un+Fc?=$lr_T0L$p`mGiwKMI>nl)6@A_*7mp|QbbZ?8V_q);IG&FLy9y@ za5gkblZfzqFF+9(8WDCXkiV~NgquBy6TysNp$iL41nZYga3T~#guh9KaYM5|TE_edSwxflYA&W+?wDns#U7y`qMQK$sM zs-pb@Fa#-71(p`E{>D_T6i$U($l8jR)PC{3pOT8gP>Li1RDbc!pJs}CA+mLWvA9k1 zCsrNTR4{)gQnqXUw8q+{kflvW;bS)L|I|z+nj*N6gt9n;`#(bp&O{|T(+=_VjcxyI zJ5_j+IWi7mt;@s;=X8Gtnc_*LfU8@zY?Id~jzp-DDpmq-G&iqbjM6en8p)F6Dx$;H z+UQ;_(S0k0(iv?dX>^2!jat5)XSTUb&+NBc5ies~Qah(K-zc+BfQxtBWuy9o4d-;s z9hc{+X4w#6{Fa@4o6g&GZk^fprif(=f=n2IW_QNvNO9A|D;tKXWG#2w1WJVMZCS*@iMQCRCBnjo z-&q?dY&o^n@hfS$uOd$5#v~eCAhBHPs}L|vPU7Cq7>=zk(~3A+Dx3y7UVEA6NqwL> z8xu?>xU**KmzuH>l!8wP9CDde!)d{Ol085n)z>ayidd$Q*s!qtm26w(XEjo$Bf@Ky zY;CbVN4&mlk`X^zGqbM#bfZpF_~uzE>x*z0ZYh$gjf9q!?Il)kDa1*Q!`7@277
XyHbuE7%`66z5;mgTy3-U_ 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 R?SKFG{{uqpaxdmz3jmI27a#xt literal 0 HcmV?d00001 diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-observations-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-observations-20260930.json new file mode 100644 index 0000000000..d58e1b9a25 --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-phase-diagnostic-observations-20260930.json @@ -0,0 +1,64 @@ +[ + { + "label": "candidate", + "source": "/home/ts/code/projects/openhcs-compile-perf", + "revision": "01e8994018c62cb4ea8a57d6786ed3f4f2e8b262", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-phase-diagnostic-production-candidate-20260930", + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.9503471851348877", + "prepare_seconds": "0.0", + "execute_seconds": "16.848363876342773", + "total_seconds": "19.500764351338148", + "wells_per_second": "0.05935294413982393", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2514.421875", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "6e456862de003762993c25249e8ed045a41d346aa9ef5a6ca350d655fd61e47f" + } + ] + }, + { + "label": "main", + "source": "/home/ts/code/projects/openhcs", + "revision": "8e478cb21f89fe74c3d6ead0cb54c67a5e1047dc", + "directory": "/home/ts/code/projects/openhcs-benchmark-runs/perf-generic-runtime-phase-diagnostic-production-main-20260930", + "csv_sha256": "517057a4b018195cc4c57e8503be63a378a8306eb2ecc303d4a025b6eab6dd1c", + "rows": [ + { + "case_name": "ExampleImagingFlowCytometryObjectsInGrid", + "mode_name": "1w_1t", + "worker_count": "1", + "well_count": "1", + "compile_seconds": "1.5249240398406982", + "prepare_seconds": "0.0", + "execute_seconds": "16.572738885879517", + "total_seconds": "18.796802475117147", + "wells_per_second": "0.06034005645572747", + "successful_wells": "1", + "native_single_sample_execution_seconds": "", + "projected_native_execution_seconds": "", + "projected_execution_speedup": "", + "peak_memory_mb": "2585.53125", + "status": "success", + "memory_limit_mb": "", + "error_message": "", + "execution_route": "ordinary-zmq-outcomes-v1", + "server_lifecycle": "reused-per-sweep", + "run_input_sha256": "db1219c5b159e6833e050878f0ca2fcec519de2c42d21501e3b0fa16a51f7543" + } + ] + } +] diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-costs-20260930.json b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-costs-20260930.json new file mode 100644 index 0000000000..d4a1f09b0f --- /dev/null +++ b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-costs-20260930.json @@ -0,0 +1,22 @@ +{ + "main": { + "RuntimeValueStore._mark_mutated": [ + 57, + 0.00012560700997710228 + ] + }, + "candidate": { + "BoundedCache.cached_value": [ + 1623, + 0.0013636727817356586 + ], + "BoundedCache.store_value": [ + 587, + 0.0006533032283186913 + ], + "RuntimeValueStore._mark_mutated": [ + 57, + 0.00012847688049077988 + ] + } +} diff --git a/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-diagnostic-20260930.json.gz b/docs/validation/generic_runtime_owners_323_20260930/perf-generic-runtime-query-hash-diagnostic-20260930.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..df813b183b2f55b5c586fcfc8070c2877f7f162c GIT binary patch literal 92926 zcmV(~K+nG)iwFP!00002|LncpawIpBCHyL5y6#Scy901wFSoa6tS{PnY_zsFV`DU` zDkX8mBI_erEosO0-M@2?q{L!oMnpy;f~@J9X_czGiU9-yaQM&hbN=g_cb7Nsuijri zZ2!3ZaP{y<+5G4I?aep;33 ztDEgN_=Ar>Uf#F=@$#3e`wKkb?qU1>8$RIWEW@E`>PD)I)|{kEzL zKiu9v{CL`O+Tlr7O<2xgo+K34<>xrOl=1K^RTPs$o?G*j86oNKV0@oy<2Wv!_WFKa$LS(Pl=6Xt<`t9D%1KV9G6U)}t0+LHR=j~}r` z3(ilC$+g%DlN?^ma@>A;Rw=X8dJDXv&}E1IhX?YWVsPI`Dx9Jy^3 z$4+aJ=-F}nI&S5EzPf(c-px67dgRhgxN31pNYyAValN??uk5kQSCfVs;I?XkfqP@S z_~1Qk8yq;SvZh+F$T_~XO?>1+HYxDGVKxF>hurh*{rQ)Vn8M%gzWwp;>gK0eoB7D~ zoDk5!<-w$2Ip9pJKIh?;K6YDsq(=cCtzgz2or-_kUSsfC3tW#Zumt$NHLJUed0B0) zgA04iv|(9cC5lvY`0T#U-8?+gaO}pwYsDhz~d5l47r%EJpCk7XD<2+RUAH`(9R zZDHxiPKGy(xh6~sr?2Ni_qZ)AAKB3`yrD+?zbm}Vev|&&-?w+ym%sk)(*yH(Cob`^ zc)3&$FpDmjI>=3pK%7zp)C zEhT#LT2p>YhB=0#!9J#3y`&myPS$;)|K;xT=F|1%-POadr%m`+{OneOh3py}w{={1 z!o$1bSV9GtNVTHy-EvMnjq>A^|M&Kn2mI@_^*we|=TbDp3h%<`VXQaV;kAv2*A^yC zJsV;=W8r5ZJMovBhwaV%$y@lyC7t18DouqH>}8MZPkMN%k3`Q&X(}=zI}x>zmY(+i zy1IY3yZY|a!xbiT(z+kJxxJQ<<{f{1fAROr>rb55zsLHAf3i)9@W=~o5L|;@>Vfa}?d_+#ciUFo-<{BhUpIV* z+Z+6six1m}OHBXr;^(V}A1^*!-Lous@%`QH2R>N+4?7eGo}5EXF-FZAwD7^7P3ivO z_HO(8jHLVlpQzv+P1S?JwpV+a(Z60kV1Z#CZa;new@;YShwbL#^5e(rUoY<4WG}wE z!m45(A1{BszHMvs@4A}_zIJ6q>H!f5reY%x{Q36or~8kWc;@({jrlu;b;SNpur|}? zdc~E!;IsJH`|XEI{H=FwYsu4t1=m{+m@tCqY<~2?e9Fbu&BspuWtVN`u69)Za>`K{racd8w9EM+EgpD z9F6VMd+7$J3VQ;NC`G)L!1B@8y1M!M?N8fhFA}RU2zS^##mXH2$@|N{V6b+Z?JUhx3vPqGN;-WpENZJMnxL2?s25{J^&l<>)SX{84<{_J_|OQQbAd zcpxyx;W+vTeAC~5N+QDvSGZrq!NmXg+&=!-H`kZnZLewnZhyYn-d*hM)x{6*Fo93^ z%`16<`AV@QZu$UAXEoBueSfvRe!nwi?_f6`__*-R|HDwHJ>NIZdcD&<#{lsuA=T^o zX(JUrMnY7m#aIyTJV4%fj#%h`eG*xv8+g81dO5<=X>8``)1=KD6<#Sa(`#^dJG<@L)^-+iQ+yTAB|5qI_+>-zGAu$7`7c<0@#-fjQCPuu&41Lv6V4a0qbUn&js za&P(CdVf2x)OP7aQ~!MC7^U36BwE8bo5M=n0Q4cjGs|I&7Z5^;eMP!^>g zG93f68yx%N4oh_L@%H-a-LDrv{d{@%!~M&}QJ6+y935FluX57jj0}IR|MB|jDH8a6Dz?GR%y1-`6KR~6wGdAZ6Rp+N-P0Cm zQPxX02C)v}dBo4mw;sBse!@-H@*VI2uP(3Kurtn6B-E%F!V0FR3%>m+=jrK%Zf@^B zTwY)O-)Di>F3oUYb0^%r3C6#|9(hzh{k5J(ZIRwn@Vq|~41OhoMm;iSd+GU}GScrJ zJu@gUy4TEB+}>ROy65~LxHP;OVb(cjo%i7e$35_>u<|%Y6|uf*NS5r3A@St9_lN=> zuKvC~`V}JrBpl!3f`}q%p7D-2n2-Daamd@7gK?^60$&Iv!FvTiH-vZ`>!|TfwRnal z3{26bBFp;Ik2~qZ<<-r__t&>SANHsX_bKc_u*&3%#KrxX-Q&3ZE*@?lb`SY{o#5GH zzqw>F0&nAT(|P*a2&AtMO@vN>6)X&_is)JQ^fQO@$ZMxioefi-;ohWt+SQD|`~x#Q z{9`#5%0DHJ-u;L@abN-!o=+C+O+ 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
oxWS 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