Files
routewatch/TODO.md
T
sneak d1f912baae
check / check (push) Successful in 2m49s
Let the daemon receive docker stop's signal itself (closes #33)
entrypoint.sh now switches to the routewatch user with setpriv instead of
runuser. setpriv replaces itself with the daemon, so the daemon gets the stop
signal directly and has its full 60 seconds to shut down; runuser stayed in
between and killed the daemon 2 seconds after passing the signal on. setpriv
keeps the environment, so GOMEMLIMIT, MALLOC_ARENA_MAX and XDG_DATA_HOME still
reach the daemon, and the state directory stays
/var/lib/berlin.sneak.app.routewatch.

Model: opus-5-5
2026-09-28 18:11:11 +00: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 its full 60 seconds to shut down (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