From f68b3cef06f777cffccb09fd0895dda5b1058ff8 Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Wed, 23 Sep 2026 08:54:08 -0400 Subject: [PATCH] The desk's replies no longer ring the bell: reports and players' answers do, the desk's own mail does not Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG --- .claude/skills/wizwar-reports/SKILL.md | 5 +++-- deploy/feedback-reply.sh | 18 ------------------ 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/.claude/skills/wizwar-reports/SKILL.md b/.claude/skills/wizwar-reports/SKILL.md index 75a711d..0def6c6 100644 --- a/.claude/skills/wizwar-reports/SKILL.md +++ b/.claude/skills/wizwar-reports/SKILL.md @@ -24,8 +24,9 @@ One JSONL line per entry: word back, sent from their lobby under the desk's reply. A report is ANSWERED when the LAST line under it is the desk's; a player's answer reopens it. Never re-answer a settled one unless Eric - asks for a revision. Every report, answer, and desk reply rings a - Sentry issue on Eric's phone (fingerprinted per report or per line). + asks for a revision. Every report and every player's answer rings a + Sentry issue on Eric's phone (fingerprinted per report or per line); + the desk's own replies ring nothing — Eric watches them go out here. - Picture: `{reportId, image: ".png", at}` — the player attached a screenshot; the file is `/var/lib/wizwar/feedback-images/.`. diff --git a/deploy/feedback-reply.sh b/deploy/feedback-reply.sh index a5bf384..19f9011 100755 --- a/deploy/feedback-reply.sh +++ b/deploy/feedback-reply.sh @@ -17,21 +17,3 @@ console.log(JSON.stringify({ text: process.env.TEXT, }));') printf '%s\n' "$LINE" | ssh "root@$HOST" 'cat >> /var/lib/wizwar/feedback.jsonl && tail -1 /var/lib/wizwar/feedback.jsonl' -# The desk's bell rings for the reply too, so Eric sees the exchange move: -# an event straight to Sentry from the droplet, with the DSN the service holds. -ssh "root@$HOST" "REPORT_ID='$REPORT_ID' STATUS='$STATUS' TEXT=\"\$(cat)\" python3 - <<'PY' -import json, os, re, uuid, urllib.request, datetime -svc = open('/etc/systemd/system/wizwar.service').read() -m = re.search(r'SENTRY_DSN=https://([0-9a-f]+)@([^/]+)/(\\d+)', svc) -if not m: raise SystemExit(0) -key, host, project = m.groups() -text = os.environ['TEXT']; rid = os.environ['REPORT_ID']; status = os.environ['STATUS'] -now = datetime.datetime.now(datetime.UTC).isoformat() -event = {'event_id': uuid.uuid4().hex, 'timestamp': now, 'level': 'error', 'platform': 'other', - 'message': {'formatted': f'Desk replies on report {rid} ({status}): {text[:100]}'}, 'fingerprint': ['report-reply', rid, now], - 'tags': {'report': rid, 'status': status}, 'extra': {'text': text}} -body = json.dumps({'event_id': event['event_id'], 'sent_at': event['timestamp']}) + '\\n' + json.dumps({'type': 'event'}) + '\\n' + json.dumps(event) -req = urllib.request.Request(f'https://{host}/api/{project}/envelope/', data=body.encode(), headers={'Content-Type': 'application/x-sentry-envelope', 'X-Sentry-Auth': f'Sentry sentry_version=7, sentry_client=wizwar-desk/1, sentry_key={key}'}) -try: urllib.request.urlopen(req, timeout=10); print('bell rung') -except Exception as e: print('bell failed:', e) -PY" <<< "$TEXT"