Estado vivo de la oficina con dueno real

Polling del substrato con filtro declared_by de punta a punta (2026-07-19)

01 / Browser 02 / Web server 03 / API substrato 04 / Postgres 05 / Render Polling 15s pausa sin foco onMount GET activity proxy fail-soft declared_by GET outputs + tasks solo si hay pendientes declared_by Vista activity workflows + stats EXISTS intents Vistas de gates outputs y tasks del actor EXISTS intents Postgres substrato traces, plans, intents workspace unico Tablero y escena awaiting_human visible estado real Gate inbox Nova interrumpe una vez aprobar inline cada 15s sin actor visible si pending > 0 sesion actor de la sesion server a server actor de la sesion server a server solo filas del actor filtrado en SQL gates del actor filtrado en SQL workflows + stats estado real pendientes propios cola limpia Legend primary data policy / PII async batch data store

Estado vivo

  • • La oficina dejo de ser un snapshot, se refresca sola cada 15s
  • • El tablero pinta workflows reales con pasos y agente
  • • Sin dato real no se muestra ningun numero

Dueno real

  • • El actor viaja server-side, el browser nunca lo conoce
  • • El filtro corre en SQL con EXISTS hasta intents.declared_by
  • • Un usuario nuevo ve la cola vacia, sin reliquias ajenas

Higiene de datos

  • • 19 gates huerfanos de traces muertos quedaron expirados
  • • Rollback exacto guardado en substrate-infra/rollbacks
  • • Los 3 legitimos del cron siguen aprobables en /activity