# `Sidereon.GeometryQuality`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/geometry_quality.ex#L1)

Geometry observability and covariance-validation diagnostics.

The `tier` field classifies the solve design as:

  * `:rank_deficient` - at least one parameter is not observable.
  * `:zero_redundancy` - full rank, but no residual degrees of freedom.
  * `:weak` - full rank with residual degrees of freedom, but above a condition-number or GDOP cutoff.
  * `:nominal` - full rank and within the configured cutoffs.

`:zero_redundancy` bounds are not validated unless `covariance_validated` is
true. `:weak` bounds are reported without clamping.

# `observability_tier`

```elixir
@type observability_tier() :: :rank_deficient | :zero_redundancy | :weak | :nominal
```

Observability tier returned by the core geometry classifier.

# `t`

```elixir
@type t() :: %Sidereon.GeometryQuality{
  condition_number: float(),
  covariance_validated: boolean(),
  gdop: float(),
  raim_checkable: boolean(),
  rank: non_neg_integer(),
  redundancy: integer(),
  tier: observability_tier()
}
```

Geometry observability and covariance-validation diagnostics.

# `from_nif`

```elixir
@spec from_nif(
  {atom(), integer(), non_neg_integer(), float(), float(), boolean(), boolean()}
) :: t()
```

Decode the NIF tuple representation into a geometry diagnostics struct.

# `to_nif`

```elixir
@spec to_nif(t()) ::
  {atom(), integer(), non_neg_integer(), float(), float(), boolean(), boolean()}
```

Encode a geometry diagnostics struct into the tuple representation used by the NIF.

---

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