Repository navigation
Resolve headless compiler declarations without editor state lifecycles - #597
Merged
Merged
Conversation
Use ObjectState saved resolution and same-epoch provenance; retain scope and provenance on ResolvedPipelineDefinition. Remove transient registrations, live snapshots and editor cleanup. Fixes #596
…esolution-20261004
…piler-saved-resolution-20261004
…piler-saved-resolution-20261004
…esolution-20261004
…esolution-20261004
Refs #596. Preserve the contract reuse, axis, author isolation and recapture assertions after the compiler lifecycle consolidation.
trissim
marked this pull request as ready for review
October 4, 2026 18:43
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.
Headless compilation currently creates and registers global, pipeline and step editing states, computes live and saved snapshots, and then unregisters the submission into the editor graveyard. The compiler only needs resolved saved declarations, step scopes and inheritance provenance.
This change uses ObjectState's one-shot saved resolution operation and retains those facts on the existing
ResolvedPipelineDefinition. It deletes the temporary registration, state-map and cleanup chain. Existing UI registrations remain intact; saved values and provenance come from the same resolution walk. Authored PipelineConfig inheritance, callable preparation before disabled-step filtering, scope reindexing and detached mutable capture remain explicit.Closes #596.
Validation: six focused consumer controls passed against the isolated ObjectState implementation, covering inherited and explicit well filters, pipeline source isolation, saved versus live UI ancestors, unchanged registrations, disabled-step scopes and post-capture ancestor mutation. Existing declaration fixtures now provide scope and provenance facts directly. One original saved Speckles request also passed through the public compile-only client after mandatory normal registry READY: W001, all seven original steps, both canonical source images (four lookup aliases), matching admitted/compiled scopes, saved provenance, and unchanged editor registry. Source/input/actual installed dependency guards passed; the owned server shut down. The subsequent bounded production qualification is recorded below.
Dependency: ObjectState PR #19 is merged. ObjectState 1.2.0 is required and its current main
27dbe365d7b858691898dac9b50c96f0a211979bis pinned and used by the public acceptance.Acceptance head:
4f5fc3eacf98a1f819e92c65252b3b5afea637eb. Retained evidence:/home/ts/.local/state/openhcs-maintenance/20261004/compiler-saved-resolution-public-acceptance-v1(acceptance.json,compiled-plan.json,pipeline-admission.json, actual imported dependency hashes and terminal source guards).The measured pre-change ObjectState constructor envelope was 0.295s within a 0.545s diagnostic compile; that is an upper bound, not a claimed saving. The new single public compile-only job completed in 0.417s, including its job setup; it is a functional acceptance sample and is not comparable to the earlier profiled compiler scope. The subsequent matched batch did not establish a speedup; this PR remains draft.
Bounded production qualification on acceptance head
4f5fc3eacf98a1f819e92c65252b3b5afea637ebagainst maina3e6a15d49c5ba781bbbeb06f860cb1935fef5d9: six ordinary jobs, twelve strict comparisons to both retained V15 native outputs, all passing. Both source revisions imported the same eight actual dependencies, including ObjectState27d/ 1.2.0; the baseline's older declared Gitlink is deliberately equalized and recorded. CPU5, 1 well / 1 thread, INLINE, normal function-library/kernel READY. Startup, input loading, registry/kernel preparation and shutdown are outside pipeline timing. Speckles was the first job on each of four independent READY sweep servers.Candidate total increased 0.103s. The 0.240s second compile observation cannot be selected as evidence of a gain; the first was 0.568s in a different process. The old temporary-constructor cost was an inclusive ceiling and did not predict the measured end-to-end payoff. Do not promote this as a performance improvement. The ownership/provenance cleanup is separately valid; the remaining context/reconstruction/axis cost needs a bounded phase diagnosis before further changes or a merge decision.
Retained-native mean Speckles timing is 1.893s; its 2x total target is 0.947s, leaving baseline 0.342s and candidate 0.445s gaps. Native timing was not rerun in this batch, so these ratios are contextual rather than fresh paired figures. Candidate 3D total was 6.212s and Beginner 3.867s (one observation each). No scaling/catalog claim. All owned servers exited and the benchmark lease was released. Evidence:
/home/ts/.local/state/openhcs-maintenance/20261004/compiler-lifecycle-ab-paired-v1/{decision.json,timings.csv,measurement-method.json}.One bounded post-READY compile-only phase diagnosis on the frozen acceptance source completed with guards passing and no execution/native dispatch: 0.3523s selected wall scope, 0.3494s CPU. Saved declaration resolution was 0.1293s; planning was 0.1933s, comprising sibling contract-provider preparation 0.0954s and actual path planning 0.0979s. These are profiled diagnostic envelopes, not unprofiled speedups. GC totaled 0.0033s. Whole-context rebuilding was only 0.0397s. The suspected full-spec reconstruction was under 0.007s, and the feature-lineage helper was unused in Speckles. Repeated config-name/default and reference-identity admission has a generous ceiling below 0.090s; the actual removable fraction is smaller. None establishes the remaining 0.342s target saving. These routes are rejected as dominant fixes. Evidence:
/home/ts/.local/state/openhcs-maintenance/20261004/compiler-saved-resolution-current-phase-trace-v1/decision.json.Latest main
9f75ed8fbce41e6959b48c4961bc9cb612e6fd3bmerged into this branch and pushed as4296c89784e6dd9b0ae63163581a0dee375b8e1f; the integration changes eight operational documentation/shell files and leaves compiler/dependency bytes from the qualified source unchanged. The trace remains explicitly tied to its original4f5fc3esource. PR stays draft with no demonstrated performance gain. Execution diagnosis now follows the dominant segmentation steps rather than continuing a compiler profiling loop.Main synchronization: remote main
3612ba4982500427a5cb9199f1daddd28393ffa9is merged and pushed asea17f861f. This brings the current PolyStore 0.3.2 floor, spatial-domain help, and operational/documentation changes into the branch. Compiler implementation bytes are unchanged by the merge; historical timing receipts retain their original revisions. This remains draft: no measured performance improvement or new timing qualification is claimed.Current synchronization: main
e1400cb9f278149fea7056b8fc8319d1ebd6ca69is merged and pushed as0a914b7cc74a6b0c171ffbd8050dc4b93fbffc2f. This includes the merged median, shape, mixed-carrier and grouped-scope changes. Historical qualification remains tied to its recorded source; this merge is not a new timing or parity acceptance. The earlier negative performance disposition is unchanged, and this PR remains draft.Current merge disposition: user explicitly requested merging locally qualified architectural work rather than accumulating drafts. Synced current main 080899f, including #648 and #635. Migrated one upstream fixture from the removed temporary-state filtering helper to the existing ResolvedPipelineDefinition without weakening its contract-reuse, axis, authorship-isolation or recapture assertions. All 25 relevant declaration/session/filter receiving controls now pass. No new benchmark was run; prior 12 strict native comparisons and the negative paired compile/total measurements remain tied to their recorded sources. This is merged for saved-declaration ownership and removal of editor lifecycle work, not as a demonstrated end-to-end speedup. Compiler performance work remains active.