@happyvertical/smrt-profiles 0.39.15 → 0.39.16

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/AGENTS.md CHANGED
@@ -102,6 +102,10 @@ import { smrtProfilesGenerateBioPrompt } from '@happyvertical/smrt-profiles';
102
102
  initializes the shared tracker table. Caller-owned exact reuse does not
103
103
  consult the tracker and therefore does not require that table.
104
104
  - **Profile-only OIDC linking fails closed on existing email matches**:
105
+ the typed canonical scenario contract is
106
+ `src/testing/oidcProvisioningDecisionMatrix.ts`, executed by both Profiles
107
+ and Users tests; keep public docs pointed at it instead of adding a second
108
+ behavioral table.
105
109
  `createProfileFromOidc()` preserves exact issuer/subject reuse, including
106
110
  legacy tenant-scoped and non-Person links, but profiles cannot prove whether a
107
111
  User owns a same-email Profile. New identities therefore never attach to an
package/README.md CHANGED
@@ -168,13 +168,14 @@ A handle exposing only `transaction()` is ambiguous and fails closed. For
168
168
  adapters without nested savepoint support, including DuckDB, pass
169
169
  the root database rather than calling the helper inside an outer transaction.
170
170
  Provisioning fails before durable writes when neither safe path is available.
171
- The Profile-only helper preserves exact issuer/subject reuse, including legacy
172
- links to tenant-scoped or non-Person Profiles, but never attaches a new identity
173
- to an existing email match because this package cannot prove whether a User owns
174
- that Profile. User/session provisioning still rejects those unsafe linked
175
- Profiles before creating authentication state. Use
176
- `UserCollection.getOrCreateFromOidc()` from `@happyvertical/smrt-users` for
177
- owner-aware verified-email reuse and the supported pre-provision resolver hook.
171
+ The typed [OIDC provisioning decision matrix](./src/testing/oidcProvisioningDecisionMatrix.ts)
172
+ is the canonical package-by-package behavior contract. It records exact reuse,
173
+ new identity and resolver outcomes, readiness, retries, adapter support, public
174
+ errors, and permitted row creation; the Profiles and Users suites execute its
175
+ applicable rows directly. In particular, Profile-only exact reuse preserves an
176
+ established legacy link because it creates no User/session authentication state,
177
+ while `UserCollection.getOrCreateFromOidc()` remains owner-aware and fail-closed.
178
+ Use the Users API for verified-email reuse and application reconciliation.
178
179
 
179
180
  `Profile` and `ProfileCollection` both expose `getAssets()`, `addAsset()`, and
180
181
  `removeAsset()` helpers backed by `profile_assets`. Typical relationships are