Jobs merge - #1103
Merged
Merged
Conversation
nkrah
added a commit
that referenced
this pull request
Jul 26, 2026
The goal of this PR has been achieved and tests pass. PR #1103 (jobs-merge) extends this further.
nkrah
marked this pull request as ready for review
August 3, 2026 10:56
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.
Summary
This PR completes the multi-job merge work and consolidates the split-run-merge workflow into a coherent user and developer API.
The branch started from the original job-splitting work and extends it in four main directions:
Main Functional Changes
jobs_merge(...)and the merge manager/controller workflow.MergeContext-based orchestration and coordinator-based execution, with a dedicated ROOT merge path for outputs that cannot be merged actor-by-actor because multiple outputs may share one ROOT file.Actor Output / Data Model Refactor
DataItemandDataItemContainer.dataitems.py.set_data(...).ROOT Output Work
RootDataItem-style metadata handling rather than relying on loose actor-level special cases.Job Split / Run / Merge API
JobsSplitManager.SplitRunController/ split-run-merge controller semantics.Simulation.run(...)so local multi-job execution can be driven through the high-level API.detach=False) to improve robustness in CI and scripted workflows.Serialization / Rehydration / Path Handling
package_simulation(...).Sources / Runtime Configuration
source.ntosource.number_of_primaries.number_of_primariesandactivityinto runtime adaptation rather than requiring the user to scale manually.nAPI.activity, including visible warnings in multi-threaded runs.Statistics / Per-Run Output
assert_stats_json(...)to stop relying on magic container forwarding in places where that was no longer appropriate.Digitizers / End-of-Simulation Hooks
EndSimulationAction()methods.CLI and Documentation
sim.run(...)Tests
This PR adds and/or significantly updates split/merge coverage across:
Notable new/expanded coverage includes:
test100_deadtime_jobs_merge.pytest113_jobs_merge_context.pytest113_phsp_jobs_merge.pytest114_split_run_merge_controller.pyFollow-up / Known Deferred Items
A few areas were intentionally left for later PRs:
merged/merge_after_simulationtoward clearercumulativenamingspawnsubprocess behavior on Linux