# Validation and diagnostics

Compilation rejects unknown elements and attributes, duplicate names, malformed
values, invalid references, unsafe process settings, and protocol combinations the
controller would refuse. Diagnostics identify the affected field and XML
location. Select an error in the editor to find the setting you need to correct.

Saving checks XML and Lua. Lua errors block the save. Warnings, including a
warning that Lua checking is unavailable, do not block saving. Review warnings
before installing; the controller also validates the app when it receives it.
Your XML, including comments, whitespace and CDATA, is preserved for later edits
and export.

Literal credentials are outside the XML definition dialect. This example is
rejected at its credential element.

```xml
<edge-app format="1" handle="invalid-credential" name="Invalid credential">
  <handlers>
    <handler name="receive"><![CDATA[return true]]></handler>
  </handlers>
  <http-routes>
    <route method="post" path="/events" handler="receive">
      <auth mode="basic">
        <credential value="operator:secret"/>
      </auth>
    </route>
  </http-routes>
</edge-app>
```