ci / lint-test-leaks (pull_request) Canceled after 0s
Problem: Cayce publishes straight to relays with no approval gate — cayce-initiative publish_note, core.mjs digest/opinion/reflection/events, mention auto-replies, social promo (Facebook/Instagram via sfeed), and mail — while the operator believed approvals existed (they never did; ADR-0005 Telegram queue was never implemented). Mechanism (outbox.mjs, deployed to all runtimes): - CAYCE_PUBLISH_MODE=draft (default): gateOutbound() stages EVERY outbound artifact into outbound_drafts (entity DB) with identity_path + identity_hash (sha256 of prompts/cayce-identity.md) before anything else happens. Fail-closed: if staging fails, the event is discarded, never published. - CAYCE_PUBLISH_MODE=live: original behavior, unchanged (reversible with one line per service .env). - Chokepoint: the nostr daemon /publish endpoint gates ALL callers (initiative publish_note, core.mjs ×4, banner kind 0); the daemon own mention-reply path gates too, storing original_event for context; startup profile publish gates as well. DM-to-supervisor (/dm) is internal and stays live. Identity (point 8b): - prompts/cayce-identity.md: the 5 hardcoded voice blocks extracted VERBATIM (verified byte-identical by runtime test) with block markers. - core.mjs / editorials.mjs now load their voice blocks from this file (loadIdentityBlock); identity hash recorded on every draft. - runtime/ holds the versioned copies of the previously-unversioned runtime scripts + deploy.sh installer. No timers enabled or disabled. No production data modified.
29 lines
1.7 KiB
Bash
Executable File
29 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# deploy.sh — instala el runtime contenido en sus rutas live y reinicia el daemon.
|
|
# Fuente versionada: este directorio (cayce-ops/runtime). Reversible con
|
|
# CAYCE_PUBLISH_MODE=live en el .env de cada servicio.
|
|
set -euo pipefail
|
|
SRC="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
install -m 644 "$SRC/outbox.mjs" /srv/cayce-core/outbox.mjs
|
|
install -m 644 "$SRC/core.mjs" /srv/cayce-core/core.mjs
|
|
install -m 644 "$SRC/editorials.mjs" /srv/cayce-core/editorials.mjs
|
|
install -m 644 "$SRC/initiative.mjs" /srv/cayce-core/initiative.mjs
|
|
install -m 644 "$SRC/outbox.mjs" /srv/cayce-nostr/outbox.mjs
|
|
install -m 644 "$SRC/daemon.mjs" /srv/cayce-nostr/daemon.mjs
|
|
install -m 755 "$SRC/publish-10050.mjs" /srv/cayce-nostr/publish-10050.mjs
|
|
install -m 644 "$SRC/check-relay-silence.mjs" /srv/cayce-nostr/check-relay-silence.mjs
|
|
install -m 644 "$SRC/outbox.mjs" /home/ubuntu/cayce-social/outbox.mjs
|
|
install -m 644 "$SRC/promo.mjs" /home/ubuntu/cayce-social/promo.mjs
|
|
install -m 644 "$SRC/outbox.mjs" /home/ubuntu/cayce-mail/outbox.mjs
|
|
install -m 644 "$SRC/mail.mjs" /home/ubuntu/cayce-mail/mail.mjs
|
|
|
|
# config de contención (idempotente): draft por defecto + ruta de identidad
|
|
for ENVF in /srv/cayce-core/.env /srv/cayce-nostr/.env /home/ubuntu/cayce-social/.env /home/ubuntu/cayce-mail/.env; do
|
|
grep -q "^CAYCE_PUBLISH_MODE=" "$ENVF" 2>/dev/null || echo "CAYCE_PUBLISH_MODE=draft" >> "$ENVF"
|
|
grep -q "^IDENTITY_PATH=" "$ENVF" 2>/dev/null || echo "IDENTITY_PATH=/home/ubuntu/cayce-ops/prompts/cayce-identity.md" >> "$ENVF"
|
|
done
|
|
|
|
systemctl restart cayce-nostr
|
|
echo "deploy OK — mode=$(grep -h "^CAYCE_PUBLISH_MODE=" /srv/cayce-core/.env | head -1)"
|