I am trying to run verification cases with different sets of values (verification) over a part that performs a set of actions that themselves use calculations. Syside 0.8.4 does expose expression evaluation but not full execution of the verification action steps to concrete runtime values. Is this expected or did I do something wrong?
So the flows are modeled correctly and validated, but their runtime value propagation is not exposed as concrete execution outputs through this Syside Python API path.
PS: PassIf exists conceptually in VerificationCases, but is currently not evaluable via model-level expression evaluation in this execution path
PS: Looks like Syside does not execute flow or bind into concrete runtime values. So I have no way to runtime it other than rebuilding the calculations per attribute (that makes the whole calculation semantic useless)
I have been doing some testing and here are the results:
SysML v2 / Automator Runtime Materialization Gap
Summary
This post reports a repeatable gap between semantic validity and runtime value materialization when using SysML v2 verification cases through the Python Automator API.
In short:
Models load and validate cleanly.
Expression-level features evaluate correctly.
Action/calc execution paths often remain symbolic instead of materializing primitive runtime values.
This makes it hard to claim full behavioral verification through verification cases when verdict logic depends on action/calc internals.
What was tested
A verification-case setup with:
Scalar inputs
Multiple actions
calc usages
assign, bind, flow, control flow (if, ordered actions)
Returned verdict from verification case
Evaluation via Compiler.evaluate_feature(...) and pipeline execution
Observed behavior
Model diagnostics
Parse/semantic diagnostics can be zero.
Expression features
Direct attribute expressions materialize to primitives (float, bool) reliably.
Action/calc paths
Features from action/calc networks often evaluate to symbolic objects:
ReferenceUsage
AttributeUsage
ItemUsage
CalculationUsage
ActionUsage
calc usage .result can remain symbolic in case scope.
Pattern variation
Switching between action ... : Type and perform action ... defined by Type did not materially change this behavior in tested cases.
Why this matters
For executable verification governance:
A semantically valid model does not necessarily provide materialized runtime values for behavioral paths.
If verdict depends on action/calc internals, verification may not be executable in practice.
Teams may fall back to expression-level “pseudo verification” as a workaround, which weakens confidence in full behavior execution claims.
Current workaround
Use expression-level verdict evidence (evaluable to primitive values) for execution/reporting pipelines, while keeping action/calc structure for model intent.
This is practical, but it does not fully substitute end-to-end behavioral materialization.
Improvement requests
Clarify execution contract
Document exactly which modeling constructs are guaranteed to materialize runtime values under current Automator behavior.
Expose materialization status
Provide explicit API signals for “materialized value” vs “symbolic model object”.
Strengthen action/calc execution
Improve materialization for:
calc usage results
nested action outputs
assignment/binding-derived values
verification return paths derived from behavior networks
Publish recommended executable profile
A concise “authoring profile” for verification cases that are expected to execute with concrete runtime outputs.
Suggested diagnostic artifact
A built-in materialization matrix per run:
feature path
scope
returned value type
materialized/symbolic classification
diagnostics
This would make tool behavior transparent and easier to govern in CI pipelines.
You are correct that Syside currently only supports evaluating some expressions. Full support is still a work-in-progress.
I believe this should be covered by Expression Evaluation. All Literal... elements are unwrapped because they are… literal, and their values are known without evaluation. Other than that, evaluation continues reducing expressions until only the result is left, or a fatal error was encountered.
We do not actually materialize anything as evidenced by returning literal values whenever possible. Any Elements returned are either because they were referenced through FeatureReferenceExpressions, or the evaluated Feature had no bound value.
Next release has improves to expression evaluation, namely evaluating user-defined functions. Simulation (actions etc.) will have to wait still.
I can evaluate expression-level verification features, but action/calc-path internals remain symbolic objects instead of runtime primitive values.
This blocks full behavioral verification and forces a pseudo-verification workaround (verdict derived from expression attributes in the verification case definition).
If action/calc execution is supported for this pattern, action/calc results should materialize to primitive values (or at least materialized item attribute values).
Actual
Expression-level features materialize (float, bool)