contract 0.17.0: expose DashboardDefault to plugins

The enforcement reports needed to name what a display IS, and reached
straight into shopdb.core.models.dashboarddefault to do it. Plugins may
only touch core through shopdb.api, and the contract test said so.

The role belongs on the surface rather than behind it: it lives in core,
no plugin owns it, and a plugin reporting on displays has no other way to
resolve it. Added there and the version bumped, which the docs test pins.
This commit is contained in:
cproudlock
2026-08-12 16:41:09 -04:00
parent 598c2c98bc
commit 52eb10f5ca
4 changed files with 7 additions and 6 deletions

View File

@@ -42,7 +42,7 @@ from .plugins import plugin_manager
# first-time write under the declared category, and lets a plugin mark a key
# readable without auth for pages that run logged out. Additive optional hook,
# minor bump.
__contract_version__ = '0.16.0'
__contract_version__ = '0.17.0'
# Product release version (see ADR-007). The product version and the
# plugin-contract version above are distinct series with independent

View File

@@ -48,6 +48,10 @@ from shopdb.core.models import (
Role,
SupportTeam,
)
# Display-role mapping (which kiosk shows which surface). On the surface
# because a plugin reporting on displays has no other way to name what a
# display IS - the role lives in core, not in any plugin.
from shopdb.core.models.dashboarddefault import DashboardDefault
# Response + pagination helpers for plugin API blueprints
from shopdb.utils.responses import (