Public roadmap
Generated plan timeline with explicit status boundaries
This page is built from the canonical repository Gantt data. It exposes current plan state, completed evidence, dependencies, and planning estimates without treating dates as delivery commitments.
Generated from docs/gantt-data.json
Roadmap timeline and task details
Filter by status, priority, workstream, or text. Rows remain tied to the repository plan and generated Gantt artifact.
Dates and estimates come from the generated planning artifact. They are scheduling aids for maintainers, not delivery commitments.
Source: docs/gantt-data.json. Excluded wrapper:
docs/gantt-data.js.
Ingest And Agent
Live API And Realtime UI 5 done
Query And PromQL 11 done
Object Storage And Landing
Logs And Alerts API 4 done
Rollups And Indexes 3 done
UI, Design, And Mock Contracts
Public Website And Docs Site
Planning And Reporting Tools 9 done
Documentation And Process
Demo, Integration, And CI 5 done
Grafana Compatibility
ING-01 Validate framed Cap'n Proto batches, auth identity, sequence ranges, limits, and spool dedupe/conflicts Done
- Workstream
- Ingest And Agent
- Priority
- P0
- Dependencies
- none
- Window
- 2026-05-06 18:20 :21+03 to 2026-05-06 18:24 :54+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Invalid, duplicate, and conflicting batches have deterministic HTTP outcomes and do not corrupt spool.
Evidence
Worklog: ING-01.
Estimate basis
- contracts: agent, http/api, storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=ING-01,ING-02,OBJ-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-02 Local agent queues heartbeat batches and flushes to collector Done
- Workstream
- Ingest And Agent
- Priority
- P0
- Dependencies
- ING-01
- Window
- 2026-05-06 19:15 :18+03 to 2026-05-06 22:27 :49+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
lm-agent --once queues, uploads, and advances sequence state.
Evidence
Worklog: ING-02.
Estimate basis
- contracts: agent
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=ING-02,ING-03,ING-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-03 Heartbeat batches include real scalar lmagent_up metric Done
- Workstream
- Ingest And Agent
- Priority
- P0
- Dependencies
- ING-02
- Window
- 2026-05-07 09:15 :48+03 to 2026-05-07 09:30 :43+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Live update includes metrics and logs; query API can return lmagent_up.
Evidence
Worklog: ING-03.
Estimate basis
- contracts: agent, http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=ING-03,ING-02,DEMO-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-04 Add initial real host metric collection beyond heartbeat up gauge Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-02
- Window
- 2026-05-08 08:43 :11+03 to 2026-05-08 09:25 :46+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Agent emits bounded aggregate CPU, memory, queue-filesystem, load, process CPU counter, and process RSS gauge metrics from Linux host APIs; cumulative CPU counters preserve stable start timestamps; collector config validation rejects metric-series/label limits below the built-in Linux heartbeat floor.
Evidence
Worklog: ING-04.
Estimate basis
- contracts: agent, config
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-04,ING-09,ING-10)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-04A Rename initial agent telemetry before it becomes a stable public metric contract Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-09
- Window
- 2026-05-08 10:23 :51+03 to 2026-05-08 11:28 :13+03
- Planning estimate
- 21m range 5m to 1h 4m
Acceptance
Agent-owned metrics use the short lmagent_ prefix; implemented host facts, including bounded CPU and network telemetry, use common Prometheus exporter names where current semantics match; the aggregate CPU series keeps a Lightmetrics-owned name to avoid node-exporter query double-counting; quickstart, smoke tests, and docs use the new names. Out of scope: process enumeration and backwards-compatible aliases for the pre-contract names.
Evidence
Worklog: ING-04A.
Estimate basis
- contracts: agent, http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-04A,ING-10,ING-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-05 Initial configurable file log input collection in --once and --daemon Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-02
- Window
- 2026-05-07 18:40 :51+03 to 2026-05-08 08:17 :53+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Agent reads complete newline-terminated configured file lines, persists offsets after durable queue acceptance, bounds/omits oversized records, and retries queued batches through the same flush path.
Evidence
Worklog: ING-05.
Estimate basis
- contracts: agent, storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-05,ING-06,ING-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-06 File identity, rename, and copy-truncate rotation tracking for configured log inputs Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-05
- Window
- 2026-05-08 21:11 :14+03 to 2026-05-08 21:35 :01+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Agent does not duplicate or skip complete log lines across common uncompressed same-directory rotation modes; state records file identity and a committed-offset fingerprint to distinguish truncation from replacement. Out of scope: compressed/deleted/moved rotated files, trailing partial rotated lines, and multi-batch splitting.
Evidence
Worklog: ING-06.
Estimate basis
- contracts: agent
- durability, idempotency, or repair semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-06,ING-05,ING-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-07 Multi-batch log splitting and queue pressure/drop policy Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-05
- Window
- 2026-05-08 21:35 :46+03 to 2026-05-08 21:58 :23+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
A scrape with more complete lines than one batch can carry produces multiple ordered queued batches, and a full queue drops newest non-critical logs before metrics/alerts with a local alert record when possible.
Evidence
Worklog: ING-07.
Estimate basis
- contracts: agent
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-07,ING-05,LOG-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-08 Production daemon lifecycle integration Planned
- Workstream
- Ingest And Agent
- Priority
- P2
- Dependencies
- ING-05
- Window
- 2026-05-09 19:56 +03:00 to 2026-05-09 20:02 +03:00
- Planning estimate
- 6m range 5m to 6m
Acceptance
Agent has documented signal handling, supervisor/service-unit guidance, and explicit reload behavior or non-reload behavior.
Evidence
Not started.
Estimate basis
- contracts: agent
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=DOC-02G,LOG-03,QUERY-10)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-09 Extend host telemetry with bounded per-core CPU and network I/O metrics Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-04
- Window
- 2026-05-08 10:13 :55+03 to 2026-05-08 10:30 :42+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Agent emits Linux per-core CPU counters for a documented maximum number of cores and network byte counters for a documented maximum number of interfaces, preserves bounded labels, updates collector floor validation for the built-in heartbeat series count and label byte limits, and remains best-effort on hosts where /proc data is missing or malformed.
Evidence
Worklog: ING-09.
Estimate basis
- contracts: agent
- parser/query semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-09,ING-04,DOC-02G)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-10 Bounded process-enumeration host telemetry for the agent heartbeat metric contract Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-09
- Window
- 2026-05-08 21:59 :36+03 to 2026-05-08 22:22 :36+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Agent emits process-level CPU/RSS metrics with privacy-safe labels that do not read command-line arguments, a fixed process cap, deterministic sorting, and an omitted-count gauge; cargo test -p lm-agent --locked --all-targets host_metrics and config-limit tests prove the bounded contract.
Evidence
Worklog: ING-10. Out of scope: configurable process selectors, command-line labels, per-process IO/file-descriptor metrics, non-Linux process APIs, and persisted CPU-rate delta calculation.
Estimate basis
- contracts: agent, config
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-10,ING-04,ING-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ING-11 Harden custom-CA collector URL parsing and manual HTTP request construction Done
- Workstream
- Ingest And Agent
- Priority
- P1
- Dependencies
- ING-02
- Window
- 2026-05-08 22:23 :31+03 to 2026-05-08 22:40 :01+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Agent upload with tls_ca_cert_file rejects collector URLs whose authority, Host header, or request target contains control bytes, whitespace, userinfo, unsupported IPv6 forms, or non-origin-form paths; tests cover CR/LF injection attempts and the normal custom-CA HTTPS path still uploads with matching ack validation. Out of scope: replacing the custom TLS client with a new dependency unless needed by the implementation.
Evidence
Worklog: ING-11.
Estimate basis
- contracts: agent, http/api
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ING-11,ING-04,DOC-02H)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LIVE-01 SSE GET /api/v1/events for accepted-batch live updates Done
- Workstream
- Live API And Realtime UI
- Priority
- P0
- Dependencies
- ING-01
- Window
- 2026-05-07 08:22 :34+03 to 2026-05-07 08:43 :49+03
- Planning estimate
- 18m range 7m to 36m
Acceptance
Non-duplicate accepted batches publish bounded metric/log/alert summaries after durable spool acceptance.
Evidence
Worklog: LIVE-01.
Estimate basis
- contracts: http/api, storage, ui
- durability, idempotency, or repair semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=LIVE-01,LOG-01,LIVE-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LIVE-02 Console consumes SSE for realtime metric/log/alert updates Done
- Workstream
- Live API And Realtime UI
- Priority
- P0
- Dependencies
- LIVE-01
- Window
- 2026-05-07 08:22 :34+03 to 2026-05-07 08:43 :49+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Browser test drives mocked SSE with real contract shape; production console has no hard-coded telemetry.
Evidence
Worklog: LIVE-02.
Estimate basis
- contracts: http/api, ui
- external/integration service involved
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=LIVE-02,UI-01,LIVE-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LIVE-03 Live log tail view backed by real ingested log records. Production UI contract changes: Logs view reads bounded persisted records from GET /api/v1/logs, merges accepted-batch SSE log summaries, preserves repeated same-content rows, and exposes SSE disconnect state. Out of scope: /api/v1/logs/tail, missed-event gap repair, contains filtering, and new backend APIs Done
- Workstream
- Live API And Realtime UI
- Priority
- P1
- Dependencies
- ING-05, LIVE-01
- Window
- 2026-05-08 23:04 :24+03 to 2026-05-08 23:07 :07+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
UI can display newly ingested log lines without periodic refresh; disconnected SSE state is visible; browser mock asserts the /api/v1/logs API boundary, duplicate row preservation, and older selected-range retention.
Evidence
Worklog: LIVE-03.
Estimate basis
- contracts: agent, http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LIVE-03,LIVE-05,UI-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LIVE-04 Live metric chart updates from incoming SSE and reconciles with query results Done
- Workstream
- Live API And Realtime UI
- Priority
- P1
- Dependencies
- QUERY-02, LIVE-01
- Window
- 2026-05-08 11:55 :05+03 to 2026-05-08 12:38 :34+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Chart updates immediately on SSE, then converges with /api/v1/query_range after refresh/reconnect.
Evidence
Worklog: LIVE-04.
Estimate basis
- contracts: http/api, ui
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LIVE-04,LIVE-02,LIVE-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LIVE-05 Backfill/reconnect semantics for live views. Production UI contract changes: the embedded console detects missed accepted-batch sequence ranges per agent/boot and uses the existing focused metric /api/v1/query_range path to repair the affected timestamp interval. Out of scope: durable SSE event replay, new backend APIs, multi-series dashboard backfill, and /api/v1/logs/tail gap repair Done
- Workstream
- Live API And Realtime UI
- Priority
- P1
- Dependencies
- LIVE-01
- Window
- 2026-05-08 23:07 :37+03 to 2026-05-08 23:30 :28+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
UI detects missed events and issues range query for the missing interval instead of trusting memory state; browser mock asserts the gap request interval and visible repair state.
Evidence
Worklog: LIVE-05.
Estimate basis
- contracts: agent, http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LIVE-05,UI-03,LIVE-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-01 Prometheus endpoint skeleton and query auth Done
- Workstream
- Query And PromQL
- Priority
- P0
- Dependencies
- ING-01
- Window
- 2026-05-07 08:22 :34+03 to 2026-05-07 08:43 :49+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Supported subset validates; unsupported syntax returns Prometheus-style error envelope.
Evidence
Worklog: QUERY-01.
Estimate basis
- contracts: http/api
- parser/query semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=QUERY-01,DOC-02H,GRAF-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-02 Direct selectors over accepted spool scalar samples Done
- Workstream
- Query And PromQL
- Priority
- P0
- Dependencies
- QUERY-01, ING-01
- Window
- 2026-05-07 09:02 :18+03 to 2026-05-07 09:15 :48+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Labels, label values, series, instant vector, and range matrix return decoded spool data.
Evidence
Worklog: QUERY-02.
Estimate basis
- contracts: http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=QUERY-02,QUERY-04,QUERY-08)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-03 Complete P0 query_range semantics for Grafana graph panels Done
- Workstream
- Query And PromQL
- Priority
- P0
- Dependencies
- QUERY-02
- Window
- 2026-05-07 12:09 :10+03 to 2026-05-07 12:48 :35+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Honors start, end, and step; returns stable sorted matrix samples; documents partial-range behavior.
Evidence
Worklog: QUERY-03.
Estimate basis
- contracts: http/api
- external/integration service involved
- parser/query semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=QUERY-03,QUERY-02,QUERY-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-04 Regex label matchers Done
- Workstream
- Query And PromQL
- Priority
- P0
- Dependencies
- QUERY-03
- Window
- 2026-05-07 15:56 :20+03 to 2026-05-07 16:06 :45+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
=~ and !~ work for direct selectors used by query and query_range, with invalid regexes rejected explicitly. Label values and series filters remain out of scope.
Evidence
Worklog: QUERY-04.
Estimate basis
- contracts: http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=QUERY-04,QUERY-02,QUERY-11)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-05 Basic rate() evaluator over range selectors Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-03
- Window
- 2026-05-07 16:06 :45+03 to 2026-05-07 16:19 :22+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Grafana can graph rate(lmagent_up[5m]) or a real counter equivalent without empty placeholder results. Aggregations, nested functions, and Prometheus extrapolation parity remain out of scope.
Evidence
Worklog: QUERY-05.
Estimate basis
- contracts: http/api
- external/integration service involved
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-05,QUERY-06,QUERY-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-06 Aggregations with by (...) Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-05
- Window
- 2026-05-07 16:19 :22+03 to 2026-05-07 16:30 :02+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
sum(rate(...)) by (agent_id) returns grouped Prometheus vectors/matrices. Non-sum, aggregation without by, and nested non-rate expressions remain out of scope.
Evidence
Worklog: QUERY-06.
Estimate basis
- contracts: agent, http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-06,QUERY-05,GRAF-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-07 Histogram bucket query support and histogram_quantile Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-06
- Window
- 2026-05-07 16:30 :02+03 to 2026-05-07 16:42 :37+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Histogram panels can query bucket series and quantiles with documented limitations.
Evidence
Worklog: QUERY-07.
Estimate basis
- contracts: http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-07,GRAF-02,ROLL-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-08 Query reads listing-capable object-store accepted manifests/raw blobs plus local landed spool tail Done
- Workstream
- Query And PromQL
- Priority
- P0
- Dependencies
- QUERY-03, OBJ-06C
- Window
- 2026-05-07 16:58 :42+03 to 2026-05-07 17:35 :42+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Range query spans accepted manifests/raw blobs and recent landed spool data without duplicate samples; object-store backends that cannot list accepted manifests return explicit partial warnings.
Evidence
Worklog: QUERY-08.
Estimate basis
- contracts: agent, http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=QUERY-08,OBJ-03,OBJ-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-09 Derived-index-backed object-store query planning Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-08, OBJ-06A
- Window
- 2026-05-08 14:34 :29+03 to 2026-05-08 14:46 :36+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Metric/log/alert query loading can use accepted-by-time to bound closed-range object-store manifest discovery, attach explicit partial warnings for indexed results, and fall back to accepted-manifest scans when indexes are unavailable, empty, or too broad. Per-event compact indexes and exact coverage metadata remain out of scope.
Evidence
Worklog: QUERY-09.
Estimate basis
- contracts: http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-09,ROLL-02,ROLL-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-10 Object-store query coverage metadata and cache rebuild Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-08, OBJ-06C
- Window
- 2026-05-08 23:31 :31+03 to 2026-05-08 23:50 :57+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Query, logs, and alerts responses distinguish exact object-backed coverage, local-tail-only coverage, object-store unavailability, and outside-horizon requests with explicit warnings/errors; rebuildable local cache behavior is documented. Out of scope: persistent query-cache implementation, exact coverage metadata beyond warnings/errors, rollup-aware planning, and background reconciliation scheduling.
Evidence
Worklog: QUERY-10.
Estimate basis
- contracts: agent, http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-10,QUERY-09,LOG-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
QUERY-11 Prometheus label/series match filtering and instant-query evaluation time Done
- Workstream
- Query And PromQL
- Priority
- P1
- Dependencies
- QUERY-04, GRAF-01
- Window
- 2026-05-08 23:52 :22+03 to 2026-05-09 00:10 :43+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
/api/v1/series and /api/v1/label/<name>/values honor supported repeated match[] selectors, malformed match[] returns Prometheus bad_data, and /api/v1/query?time=... evaluates supported selectors/functions at the requested finite time with the documented fixed lookback. Grafana variable-query smoke covers filtered label values. Out of scope: full Prometheus staleness parity, arbitrary PromQL expressions, and instant-query object-store coverage warnings.
Evidence
Worklog: QUERY-11.
Estimate basis
- contracts: http/api, storage
- external/integration service involved
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=QUERY-11,QUERY-04,QUERY-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-01 Filesystem object-store acceptance primitives for raw blobs and accepted manifests Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- ING-01
- Window
- 2026-05-07 08:43 :49+03 to 2026-05-07 09:02 :18+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Raw blobs are content-addressed and idempotent; accepted manifests detect duplicate and identity conflict outcomes.
Evidence
Worklog: OBJ-01.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-01,OBJ-03,OBJ-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-02 Collector lands accepted spool batches to configured filesystem object store Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-01
- Window
- 2026-05-07 11:30 :11+03 to 2026-05-07 11:35 :33+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
New non-duplicate ingest writes raw object and accepted manifest after spool acceptance; duplicate ingest is idempotent; failures are visible and retryable.
Evidence
Worklog: OBJ-02.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-02,OBJ-01,OBJ-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-03 MinIO/S3 backend for object-store primitives Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-02
- Window
- 2026-05-07 11:35 :33+03 to 2026-05-07 11:55 :24+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Integration test asserts raw blobs and accepted manifests in MinIO with conditional-create behavior and correct duplicate/conflict outcomes.
Evidence
Worklog: OBJ-03.
Estimate basis
- contracts: storage
- external/integration service involved
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-03,OBJ-01,OBJ-06A)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-04 Configurable ingest acceptance mode: local_spool versus s3_manifest Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-03
- Window
- 2026-05-07 13:01 :29+03 to 2026-05-07 13:32 :08+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Single-collector mode can keep local spool acceptance; S3 manifest mode acknowledges only after the identity manifest conditional create succeeds and returns 503 while S3 is unavailable.
Evidence
Worklog: OBJ-04.
Estimate basis
- contracts: storage
- external/integration service involved
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-04,OBJ-03,OBJ-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-05 Identity-conflict quarantine and operator-visible conflict records Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-04
- Window
- 2026-05-07 13:23 :24+03 to 2026-05-07 13:55 :50+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Different bytes for the same (agent_id, boot_id, seq_start, seq_end) return non-acknowledging 409, preserve the submitted batch, and expose both hashes/object keys for inspection.
Evidence
Worklog: OBJ-05.
Estimate basis
- contracts: agent, storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-05,DEMO-03,OBJ-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-06A Derived index primitives for accepted manifests and raw blobs Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-05
- Window
- 2026-05-07 13:55 :50+03 to 2026-05-07 14:18 :28+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Accepted-manifest landing can idempotently write accepted-by-time, accepted-by-blob, and raw-blobs-by-time references without changing acceptance semantics when index writes fail.
Evidence
Worklog: OBJ-06A.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-06A,OBJ-01,OBJ-06B)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-06B Accepted-manifest reconciliation primitive Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-06A
- Window
- 2026-05-07 14:18 :28+03 to 2026-05-07 14:32 :42+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
A repair pass over listed accepted manifests verifies raw blob hash/bytes, backfills derived indexes, and reports missing/corrupt blobs without hiding them as successful repairs.
Evidence
Worklog: OBJ-06B.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-06B,OBJ-06A,OBJ-06C)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-06C Startup accepted-manifest reconciliation Done
- Workstream
- Object Storage And Landing
- Priority
- P0
- Dependencies
- OBJ-06B
- Window
- 2026-05-07 14:32 :42+03 to 2026-05-07 14:43 :54+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Collector startup runs the accepted-manifest repair pass for listing-capable object stores, skips unsupported manifest listing without failing startup, and logs repaired/missing/corrupt counts.
Evidence
Worklog: OBJ-06C.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=OBJ-06C,OBJ-06B,OBJ-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-06D Periodic/background reconciliation and operator-visible repair reporting Done
- Workstream
- Object Storage And Landing
- Priority
- P1
- Dependencies
- OBJ-06C
- Window
- 2026-05-09 00:12 :30+03 to 2026-05-09 00:32 :12+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
A fixed-interval background repair path repeatedly backfills derived indexes, reports missing/corrupt raw blobs, and exposes the latest operator-facing repair summary at GET /api/v1/object-store/reconciliation without depending only on startup logs. Configurable schedules, S3 Inventory fallback, cross-process leader election, full cold-scan scheduling, rollup enqueueing, and persistent admin history remain out of scope.
Evidence
Worklog: OBJ-06D.
Estimate basis
- contracts: http/api, storage
- external/integration service involved
- durability, idempotency, or repair semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=OBJ-06D,OBJ-06B,OBJ-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-07 Configurable local_spool batch landing interval through ingest.object_landing_interval_ms; production config/runtime behavior changes for asynchronous object landing from accepted spool entries to the configured object store. Out of scope: changing s3_manifest acknowledgement semantics, spool retention/GC, persistent landing history, and admin retry controls Done
- Workstream
- Object Storage And Landing
- Priority
- P1
- Dependencies
- OBJ-02
- Window
- 2026-05-09 00:33 :01+03 to 2026-05-09 00:52 :15+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Operator can choose landing cadence; local_spool ingest acknowledges and private query remains backed by accepted spool data before object landing; background landing writes raw blobs, accepted manifests, derived indexes, and local landed markers without letting object-store outages reject local acceptance.
Evidence
Worklog: OBJ-07.
Estimate basis
- contracts: config, http/api, storage
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=OBJ-07,OBJ-06A,OBJ-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
OBJ-08 Object-store garbage collection with reverse-reference proof Planned
- Workstream
- Object Storage And Landing
- Priority
- P2
- Dependencies
- OBJ-06D, OBJ-05
- Window
- 2026-05-09 20:02 +03:00 to 2026-05-09 20:08 +03:00
- Planning estimate
- 6m range 5m to 6m
Acceptance
Orphan raw blobs can be deleted only after retry horizon, accepted/quarantine reverse-reference proof, and an audit checkpoint; accepted manifests are never routine-GC candidates.
Evidence
Not started.
Estimate basis
- contracts: storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=OBJ-06A,OBJ-01,OBJ-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LOG-01 Bounded JSON log query API over accepted data Done
- Workstream
- Logs And Alerts API
- Priority
- P1
- Dependencies
- ING-05, QUERY-08
- Window
- 2026-05-07 17:47 :22+03 to 2026-05-07 17:53 :09+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
GET /api/v1/logs supports time, agent, boot, severity, target, order, limit, cursor, auth, and explicit partial/error metadata over the same visibility source as metrics.
Evidence
Worklog: LOG-01.
Estimate basis
- contracts: agent, http/api, storage
- parser/query semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LOG-01,LOG-03,LIVE-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LOG-02 Realtime log tail API semantics. Production API contract change: GET /api/v1/logs/tail is a private SSE endpoint that emits bounded storage-backed log tail snapshots and update notices using the same accepted-data visibility source as GET /api/v1/logs. Out of scope: LOG-04 contains, durable SSE event replay, unbounded log streams, UI changes, and new storage indexes Done
- Workstream
- Logs And Alerts API
- Priority
- P1
- Dependencies
- LOG-01, LIVE-03
- Window
- 2026-05-09 00:53 :28+03 to 2026-05-09 01:30 :30+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Endpoint requires query bearer auth, supports bounded reconnect repair from queryable storage with after cursors scoped to matching agent_id and boot_id, does not treat memory live state as authoritative, and has tests for auth, storage-backed initial repair, lag repair, and live log update notices.
Evidence
Worklog: LOG-02.
Estimate basis
- contracts: agent, http/api, storage, ui
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LOG-02,LOG-04,LOG-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LOG-03 Bounded JSON alert query API Done
- Workstream
- Logs And Alerts API
- Priority
- P1
- Dependencies
- QUERY-08
- Window
- 2026-05-07 18:03 :12+03 to 2026-05-07 18:05 :42+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
GET /api/v1/alerts supports documented filters, cursor/limit/order, auth, and explicit partial/error metadata.
Evidence
Worklog: LOG-03.
Estimate basis
- contracts: http/api
- parser/query semantics
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LOG-03,LOG-01,QUERY-10)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
LOG-04 Log contains text filter. Production API contract change: GET /api/v1/logs?contains=... applies a decoded, case-sensitive substring match to accepted log messages after existing time, agent, boot, severity, and target filters. Out of scope: new storage indexes, full-text search, case-insensitive matching, UI adoption, durable SSE replay, unbounded log streams, and contains support on GET /api/v1/logs/tail Done
- Workstream
- Logs And Alerts API
- Priority
- P1
- Dependencies
- LOG-01
- Window
- 2026-05-09 01:31 :47+03 to 2026-05-09 01:52 :45+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Spool and object-store logs queries return only records whose message contains the decoded substring; + decodes as space, percent escapes decode as UTF-8, malformed escapes return invalid_contains_encoding, and tests fail without the filter.
Evidence
Worklog: LOG-04.
Estimate basis
- contracts: agent, http/api, storage, ui
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=LOG-04,LOG-02,LOG-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ROLL-01 Immutable rollup object writer for configured 1m/5m/1h windows. Production storage contract change: configured rollup windows write deterministic immutable chunk and manifest objects during accepted-manifest object landing and reconciliation. Out of scope: query planner use, cross-batch counter/histogram baseline stitching, retention/compaction, rollup indexes beyond manifests, and background scheduling beyond existing accepted-manifest reconciliation Done
- Workstream
- Rollups And Indexes
- Priority
- P1
- Dependencies
- OBJ-06C
- Window
- 2026-05-09 01:54 :16+03 to 2026-05-09 02:31 :48+03
- Planning estimate
- 21m range 5m to 1h 4m
Acceptance
Gauges, counters, and compatible histograms produce immutable rollup chunks/manifests with idempotent output keys; duplicate accepted-manifest replay does not duplicate rollup work; reconciliation reports bounded rollup write errors without aborting repair scans.
Evidence
Worklog: ROLL-01.
Estimate basis
- contracts: http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ROLL-01,ROLL-03,ROLL-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ROLL-02 Query planner reads scalar rollups when raw object scans are too expensive. Production query contract change: configured object-store-backed query_range loads immutable gauge/counter rollup chunks for long scalar range queries and keeps local landed spool samples in the result path for recent/tail data. Out of scope: instant-query rollup use, histogram rollups and histogram_quantile() over rollups, cross-batch counter baseline stitching, exact object-store coverage metadata, retention enforcement, and new rollup indexes beyond existing rollup manifests Done
- Workstream
- Rollups And Indexes
- Priority
- P1
- Dependencies
- ROLL-01, QUERY-08
- Window
- 2026-05-09 02:32 :40+03 to 2026-05-09 02:59 :46+03
- Planning estimate
- 21m range 5m to 1h 4m
Acceptance
Long scalar range queries use rollup chunks where possible; raw/spool tail samples remain query-visible and deduplicated; empty or unreadable rollup selections fall back to existing raw accepted-manifest loading.
Evidence
Worklog: ROLL-02.
Estimate basis
- contracts: agent, http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ROLL-02,ROLL-03,ROLL-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
ROLL-03 Histogram rollup and quantile query support. Production query contract change: configured object-store-backed query_range can load compatible histogram virtual-series rollup chunks for _bucket, _sum, _count, and histogram_quantile() when a rollup window fits the query step and lookback. Out of scope: instant-query rollup use, cross-batch histogram baseline stitching, exact object-store coverage metadata, retention enforcement, MinIO end-to-end rollup query coverage, and new rollup indexes beyond existing rollup manifests Done
- Workstream
- Rollups And Indexes
- Priority
- P1
- Dependencies
- ROLL-01, QUERY-07
- Window
- 2026-05-09 03:01 :09+03 to 2026-05-09 03:37 :11+03
- Planning estimate
- 21m range 5m to 1h 4m
Acceptance
Compatible bucket series, _sum, _count, and histogram_quantile() return documented bounded approximations; empty or unreadable selected rollups fall back to raw accepted-manifest loading.
Evidence
Worklog: ROLL-03.
Estimate basis
- contracts: http/api, storage
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=ROLL-03,ROLL-02,ROLL-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-01 Embed design-aligned console shell from provided design artifacts Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P0
- Dependencies
- LIVE-01, QUERY-01
- Window
- 2026-05-07 08:22 :34+03 to 2026-05-07 08:43 :49+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Console served by collector; no production hard-coded telemetry; UI test uses mocked API/SSE.
Evidence
Worklog: UI-01.
Estimate basis
- contracts: http/api, ui
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=UI-01,LIVE-02,UI-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-02 Contract-check UI mock fixture against real live DTO Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P0
- Dependencies
- UI-01
- Window
- 2026-05-07 08:22 :34+03 to 2026-05-07 08:43 :49+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Rust test validates committed fixture shape against LiveUpdate JSON contract.
Evidence
Worklog: UI-02.
Estimate basis
- contracts: ui
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=UI-02,LIVE-02,UI-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-03 Replace placeholder chart refresh behavior with realtime-plus-query reconciliation for the embedded console's focused metric chart. Production UI contract change: accepted-batch SSE metric summaries update visible live values immediately, while persisted chart history and manual refresh reconciliation use the existing /api/v1/query_range API. Out of scope: new backend APIs, durable SSE replay, multi-series dashboard backfill, typed TOML dashboard definitions, and source-tier/rollup comparison UI Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- QUERY-03
- Window
- 2026-05-08 12:38 :34+03 to 2026-05-09 03:51 :46+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Browser automation asserts live values appear from mocked accepted-batch SSE, focused chart points are reconciled through /api/v1/query_range, and manual refresh requests the real query API with bounded step sizing.
Evidence
Worklog: UI-03. Production behavior was implemented by LIVE-04/LIVE-05; this slice closes the UI backlog item with direct browser coverage for manual refresh.
Estimate basis
- contracts: config, http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-03,LIVE-05,UI-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-04 Feature-gated object-store reconciliation panels. Production UI contract change: after query-token connect, the embedded console fetches GET /api/v1/object-store/reconciliation and renders API-derived disabled, partial, or failed object-store state in the statusbar, Ingest & storage view, and Object horizon dashboard gate. Out of scope: new backend APIs, exact object-store horizon metadata, typed TOML dashboard loading, and full ingest/storage v2 parity Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- OBJ-02
- Window
- 2026-05-09 03:52 :23+03 to 2026-05-09 04:10 :18+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Browser automation mocks the real reconciliation endpoint shape, asserts partial object-store state, reconciliation report counters, and bounded issue samples are visible through the console, and verifies the endpoint was requested.
Evidence
Worklog: UI-04.
Estimate basis
- contracts: config, http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-04,UI-07,UI-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-05 Review design parity against the Claude Design v2 archive after real data flows exist. Production UI/test contract change: the console UI browser test captures desktop/mobile UI-05 screenshots under target/ui-05-screenshots/, rejects prototype-only visible wording and any standalone Dashboards product section, checks page-level horizontal overflow, and checks common top-level child overlap. Out of scope: new backend APIs, dashboard action paths, dashboard editing, durable SSE replay, session-scoped token storage, and exact object-store horizon metadata Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-08, UI-09, UI-10
- Window
- 2026-05-09 06:10 :53+03 to 2026-05-09 06:12 :04+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Browser review covers the configured dashboard, Fleet health and ingest modes, Live metrics, Logs, Alerts, Ingest/storage, Metrics query, and mobile tab overflow; mobile root-grid overflow is bounded; long metric labels wrap inside query/histogram table cells.
Evidence
Worklog: UI-05.
Estimate basis
- contracts: http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-05,UI-07,UI-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-06 Typed dashboard definition schema, loader, and private API. Production config/API contract change: [dashboards] server config selects custom definition files/directories, collector startup and --check-config load typed TOML definitions, and authenticated GET /api/v1/dashboards returns canonical dashboard definitions for the embedded console. Out of scope: dynamic reload, dashboard editor, full definition-backed console data surfaces, and unsupported-panel Grafana export handling Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-01
- Window
- 2026-05-09 04:11 :17+03 to 2026-05-09 04:41 :21+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Built-in and custom TOML dashboard definitions load through the server, ambiguous custom IDs and implicit built-in overrides are rejected, configured custom definitions are exposed through /api/v1/dashboards, and the console loads dashboard tabs/settings from that private API with visible loading/error state.
Evidence
Worklog: UI-06.
Estimate basis
- contracts: config, http/api, ui
- external/integration service involved
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-06,UI-07,UI-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-07 Definition-backed configured dashboard data panels and bounded alerts refresh. Production UI contract change: visible configured Prometheus dashboard panels from /api/v1/dashboards evaluate through bounded /api/v1/query_range with per-dashboard panel and concurrency caps, render chart/table/status output from the real Prometheus envelope, and surface loading, empty, partial-warning, stale, and error states. Alerts refresh through bounded GET /api/v1/alerts while preserving accepted-batch SSE updates. Out of scope: new backend APIs, dashboard editing, durable SSE replay, unsupported-panel Grafana export handling, and the deeper Claude Design v2 parity gaps tracked by UI-10 Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-06, QUERY-08, LOG-01, LOG-03
- Window
- 2026-05-09 05:08 :33+03 to 2026-05-09 05:11 :26+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Browser automation mocks real HTTP/SSE boundaries and asserts dashboard success, empty, partial-warning, stale, and error panel states, /api/v1/alerts refresh, and existing logs/object-store/query/fleet flows. Dashboard fixture contract tests parse the expanded mock dashboard definition shape.
Evidence
Worklog: UI-07.
Estimate basis
- contracts: config, http/api, storage, ui
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- 2 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-07,UI-03,UI-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-08 Bring the production console shell to Claude Design v2 parity Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-01
- Window
- 2026-05-08 15:28 :36+03 to 2026-05-08 19:00 :55+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Shared time range control has 15m/1h/6h/24h, matching-height custom From/To picker with native datetime pickers on both fields, now below To, unlabeled relative shortcuts (last 30m, last 4h, last 12h, last 7d, last 30d), metric resolution hint, compact dashboard tabs without source badges, overflow +N menu with active-tab promotion, and per-dashboard settings/cog metadata covering definition ID, source, version, tags, refresh, variables, panel count, duplicate-ID errors, invalid definitions, hidden built-ins, and disabled dashboards.
Evidence
Worklog: UI-08. Production contract changed: console shell state and dashboard-definition presentation only; no backend API, storage, Fleet v2, or typed TOML definition loading changes.
Estimate basis
- contracts: config, http/api, ui
- durability, idempotency, or repair semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-08,UI-06,UI-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-09 Implement Fleet overview v2 triage behavior over real bounded APIs Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-08, QUERY-03, LOG-01, LOG-03
- Window
- 2026-05-08 19:02 :33+03 to 2026-05-08 20:02 :46+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Fleet has the collapsed-by-default Collectors strip, Host health vs Agent ingest mode swap, mode-specific KPI strips and state filters, row click-through to Host detail, two-stat selector defaulting to mean/current, two-value CPU/memory/disk bars, two-line net rx/tx, sortable resource/network columns, and row-level sparklines.
Evidence
Worklog: UI-09. Existing accepted-batch SSE/query boundaries only; no new backend collector detail API, typed TOML dashboard loading, or non-Fleet v2 surface changes.
Estimate basis
- contracts: agent, config, http/api, storage, ui
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-09,UI-10,UI-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-10 Implement remaining v2 data-surface parity Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-08, QUERY-03, QUERY-07, LOG-01, LOG-03
- Window
- 2026-05-09 05:41 :46+03 to 2026-05-09 05:42 :52+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Live metrics shows source-tier states and 1m/5m rollup comparison; Logs/alerts have bounded filters; Ingest/storage shows remaining collector, spool, dedupe, conflict, and rollup panels beyond the UI-04 object-store reconciliation gate; Metrics query shows chart/table/histogram results and copyable request helpers with text fitting.
Evidence
Worklog: UI-10. Existing API/SSE boundaries only; no backend collector summary API, durable SSE replay, dashboard action paths, dashboard editing, or exact object-store horizon metadata.
Estimate basis
- contracts: http/api, storage, ui
- durability, idempotency, or repair semantics
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-10,UI-07,UI-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-11 Metric-panel-only Grafana JSON export from dashboard settings Low
- Workstream
- UI, Design, And Mock Contracts
- Priority
- Low
- Dependencies
- UI-06, GRAF-02
- Window
- 2026-05-09 20:08 +03:00 to 2026-05-09 20:25 +03:00
- Planning estimate
- 17m range 5m to 44m
Acceptance
Export is read-only, lives under dashboard settings rather than a primary dashboard action, applies only to panels that map to stock Grafana Prometheus panels, omits or labels logs/alerts/custom blocks, and does not imply Grafana JSON import.
Evidence
Current console exposes a broad dashboard export button and does not model unsupported-panel omission/labeling.
Estimate basis
- contracts: http/api, ui
- external/integration service involved
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (global fallback for priority=Low, priority_n=0; neighbors=UI-02,UI-10,UI-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
UI-12 Session-scoped console bearer-token handling. Production UI contract change: console query bearer tokens are session-scoped by default, localStorage persistence requires explicit Remember opt-in, legacy persistent tokens without that opt-in are ignored, and Disconnect clears both browser storage scopes. Out of scope: server-side session management Done
- Workstream
- UI, Design, And Mock Contracts
- Priority
- P1
- Dependencies
- UI-01
- Window
- 2026-05-09 06:13 :29+03 to 2026-05-09 06:23 :51+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Browser automation asserts stale persistent-token suppression, default session-only storage, remembered reload/autoconnect behavior, disconnect clearing, and desktop/mobile layout bounds.
Evidence
Worklog: UI-12.
Estimate basis
- contracts: http/api, ui
- external/integration service involved
- parser/query semantics
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=UI-12,UI-05,UI-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-01 Claude Design public website HTML mockup/pages for lightmetrics.dev Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- none
- Window
- 2026-05-08 20:04 :04+03 to 2026-05-08 20:35 :25+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
docs/claude-design-public-site-task.md is used as the source prompt; Claude Design output includes desktop and mobile HTML mockups for the landing page, docs index, representative docs page, public roadmap/Gantt page, and limitations/status page; the bundle is archived under design-artifacts/claude-design/ and recorded in docs/design-artifacts.md; all visible product claims are traceable to README, docs/limitations.md, or implemented plan rows; screenshots show no overlapping text; production Astro implementation, Cloudflare deployment, and DNS changes remain out of scope.
Evidence
Worklog: WEB-01. Static reference bundle archived at design-artifacts/claude-design/lightmetrics-public-site-2026-05-08.tar.gz; no Astro scaffold, Cloudflare deployment, or DNS change.
Estimate basis
- contracts: storage
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-01,WEB-03,PLAN-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-02 Static Astro site scaffold and content/source boundary. Production website contract change: add the site/ package, select pnpm as the site package manager, and define build-time repository inputs for public pages Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-01, DOC-02A, PLAN-01
- Window
- 2026-05-09 06:25 :01+03 to 2026-05-09 06:53 :11+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
site/ translates the approved WEB-01 mockups into maintainable Astro components, builds static output to site/dist with pnpm --dir site build, avoids the Cloudflare adapter/SSR unless a later slice documents a dynamic requirement, and copies/imports only public source metadata and selected excerpts from README.md, docs/README.md, docs/quickstart.md, docs/install.md, docs/limitations.md, docs/PLAN.md, docs/design.md, and docs/gantt-data.json. Out of scope: Cloudflare Pages configuration, DNS/custom-domain work, full Markdown docs publishing, and a full public Gantt interaction surface.
Evidence
Worklog: WEB-02. Static Astro scaffold committed under site/; no Cloudflare adapter, SSR, DNS/custom-domain change, full Markdown publishing pipeline, or full public Gantt surface.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-02,WEB-01,WEB-06)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-03 Landing page and project information content Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-02
- Window
- 2026-05-09 06:54 :32+03 to 2026-05-09 07:08 :26+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
lightmetrics.dev landing route presents project purpose, current maturity, core architecture, quickstart/install links, limitations, roadmap links, and GitHub/source links without claiming planned runtime behavior as implemented; desktop/mobile browser checks verify text fitting and navigation.
Evidence
Worklog: WEB-03. Landing route now includes source-grounded project facts, architecture steps, start-point links, and desktop/mobile browser verification; no full Markdown docs publishing, full public Gantt surface, Cloudflare Pages configuration, or DNS/custom-domain change.
Estimate basis
- contracts: storage, ui
- external/integration service involved
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-03,WEB-01,DOC-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-04 Public documentation publishing pipeline Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-02, DOC-02A, DOC-02B, DOC-02C
- Window
- 2026-05-09 07:09 :44+03 to 2026-05-09 07:40 :09+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Site renders selected repository docs with status labels, source links, generated navigation, broken-link checks, and explicit planned/partial/unsupported callouts; incomplete admin/API/config/user guides are linked as planned rather than published as complete; private/internal agent procedure content is excluded or clearly marked.
Evidence
Worklog: WEB-04. Static Astro docs routes are generated from an allowlist of repository Markdown sources, the build checks same-origin output links, planned guides remain listed as planned, and agent/review/worklog procedure sources are excluded from public docs routes. No full public Gantt interaction, Cloudflare Pages configuration, runtime API calls, DNS/custom-domain change, or package/service-unit docs are introduced.
Estimate basis
- contracts: agent, config, http/api
- 3 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-04,DOC-02A,WEB-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-05 Public roadmap/Gantt page Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-02, PLAN-01, PLAN-04
- Window
- 2026-05-09 07:41 :11+03 to 2026-05-09 08:04 :33+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Site consumes canonical docs/gantt-data.json at build time or as a static asset, renders the roadmap with filters/details suitable for public readers, explains that estimates are planning artifacts rather than commitments, and does not depend on the file://-only docs/gantt-data.js wrapper.
Evidence
Worklog: WEB-05. Public roadmap page now consumes the generated Gantt JSON through the prebuild source-boundary payload, renders status/priority/workstream/search filters, task details, and a static Gantt timeline, labels estimates as planning artifacts, and keeps docs/gantt-data.js excluded. No Cloudflare Pages preview configuration, DNS/custom-domain launch, runtime API calls, or publication-governance work is introduced.
Estimate basis
- contracts: http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-05,WEB-10,PLAN-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-06 Cloudflare Pages preview deployment configuration Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-02
- Window
- 2026-05-09 08:29 +03:00 to 2026-05-09 18:48 :36+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Cloudflare Pages project/build settings are documented or codified for the site path, production branch, build command, dist output, preview deployments, headers, redirects, and cache behavior; local and preview builds prove static assets and docs routes work before any custom-domain launch.
Evidence
Worklog: WEB-06. Preview deployment settings are codified through site/wrangler.toml, site/.node-version, site/public/_headers, site/public/_redirects, and the site build's Pages deploy-contract check; DNS/custom-domain launch and authenticated Cloudflare project operations remain out of scope.
Estimate basis
- contracts: config
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-06,WEB-02,PLAN-05)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-07 lightmetrics.dev custom domain and launch Gated
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-06
- Window
- 2026-05-09 19:38 +03:00 to 2026-05-09 19:56 +03:00
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Cloudflare Pages serves the site over HTTPS on the chosen canonical domain, apex versus www behavior is explicit, any *.pages.dev exposure or redirect policy is documented, and rollback steps are known.
Evidence
Gated on Cloudflare account, Pages project, zone/domain permissions, and explicit approval for DNS/custom-domain changes.
Estimate basis
- contracts: http/api
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-06,PLAN-05,WEB-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-08 Public site quality, search, analytics, and publication governance Done
- Workstream
- Public Website And Docs Site
- Priority
- P2
- Dependencies
- WEB-03, WEB-04, WEB-05, WEB-06
- Window
- 2026-05-09 19:12 :26+03 to 2026-05-09 19:18 :14+03
- Planning estimate
- 6m range 5m to 6m
Acceptance
Site has sitemap/robots metadata, social preview metadata, accessibility checks, link checks, performance budget or Lighthouse threshold, optional privacy-preserving analytics decision, and a docs freshness rule that blocks publishing stale generated Gantt/docs data.
Evidence
Worklog: WEB-08. Accessibility checks and Lighthouse threshold remain follow-up.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=WEB-08,WEB-04,PLAN-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-09 Bring public site visual style closer to the embedded console UI Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-03
- Window
- 2026-05-09 19:04 :44+03 to 2026-05-09 19:10 :28+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Public site shares the console's color palette, typography, spacing, and component styling so the two surfaces feel like the same product; the site remains static Astro with no runtime dependencies on the console JS.
Evidence
Worklog: WEB-09.
Estimate basis
- contracts: ui
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-09,PLAN-05,WEB-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
WEB-10 Fix public Gantt page usability Done
- Workstream
- Public Website And Docs Site
- Priority
- P1
- Dependencies
- WEB-05
- Window
- 2026-05-09 18:55 :18+03 to 2026-05-09 19:01 :16+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
The /roadmap/ Gantt view is usable: timeline is readable at default zoom, task bars are sized and labeled legibly, filters work without layout breakage, and the page works on desktop and mobile.
Evidence
Worklog: WEB-10.
Estimate basis
- contracts: http/api
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=WEB-10,WEB-05,WEB-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-01 Generate a Gantt roadmap from docs/PLAN.md, worklog data, and git log timestamps, including actual completed durations, feature-reasoned estimates for incomplete items, structured JSON data, and an interactive D3 HTML viewer Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- none
- Window
- 2026-05-07 18:00 :37+03 to 2026-05-07 18:14 :54+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
scripts/generate_gantt.py maps commit-backed completed items, emits warnings for weak mappings or inconsistent plan state, writes canonical docs/gantt-data.json plus docs/gantt-data.js for direct browser viewing, and docs/gantt.html renders the generated data with filterable, zoomable D3 timeline controls.
Evidence
Worklog: PLAN-01.
Estimate basis
- contracts: ui
- external/integration service involved
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-01,PLAN-04,PLAN-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-02 Calibrate and benchmark task-duration estimation against historical completed slices Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-01
- Window
- 2026-05-07 21:21 :08+03 to 2026-05-07 22:54 :39+03
- Planning estimate
- 26m range 5m to 1h 4m
Acceptance
A repeatable benchmark reports 3-fold cross-validation precision for the current heuristic, calibrated robust baselines, and five feature/model improvement iterations, with explicit outlier handling and an independent agent review.
Evidence
Worklog: PLAN-02.
Estimate basis
- contracts: agent
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-02,PLAN-08,PLAN-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-03 Planning status cleanup and backlog decomposition after design/source review Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-02
- Window
- 2026-05-08 08:27 :13+03 to 2026-05-08 08:29 :25+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Broad active rows reflect implemented production scope, remaining design gaps are split into follow-up rows, stale current-baseline/Grafana smoke wording is corrected, and generated planning artifacts are refreshed.
Evidence
Worklog: PLAN-03.
Estimate basis
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-03,PLAN-04,PLAN-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-04 Split operational backlog state from historical completed-slice records Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-03
- Window
- 2026-05-08 09:17 :51+03 to 2026-05-08 09:31 :41+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
docs/PLAN.md stays concise for active planning; worklog records own completed-slice commits and verification; the Gantt generator maps completed rows from worklog records or Plan-Item: commit trailers, ignores generated-only artifact commits, exposes a coverage check for unmapped mainline work, and provides a pre-commit hook to refresh generated planning artifacts.
Evidence
Worklog: PLAN-04.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-04,PLAN-07,PLAN-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-05 Public lightmetrics.dev website planning and decomposition Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-04
- Window
- 2026-05-08 09:45 :03+03 to 2026-05-08 09:47 :03+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
This plan records the Claude Design mockup-first public website flow, repository-owned Claude Design prompt, Astro static site assumptions, Cloudflare Pages deployment slices, custom-domain gate, public docs/Gantt publication boundaries, and concrete WEB-* dependencies without implementing or deploying the site.
Evidence
Worklog: PLAN-05.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-05,WEB-01,WEB-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-06 Narrow repeat-review skip policy for docs-only rebase conflicts Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-04
- Window
- 2026-05-08 09:50 :45+03 to 2026-05-08 09:58 :11+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
AGENTS.md allows skipping repeat review after a previously reviewed slice rebases over clearly resolved docs, planning, worklog, or generated planning conflicts from unrelated concurrent work, while keeping behavior-affecting or uncertain conflicts on the normal review path.
Evidence
Worklog: PLAN-06.
Estimate basis
- contracts: agent, storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-06,PLAN-04,PLAN-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-07 Split completed-slice worklog into per-task JSONL files Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-04
- Window
- 2026-05-08 10:10 :18+03 to 2026-05-08 11:53 :04+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Completed-slice records live under docs/worklog/<TASK-ID>.jsonl; scripts/record_worklog.py creates or updates the per-task file and validates filename/task ID consistency; scripts/generate_gantt.py and duration benchmark scripts read the directory by default with deterministic ordering; the pre-commit hook watches the directory and stages refreshed generated artifacts; the legacy docs/worklog.jsonl file is removed after migration.
Evidence
Worklog: PLAN-07.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-07,PLAN-04,PLAN-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-08 Duration benchmark operator output and stable fold assignment Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-02, PLAN-04
- Window
- 2026-05-08 15:04 :16+03 to 2026-05-08 15:15 :10+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
scripts/benchmark_duration_model.py prints concise action and best-model metrics to stdout, uses stable SHA-256 assignment over mapped commit groups for 3-fold validation, keeps shared-commit tasks in the same fold, and adding a new independent commit group does not move existing groups.
Evidence
Worklog: PLAN-08.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-08,PLAN-02,PLAN-09)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
PLAN-09 Remove optional CatBoost duration experiment Done
- Workstream
- Planning And Reporting Tools
- Priority
- P1
- Dependencies
- PLAN-08
- Window
- 2026-05-08 15:16 :12+03 to 2026-05-08 15:27 :35+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
The optional CatBoost benchmark script and generated experiment artifacts are removed; stdlib duration benchmark docs no longer link to CatBoost output; current planning checks no longer generate CatBoost outputs or require CatBoost commands.
Evidence
Worklog: PLAN-09.
Estimate basis
- narrow implementation surface
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=PLAN-09,PLAN-07,PLAN-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-01 Document current explicit and implicit Lightmetrics limitations, and make persistent planning mandatory for non-trivial user requests whether performed immediately, deferred, or parked Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- none
- Window
- 2026-05-07 21:11 :44+03 to 2026-05-07 21:49 :29+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
README links the limitations registry; docs/limitations.md covers current system, agent, protocol, collector, object-store, query, live, rollup, UI, Grafana, integration, and planning/process limitations; AGENTS.md and this plan require non-trivial design/code/refactor/docs/test/tooling/operations requests to be tracked in docs/PLAN.md.
Evidence
Worklog: DOC-01.
Estimate basis
- contracts: agent, http/api, storage, ui
- external/integration service involved
- parser/query semantics
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-01,DOC-02I,DOC-02F)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02 Umbrella documentation program for quickstart, install, Docker/container usage, user workflows, admin/operations, configuration, APIs, development, demos/integration, troubleshooting, release/upgrade notes, and documentation maintenance rules Planned
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-01
- Window
- 2026-05-09 19:20 +03:00 to 2026-05-09 19:38 +03:00
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Repository has linked docs with clear audience boundaries; commands are verified or explicitly marked conceptual; docs point to current config/API behavior and limitations; maintenance rules require updates when code or behavior changes.
Evidence
Requested by user; planning captured, implementation not started.
Estimate basis
- contracts: config, http/api
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02E,DOC-02I,DOC-02A)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02A Documentation information architecture and status index. Create the doc directory map, target audience boundaries, source-of-truth rules, and a status matrix that labels each page as implemented, partial, planned, unsupported, or demo-only Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02
- Window
- 2026-05-07 22:01 :50+03 to 2026-05-07 22:03 :12+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
README and docs index route users to the right guide; every listed guide has an owner path and status; missing guides are linked to this plan instead of implied as complete.
Evidence
Worklog: DOC-02A.
Estimate basis
- 3 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02A,WEB-04,DOC-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02B Quickstart guide for the shortest verified local path from checkout to visible data Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A, DEMO-01
- Window
- 2026-05-07 22:11 :38+03 to 2026-05-07 22:16 :49+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Guide names prerequisites, commands, expected endpoints, generated token/config locations, verification queries, common failure points, and cleanup; commands are run against the current repo or blockers are recorded.
Evidence
Worklog: DOC-02B.
Estimate basis
- contracts: config, http/api
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02B,DOC-02C,DOC-02D)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02C Installation and packaging guide for local binaries and service layout Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A
- Window
- 2026-05-07 22:25 :20+03 to 2026-05-07 22:26 :23+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Guide covers build/install commands, binary names, system users, state/cache/spool directories, config locations, TLS/token files, upgrades that preserve state, and unsupported package formats.
Evidence
Worklog: DOC-02C.
Estimate basis
- contracts: config, storage
- durability, idempotency, or repair semantics
- UI state or browser-visible behavior
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02C,DOC-02D,DOC-02B)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02D Docker/container usage guide Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A, DEMO-01, OBJ-03
- Window
- 2026-05-09 08:30 :19+03 to 2026-05-09 08:57 :20+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Guide covers image build/run commands, exposed ports, volume layout, state persistence, network/TLS/token handling, MinIO/S3 wiring, cleanup, and container-specific limitations.
Evidence
Worklog: DOC-02D. No repository-owned Dockerfile, published image, production Compose stack, image publishing workflow, or hardened orchestration guidance.
Estimate basis
- contracts: storage
- external/integration service involved
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02D,DOC-02C,DOC-02F)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02E User guide for private console, Grafana datasource, query examples, logs, alerts, dashboards, and disabled workflows Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A, UI-01, GRAF-01
- Window
- 2026-05-09 18:03 :24+03 to 2026-05-09 18:26 :47+03
- Planning estimate
- 20m range 5m to 1h 4m
Acceptance
Guide shows supported user workflows with real API-backed behavior; planned or disabled features are explicitly marked and linked to limitations/backlog items.
Evidence
Worklog: DOC-02E.
Estimate basis
- contracts: http/api, ui
- external/integration service involved
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02E,DOC-03,WEB-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02F Admin and operations guide Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A, OBJ-04, OBJ-05, OBJ-06C
- Window
- 2026-05-09 18:09 :44+03 to 2026-05-09 18:27 :51+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Guide covers collector/agent topology, auth token rotation, TLS, spool and queue sizing, object-store modes, backpressure, identity-conflict inspection, reconciliation, backup/restore assumptions, retention gaps, and operational limitations.
Evidence
Worklog: DOC-02F.
Estimate basis
- contracts: agent, http/api, storage
- durability, idempotency, or repair semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02F,DOC-02J,DOC-02D)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02G Configuration reference Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A
- Window
- 2026-05-09 17:25 :15+03 to 2026-05-09 17:41 :40+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Every server and agent TOML field is documented with sample/default value, validation rule, runtime effect, reload behavior if any, secret-file handling, and cross-component couplings such as agent max_log_message_bytes versus collector ingest.max_log_message_bytes, agent max_logs_per_batch versus collector ingest.max_logs_per_batch, and Linux heartbeat metric-series/label floors versus collector ingest limits.
Evidence
Worklog: DOC-02G.
Estimate basis
- contracts: agent, config
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02G,ING-09,ING-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02H API reference for ingest, Prometheus-compatible query, logs, alerts, and live SSE endpoints Done
- Workstream
- Documentation And Process
- Priority
- P1
- Dependencies
- DOC-02A, ING-01, QUERY-03, LOG-02, LOG-03, LIVE-01
- Window
- 2026-05-09 17:43 :37+03 to 2026-05-09 17:51 :19+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Reference documents auth headers, request parameters, response DTOs, warnings/errors, cursor/limit behavior, enforced limits, unsupported paths, and examples generated or checked against server DTOs where practical.
Evidence
Worklog: DOC-02H.
Estimate basis
- contracts: http/api
- parser/query semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DOC-02H,LOG-03,QUERY-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02I Development guide Done
- Workstream
- Documentation And Process
- Priority
- P2
- Dependencies
- DOC-02A, PLAN-01
- Window
- 2026-05-09 18:12 :09+03 to 2026-05-09 18:15 :25+03
- Planning estimate
- 7m range 5m to 7m
Acceptance
Guide covers workspace layout, dependency/tool versions, code generation, build/test/clippy commands, UI test boundaries, integration harnesses, Gantt generation, review gates, planning rules, and contribution workflow caveats.
Evidence
Worklog: DOC-02I.
Estimate basis
- contracts: ui
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=DOC-02I,DOC-02D,DOC-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-02J Troubleshooting guide plus release and upgrade notes Done
- Workstream
- Documentation And Process
- Priority
- P2
- Dependencies
- DOC-02A
- Window
- 2026-05-09 18:27 :51+03 to 2026-05-09 18:32 :27+03
- Planning estimate
- 5m range 5m to 6m
Acceptance
Guide covers ingest rejections, auth/TLS failures, queue/spool pressure, object-store failures, partial query warnings, oversized records, stale live views, conflict recovery, config/schema changes, data compatibility, migration steps, and release caveats.
Evidence
Worklog: DOC-02J.
Estimate basis
- contracts: agent, config, http/api, storage
- durability, idempotency, or repair semantics
- parser/query semantics
- 1 uncertainty marker(s)
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=DOC-02J,DOC-02F,DOC-02C)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DOC-03 README implementation-status refresh Done
- Workstream
- Documentation And Process
- Priority
- P2
- Dependencies
- DOC-02A
- Window
- 2026-05-09 17:24 :04+03 to 2026-05-09 17:25 :15+03
- Planning estimate
- 5m range 5m to 6m
Acceptance
README's short project summary and workspace descriptions match current source boundaries, avoid scaffold-only wording for implemented ingest/query/object-store/demo pieces, and link to limitations for planned rollups/dashboard configuration without claiming unfinished behavior.
Evidence
Worklog: DOC-03.
Estimate basis
- contracts: http/api, storage, ui
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=DOC-03,DOC-02A,WEB-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DEMO-01 Repeatable local demo start/stop/status with MinIO, collector, and agent loop Done
- Workstream
- Demo, Integration, And CI
- Priority
- P0
- Dependencies
- ING-03, QUERY-02
- Window
- 2026-05-07 09:15 :48+03 to 2026-05-07 09:30 :43+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
scripts/lightmetrics-demo start runs all services; query returns lmagent_up; stop/restart work.
Evidence
Worklog: DEMO-01.
Estimate basis
- contracts: agent, http/api
- external/integration service involved
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=DEMO-01,DEMO-02,ING-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DEMO-02 Process-level MinIO plus synthetic agent ingest smoke test Done
- Workstream
- Demo, Integration, And CI
- Priority
- P0
- Dependencies
- DEMO-01
- Window
- 2026-05-07 09:30 :43+03 to 2026-05-07 09:33 :19+03
- Planning estimate
- 18m range 7m to 36m
Acceptance
Test starts isolated services on alternate ports, checks queryable metric and MinIO bucket.
Evidence
Worklog: DEMO-02.
Estimate basis
- contracts: agent
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=DEMO-02,DEMO-01,DEMO-04)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DEMO-03 Upgrade smoke test to assert object landing, duplicate idempotence, and conflict behavior through MinIO Done
- Workstream
- Demo, Integration, And CI
- Priority
- P0
- Dependencies
- OBJ-03, OBJ-04, OBJ-05
- Window
- 2026-05-07 14:43 :54+03 to 2026-05-07 14:53 :45+03
- Planning estimate
- 20m range 7m to 36m
Acceptance
Test inspects MinIO raw objects/manifests, verifies derived index objects, conditional-create duplicate behavior, conflict side effects including object-store quarantine manifests, and confirms the private query API can read the landed synthetic batch.
Evidence
Worklog: DEMO-03.
Estimate basis
- contracts: http/api, storage
- external/integration service involved
- durability, idempotency, or repair semantics
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=DEMO-03,OBJ-03,OBJ-06A)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DEMO-04 CI gating for integration tests Done
- Workstream
- Demo, Integration, And CI
- Priority
- P1
- Dependencies
- DEMO-03
- Window
- 2026-05-09 17:13 :54+03 to 2026-05-09 17:20 :25+03
- Planning estimate
- 18m range 5m to 1h 4m
Acceptance
Integration tests are opt-in locally and runnable in CI with MinIO service setup.
Evidence
Worklog: DEMO-04.
Estimate basis
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=DEMO-04,DEMO-01,DEMO-02)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
DEMO-05 Restrictive local-demo secret file permissions Done
- Workstream
- Demo, Integration, And CI
- Priority
- P2
- Dependencies
- DEMO-01
- Window
- 2026-05-09 18:16 :50+03 to 2026-05-09 18:20 :07+03
- Planning estimate
- 5m range 5m to 6m
Acceptance
scripts/lightmetrics-demo creates demo directories and generated token, MinIO env, and TLS private-key files with restrictive modes independent of ambient umask; restart preserves existing secrets without widening permissions; integration or shell test asserts expected file modes. Out of scope: production secret management.
Evidence
Worklog: DEMO-05.
Estimate basis
- external/integration service involved
- duration model: pre-task similarity blend over robust priority median (priority=P2, priority_n=5; neighbors=DEMO-05,DEMO-01,DOC-02B)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
GRAF-01 Stock Grafana Prometheus datasource can query Lightmetrics Done
- Workstream
- Grafana Compatibility
- Priority
- P0
- Dependencies
- QUERY-03
- Window
- 2026-05-07 15:14 :48+03 to 2026-05-07 15:30 :07+03
- Planning estimate
- 19m range 7m to 36m
Acceptance
Grafana datasource health and basic graph/variable queries succeed against local demo.
Evidence
Worklog: GRAF-01.
Estimate basis
- contracts: http/api
- external/integration service involved
- parser/query semantics
- duration model: pre-task similarity blend over robust priority median (priority=P0, priority_n=24; neighbors=GRAF-01,GRAF-02,DEMO-01)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
GRAF-02 Grafana smoke dashboard backed by real Lightmetrics queries Done
- Workstream
- Grafana Compatibility
- Priority
- P1
- Dependencies
- GRAF-01, QUERY-05, QUERY-06, QUERY-07
- Window
- 2026-05-08 20:37 :07+03 to 2026-05-08 21:10 :10+03
- Planning estimate
- 19m range 5m to 1h 4m
Acceptance
Checked-in dashboard fixture, including rate() and histogram_quantile() panels, returns non-empty data without a custom plugin.
Evidence
Worklog: GRAF-02. Smoke-only counter and histogram data is accepted through the real ingest/query path, and the pinned Grafana data-source proxy verifies non-empty rate() and histogram_quantile() responses. Browser-rendered panel screenshots remain out of scope.
Estimate basis
- contracts: http/api, storage, ui
- external/integration service involved
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (priority=P1, priority_n=63; neighbors=GRAF-02,GRAF-01,QUERY-07)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
GRAF-03 Dashboard JSON export from Lightmetrics dashboards Low
- Workstream
- Grafana Compatibility
- Priority
- Low
- Dependencies
- GRAF-02
- Window
- 2026-05-09 20:25 +03:00 to 2026-05-09 20:45 +03:00
- Planning estimate
- 20m range 5m to 44m
Acceptance
Export-only flow exists after query compatibility is stable.
Evidence
Explicitly low priority.
Estimate basis
- contracts: http/api, ui
- external/integration service involved
- parser/query semantics
- UI state or browser-visible behavior
- duration model: pre-task similarity blend over robust priority median (global fallback for priority=Low, priority_n=0; neighbors=GRAF-01,GRAF-02,QUERY-03)
- outlier handling: log-duration IQR winsorization bounds 1.1m..208.7m
Input
Roadmap Source
Only the canonical JSON payload is imported. The local browser wrapper is not part of the site boundary.
| Input | Status | Use | Size | Source |
|---|---|---|---|---|
| README.md sha256 37bedde525a1 | Partial | Published public docs route /docs/repository-readme/. Project orientation, workspace map, first build, and local demo entry point. | 96 lines | source |
| docs/README.md sha256 0e01c2dc5964 | Current | Published public docs route /docs/documentation-index/. Documentation map, source-of-truth rules, and planned guide boundaries. | 80 lines | source |
| docs/quickstart.md sha256 1a20c773c153 | Current | Published public docs route /docs/quickstart/. Verified local demo path from checkout to queryable heartbeat data. | 159 lines | source |
| docs/install.md sha256 fb34f6ea462d | Current | Published public docs route /docs/install/. Manual source-build binary install layout and current unsupported package formats. | 212 lines | source |
| docs/docker.md sha256 3083b4ed7c3a | Current | Published public docs route /docs/docker/. Operator-owned container build/run recipe, volumes, ports, token/TLS mounts, and MinIO/S3 wiring. | 386 lines | source |
| docs/limitations.md sha256 e4011655c767 | Current | Published public docs route /docs/limitations/. Explicit and implicit implementation limits by component. | 408 lines | source |
| docs/design.md sha256 696b52b52de4 | Reference | Published public docs route /docs/design-reference/. Target architecture and rationale for the Lightmetrics system. | 630 lines | source |
| docs/active-active-s3-ingest.md sha256 07fd4051440d | Partial | Published public docs route /docs/active-active-s3-ingest/. S3-manifest ingest direction and active-active conditional-create constraints. | 430 lines | source |
| docs/design-artifacts.md sha256 574014d88cd3 | Reference | Published public docs route /docs/design-artifacts/. Links and notes for console and public website design artifacts. | 152 lines | source |
| docs/claude-design-public-site-task.md sha256 96ff27aa920d | Reference | Published public docs route /docs/public-site-design-task/. Claude Design prompt and intake workflow for public website mockups. | 211 lines | source |
| docs/PLAN.md sha256 d440dd1374c5 | Current | Public WEB backlog status and scope boundaries. | 688 lines | source |
| docs/gantt-data.json sha256 b51276e6dd6e | Generated | Canonical static roadmap and Gantt metadata for the public roadmap page. | 8011 lines | source |