A relative bound has to be datetime('now', '-24 hours'); datetime('-24 hours')
returns NULL, so the comparison was false for every row and --since silently
reported nothing rather than erroring. Caught when a --since '-10 minutes'
came back empty for queries that had demonstrably just happened.
Absolute forms ('2026-09-13') still take the single-argument path.
The pre-signup path had no inspection tool. Its activity landed in docker logs
and two sqlite tables with nothing to read them, while the reactive path has
had welcomebot-signups and welcomebot-suspicious all along.
welcomebot-reputation reads reputation_query and reputation_block directly so
it survives log rotation: recent answers, --stats for volume and flag/block
rate by source, --blocks for what is actually in force, and --deferred to see
whether the hourly provider-lookup ceiling is biting. --blocks marks rows GONE
once the reconcile pass finds the block no longer on the Mastodon side, so
"we installed this" and "this is in force" stay distinguishable.
welcomebot-logs --reputation covers the raw lines (pre-blocks, budget
refusals, width-cap narrowings).