# `MishkaGervaz.Form.Verifiers.ValidateSource`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.2/lib/mishka_gervaz/form/verifiers/validate_source.ex#L1)

Validates the `source` section of MishkaGervaz form DSL.

Ensures every required action (`create`, `update`, `read`) is defined
either on the resource or inherited from the domain. Resource overrides win when both are set.

Every action named that way — master and tenant alike — must be an action of the resource, of
the matching kind: `create` a create action, `update` an update action, `read` a read action.
A mode closed with `access :create, false` or `access :update, false` is not checked: `create`
belongs to `:create`, `update` and `read` to `:update`.

The verifier short-circuits when no fields are declared (a form without
fields has no source to consume).

Each failure is a `Spark.Error.DslError`, which Spark prints as a compile warning. Compile with
`--warnings-as-errors` to fail the build on it.

`master_check` is not checked here:
`MishkaGervaz.Form.Transformers.MergeDefaults.merge_master_check_default/1` persists a fallback
MFA when neither resource nor domain defines one.

See `MishkaGervaz.Form.Dsl.Source`,
`MishkaGervaz.Form.Transformers.MergeDefaults`,
`MishkaGervaz.Form.Verifiers.Helpers`, and sibling verifiers.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
