audit-verify, autopromote, histogramas y hot-reload caps
- audit::verify_chain_from_cas() recorre prev_sha desde head hasta genesis, valida sha256(blob)==sha del CAS para detectar tampering. Endpoint VerifyAudit + brainctl audit-verify. - autopromote loop background: cada N segundos detecta cristales sobre threshold y los promueve sin operador. Anti-doble vía HashSet de pares (ant, con). Flag --autopromote-secs. - GapHistogram con buckets exponenciales (1ms..1000s) capturado en observer.record(). top_gap_pairs(K) limita cardinalidad. Expuesto en Prometheus como ente_brain_pair_gap_seconds histogram per pair. - BusRequest::UpdateCapabilities con auth obligatorio (sólo el dueño puede modificar sus caps). Incarnated.dynamic_provides separa runtime de la Card immutable. Graph mediator actualiza providers index + revoca grants. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,15 @@ pub enum BusRequest {
|
||||
/// Invocación genérica de capacidad. `cap` debe estar provista por algún
|
||||
/// Ente del grafo; el blob es el argumento opaco que el proveedor parsea.
|
||||
Invoke { cap: Capability, blob: Vec<u8> },
|
||||
|
||||
/// Actualización dinámica del set de capacidades del Ente que llama.
|
||||
/// Sólo aplicable al `from_authenticated` — un Ente sólo puede modificar
|
||||
/// sus propias caps. La Card original (immutable) no se toca; la mutación
|
||||
/// va al `dynamic_provides` del Incarnated.
|
||||
UpdateCapabilities {
|
||||
adds: Vec<Capability>,
|
||||
removes: Vec<Capability>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
||||
Reference in New Issue
Block a user