This chapter is organized by symptom. Budgets and the full list of environment variables are in reference/environment.md.
The REPL does not show a prompt:
- Check that the terminal supports readline (most Unix shells do)
- History is stored in
$XDG_STATE_HOME/sysml/history, or in~/.sysml_historywhenXDG_STATE_HOMEis unset; if that path is not writable, history is kept in memory for the session
Import errors after building:
- Run
go mod tidy - Verify the Go version with
go version(1.25 or later is required)
Execution stops with "limit exceeded" or "exceeded max":
- The run used up one of its budgets; the message names the environment variable that raises it (see reference/environment.md)
- If the model never terminates, the budget is reporting a real defect, and raising it only delays the error
%check/%explain report "no SMT solver found":
- Solving is an experimental extension and no solver is bundled; install z3 (or cvc5) for your platform, as described in 1. Install: installing a solver.
brew install Open-MBEE/tap/opensysmlinstalls z3 as a dependency - Point
OPENSYSML_SMTat a solver installed outsidePATH; a value that names no executable is reported, not ignored - No other command needs a solver:
%constraint,%requirementand%satisfyevaluate without one
%check/%explain/%configure report "does not support a feature this query needs":
- The solver named by
OPENSYSML_SMTrejected a feature the query needs; the message names the feature, the solver and the operation attempted. No result is reported from a script the solver would not accept - The features each solver was measured to support, and how to test another solver, are documented in 1. Install: solver compatibility; z3 supports the whole subset
- cvc5 supports every feature the current commands need except objective optimization (
(maximize …), a z3 extension):%optimizerefuses on cvc5, naming the missing extension, while every other command works normally
%check answers unknown:
- With
Reason: the solver ran out of time, the query took longer thanOPENSYSML_SMT_TIMEOUT(default10s);unknownis a verdict in its own right and is never reported assatorunsat - Otherwise the solver could not decide the arithmetic, and the reason it reports says so
A run fails with "tool 'ModelCenter' is not registered; set OPENSYSML_TOOLS":
- The action performed — or the
calc defor calc usage invoked — carriesAnalysisTooling::ToolExecution, and an annotated action or calc is only ever run by the tool it names — never by evaluating its body. PointOPENSYSML_TOOLSat a directory holding one JSON file per tool (toolName,version,executable,variables), as reference/environment.md describes;sysml -enginesthen lists the tool astool:ModelCenterwith whether its executable was found - A tool that exits non-zero, answers something other than one JSON object of
outputs, omits an output, names one no parameter receives, writes more thanOPENSYSML_TOOL_MAX_OUTPUT(default 64 MiB), or takes longer thanOPENSYSML_TOOL_TIMEOUT(default10s) fails the performance with that reason; no value is invented in its place
sysml -engines does not list the engine in OPENSYSML_ENGINES, or lists it unavailable:
- A manifest directory is read from outside every workspace, and its files and directory must be writable by their owner alone; the message at startup names the file and the rule (
is writable by others (mode 0664),is under the workspace …,names a path outside the manifest directory). One bad entry registers nothing from its directory, so fix the one named and list again commandis confined to the manifest's directory unless absolute: a bare name is not looked up onPATH.unavailable: stat …: no such file or directory(or… is not executable) names the path that was tried;-engines -probestarts the engine once and reports what itsdescribedisagreed with the file on, field by field (External engines)- A
policy,samplerormoduleentry is listedunavailable: … is not served in this build, naming the stage that will serve it; onlyengineentries run
An external engine's verdict is not covered though the engine reported a violation or holds:
- The interpreter trusts nothing an engine claims: a
violatedstands only when its schedule replays and the condition is false at the move the witness names;sensitiveneeds two replaying schedules that end the named feature differently;satisfiableneeds an assignment the evaluator confirms;holdsstands as observed only overexecutionsthat replay, and without them it is not covered with the engine's claim kept in the reason, since no referee record admits the engine in this build. The reason says which step failed (its witness does not replay (move 3: …),its schedule replays and maxPressure holds at move 4); abroke protocolreason names the message the engine got wrong, and its captured standard error follows (The standing of an answer, Failures) engine "…" did not answer cancel within 10s (OPENSYSML_TOOL_TIMEOUT); the process was endedis the plan's deadline passing with the engine still running: raise the deadline, or the engine's own bounds- Over the service,
engine '…' is not served by this servicemeanssysml-grpcwas not started with-serve-external-enginesnaming it; that is the operator's decision, since the flag lets every client run the engine's command on the server
Syntax errors:
- Only SysML v2 textual notation is accepted; graphical notation and XMI are not
- Keywords are case-sensitive
- Multiplicity follows relationships:
part x subsets y [0..1];
- GitHub Issues: report defects or request features
- Discussions: questions about SysML v2 usage
- Specification reference: OMG SysML v2.1 Beta 1 Specification (2026-08 release)
Back to the guide index.