Repository navigation
v0.38.0
0.38.0 (2026-10-29)
Features
- dashboard: a revenue metric reads as revenue per user, with its difference and interval (#1406) (4421a06)
- results: a revenue metric is analysed as its mean per assigned user (#1400) (7024eeb)
- sdk: the JavaScript and Python SDKs report errors to safety monitoring (#1364) (6f827f9)
- sdk: version 0.2.0 of the JavaScript and Python SDKs (#1421) (fc5c6b2)
Bug Fixes
- ci: the docs journeys raise one alarm issue when the report cannot decide (#1395) (fd78a90)
- ci: the docs-journeys report retries every read and names what fails (#1382) (5b42f12)
- dashboard: better and worse follow lower_is_better; the form sets it (#1393) (d535bef)
- demo: assign each experiment where it is used; keep off-list clicks off the sort bandit (#1403) (dd15c90)
- demo: simulators keep the StreamPulse lift, date nothing ahead, and match the app (#1398) (a23b0fc)
- demo: the rollout story waits for the safety monitor's rollback (#1404) (cd9eddf)
- installer: uninstall counts the cache's automatic backup with what AWS is still clearing (#1399) (83c2095)
- sdk: an event tracked without a key is still sent after the SDK's cache expires (#1358) (940fdf1)
- stats: a mean arm whose values are all equal gets a result, not result_invalid (#1387) (00c498a)
- stats: the winner and recommendation follow a metric's lower_is_better (#1383) (a6cced6)
- tracking: a paused or completed experiment answers control with a reason, not 404 (#1362) (0caf581)
- tracking: events for a paused or completed experiment count in no arm (#1359) (a50c469)
Dependencies
- authlib 1.9.1 for CVE-2026-96760, dnspython 2.9.0 for CVE-2026-114605, sqlglot 30.23.0 (#1325) (e775ead)
Documentation
- api: name CUPED's variance divisor and state the history rule exactly (#1420) (9bfcc47)
- api: the Bayesian example's numbers follow its posteriors (#1409) (341e7cf)
- demo: StreamPulse targets devices through the web SDK; native SDKs send no attributes yet (#1371) (daa687e)
- guide: say no guardrail verdict is produced; Breakdowns of a revenue metric (#1414) (4596352)
- guides: guided examples, every step walked nightly by a journey (#1417) (05f5794)
- guides: guided examples: Buy now arms, the reload rule, CUPED (#1430) (56a3f5d)
- sdk: no SDK page says a paused or completed experiment answers 404 (#1370) (34ae5d1)
- sdk: the provider and edge pages say where a track without a key goes (#1431) (1f8b41c)
Images
docker pull ghcr.io/controlvar/controlvar:core-0.38.0 # API, core profile
docker pull ghcr.io/controlvar/controlvar:full-0.38.0 # API, full profile
docker pull ghcr.io/controlvar/controlvar-web:core-0.38.0 # dashboard, core profile
docker pull ghcr.io/controlvar/controlvar-web:full-0.38.0 # dashboard, full profile
API images are built for linux/amd64; dashboard images for
linux/amd64. A host on any other architecture runs them under
emulation.
Verifying
Every image is signed with cosign keyless and carries an SPDX SBOM
attestation:
cosign verify ghcr.io/controlvar/controlvar:core-0.38.0 \
--certificate-identity-regexp '^https://github\.com/Controlvar/controlvar/\.github/workflows/release\.yml@refs/(heads/main|tags/v[0-9].*)$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify-attestation --type spdxjson ghcr.io/controlvar/controlvar:core-0.38.0 \
--certificate-identity-regexp '^https://github\.com/Controlvar/controlvar/\.github/workflows/release\.yml@refs/(heads/main|tags/v[0-9].*)$' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
The same SBOMs are attached below.