Meridian handbook
ReferenceCLI

check

engine-dmo check: The CI gate: validate config, schema, templates and the deployment. Exit 3 on invalid configuration. Every subcommand, argument and flag.

The CI gate: validate config, schema, templates and the deployment. Exit 3 on invalid configuration.

engine-dmo check [flags]
FlagTypeDefaultMeaning
--contract-reportboollist template usage the next contract version removes, each with its replacement
--fixboolwrite an id for every element without one, keeping comments, then check
--no-dbboolskip checks that need a database
--strictboolpromote warnings to errors

--json prints the command’s own JSON document. Runs in a project.

See The development loop and Configuration and secrets. --no-db also accepts an unset variable in a secret path, so CI and image builds need no secrets.

Reading the output

Every problem is printed with its file, line and column, then a summary line such as 0 errors, 0 warnings. Configuration is valid. The exit code follows the errors: 0 when there are none, 3 when there is one.

The summary does not count template warnings

Warnings about templates (a layout with no head(), a missing t() string) are printed above the summary but are not counted in it, and --strict does not promote them: a project with template warnings still ends 0 errors, 0 warnings and exits 0. Read every printed line, not only the summary. A fresh starter project shows one such warning, for its placeholder layout.

--strict makes the warnings the summary counts (such as server.admin_path being /admin) fail the check: the summary still reads 0 errors, 1 warning., and the exit code is 3.

Two quirks of the output: a problem in endpoints.yaml, and a missing t() string in a component, are reported at column 0 (endpoints.yaml:2:0), so go by the line; and a template error may be printed twice, in two formats, which is one problem, not two.

--fix writes an id for every configuration element that has none. It accepts any well-formed id already in a file, including one typed by hand, so the rule that ids are written only by --fix and the dev verbs is yours to keep: never write or copy an id yourself.

Some mistakes are found only when a page renders, not by check: a query on a field that is not indexed, a field read on a loop variable or a component prop, and a required component slot left out. Render the pages that use them with render before you deploy.

On this page