Mutare.RuntimeId (mutare v0.4.1)

Copy Markdown View Source

The identity embedded in a metamutant, separate from its report number.

Schema builds use {root_relative_file, local_id}. The local id reserves every candidate, including withheld ones, and starts at one in each file. An unrelated file's candidate count can therefore change report numbers without changing this file's generated code. Standalone transforms retain their integer identity.

Sites carry both identities. Coverage translates runtime identities through index/1; the source file is already available during poison attribution, which uses file_index/1. Both indexes are built from the current run's sites, never persisted across runs.

Summary

Functions

Map each file's emitted integers to report ids for lazy poison attribution.

Map the current run's runtime identities to report ids for coverage decoding.

The integer a Site's generated code selects on: its local id, or a standalone report id.

The runtime selection for a Site, retaining integer selection for standalone transforms.

Types

t()

@type t() :: non_neg_integer() | {String.t(), pos_integer()}

Functions

file_index(sites)

@spec file_index([Mutare.Site.t()]) :: %{
  required({String.t(), pos_integer()}) => pos_integer()
}

Map each file's emitted integers to report ids for lazy poison attribution.

index(sites)

@spec index([Mutare.Site.t()]) :: %{required(t()) => pos_integer()}

Map the current run's runtime identities to report ids for coverage decoding.

local(site)

@spec local(Mutare.Site.t()) :: non_neg_integer()

The integer a Site's generated code selects on: its local id, or a standalone report id.

of(site)

@spec of(Mutare.Site.t()) :: t()

The runtime selection for a Site, retaining integer selection for standalone transforms.