docs/GLOSSARY.md

# 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.