Fixes 170 issues found by a full-codebase review, each confirmed by an independent verification pass. Build, vet, and the race-enabled test suite pass across all 35 packages, with 269 tests added.
⚠️ Before upgrading
- Back up your data directory. Migration
000002rewrites timestamp columns in place on existing installs. It is guarded and idempotent, and was verified against a simulated legacy database — but it does modify your data. - Downgrading is not supported after this release. Newly sealed chunks use format v2. This release still reads v1 files, so your existing data is fine, but older binaries cannot read anything written from now on.
Critical fixes
- Live servers were being marked offline on every sweep. Timestamps written by bun (
2006-01-02 15:04:05-07:00) were compared against RFC3339, and' 'sorts below'T', so any same-day heartbeat compared below the cutoff. Fixed as one systemic root cause, which also repaired MCP activity stats, session expiry, and audit pruning. - A single log field over 64KB corrupted an hour of logs. The WAL length prefix was written as
uint16while the full bytes were appended, desynchronizing the record and everything after it. logs statscould be made to hang and exhaust memory —bucket_intervalaccepted0sand negative durations.- MySQL, Redis, Turso and server-metrics connectors could never be created; a schema constraint rejected them even though the tool advertised them.
Security
- Closed SQL injection in the MCP
database schemaaction, and hardened the read-only SQL guardrail against comment-, CTE- andINTO OUTFILE-based bypasses. - Stopped leaking connector credentials and the ingest API key to non-admin MCP clients, and gated
deep_captureand connector write actions behind admin. - Environment scope is now enforced as an authorization boundary across MCP resources, overview, and error tools — a staging-scoped token no longer receives production data.
- API-key auth now fails closed on a database error, proxy-asserted
adminrequires an explicit opt-in, and rate limiting can no longer be bypassed viaX-Forwarded-For.
Reliability
- Logs survive restarts: the WAL is sealed on shutdown, orphaned previous-hour WALs are recovered, and a torn tail no longer prevents the server from booting.
- Whole-range request queries are roughly 1900× faster (1m45s → ~55ms for 20k rows).
- The watch engine no longer fires false alerts from an ignored
queryfilter or unsatisfiable delta thresholds, and a malformed watch no longer causes a retry storm. - Query tools no longer silently drop advertised filters or narrow the search window to the last hour — the class of bug where an incident from yesterday read as "nothing happened".
Notable behavior changes
EXPLAIN ANALYZEis rejected rather than silently failing (it executes the statement, which the read-only guardrail exists to prevent).opentrace seedno longer deletes your logs unlessOPENTRACE_SEED_RESET=true.- Proxy-asserted admin requires
OPENTRACE_TRUST_PROXY_AUTH_ADMIN=true. - Unknown subcommands and unhealthy
statusnow exit non-zero instead of silently succeeding.
Full details: #16