chadtmiller.com/knotless

Git hosted in your atproto account, on any stock PDS, fast enough for agents.

git clone knotless://chadtmiller.com/knotless

needs the knotless git helper. set it up

Jetstream: give up a silent connection, and resume from the index

Open chadtmiller.com wants to merge into main from chadtmiller.com/knotless:serve/jetstream-stall 0 comments
chadtmiller.com opened on Oct 22, 2026

Prod stopped indexing at about 06:05 UTC on 2026-10-22: its Jetstream connection went half-open, still established by TCP but delivering nothing, and jetstream::watch waited on ws.next() forever. Pulls opened after that never reached the index.

  • firehose::frames reads a stream, pings it after IDLE (60s) of silence, and gives it up if the ping draws nothing either. Both watchers use it.
  • Jetstream's cursor is kept in the index (stream table), saved every few seconds and when a connection ends, and read back at start, so a restart or deploy replays what it missed instead of starting live.
  • CLAUDE.md: land changes as pulls rather than committing to main.

Tests: a_silent_jetstream_is_left holds a connection open without answering pings and checks it is left and followed again from past the last event; the restart path starts from a seeded cursor. lint and cov (100%) pass.

🤖 Generated with Claude Code