Files
routewatch/TODO.md
T
clawbot 6187ac8503
check / check (push) Successful in 2m42s
Let the daemon receive docker stop's signal itself (closes #33)
entrypoint.sh now switches to the routewatch user (UID 1000) with setpriv instead of runuser. setpriv replaces itself with the daemon, so the daemon is the container's main process and receives docker stop's signal itself. runuser stayed in between, passed the signal on and killed the daemon 2 seconds later, so every stop ended with exit 143. The daemon now gets the whole wait the caller allows, up to its own 60-second limit, and a clean stop exits 0. Taking ownership of the state directory and the MALLOC_ARENA_MAX check still run as root first.

Not fixed here: a stop while the feed is flowing can still panic (#34).

Model: opus-5-5
2026-09-28 21:08:33 +02:00

2.6 KiB

Workflow

  • branch (from main)
  • do the work in Next Step
  • move Next Step to the top of Completed Steps
  • move the top item of Future Steps into Next Step
  • commit (TODO.md changes in the same commit as the work)
  • merge to main if the branch is not protected, otherwise open a PR
  • push

Status

pre-1.0. No git tags. Runs in production-style Docker deployment, but the policy compliance branch (repo-policies-compliance, make check passing, clean tree) is unmerged to main and the CI workflow is missing.

Next Step

Merge repo-policies-compliance into main (3 commits: policy files and .gitignore, Makefile targets fmt-check/check/docker/hooks, gofmt pass), then add .gitea/workflows/check.yml as a small follow-up commit so CI runs make check on main.

Completed Steps

  • 2026-09-28: docker stop no longer kills the daemon 2 seconds after the stop signal: the entrypoint switches to the routewatch user with setpriv instead of runuser, so the daemon receives the signal itself and gets the whole wait docker stop allows, up to its own 60-second limit (closes #33)
  • 2026-09-28: ready to run under upaas: a set but invalid PORT, XDG_DATA_HOME or MALLOC_ARENA_MAX stops the start, the health check follows PORT, README "Running under upaas" section (closes #31)
  • 2026-09-22: realtime in-memory database statistics: counts seeded at startup and adjusted on every write, oldest/newest route timestamps via index-end lookups; /api/v1/stats no longer scans the tables (closes #27)
  • 2026-07-07 Adopted scripts-to-rule-them-all: script/ entrypoints, Makefile shims, README Entrypoints section
  • 2026-02-22: repo policy compliance: required policy files, .gitignore update, Makefile fmt-check/check/docker/hooks targets, gofmt pass (repo-policies-compliance, unmerged)
  • 2026-01-01: WAL checkpointing: periodic (5s), on startup with logging, TRUNCATE mode; fixed slow queries
  • 2025-12-31: status page: navbar, home page with search, oldest/newest route timestamps, NULL handling in WHOIS stats; container runs as routewatch user with proper state dir
  • 2025-12-30: structured HTTP request logging, increased timeouts, CIDR prefix URL routing fixes, status page metrics and footer
  • 2025-12-29: Dockerfile multi-stage build with source archive; SQLite incremental vacuum for non-blocking space reclamation
  • 2025-07-27: initial RouteWatch BGP stream monitor

Future Steps

  • Verify main is green after the merge: make check locally and the new CI workflow passing
  • Review stale remote branches fix-min-time-calculation and optimize-sqlite-settings: land or delete
  • Clean up the tmp/ directory at the repo root: gitignore or remove