Repository navigation
SysSimX v0.4.0 — paper baseline
Frozen baseline for the SysSimX framework paper. Every evidence artifact quoted
in the manuscript is produced at this tag.
A minor release rather than a patch: public API is removed, three previously
silent behaviours now raise, and two recording defects changed what a run
records.
Upgrading from 0.3.x — read this first
- Recorded sample counts drop by one per port.
t0was recorded twice: a
provisional sample before a generation's inputs had propagated, then the
settled values. The provisional one is now dropped. Existing traces carry a
doubled initial point and a zero-length first interval, so re-run any
notebook whose results you still rely on. System.initialize()raises on a second call. It was not idempotent, and
re-running an initialization cell silently corrupted the recorded time axis.
Callreset()to start a fresh run.- The base install is smaller.
pip install syssimxnow pulls only NumPy,
Pint, and NetworkX. SciPy and pydot are gone; result tables, YAML config, and
visualization moved to extras. Install what you use:
pip install "syssimx[fmu,fem,opensim,results,config,viz,examples]" StateAdapter,state_adapters, and thesync_eventslog are removed.
Committed handovers are now typed records reachable through
MultiComponent.switch_events,SystemHistory, and
SimulationResult.mode_switches.- Systems with event sources always use
HybridAlgorithm. An untouched
default is promoted automatically and an explicitly configured hybrid instance
is preserved, but an explicit non-hybrid choice now raises instead of being
silently replaced. - Unknown
HybridAlgorithmconstructor options now fail instead of becoming
inert instance attributes.
Added
MultiComponent,SwitchRegions, and the typedModeSwitchEventexported
from the primarysyssimxAPI.- Validated constructor options for
HybridAlgorithm. The experimental
declarative loader forwards algorithm options and rejects malformed ones.
Changed
SimulationResultpreserves port units in tables and CSV exports, and rejects
malformed, non-monotone, or misaligned histories rather than omitting data.- The minimum custom-component contract is clarified as three lifecycle hooks.
PortSpecvalidates its name, enum type, direction, and description. - The published API reference is curated around supported interfaces. The
declarative loader and CLI are explicitly labeled experimental.
Fixed
_record_outputs()no longer skips output ports individually. The guard was
unreachable but implied that partial recording was acceptable.ComponentHistory.to_arrays()verifies that exported ports share one time
axis instead of returning the first port's timestamps for all of them. A port
that had dropped a sample was previously exported against a longer axis,
silently shifting its values against every other port while still producing a
plottable result.
Reproducibility
This tag is the frozen revision for the framework paper. Results recorded
against earlier revisions of this branch do not describe it: the history was
rewritten before this release, so commit SHAs published prior to v0.4.0 are no
longer reachable. Pin v0.4.0, not a commit.
Full detail in CHANGELOG.md.