Backward-compatible finite state for observation classification. Kept as
a separate type so ObsIndex::state semantics stay intact; Lifecycle
is the first-class projection used by the CLI.
First-class lifecycle of a record, derived from its observations and its
stored status. Active and Unchanged are the same lifecycle (present and
unchanged in the latest run); the Unchanged alias exists so callers and
CLI flags can spell it either way.
The lifecycle view requested by the CLI. This is the single query model
shared by the list commands (findings, assets, services): --all requests
every lifecycle including removed/fixed; the default view hides long-gone
records; an explicit --lifecycle/--status/legacy singleton restricts to
one state.
Resolve a user-supplied id or name to a specific asset, service, or
finding. Supports stable ids, exact names/titles, asset:port for
services, and unambiguous substring matches.