r17: runtime/ eliminado (fuente unica entity) + docs de sesion r16/r17 #34

Merged
pattern merged 5 commits from r16-r9-gemini into main 2026-11-02 06:37:52 +00:00
Showing only changes of commit 25f6efb1c1 - Show all commits
@@ -0,0 +1,41 @@
# 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.