# `Bourse.Spec.Schema`
[🔗](https://github.com/ZenHive/bourse/blob/main/lib/bourse/spec/schema.ex#L1)

Validation contract for complete, hand-owned runtime specifications.

Required slots distinguish three states: a missing slot is an authoring gap,
`null` is an explicit not-applicable value only where a leaf permits it, and
an empty map or list is an explicit declaration with no entries. Required
non-empty slots reject all three incomplete states by naming the exact path.

# `oracle_names`

```elixir
@spec oracle_names() :: [String.t()]
```

Returns the closed oracle-profile vocabulary.

# `validate!`

```elixir
@spec validate!(map(), String.t()) :: map()
```

Validates one complete owned runtime specification.

# `version`

```elixir
@spec version() :: pos_integer()
```

Returns the current owned runtime-schema version.

---

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