1# agora-confianza
2
3*Read this in English: [README.md](README.md).*
4
5Reconcilia los **dos planos de confianza** de agora en **una sola opinión por-lector**.
6
7agora hace dos preguntas distintas sobre una clave, y hasta hoy vivían
8separadas — cada consumidor (ayni, veeduría, minga, hampi, tampu) las
9cableaba a mano, y varios caían en la misma trampa de tipos:
10
111. **¿esta clave sigue siendo suya?** — plano de *validez*: revocación
12 M-de-N de guardianes / rotación de clave.
13 `TrustGraph::{is_revoked_at, current_key_at}`.
142. **¿le creo a esta persona?** — plano *social*: cuántos de MI círculo la
15 avalan. `TrustGraph::corroboration_of_at` + `TrustPolicy::grado`.
16
17Ninguna alcanza sola y **nadie las componía**. El síntoma no es teórico
18(verificado en `agora-graph`): `corroboration_of_at` excluye a los
19*atestadores* revocados pero **no al sujeto**. Así, una clave comprometida
20y revocada por sus guardianes seguía pesando a full por sus atestadores
21vivos — el espejo social exacto del agujero que `ayni` cerró para las
22firmas (una clave revocada seguía firmando mensajes). `Model::confianza_en`,
23el único puente `f32` que existía, arrastraba ese defecto.
24
25Esta capa compone las dos preguntas en una `iniy_core::Opinion` (lógica
26subjetiva de Jøsang), que distingue los **tres estados** que un `bool`
27colapsa:
28
29- **creo** (creencia): la clave está viva y tu círculo la avala.
30- **no le creo** (descreencia): la clave fue revocada — no importa cuántos
31 la avalen, ya no es suya.
32- **no sé** (incertidumbre): la clave está viva pero nadie de tu círculo da
33 fe. Un desconocido, **no** un impostor. `descontar(0.0)` manda la masa a
34 la incertidumbre (u=1), nunca a la descreencia — perder esa distinción es
35 lo que pasa al reducir a un booleano.
36
37## Doctrina respetada
38
39El grafo **no emite veredicto** (ARQUITECTURA.md, `agora-graph` doc de
40módulo): separa evidencia cruda de umbral negociado. Esta capa se apoya en
41él **sin tocarlo** — es L1.5, encima del grafo y debajo de la app. Los
42cores `no_std` (`ayni-core`, `qillqa-veeduria`) siguen pidiendo un closure;
43el **borde** construye el puente desde aquí. Núcleo puro, confianza afuera
44(SDD §5).
45
46## El tiempo es del que llama
47
48Todo toma un `ahora: u64`. Una revocación rige desde su `issued_at`; una
49clave no se vuelve falsa retroactivamente. Para juzgar **confianza viva**
50pasas el reloj de pared; para juzgar **si una firma valía cuando se hizo**
51pasas el instante de la firma (como hace `ayni::verificar_nodo_en`). La capa
52no decide por vos cuál de los dos es: sólo compone honestamente a ese `ahora`.
53
54---
55
56Parte de **agora** — ver [agora](../LEEME.md).
LEEME.md
agora-confianza
Read this in English: README.md.
Reconcilia los dos planos de confianza de agora en una sola opinión por-lector.
agora hace dos preguntas distintas sobre una clave, y hasta hoy vivían
separadas — cada consumidor (ayni, veeduría, minga, hampi, tampu) las
cableaba a mano, y varios caían en la misma trampa de tipos:
- ¿esta clave sigue siendo suya? — plano de validez: revocación
M-de-N de guardianes / rotación de clave.
TrustGraph::{is_revoked_at, current_key_at}.
- ¿le creo a esta persona? — plano social: cuántos de MI círculo la
avalan.
TrustGraph::corroboration_of_at + TrustPolicy::grado.
Ninguna alcanza sola y nadie las componía. El síntoma no es teórico
(verificado en agora-graph): corroboration_of_at excluye a los
atestadores revocados pero no al sujeto. Así, una clave comprometida
y revocada por sus guardianes seguía pesando a full por sus atestadores
vivos — el espejo social exacto del agujero que ayni cerró para las
firmas (una clave revocada seguía firmando mensajes). Model::confianza_en,
el único puente f32 que existía, arrastraba ese defecto.
Esta capa compone las dos preguntas en una iniy_core::Opinion (lógica
subjetiva de Jøsang), que distingue los tres estados que un bool
colapsa:
- creo (creencia): la clave está viva y tu círculo la avala.
- no le creo (descreencia): la clave fue revocada — no importa cuántos
la avalen, ya no es suya.
- no sé (incertidumbre): la clave está viva pero nadie de tu círculo da
fe. Un desconocido, no un impostor.
descontar(0.0) manda la masa a
la incertidumbre (u=1), nunca a la descreencia — perder esa distinción es
lo que pasa al reducir a un booleano.
Doctrina respetada
El grafo no emite veredicto (ARQUITECTURA.md, agora-graph doc de
módulo): separa evidencia cruda de umbral negociado. Esta capa se apoya en
él sin tocarlo — es L1.5, encima del grafo y debajo de la app. Los
cores no_std (ayni-core, qillqa-veeduria) siguen pidiendo un closure;
el borde construye el puente desde aquí. Núcleo puro, confianza afuera
(SDD §5).
El tiempo es del que llama
Todo toma un ahora: u64. Una revocación rige desde su issued_at; una
clave no se vuelve falsa retroactivamente. Para juzgar confianza viva
pasas el reloj de pared; para juzgar si una firma valía cuando se hizo
pasas el instante de la firma (como hace ayni::verificar_nodo_en). La capa
no decide por vos cuál de los dos es: sólo compone honestamente a ese ahora.
Parte de agora — ver agora.