ddnet currently dual-writes DHCP/TFTP/NTP/TOD logs: structured records to Postgres (TimescaleDB hypertables) and formatted text to timeless-logs. Decision 2026-08-15: keep both during the product cycle (more logging = better), and treat this checklist as the bar timeless must clear for ddnet to retire PostgresLogger entirely. ddnet is the first demanding customer; this is its requirements list.
What Postgres provides today that timeless must match
What retirement buys ddnet when this lands
Single log store, no dual-write, no per-message Postgres inserts on the DHCP hot path (ddnet#4 becomes moot), no hypertable maintenance — and timeless gets proven against a 30k-device production workload before external customers see it.
Related: awksedgreep/ddnet#4 (interim: per-service min_log_level config exists if Postgres insert volume ever needs cutting before parity lands).
🤖 Generated with Claude Code
ddnet currently dual-writes DHCP/TFTP/NTP/TOD logs: structured records to Postgres (TimescaleDB hypertables) and formatted text to timeless-logs. Decision 2026-08-15: keep both during the product cycle (more logging = better), and treat this checklist as the bar timeless must clear for ddnet to retire PostgresLogger entirely. ddnet is the first demanding customer; this is its requirements list.
What Postgres provides today that timeless must match
client_mac:"aa:bb:..."works). The jsonline endpoint accepts the fields already; indexing/filtering them is the gap. (ddnet side: extend the VLogsBackend payload — small.)stats by (field)(timeless_logs#1), aggregates that survive busy windows (timeless_logs#2 work-row cap), so "top NAKed MACs in the storm hour" is one query.What retirement buys ddnet when this lands
Single log store, no dual-write, no per-message Postgres inserts on the DHCP hot path (ddnet#4 becomes moot), no hypertable maintenance — and timeless gets proven against a 30k-device production workload before external customers see it.
Related: awksedgreep/ddnet#4 (interim: per-service min_log_level config exists if Postgres insert volume ever needs cutting before parity lands).
🤖 Generated with Claude Code