@fabricorg/platform-host 7.1.1 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @fabricorg/platform-host
2
2
 
3
+ ## 7.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 715e920: `tenantIsolationChecks()` and `runTenantIsolationChecks(subject)`: six checks proving that scope is a key on every read, write, claim, and completion. An invocation cannot be read, executed, or completed by callback under another tenant's scope; the same idempotency key in two tenants is two invocations; a tenant's event stream carries no other tenant's events; a tenant-scoped worker claims nothing of another's; and, when the subject lends a governed read, a viewer in the other tenant sees none of ours. Each check carries a positive control, so a store or host that does nothing fails it, and each has a teeth test against the flaw it names. The claim check uses a probe space of its own and retires its probe row, so a backlog cannot hide a tenant-ignoring claim and a live worker never runs the probe. Rows a lent read returns must carry their `tenantId`.
8
+
9
+ ## 7.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 07e3c65: The external-completion lifecycle moves out of the host into its own internal module, with the helpers it shares with the host in another. No behaviour changes; the public surface is unchanged and every test passes as before.
14
+
3
15
  ## 7.1.1
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -300,6 +300,15 @@ migration 3 adds the `pending_completion`, `external_completion`, and `completio
300
300
  a partial index on the due instant the overdue sweep uses; the due instant is a real column because a
301
301
  cast in an index expression is not immutable and PostgreSQL refuses it.
302
302
 
303
+ ## Tenant isolation
304
+
305
+ `tenantIsolationChecks()` and `runTenantIsolationChecks(subject)` prove that scope is a key on every
306
+ read, write, claim, and completion: an invocation is invisible, inert, and uncompletable under another
307
+ tenant's scope; the same idempotency key in two tenants is two invocations; event streams carry only
308
+ their own tenant's events; a tenant-scoped worker claims nothing of another's; and a governed read
309
+ the subject lends shows the other tenant none of ours. The subject supplies a host, a recoverable
310
+ store, a registered action, and two scopes in different tenants.
311
+
303
312
  ## Runtime observability and health
304
313
 
305
314
  Platform Host exposes vendor-neutral lifecycle telemetry through the optional `telemetry` sink on