joerglohrerde/snapshot
Claude Code bcd3585f09 fix(snapshot): relay-union statt entweder-oder, quorum an events statt antworten
Der post 'protocol-anthropology' erschien in der uebersicht, lieferte unter
/protocol-anthropology/ aber 404: das event liegt nur auf relay.primal.net,
waehrend nos.lol und relay.tchncs.de die uebrigen 27 posts halten und primal
diese nicht liefert. loadReadRelays nahm bisher die NIP-65-liste ODER den
fallback — je nach codepfad fehlte damit entweder der neue post oder fast
alle alten. Jetzt vereinigungsmenge beider listen, normalisiert (trailing
slash, case) und dedupliziert.

FALLBACK_READ_RELAYS um 'primal.net' und 'relay-rpi.edufeed.org' ergaenzt:
das sind andere hosts als 'relay.primal.net'/'relay.edufeed.org', keine
schreibweisen — sie stehen so in der echten NIP-65-liste.

Das 60%-antwort-quorum ersetzt durch eine untergrenze von 2 relays MIT
events. Zwei gruende: der fetcher resolved bei timeout mit leerem array und
zaehlt damit als "geantwortet" (die quote mass erreichbarkeit, nicht daten),
und mit der groesseren union-liste liefern regulaer mehrere relays 0 events
(gemessen: 6 von 11) — das haette ohne echten fehler hard-gefailt.

Verifiziert: snapshot schreibt 28 statt 27 posts, prerender erzeugt
build/protocol-anthropology/index.html mit korrektem titel und inhalt.
36 tests gruen.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-08-31 16:45:29 +02:00
..
src fix(snapshot): relay-union statt entweder-oder, quorum an events statt antworten 2026-08-31 16:45:29 +02:00
tests fix(snapshot): relay-union statt entweder-oder, quorum an events statt antworten 2026-08-31 16:45:29 +02:00
.gitignore feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
README.md feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
deno.jsonc feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
deno.lock fix(spa): prerender-build laeuft + meta/json-ld korrekt 2026-04-28 08:50:27 +02:00

README.md

snapshot/

Liest die kind:30023-Events des Site-Autors von den Read-Relays und schreibt sie als JSON-Artefakte für den SvelteKit-Prerender-Schritt. Kein Live-Proxy: Relays werden nur zur Build-Zeit befragt.

Spec: ../docs/superpowers/specs/2026-04-21-prerender-snapshot-design.md

Nutzung

cd snapshot
deno task snapshot                    # default
deno task snapshot --out ./output     # alternatives Ziel
deno task snapshot --min-events 20    # Schwelle
deno task snapshot --allow-shrink     # Drop-Check aus

Erwartet diese Env-Vars (aus ../.env.local):

  • AUTHOR_PUBKEY_HEX (64 hex chars)
  • BOOTSTRAP_RELAY (wss-URL)