# `Chronicle.Discovery.Drift`
[🔗](https://github.com/Cratis/Chronicle.Elixir/blob/main/lib/chronicle/discovery/drift.ex#L4)

One artifact identity finding from `Chronicle.Discovery.DriftDetector`: evidence that the
kernel's record of an artifact and the client's current code have diverged, not proof of a
problem on its own.

# `kind`

```elixir
@type kind() :: :event_type | :reactor | :reducer | :projection
```

# `reason`

```elixir
@type reason() ::
  :schema_changed_without_generation
  | :observer_missing_from_code
  | :observer_event_types_changed
```

# `severity`

```elixir
@type severity() :: :info | :warning
```

`:warning` blocks registration under `drift_policy: :fail`. `:info` (a reducer or
projection finding) never blocks registration under any policy, but is still logged under
`:warn` and `:fail`.

# `t`

```elixir
@type t() :: %Chronicle.Discovery.Drift{
  id: String.t(),
  kind: kind(),
  reason: reason(),
  severity: severity()
}
```

---

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