# Entropy Glossary
## Core Concepts
* **Grey Failure:** A system state where a component is present in the process
registry (PID exists) but is functionally unresponsive (deadlocked, thrashing,
or suspended).
* **Zombification:** The act of calling `erlang:suspend_process/1` on a target
PID. This removes the process from the scheduler's run queue while retaining
its memory and mailbox.
* **Stochasticity:** The use of controlled probability (rather than pure
randomness) to ensure fair victim selection over infinite time.
* **Sovereignty:** The enforcement mechanism that ensures the Scheduler only
executes on the specifically targeted node, preventing accidental chaos in a
clustered environment.
* **Dead Man's Switch:** The safety guarantee provided by the BEAM VM. If the
`ZombieRegistry` process terminates, the VM automatically releases all process
suspension locks held by it, instantly resuming all Zombies.
## System Components
* **Sanctuary:** The domain responsible for target identification. It includes
the `Census` (process discovery) and the `Selector` (filtering and decision
logic).
* **Physics:** The simulation layer that manages the interface between the tool
and the BEAM VM's reality (Time, CPU, Memory).
* **Circuit Breaker:** The safety valve that polls system resources (CPU, RAM).
It possesses the authority to "Veto" injection cycles if the node is under
stress.
* **Axiomatic Logger:** A synchronous, blocking reporting mechanism that
bypasses the standard Elixir `Logger` to guarantee event emission during
system instability.
* **Census:** A GenServer that maintains a cached, optimized view (Tuple) of all
living processes to support O(1) selection.
## Roles & Entities
* **Victim:** A target PID selected for fault injection that is currently
healthy.
* **Zombie:** A struct representing a process that has been successfully
suspended. It is tracked in the Registry to ensure it can be located and
resumed.
* **Source:** An abstraction layer for non-deterministic inputs (Random
Number Generation, System Time) to enable deterministic testing.
## Configuration & States
* **Immunity (Static):** Processes that are intrinsically protected by
hard-coded rules (e.g., `:kernel`, `:init`, or the `Entropy` application
itself).
* **Immunity (Dynamic):** Processes granted temporary immunity by the user via
the `ImmunityRegistry` to protect critical transactions.
* **Entropy Value:** A floating-point number (`0.0 <= x < 1.0`) used as a seed
for the weighted selection algorithms.