Skip to content

BACKLOG

Engineering Backlog

v0.1.1 — Live hardware increment

  • background inventory refresh + cache
  • material hardware-change event stream (SSE)
  • bounded recent event history
  • actual IP-address discovery through ip -j address
  • RX/TX/error counters from sysfs
  • scheduled sensor sampling
  • canonical typed sensor sample envelope
  • per-plugin poll interval + Nodra publish flag
  • plugin absolute-path/executable/world-writable validation
  • plugin timeout + stdout size limit
  • real LM75/TMP102 I2C temperature reference plugin
  • retained Nodra inventory/status topics
  • per-sensor + event MQTT topics
  • Fleet address projection
  • expanded Prometheus metrics
  • live Sensors + event Diagnostics UX
  • install script scaffold

P0 — Physical reference-hardware acceptance

  • Select exact reference-hardware SKU and freeze expected device-tree nodes. (needs physical hardware) — software profile minewing-gw1-r1 added; HIL still open.
  • Install the reference plugin on the physical unit and confirm the real I2C bus/address. (needs physical hardware)
  • Add the first RS485/Modbus RTU adapter in zyvorai/nodra (not Device Agent).
  • Teach the existing fleet-agent to merge /api/v1/integrations/fleet/inventory.
  • Hardware-in-loop test on the physical reference-hardware unit. (needs physical hardware)
  • WAN-loss/reconnect demo with Nodra WAL replay. (needs physical hardware)
  • Nodra MQTTS scaffolding ([nodra.tls]) + HTTPS-aware verify/deploy scripts.
  • make qualify + PRODUCTION/QUALIFICATION/TEST-REPORT evidence pack.
  • Document arm64 supported install = tarball + OCI + native .deb/.rpm.
  • Emulator CI scaffolding (vcan / swtpm / v4l2loopback) — see docs/EMULATOR_CI.md.
  • Arm64 native .deb/.rpm via ubuntu-24.04-arm CI/release matrix.

P1 — Production hardening

  • Local bearer protection when binding beyond loopback (v0.1.4).
  • Optional plain-TLS listener, self-signed by default (v0.1.5 — server.tls.enabled, no client certificate required, independent of and composable with auth.mode; src/tls.rs).
  • Enrollment token + mTLS device certs (v0.1.4 — auth.mode = "mtls", zyvor-device-agent enroll/identity; client-side only, see docs/MTLS_ENROLLMENT.md for why Device Agent doesn't implement a CA).
  • TPM2/secure-element-backed key storage (v0.1.4 — identity.backend = "tpm", --features tpm2, off by default; falls back to a software key at runtime if the TPM can't be opened. See docs/TPM2_IDENTITY.md).
  • Unix-domain-socket API mode (v0.1.4).
  • Linux capability/udev policy documentation per bus (v0.1.4 — docs/HARDWARE_PERMISSIONS.md).
  • Plugin executable owner allowlist and process resource limits (v0.1.4).
  • Signed release artifacts, SBOM, provenance and cosign workflow (v0.1.4).
  • Debian/RPM packages and clean uninstall path (v0.1.4 amd64; cargo-deb/cargo-generate-rpm, both Cargo-metadata-driven; installing never auto-enables/starts the service; config is a conffile/noreplace and survives upgrade/removal). Arm64 native packages: CI packages-arm64 + release matrix on ubuntu-24.04-arm (scripts/package-deb-rpm.sh).
  • ARM64 smoke test under QEMU in CI (v0.1.4 — and its own smoke-test command bug, present since it was added, only caught and fixed once -D warnings made the CI clippy gate meaningful).
  • Optional Linux udev/netlink event source to complement polling (v0.1.4 — --features hotplug; a raw NETLINK_KOBJECT_UEVENT socket, not udev/libudev.so, so it adds no runtime library dependency).
  • Configurable thermal/counter health thresholds and alert events (v0.1.4).
  • Graceful config reload without a full restart (v0.1.4 — SIGHUP; server.listen/unix_socket/dashboard_dir and the Nodra/CAN-capture connections still need a restart, everything else applies live).
  • seccomp profiles for plugin subprocess execution (v0.1.4 — plugins.seccomp_enabled, a denylist of dangerous syscalls rather than a strict allowlist, since plugins have unknowable syscall needs).

Explicitly outside Device Agent v0.x

Kubernetes dependency, industrial protocol meaning, Nodra WAL duplication, a second Fleet agent, arbitrary remote shell, bootloader/partition OTA logic, or full EdgeAI NPU inference (HTTP/config scaffold under docs/EDGE_AI.md / --features edge-ai only). Production CA key custody stays in Fleet; this repo ships only the enrollment client and a lab fixture CA.

v0.2.0 customer journey (landed)

  • Secure non-loopback refusal + stream tickets
  • TPM identity.policy
  • Privilege-separated bus helper (--features privsep)
  • Signed passport, flight recorder, support bundles
  • Signed Fleet inventory sibling + remediation allowlist
  • Rules-based diagnostics (Edge AI remains 501)
  • Physical Minewing HIL signed on silicon (minewing_claimable still false)