Arrakis Theater (README)
Casa Arrakis MC Elenco Público
│ │ │ │
▼ ▼ ▼ ▼
SCRIPTORIUM PARLAMENT / SALA LAYER2
│ │ │ │
│ [ ROOM / MAKE_MASTER ] │
│ │ │ │
│ CLIENT_REGISTER / SUSCRIBE │
│ │ │ │
└─────────────┬──────┬──────┘ │
▼ ▼ ▼
ARRAKIS BOE FIREHOSE / chats / bots
│ │
└────────┬────────┘
▼
FUTURE-MACHINE / producción
│
▼
summary_out + firmas + target_main_action
│
▼
OASIS MAIN / SSB
Regla: el vivo puede ser caótico; el retorno no.
Solo vuelve lo que pasa por BOE, validación y firma.
snapshot_in del feed SSB.ssb-admin publish-json.MAKE_MASTER sobre Socket.IO mesh.CLIENT_REGISTER + CLIENT_SUSCRIBE.pub → host, key, port.tribe → miembros e invite mode.parliamentTerm → método, ventana, start/end.parliamentProposal abiertas → deadlines y voteId.MAKE_MASTER room=arrakis-viernes-…evidenceHash y referencia BOE.summary_out con hashes y firmas.snapshot_in.{
"version": "scriptorium-boe/0.1",
"session_id": "arrakis-viernes-2026-05-08",
"obra_id": "votacion-obra-siguiente",
"snapshot_in": {
"hash": "sha256:...",
"termId": "...",
"tribeId": "..."
},
"rules": {
"method": "DEMOCRACY",
"ttl_session": "tarde-viernes"
}
}
{
"version": "scriptorium-boe/0.1",
"obra_id": "votacion-obra-siguiente",
"summary_out": {
"obra_elegida": "...",
"votes": 7,
"hash_boe": "sha256:..."
},
"signatures": ["@elenco1...", "@elenco2...", "@mc..."],
"target_main_action": "tribe-content"
}
OASIS MAIN / SSB CASA ARRAKIS / PUB MC + ELENCO / ROOM PÚBLICO / FIREHOSE
append-only gossip snapshotter / notario vivo deliberativo presión del chat
──────────────────┬─── ────────────────┬─── ─────────────────┬─── ───────────────┬───
t0 estado main │ │ │ │
tribes / term │ ── read snapshot ─────▶ │ │ │
│ │ ── MAKE_MASTER ───────▶ │ │
│ │ ◀ CLIENT_REGISTER ───── │ │
│ │ ◀ CLIENT_SUSCRIBE ───── │ │
t1 arranque │ │ │ │
│ publish boe.block#0 ───▶ │ ─ ROOM_MESSAGE ───────▶ │ │
t2 vivo │ │ │ ◀ firehose.raw ────── │
│ │ │ ◀ bothub.msg ─────── │
│ │ │ ◀ stream.chat ────── │
│ │ │ select piece │
│ │ │ → BOE → FutureMach. │
t3 cierre │ │ │ │
│ ◀ summary_out + firmas ─ │ │ │
│ validate + publish ────▶ │ │ │
t4 retorno │ ─ tribe-content ───────▶ │ │ │
│ ─ proposal / votes ────▶ │ │ │
│ ─ scriptorium-boe ─────▶ │ │ │
──────────────────┴─── ────────────────┴─── ────────────────┴─── ─────────────┴───
TTL = ∞ TTL = sesión + commit TTL = una tarde TTL = cursor
scriptorium-boe firmado.tribe-content con contentType: 'feed' o 'forum'.parliamentProposal o votes.parliamentLaw desde layer2.replaces o tombstone.CLIENT_REGISTER, CLIENT_SUSCRIBE, MAKE_MASTER y capabilities.