Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Project Configuration

Lilo projects can use an optional lilo.toml configuration file at the project root.

For getting started, you can skip this configuration entirely and simply place your .lilo specification files and data files directly in the root of your project. SpecForge will work with sensible defaults.

When you do use lilo.toml, if the file or any of its fields are missing, sensible defaults apply. The Python SDK and the VS Code extension read this file and apply the semantics accordingly.

The configuration file is useful for:

  • Setting a project name and custom source path (default: project root or src/)
  • Customizing language behavior (interval mode, freeze)
  • Adjusting diagnostics settings (consistency, redundancy, optimize, unused defs) and their timeouts
  • Registering system_falsifier entries for falsification analysis

Below are the schema and defaults, followed by a complete example.

Schema and defaults

Top-level keys and their defaults when omitted:

  • project

    • name (string).
      • Default: "".
      • On init: set to the provided name; otherwise to the name of the project root directory.
    • source (path string). Default: "src/"
  • language

    • interval.mode (string). Supported: "static". Default: "static"
    • freeze.enabled (bool). Default: true
  • diagnostics

    • consistency.enabled (bool). Default: true
    • consistency.timeouts.named (seconds, float). Default: 0.5
    • consistency.timeouts.system (seconds, float). Default: 1.0
    • redundancy.enabled (bool). Default: true
    • redundancy.timeouts.named (seconds, float). Default: 0.5
    • redundancy.timeouts.system (seconds, float). Default: 1.0
    • optimize.enabled (bool). Default: true
    • unused_defs.enabled (bool). Default: true
  • [[system_falsifier]] (array of tables, optional)

    • Each entry: name (string), system (string), script (string)
    • If absent or empty, the key is omitted from the file and treated as an empty list

Default file:

[project]
name = ""
source = "src/"

Example lilo.toml

An example project with overrides.

[project]
name = "my-specs"
source = "src/"

[language]
freeze.enabled = true
interval.mode = "static"

[diagnostics.consistency]
enabled = true

[diagnostics.consistency.timeouts]
named = 5.0
system = 10.0

[diagnostics.optimize]
enabled = true

[diagnostics.redundancy]
enabled = false

[diagnostics.unused_defs]
enabled = false

[[system_falsifier]]
name = "Psitaliro ClimateControl Falsifier"
system = "climate_control"
script = "falsifiers/falsify_climate_control.py"

[[system_falsifier]]
name = "Psitaliro ALKS falisifier"
system = "lane_keeping"
script = "falsifiers/alks.py"