From 105345fb3dba900d6f5bfe35ee9a429637acef3c Mon Sep 17 00:00:00 2001 From: cproudlock Date: Tue, 11 Aug 2026 12:41:35 -0400 Subject: [PATCH] Release 0.9.0 Product version to 0.9.0, frontend in lock-step, Unreleased notes moved into a dated section per ADR-007. The plugin contract stays at 0.16.0: it moved after v0.8.1 and is already recorded in this release's notes, and nothing since touched the contract surface. A minor rather than a patch: collector behaviour changed in ways an integrator must know about. A reported machine number no longer becomes the PC's asset number, it builds a controls link instead; a second PC claiming a machine is treated as a claim rather than a handover; and a backup revision chain is now per source PC rather than per asset. --- CHANGELOG.md | 10 ++++++++++ CLAUDE.md | 2 +- docs/adr/ADR-016-credential-delivery.md | 2 +- docs/adr/README.md | 2 +- frontend/package.json | 2 +- shopdb/__init__.py | 2 +- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f733876..e68d271 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ ADR-007 and ADR-002. ## [Unreleased] +## [0.9.0] - 2026-08-11 + +Driven by a fleet that had been failing quietly. A bay had been returning 500 +to every collector report since it was imaged, backups were accumulating +duplicate revisions on any machine number more than one PC reported against, +and a setting that looked configurable had never been readable by the script +that consumed it. The theme of the release is making those failures visible: +each fix ships with the check, report or document that would have surfaced it. + + ### Fixed - A shop-floor PC that reported the machine number of a machine ShopDB already diff --git a/CLAUDE.md b/CLAUDE.md index ee1f527..04daa04 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,7 +25,7 @@ Architecture decisions live in `docs/adr/`. Read those before making schema or c - ADR-013: Plugin catalog, curated shelf, and lean per-site builds - PROPOSED - ADR-014: Schema-lean per-site builds (retire cross-plugin FKs, prune not-installed plugin tables) - ACCEPTED - ADR-015: Where a site's own data is allowed to live (setting with a neutral default, site-namespaced dir, or seed) - ACCEPTED -- ADR-016: Credential delivery to the fleet (ShopDB resolves targeting, encrypted at rest, dedicated fetch scope) - PROPOSED +- ADR-016: Credential delivery to the fleet (ShopDB resolves targeting, encrypted at rest, dedicated fetch scope) - ACCEPTED ## Coding convention diff --git a/docs/adr/ADR-016-credential-delivery.md b/docs/adr/ADR-016-credential-delivery.md index 9bb4244..b8ed60f 100644 --- a/docs/adr/ADR-016-credential-delivery.md +++ b/docs/adr/ADR-016-credential-delivery.md @@ -1,6 +1,6 @@ # ADR-016: Credential delivery to the fleet -- Status: PROPOSED +- Status: ACCEPTED - Date: 2026-08-11 - Deciders: cproudlock - Relates to: ADR-006 (collector contract), ADR-012 (GE-Enforce manifest ownership), ADR-015 (site-specific configuration) diff --git a/docs/adr/README.md b/docs/adr/README.md index ffef8cc..f8a059e 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -28,7 +28,7 @@ Each ADR captures a single architectural decision: the context, the decision its | [013](ADR-013-plugin-catalog-and-lean-builds.md) | Plugin catalog, curated shelf, and lean per-site builds | PROPOSED | | [014](ADR-014-schema-lean-per-site.md) | Schema-lean per-site builds (retire cross-plugin FKs, prune not-installed plugin tables) | ACCEPTED | | [015](ADR-015-site-specific-configuration.md) | Where a site's own data is allowed to live (setting, site directory, or seed) | ACCEPTED | -| [016](ADR-016-credential-delivery.md) | Credential delivery to the fleet (ShopDB-resolved targeting, encrypted at rest) | PROPOSED | +| [016](ADR-016-credential-delivery.md) | Credential delivery to the fleet (ShopDB-resolved targeting, encrypted at rest) | ACCEPTED | ## Authoring diff --git a/frontend/package.json b/frontend/package.json index b83df5c..7cfad9c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "shopdb-frontend", - "version": "0.8.1", + "version": "0.9.0", "private": true, "type": "module", "scripts": { diff --git a/shopdb/__init__.py b/shopdb/__init__.py index 82f1821..547de78 100644 --- a/shopdb/__init__.py +++ b/shopdb/__init__.py @@ -48,7 +48,7 @@ __contract_version__ = '0.16.0' # plugin-contract version above are distinct series with independent # bump rules. Not part of the shopdb.api contract surface, so it is # not re-exported there. -__version__ = '0.8.1' +__version__ = '0.9.0' def create_app(config_name: str = None) -> Flask: