You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(platform-objects,service-settings,verify): `sys_secret` is platform infrastructure — registered by `PlatformObjectsPlugin`, not by the settings service (#4270)
8
+
9
+
The environment's encrypted-secret store (`sys_secret`, ADR-0066 D2/④) was
10
+
registered by `@objectstack/service-settings`, but it has three producer
11
+
classes and only one of them is settings: the settings service's encrypted
12
+
specifiers, the ObjectQL engine's own `secret`-field encryption
13
+
(`encryptSecretFields`/`resolveSecret` — the generic write path of ANY
14
+
business object carrying a `Field.secret()`), and the datasource credential
15
+
binder. Unlike the `sys_migration` precedent (#4243), the failure posture is
16
+
fail-CLOSED: on a kernel composed without settings, every insert/update of an
17
+
object with a secret field threw — with an error message that told the
18
+
operator to "Ensure the platform-objects (sys_secret) are registered", naming
19
+
a package that did not register it.
20
+
21
+
The registration now lives in `PlatformObjectsPlugin`
22
+
(`@objectstack/platform-objects/plugin`) — the plugin `os serve` already
23
+
auto-injects into every served kernel — so the store exists with the
24
+
platform, independent of which optional services are composed, and the
25
+
engine's fail-closed error message is true. Definition ownership is unchanged
26
+
(`sys_secret` stays in `@objectstack/platform-objects` and in
27
+
`PLATFORM_OBJECTS_BY_PACKAGE`); the settings service remains a producer and
28
+
consumer through its `sys_secret`-backed secret store.
29
+
30
+
Consequences:
31
+
32
+
-`@objectstack/service-settings` no longer contributes `sys_secret` to the
33
+
manifest (`settingsObjects` is now `[SysSetting, SysSettingAudit]`). An
34
+
embedder composing `SettingsServicePlugin` on a hand-built kernel that
35
+
relied on it for the `sys_secret` table must compose
36
+
`PlatformObjectsPlugin` (the plugin every supported assembly path already
37
+
includes). The move REPLACES the registration — nothing registers the
38
+
object twice.
39
+
-`@objectstack/verify`'s boot harness now composes `PlatformObjectsPlugin`,
40
+
mirroring `os serve`'s auto-inject — which also means harness kernels now
41
+
carry the `sys_migration` ledger + fresh-datastore attestation (#4243) the
0 commit comments