Оба места утверждали, что у Домклика один выделенный резидентный прокси и пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла резервацию узла), но текст остался — и именно на него опирался тикет #3189, поставленный под «калибровку» ограничения, которого не существует. Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к нему в PR #3222. Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик провалов lease, а break по первому DomClickBlockedError (#2854) — до ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0. Только комментарии, поведение не меняется. Миграция 175 уже применена, а _schema_migrations трекает по имени файла без checksum — правка текста её не перезапустит.
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Claude Code SessionStart hook — one-line preflight status printed into session context.
|
|
|
|
Surfaces the session-setup facts that have caused real lost time:
|
|
- FORGEJO_ACCESS_TOKEN present? (goern forgejo-MCP needs it BEFORE launch; missing -> idle bot)
|
|
- OBSIDIAN_API_KEY present? (vault MCP)
|
|
- DB tunnel localhost:15432 reachable? ("tunnel :8000 is gendesign not tradein" / tunnel-down traps)
|
|
|
|
Wired in `.claude/settings.json` hooks.SessionStart. ALWAYS exits 0 — informational only,
|
|
never blocks. Fast (<~0.6s): single non-blocking TCP probe with a short timeout.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import socket
|
|
import sys
|
|
|
|
|
|
def _tcp_ok(host: str, port: int, timeout: float = 0.5) -> bool:
|
|
try:
|
|
with socket.create_connection((host, port), timeout=timeout):
|
|
return True
|
|
except OSError:
|
|
return False
|
|
|
|
|
|
def main() -> int:
|
|
try:
|
|
forgejo = "set" if os.environ.get("FORGEJO_ACCESS_TOKEN") else "MISSING"
|
|
obsidian = "set" if os.environ.get("OBSIDIAN_API_KEY") else "MISSING"
|
|
tunnel = "up" if _tcp_ok("localhost", 15432) else "DOWN"
|
|
print(
|
|
f"[preflight] FORGEJO_ACCESS_TOKEN={forgejo} · OBSIDIAN_API_KEY={obsidian} "
|
|
f"· db-tunnel(:15432)={tunnel}"
|
|
)
|
|
except Exception:
|
|
pass
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|