Repository navigation
0.6.0: domain-blind vocabulary, declared messages, launch policy, execution transport config (L3) - #28
Merged
Conversation
…execution transport config - plate_id is subject_id (execution_subject_id, GenericSubjectProjection, subjects/by_subject_latest/get_subject); the results summary carries partition_count/partition_values. - Messages are declared types: WireMessage encodes with to_jsonable and decodes with dataclass_from_mapping; TypedWireMessage carries a wire type, WireView reads its fields out of a wider payload, and control requests derive their body from their fields under ControlRequestHeader. The 45 hand-written to_dict/from_dict are gone. CancelResponse, ShutdownAck and ProgressSubscriptionResponse replace hand-built response dicts. - ExecutionRecord's server-local extras and progress event are attributes, not fields; its fields are its wire record. - process_launch moves here from pyqt-reactive; host families are BackgroundProcessPlatform subclasses. - ExecutionTransportConfig (execution.config) owns execution endpoint configuration; server_poll_interval_seconds moves onto ZMQConfig, where the base client reads it. - Deleted: validate_progress_payload, ROIMessage, ShapesMessage, unused MessageFields keys, the _run_execution/_handle_status shims. - The package root uses python_introspect.lazy_exports. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OpenHCS consolidation surface L3 (receipt:
docs/refactor/consolidation-20261009/L3-zmqruntime-vocabulary.mdin openhcs). Breaking: 0.5.0 → 0.6.0.What changes
plate_id→subject_idonTaskProgress,ExecuteRequest,ExecutionRecord,RunningExecutionInfo,QueuedExecutionInfo;execution_plate_id→execution_subject_id;GenericPlateProjection→GenericSubjectProjection(subjects,by_subject_latest,get_subject,adapter.subject_id). The completion summary carriespartition_count/partition_values(OpenHCS's kernel word for the parallel axis's values). Noplate/wellword remains insrc/.WireMessageencodes withpython_introspect.to_jsonableand decodes withdataclass_from_mapping;TypedWireMessagecarries awire_typeundertype;WireViewreads its declared fields out of a wider payload (application progress events, status responses, extended heartbeats). Control requests (ExecuteRequest,StatusRequest,CancelRequest, progress (un)registration, shutdown) derive their body from their fields underControlRequestHeader, which alone encodes the relative observation budget. The 45 hand-writtento_dict/from_dictandExecutionRecord._to_transport_valueare gone.CancelResponse,ShutdownAckandProgressSubscriptionResponsereplace hand-built response dicts; the execution client sends declared requests andExecutionClient.serialize_taskreturns anExecuteRequest.null;PongResponse.process_usageandcontrol_capabilities(an ordered tuple) are nested/declared;TaskProgresshasexecution_id(thetask_idalias and thecontextsweep are gone);ExecutionRecord.client_addressdefaults toNone; its server-localextras(wasmetadata) andprogress_eventare attributes, not fields.zmqruntime.process_launch. Host families areBackgroundProcessPlatformsubclasses registered bysys.platform(WindowsBackgroundProcesses, defaultSessionBackgroundProcesses) instead of an enum with branches.zmqruntime.execution.config.ExecutionTransportConfig(ZMQConfig)(hosts, transport mode, request deadlines, discovery, port range, artifact TTL,client_endpoint).server_poll_interval_secondsmoves ontoZMQConfig, where the base client already read it.validate_progress_payload(useTaskProgress.from_dict),ROIMessage,ShapesMessage(no readers), 34 unusedMessageFieldskeys, the_run_execution/_handle_statuscompatibility shims. The package root usespython_introspect.lazy_exports. Requirespython-introspect>=0.2.5,<0.3.Tests
pytest tests(local, Python 3.12): 376 passed. New: one round-trip test over every declared message (it fails if a message is added without an example), typed-kind rejection, the launch-policy family test (moved from pyqt-reactive). Tests that asserted the removed stringifying encoder were deleted.Lockstep PRs: pyqt-reactive 0.4.0 and PolyStore 0.6.0 (both
zmqruntime>=0.6,<0.7), openhcs L3. Not merged or tagged; the owner releases.L3 · zmqruntime PR · src −1171 +799 (includes +236 moved in: process_launch, ExecutionTransportConfig) · tests −148 +286
🤖 Generated with Claude Code