Skip to content

Changelog ​

Grouped by the change that matters. Dates are when the work landed on the development branch.

September 2026 ​

Flags carry their Health Score row ​

Every flag now reports which Health Score row it counts toward, as scoreCategory — or an explicit "not scored" for findings that are shown but deliberately not charged.

The field is written even when null, against the API's usual omit-nulls policy, because an unscored finding is an answer the UI displays.

Attribution is asked of the same component that counts findings in bulk, so a flag's stated row and the breakdown card cannot drift apart.

CU history: per-item breakdown, catch-up and a SQLite store ​

The largest change to the capacity module so far.

  • SQLite replaces per-capacity JSON files. Not about size — the JSON was a few megabytes — but about the shape of the questions. Soterre asks for slices ("this item over March", "top ten last week"), and answering those from a document means loading the whole thing and filtering in memory. Merge semantics now come from primary keys: a row is identified by (tenant, capacity, date[, item]), so re-collecting a day is an upsert.
  • Per-item history, kept in its own document. On a 95-item capacity it outweighs the daily trend by two orders of magnitude, so keeping them together meant rewriting everything nightly.
  • Item names snapshotted at collection time. The fact table carries only GUIDs and the inventory lists only what exists today — delete a report and months of its history would render as an unidentifiable GUID.
  • Catch-up. A run asks for everything since the last stored day, so a gap left by an outage is refilled. Gaps wider than the source's 30-day window are reported as unrecoverable.
  • Daily-trend fix.
  • 90-day retention, 30-day default view window.

Health Score methodology 1.1 ​

Five categories, down from six. The sixth scored error-severity findings, and since nothing emits Error it handed every report 22 free points while measuring nothing. It was removed, and returns under a new version when error-level checks exist.

The per-category breakdown now comes back with the score through the API, so Soterre can explain the number it shows.

Duplicate columns became a Warning, matching the other duplicate flags.

Health Score ​

Replaced the placeholder that returned 0 for every real report. The old formula subtracted per finding with no floor, so roughly thirty-four warnings drove any report to zero.

Weighted categories, each with a per-category floor so a category spends its own points and stops. The maximum is exactly 100, enforced in validation — a named difference from QSDA, where the maximum was 101 and the cap was commented out. Methodology.

Soterre PBI Analyzer — part of Soterre Enterprise