khive-score 0.5.0

Deterministic fixed-point scoring: cross-platform ordering, aggregation (sum/avg/max/min/RRF), ranking with ID tiebreak.
Documentation
# Deterministic fixed-point scores

`DeterministicScore` is the common cross-platform ranking value: a transparent `i64` scaled by
`2^32`, with saturating arithmetic and explicit infinity sentinels.

## Representation and sentinels

Finite value `x` is stored as `round(x * 2^32)`. `MAX` is `i64::MAX` and converts to positive
infinity; `NEG_INF` is `i64::MIN + 1` and converts to negative infinity. `MIN` (`i64::MIN`) is
reserved and must not appear as a runtime value. `ZERO` stores raw zero.

## Raw constructors

`from_raw` is intentionally unchecked and can construct the reserved `MIN`; use it only for trusted
internal values. `from_raw_saturating` maps `i64::MIN` to `NEG_INF`, and `from_raw_checked` returns
`None` for it. `to_raw` exposes the stored fixed-point integer.

## Float conversion

`from_f64` rounds finite values to the nearest raw integer, clamps overflow, maps NaN to `ZERO`, and
maps infinities to `MAX`/`NEG_INF`. `from_f32` delegates through `f64`. `to_f64` reverses the scale
for finite values and restores infinities for the two reachable sentinels.

## Arithmetic invariant

Addition, subtraction, integer multiplication, floating multiplication, and division saturate to
`[NEG_INF, MAX]`. Wider intermediates prevent machine overflow, and no arithmetic operation emits
the reserved `MIN`. NaN introduced by floating arithmetic maps to `ZERO`.

## Serialization

The serde wire form is the raw integer. Custom deserialization rejects `i64::MIN`, enforcing the
reserved-sentinel invariant at the untrusted-data boundary.