Project Configuration¶
Settings, not meaning. This page covers application settings: which external tools run, where a package's source sits, how commands behave. None of it decides what your model contains.
Delete every YAML file in a project and the model still means exactly what it meant before.
What the model contains is decided in SysML — the import graph starting at
model/catalog/project.sysml, and the ProjectMethodBinding there that names
the methodology. That half is documented in the ontology reference:
Native project format.
memo.config.yaml is gone, along with extends:, methodology:, ontologies:
and modules:. They selected model content from a file no conformant SysML v2
tool reads. A project that still carries one gets a diagnostic naming the native
construct that replaced the field — it is never read as a fallback:
memo.package.yaml: `extends` is not read.
Write a native `private import` of the package in model/catalog/project.sysml.
The files MEMO reads¶
| File | What it is for |
|---|---|
memo.tools.yaml |
This page: toolchain selection, executable paths, command behaviour |
memo.package.yaml |
Locator only — name, version, description, license, tags, sysmlDir. Settings may also be read from here when there is no memo.tools.yaml |
memo.lock.yaml |
Generated: the packages, versions and hashes the imports resolved to |
syside.toml, .project.json |
External tool adapters |
A settings file inherits nothing. There is no extends chain to resolve, because
inheritance was how one project's settings reached into another package's model.
The lock file records what the import graph resolved to. It cannot introduce a package no import named. Commit it when your team needs repeatable resolution.
Select external tools¶
Each role is filled by one provider. The roles answer different questions, so they are selected separately:
| Role | Question it answers | Setting |
|---|---|---|
| Validator | "Is this valid SysML/KerML?" | toolchain.validator |
| Lowering | "What can MEMO ingest from this revision?" | toolchain.lowering |
| Packaging | "How is this project packed?" | toolchain.packager |
toolchain:
validator: syside
lowering: internal
packager: sysand
syside:
executable: syside
configFile: ./syside.toml
warningsAsErrors: true
diagnose: all
sysand:
executable: sysand
configFile: ./sysand.toml
Run memo toolchain probe to see which providers are registered, which binary
each resolved to, and its version. Run memo config effective to see the whole
resolved picture, including which settings came from the file, which from a
flag, and which from a default.
Relative paths resolve from the project directory; bare executable names resolve
through PATH. A selected tool that is not installed is a clear error — MEMO
never silently falls back to a different provider.
Every setting under toolchain also has a command-line flag, so any project can
be checked against a different toolchain without editing its settings:
memo validate --toolchain.validator syside --toolchain.syside.diagnose all
Use the built-in providers for the simplest local workflow; they need nothing installed. Select external tools when their compatibility or packaging behaviour is part of the project's required evidence.
toolchain.compiler is deprecated¶
compiler predates the split between validating and lowering. It still works
and sets both roles — but only where the named provider can fill them. SysIDE
validates and cannot emit an ingestible model, so compiler: syside selects it
as the validator and leaves lowering with MEMO's own parser, which is what it
always did in practice. memo validate prints a note saying so. Prefer the
explicit keys.