# 4 · Checking your model

ASysT surfaces the bundled **language server's diagnostics** in the app and through the API. This answers
"what did this parser report?" It does **not** certify semantic correctness, reference integrity or SysML
conformance: the pinned parser can accept unresolved types or sibling redeclarations without an error.

---

## The Problems badge

Bottom-left of the canvas, a small **Problems** badge summarises the open file:

- **No problems** (a green tick) when this language-server pass reported no diagnostics.
- Otherwise the **error** and **warning** counts.

Click it for a **popover** listing each problem with its message and line/column. Click a problem to copy
it, or **copy all** to paste into an issue.

## The whole-model problems panel

A single file can be clean while another file in the same model is broken. From the Problems popover,
choose **Validate whole model** to open the **model-wide problems panel**:

- Every file's problems, **grouped by file**, with a roll-up of total errors/warnings.
- **Click any problem to jump to it** in the `.sysml` source (the right file, the exact line).
- **Re-check** to run it again after edits.

Because the whole model is checked together, cross-file references resolve — so a part that's defined in
another file doesn't show up as a false "unresolved" error.

## Severity, briefly

The language server classifies each problem as **error**, **warning**, **information**, or **hint**. Treat
all of them as evidence to inspect. The API field named `valid` means only **zero reported errors** in that
run; it is a parser-gate result, not a semantic or standards certificate.

## Parser diagnostics from a script (CI gate)

You can ask the same question without opening the app — handy for a pre-commit hook or CI:

- **`POST /api/validate`** returns an exit-code-friendly parser verdict: `valid` is true when this run
  reports **zero errors** (warnings do not change that field), plus counts and problem files. Keep the
  limitation above in any CI message that presents this result.
- **`GET /api/diagnostics?file=…`** returns the full per-file problem list (the same data the panel
  shows), for one-shot reporting.

See the [API reference](07_API_reference.md#validation--diagnostics) for request/response details. (The
team's `./asyst.cmd test` gate pairs naturally with these.)

---

Next: [Variant management](05_Variant_management.md) — if your model describes a *family* of products.
