Files
cayce-ops/docs/sessions/2026-11-02-r17-rotaciones-fuente-unica.md
patternn 9b44863e00
isolation-test / probe (pull_request) Successful in 0s
ci / lint-test (pull_request) Successful in 1s
r17 doc: incidencias resueltas (DATABASE_URL, logPost, scout)
2026-11-02 05:52:26 +00:00

4.3 KiB

Ronda 17 — Rotaciones, borrado, fixes y fuente única (OpenCode/GLM, operador patternn)

1. Rotaciones

  • PG rol hardcap (cayce DB): ALTER ROLE + 4 .env actualizados (core, nostr, front, hardcap-news CAYCE_PGURL). Verificado psql + restart servicios. Valor jamás impreso.
  • GITEA_TOKEN: nuevo por CLI (r17-rotation-1102, scopes repo+user) en mail y social; VIEJO REVOCADO (automation3, id 3 — era el del remote). Quedan: auto-merge (id 10, decisión del operador) y el nuevo.
  • Remote de cayce-ops sin token embebido; credential helper store con fichero 600 (~/.git-credentials-cayce). Fetch verificado.
  • ZAI_API_KEY eliminada de core/nostr/front/entity .env. Servicios reiniciados. (cayce-front proxy Z.AI queda sin upstream: sin saldo desde oct-9, sin impacto práctico.)
  • MAIL_PASS: lo cambia el operador → /home/ubuntu/cayce-mail/.env, var MAIL_PASS, luego sudo systemctl restart cayce-mail.

2. Borrado

  • kind 5 para 99cc75f4 (opinión BTCPay/fuente Wisconsin): publicado vía daemon gateado, event 404b476c…, aprobación registrada (draft #186, kind5_id). Visible 1/5 relays al instante.
  • Recheck +1h programado (systemd-run r17-recheck-99cc, 06:32 UTC) → /var/log/r17-recheck-99cc.log.

3. Monitor y promo

  • Monitor: fallaba por (a) alerta por exit 15 (SIGTERM de parada externa), (b) exit 1 al alertar, (c) journalctl --utc inexistente, (d) date mal citado. Corregido; heartbeat /srv/cayce-core/.monitor-heartbeat.
  • WATCHER vigila al monitor: heartbeat >45 min → DM + guard_rejections(monitor_stalled). Test negativo real pasado (alerta + fila).
  • Promo: faltaba pg (instalado), convert duplicado y comillas literales en color (fix), sub no-array (fix), doble publicación en live (fix), y PUBLICABA pese a rechazo del guard (fix crítico). GRANT posts_log a hardcap. Resultado: 12/12 de campaña procesadas, TODAS rechazadas por el guard (hashtag/regla R2 en captions IG/FB) — nada publicado a terceros; decisión de contenido pendiente del operador.

4. Falsos ok

  • core.mjs: assertPublished() en los 4 helpers; REJECTED → actions_log result=rejected con reasons (coincide con guard_rejections). En PR #2.

5. Fuente única

  • Backups forensics: r17-single-source-20261102-0540.tar.gz + r17-cayce-ops-runtime-… + manifest sha256.
  • /srv/cayce-core AHORA es checkout de cayce/entity (rama r16-r9-gemini, commit ddb2d2e). Tests 27/27 en el checkout. Tree limpio.
  • Eliminados: /srv/cayce-entity (copia muerta) y runtime/ de cayce-ops. check-clean-trees cubre /srv/cayce-core ✓.
  • Artefactos runtime ignorados en .gitignore del repo entity.

6. PR

  • entity PR #2 (r16-r9-gemini → main): R9, Gemini-only, fixes r16+r17.
  • Regla de urgencia r16: NO se cumplió (cambio directo sin PUBLISH_OFF; rama a cayce-ops, no entity). En r17 SÍ: PUBLISH_OFF activo durante el swap y PR #2 en la misma ventana.

Otros

  • cayce-front: crash latente al reiniciar (leía /srv/hardcap-backend/.env muerto) — corregido (fallback resiliente). Claves Blink ya no están en el backend nuevo: paywall de invoices sin key hasta que el operador las cargue.
  • cayce-scout: crash-loop desde la contención (buscaba cayce-trader/scout.mjs, código en cuarentena). Deshabilitado — decisión del operador si se recupera del archivo forense. No estaba en la lista del monitor.
  • PR #23 (voz v3) sigue OPEN: al mergearse, en cayce-ops git checkout main && git pull actualiza el despliegue (identity ff2cd822 → v3).

Pendientes operador

  • MAIL_PASS en proveedor + .env + restart.
  • Merge entity PR #2 y cayce-ops PRs (#23, r16-r9-gemini de cayce-ops si procede); luego /srv/cayce-core → main.
  • Decidir token auto-merge (id 10) y destino de scout.
  • Contenido de campaña promo (hashtags prohibidos por R2) o excepción de política.

Incidencias de la propia ronda (resueltas)

  • La rotacion del rol hardcap rompio DATABASE_URL del backend hardcap (mismo rol, variable con otro nombre): fix + sweep de TODOS los .env con URL postgres (todos conectan; tambien se actualizo el snapshot pre-git-20261101 por coherencia). hardcap-backend restart OK.
  • logPost clasificaba "Error: REJECTED..." como error (prefijo de Node): fix includes() → result=rejected. Validado sinteticamente; la opinion 05:48 quedo error=REJECTED (pre-fix) y la 05:50 publico OK (event f9f976eb…) desde el checkout nuevo.
  • cayce-scout deshabilitado (crash-loop: buscaba cayce-trader/scout.mjs, codigo en cuarentena).