# modules/agorapura/ — Identidad humana federada

**Propósito.** Un ágora de identidad sin autoridad central. Cada
identidad —persona, comunidad, alianza, institución— es una clave
pública; cada afirmación sobre ella, un claim; cada respaldo, una
atestación firmada que viaja con su propia prueba. La verdad no la dicta
un servidor: emerge de quién atestigua qué, ponderado por la política
que negocie quien lee.

## Crates

| crate             | tipo | rol                                                          |
| ----------------- | ---- | ------------------------------------------------------------ |
| `agorapura-core`  | lib  | `Identity`/`Keypair` (ed25519), `Claim`, `Attestation` firmada y autoverificable |
| `agorapura-graph` | lib  | `TrustGraph` (atestaciones verificadas) + `Corroboration` + `TrustPolicy` negociada |

## Modelo

```text
  Keypair ──► Identity (kind: Person|Community|Alliance|Institution)
                  │
   Claim (subject · predicate = value) ──firmado──► Attestation
                  │                                      │
                  └──────────► TrustGraph ◄──────────────┘
                                   │
                       corroboration(claim) → Corroboration
                                   │
                          TrustPolicy.accepts() → sí / no
```

- **Fractal**: persona, comunidad, alianza e institución comparten
  estructura idéntica. Que una institución atestigüe sobre una persona
  o una alianza sobre una comunidad es la misma operación.
- **Autoverificable**: una `Attestation` lleva la clave pública del
  atestador y su firma — cualquiera la valida sin consultar a nadie.
- **Sin veredicto central**: el grafo devuelve evidencia cruda
  (`Corroboration`); la validez la decide una `TrustPolicy` *negociada*.
  Dos consumidores con políticas distintas pueden discrepar legítimamente
  sobre la misma red.

## Dependencias

- `core` ← `ed25519-dalek`, `blake3` (id = BLAKE3 de la clave pública).
- `graph` ← `agorapura-core`. Ambos `#![forbid(unsafe_code)]`.
- Cero red, cero estado global — tipos puros. El transporte y el
  descubrimiento (DHT, Cards) van en capas superiores.

## Determinismo

`Keypair::from_seed` es determinista — tests y derivación jerárquica de
claves dependen de ello. Una identidad real siembra desde un CSPRNG.

## Estado

`core` + `graph` implementados y verdes (22 tests). **Pendiente**:
integración con `CardKind` (variantes Person/Community/Alliance/
Institution en el protocolo) y descubrimiento federado vía DHT.
