Add continuous material polling runner

This commit is contained in:
2026-09-05 07:55:40 +02:00
parent efc563512f
commit 6ddb76fd03
10 changed files with 672 additions and 10 deletions
+13 -4
View File
@@ -15,10 +15,19 @@ Continue to record sanitized fixtures for newly verified semantics.
## 2. Live material-consumption MVP (in progress)
The integration engine, ENLYZE gateway, single-cycle polling service, and atomic
JSON checkpoint store are implemented and covered by synthetic tests. Next:
wire a configured continuous polling runner and expose/store derived totals
for Grafana, followed by the TimescaleDB persistence foundation below.
The integration engine, ENLYZE gateway, single-cycle polling service, atomic
JSON checkpoint store, and configured continuous foreground polling runner are
implemented and covered by synthetic tests. Configure the validated K7 instance
in `config/k7-material-consumption.yaml`; start it with
`production-analytics run material-poll --config config/k7-material-consumption.yaml`.
Runtime options select the polling interval, state directory (default: ignored
`data/state/material/`), and existing secrets-file handling. Only one writer may
poll each machine/order state key.
The runner exposes no Grafana/TimescaleDB metric yet and does not complete the
MVP. Grafana-oriented derived-total persistence/exposure is the next milestone,
with the TimescaleDB persistence foundation below. No HTTP endpoints, application
containers, daemonization, or schedulers have been added.
Detect the currently active Production Run and production order, continuously
ingest new ENLYZE samples, maintain persistent incremental integration state,