Architecture and ownership

These explanations build a maintainer’s mental model of the current OpenHCS-owned architecture: where declarations live, how compilation lowers them, and which runtime boundary consumes each result. Generic behaviour provided by a first-party dependency is explained by that package; OpenHCS pages discuss only the integration boundary and cross-package invariants.

For exact supported imports and call signatures, use Public API orientation.

Start with Architecture quick start. It routes desktop, Python, CellProfiler, and MCP users into the same declaration-to-runtime model. Continue with System overview for the expanded system path.

Architecture front door

Declaration and compilation

Runtime

Interop and application boundaries

Specialized subsystems

Documentation status

Older pages that describe a fixed five-phase compiler, string-keyed step plans, generated CellProfiler semantic sidecars, OpenHCS-owned generic configuration or UI internals, or the deprecated TUI are intentionally absent from this navigation. Their durable content has been moved to the owning package or replaced by a transition page. The hidden entries below preserve those inbound URLs without presenting historical migration material as current authority.

Architecture invariants

  • Public pipeline declarations are PipelineConfig plus list[FunctionStep].

  • ObjectState resolves declaration configuration once before compiler stages consume it.

  • CompilationSession and typed CompiledStepPlan fields are compiler authorities; string-keyed semantic dictionaries are not.

  • Callable, module, artifact, source, measurement, and strategy declarations own their respective semantics.

  • Generic consumers query nominal registries or shared strategy mixins and do not import concrete backends to discover names or behavior.

  • variable_components, group_by, and ProcessingContract are independent declarations with different meanings.

  • Runtime workers consume a CompiledExecutionBundle and validated typed runtime values; they do not reconstruct semantic contracts from sidecars.