Files
cayce-ops/docs/sessions/2026-11-02-r16-verificacion.md
T

3.0 KiB

Ronda 16 — Verificación (OpenCode/GLM en m1, operador patternn)

Hallazgos

  • EXPOSICION previa: secretos en juego (nombres, nunca valores): core .env → ZAI_API_KEY, PGURL; mail .env → MAIL_PASS, GITEA_TOKEN. Rotación PENDIENTE (decisión del operador). Token de Gitea también visible en git remote get-url origin de cayce-ops (remote con credencial embebida).
  • VOZ: main y despliegue = ff2cd822 (v2 vieja). PR #23 (voz v3) OPEN, sin merge. identity_path real verificado en outbound_drafts.
  • PUBLICADO 48h: 4 piezas nostr con event id (2 verificables en relays: 99cc75f4, 449a39bf; 8a81c688 y 09eb4e9a NO están en relays configurados) + hardcap article_note/backlog. La opinion 04:01 (BTCPay) tenia fuente de WPR (planta de gas Wisconsin): mala atribución real.
  • actions_log de core.mjs --posts registra "ok" aunque el guard rechace (falso ok). Bug abierto.

Cambios (desplegados y con tests 27/27)

  • llm.mjs (core + copia cayce-nostr): SOLO Gemini, fuera zai/glm-4.6/4.7. La copia del daemon apuntaba a /srv/hardcap-backend/.env inexistente (sin fallback). Daemon cayce-nostr reiniciado (guard/llm nuevos activos).
  • guard.mjs R9 reescrito: terminos ESPECIFICOS de la fuente (slug del titular + sourceTitle: nombres propios, cifras ≥3 dígitos, keywords ≥5 chars con stopwords), ids opacos excluidos. Fuera vocabulario DOMAIN genérico. guardCheck acepta sourceTitle; outbox lo pasa desde meta.
  • Tests: R16a (caso real BTCPay/Wisconsin → rechazado), R16b (id opaco no bloquea), R16c (sourceTitle verifica). 27/27 verde.
  • Prueba en vivo: pieza generada (BTCPay) con fuente theblock.co/etf-binance → RECHAZADA por R9 en tiempo real.

Timing ciclo posts (Gemini-only)

  • selectSource 61ms · selectBatch 2ms · fetch artículos 333ms · gemini 10.0s · guard 4ms = 10.4s/post (instrumentado).
  • Run systemd real: opinion 50.3s (start 04:08:27.257 → spacing 04:09:17.528), rechazado por tope 3/3 + aforismo.
  • Ciclo --posts completo = 3 posts + 2 esperas de 45 MIN por diseño (regla supervisor) ≈ 92 min. El objetivo <5 min aplica al procesamiento (✓ 10-50s/post), no al ciclo con espaciado.

Pendientes

  • Rotar ZAI_API_KEY, PGURL, MAIL_PASS, GITEA_TOKEN (y token embebido en remote de cayce-ops).
  • Merges Gitea: #23 (voz v3), #25.
  • Decidir qué hacer con /srv/cayce-entity (copia muerta: sin servicio, guard sin R9, mtime 21:08 Nov1).
  • Bug falso-ok en core.mjs --posts (no chequea resultado del gate).
  • cayce-promo y cayce-cycle-monitor en failed.

Incidente kill switch (resuelto en la sesión)

  • Cada restart del daemon publica kind 0; si el publish agota timeout tras aceptación parcial en relays, no se registraba aprobación → watcher disparaba PUBLISH_OFF (ocurrió 00:39 y 04:50 Nov-2).
  • Fix desplegado en /srv/cayce-core/outbox.mjs: en live, recordPublish también en el catch del publishFn (meta.publish_error). Validado: restart 04:53:54 → fila profile registrada (draft #183).
  • Backfill de las 2 filas kind 0 de los restarts (drafts #181/#182), PUBLISH_OFF eliminado, watcher manual en verde, publishMode efectivo = live.