Files
sergio c1c136954e feat(agorapura): identidad humana federada — core + grafo de confianza
agorapura-core: identidades fractales (persona/comunidad/alianza/
institución) sobre claves ed25519, Claims sujeto-predicado-valor y
Attestations firmadas y autoverificables (la prueba viaja con el
dato). agorapura-graph: TrustGraph guarda sólo atestaciones con firma
válida; corroboration() devuelve evidencia cruda y TrustPolicy —un
umbral negociado, no una verdad del sistema— la traduce a sí/no.

22 tests. Cero red, cero estado global, #![forbid(unsafe_code)].

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 16:38:20 +00:00

2.6 KiB

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

  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

  • coreed25519-dalek, blake3 (id = BLAKE3 de la clave pública).
  • graphagorapura-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.