What's New1.6.4 - Subscription API – 1.6.4

PlugStream Change Logs

PlugStream is continuously updated to improve reliability, security, and user experience. This page provides a transparent record of every software and firmware release, including what changed and why it matters.

Latest

Meter API 1.8.7

Meter API – 1.8.7

1.8.7
Tests: passed (432/432)Coverage: 55.1%
Service
October 19, 2026
Tags
#meter-api

Meter API – 1.8.7

1.8.7 (2026-10-19)

Bug Fixes

  • aggregation: read only JSON numbers a double can hold from stored samples (FINDINGS #27) (2576dc8)
  • alias-repair: keep buckets whose baseline retention deleted (FINDINGS #7) (330096d)
  • alias-repair: rebuild the next energy reading's bucket (FINDINGS #6) (6395733)
  • canonical: a sampled value without a measurand is the energy register (FINDINGS #4) (79681cd)
  • canonical: drop a canonical value whose unit or multiplier doesn't parse (FINDINGS #28) (7c8dd1e)
  • canonical: the phase-less value wins over per-phase readings (FINDINGS #1) (a7103da)
  • config: refuse deprecated bindings that would unbind a live route (FINDINGS #23) (53968b7)
  • connectors: replace a renumbered connector's old row (FINDINGS #15) (f9c2f3a)
  • ingest: book a replayed reading against when it was received (FINDINGS #19) (9c35b67)
  • legacy-repair: count readings two global aliases disagree on as conflicts (FINDINGS #11) (7680913)
  • legacy-repair: report one connector under two global aliases as a conflict (FINDINGS #22) (9218df3)
  • legacy-repair: treat ampnexus as a global alias, as ingest does (FINDINGS #12) (d10c4dd)
  • metrics: label requests no route matched as "unmatched" (FINDINGS #17) (d7ed7d2)
  • openapi: document the paths that are served, with unique operationIds (FINDINGS #25) (dc4841a)
  • provisioning: never let a blank or padded tenant hold a charger (FINDINGS #13) (ab451c1)
  • provisioning: reject deliveries that can never apply instead of requeueing (FINDINGS #18) (f39c91f)
  • publisher: bound the AMQP connect and the publisher-confirm wait (FINDINGS #16) (6e0183e)
  • publisher: retry a nacked or returned publish without reconnecting (FINDINGS #30) (b2d8708), closes #16 #16
  • retention: keep the baseline of the earliest rebuildable day (FINDINGS #8) (059f237)
  • series: a rollup for no tenant is empty, not a SQL error (FINDINGS #29) (73df8c5)
  • series: refuse a page whose row offset cannot be queried (FINDINGS #24) (0f7e769)
  • series: roll up each connector on its own, then add them up (FINDINGS #10) (90e5fb0)
  • tenant-history: seam from the new tenant's last bucket before the floor (FINDINGS #9) (eee7550)
  • timestamp-repair,alias-repair: take ingest's connector lock first (FINDINGS #21) (92d4f16)
  • timestamp-repair: rebuild the energy neighbours of both positions (FINDINGS #2, #3) (6911010)
  • timestamp-repair: salt aggregate event ids with the repair run (FINDINGS #20) (a890e41)

Performance & SLO

SLO Targets:
P95 < 200msP99 < 500msAvailability > 99.5%
Latest (Last 7 Days):
P95: 15.7ms ✅P99: 42.5ms ✅Availability: 100.00% ✅
Worst (Last 7 Days):
P95: 17.1ms ✅P99: 46.9ms ✅Availability: 100.00% ✅
Loading performance data...
Performance Tests:
Passedstaging test
10/27/2026
P95: 15.7msP99: 42.5msHTTP errors: 0.00%Availability: 100.00%101,594 requests
HTTP statuses: 200: 101,594
Passedstaging test
10/23/2026
P95: 17.1msP99: 46.9msHTTP errors: 0.00%Availability: 100.00%101,572 requests
HTTP statuses: 200: 101,572
Passedstaging test
10/20/2026
P95: 15.6msP99: 41.1msHTTP errors: 0.00%Availability: 100.00%101,447 requests
HTTP statuses: 200: 101,447