packages feed

figment-0.2.0.0: ADRs/023-figment-as-description.md

# ADR 023 — A Figment is a pure description; load collects everything
Status: Accepted | Date: 2026-10-22

## Decision
- `Figment` is a sequence of steps (order, metadata, provider action)
  plus the last `select` and `withLimits`. It is a lawful `Monoid` (the
  free monoid on steps), which is the lawful structure the value-level
  merge cannot provide. The laws are property-tested observationally.
- Builders (`merge`, `join`, `adjoin`, `admerge`, `combine`) take
  `HasCallStack` and record where each provider was added.
- `load` runs providers in order and **does not stop at the first
  failure**: all provider errors are returned together. Any synchronous
  exception that escapes a provider becomes an `IoError` with that
  provider's metadata; asynchronous exceptions are re-thrown.
- `Figment` is itself a `Provider`. Inner values keep their tags,
  because retagging only fills in missing provenance.
- Profiles: `Default`, then the selected profile, then `Global`. An
  explicit `select` beats profile hints from providers, which combine by
  the step's order.