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)
Automator Repro: Action/Calc Paths Stay Symbolic While Expression Features Materialize
New attempt: Summary
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).
Environment
Retested on 2026-04-17
syside: 0.8.7
OS: Windows
Model load diagnostics: 436 for the full project model load used by the script
Current Status in 0.8.7
The core repro still stands: expression-level verification features materialize, but action/calc-path internals remain symbolic.
Change Since Earlier Check
In the earlier 0.8.4 check, PassIf(...) parsed but failed evaluation with Function 'PassIf' is not a model-level evaluable function.
In the current 0.8.7 retest, that specific PassIf(...) failure is no longer the active issue for this repro file.
The remaining issue is the lack of runtime materialization for nested action/calc internals.
Additional Check: PassIf(...)
Historical note:
In the earlier 0.8.4 environment, PassIf(...) parsed
but evaluation failed with:
error (model-error): Function 'PassIf' is not a model-level evaluable function
Current retest in 0.8.7:
This specific PassIf(...) evaluation failure is not what reproduces for StandaloneExerciseDecisionTestCases.sysml
The persistent issue is symbolic action/calc internals during evaluation
Questions
Is this symbolic behavior for action/calc internals expected in current releases?
Is there a roadmap ETA for action/calc runtime materialization in Automator evaluation?
Could the API expose an explicit materialized-vs-symbolic status per evaluated feature?
This happens if features in expressions do not have primitive values assigned to them.
Do you have a concrete example? It is hard to tell just from a few statements what is going wrong.
Note that PassIf returns a verdict enum - we cannot convert it to a primitive value because there is no primitive value! You can do postprocessing based on the returned element .name.
Yes, not all expressions can evaluate to primitive values. One critical example is semantic metadata which must evaluate to a bound metadata feature so that we can insert an implicit specialization during sema.
Everything that can be evaluated as a primitive value bar missing types (e.g. complex) is already evaluated as one.
For single values, isinstance(result, syside.Element) is enough. For lists, apply isinstance to every value instead.