chore: bump unibus to 0.9.0 (live user-add + clientcheck)
New capability membershipd user add --store kv against a live cluster plus cmd/clientcheck end-to-end verification (issue 0011 gaps, report 0012). Adds the capability growth log entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
name: unibus
|
||||
lang: go
|
||||
domain: infra
|
||||
version: 0.8.0
|
||||
version: 0.9.0
|
||||
description: "Bus de mensajería unificado sobre NATS+JetStream con cifrado E2E por room (megolm/olm reducido): service de membresía/claves, librería cliente y peers demo."
|
||||
tags: [service, messaging, nats, e2e]
|
||||
uses_functions:
|
||||
@@ -154,6 +154,30 @@ agent.<nombre>.{in,out} inbox/outbox de agente LLM (agent.scout.in)
|
||||
|
||||
## Capability growth log
|
||||
|
||||
- v0.9.0 (2026-06-07) — cierre de los gaps que el despliegue del cluster (report
|
||||
0011) dejó abiertos (report 0012). (GAP A) Nueva capability `membershipd user
|
||||
add|list|revoke --store kv`: alta/baja de usuarios contra el KV replicado del
|
||||
cluster EN MARCHA, sin el procedimiento de parar-sembrar-rearrancar. Usa la
|
||||
conexión interna privilegiada — el daemon persiste su identidad de servicio con
|
||||
`--internal-id-file` (cada nodo genera/carga la suya, 0600 junto a las claves TLS)
|
||||
y la CLI, ejecutada por loopback en un nodo, presenta esa nkey que el
|
||||
autenticador reconoce con permisos plenos de JetStream; ninguna identidad de
|
||||
usuario normal puede tocar los buckets `KV_UNIBUS_*` bajo la ACL por-subject. El
|
||||
alta es idempotente (re-alta de la misma clave = `ErrUserExists` explícito, sin
|
||||
sobrescribir ni elevar rol), commitea con quórum 2/3 (HA, imprime
|
||||
`followers_current`) y rechaza un destino remoto sin `--ca` (igual que
|
||||
`migrate-to-kv`). (GAP B) Nuevo `cmd/clientcheck`: verificación end-to-end real
|
||||
con un cliente autenticado (identidad operator, nkey+TLS+https) que crea una room
|
||||
E2E, publica y recibe descifrado contra el cluster vivo, incluido un nodo parado a
|
||||
media transmisión donde el cliente hace failover a un superviviente y sigue
|
||||
recibiendo con cero pérdida (quórum 2/3) — el plano de datos que el chaos test del
|
||||
0011 nunca probó. (GAP C) Runbook `deploy/cluster/README.md` corregido: el orden
|
||||
de arranque "magnus solo y verifica healthz" deadlockeaba (un nodo solo no tiene
|
||||
quórum del meta-group y nunca sirve healthz); se documenta el arranque por quórum,
|
||||
que R1 es un SPOF inservible (ir directo a R3) y la nueva vía de alta con el
|
||||
cluster vivo. La plantilla de deploy (unit + `deploy-cluster.sh`) emite ya
|
||||
`INTERNAL_ID_FILE` y el flag. Verificado contra los 3 VPS reales (magnus + homer +
|
||||
datardos); posture enforce+ACL+TLS+R3 intacta.
|
||||
- v0.8.0 (2026-06-07) — completar y endurecer el cluster (issue 0006, fases
|
||||
0006a–0006g) que cierra los bloqueantes de la auditoría dedicada del cluster
|
||||
(report 0008) y cablea el control plane descentralizado que 0003 dejó a medias.
|
||||
|
||||
Reference in New Issue
Block a user