Source snapshot bcc79fcc · Declared package version 2.0.5. This page combines the checked-in package guide and manifest; commands and runtime behavior were not executed in this review.
Bridge between the canonical @lssm-tech/lib.personalization surfaces and Organization Planning & Agenda (OPA). It exists so OPA never grows ad-hoc preference state — all behaviour/preference logic flows through the canonical personalization lib.
Surfaces
./objective — mapPreferencesToObjective(dimensions): pure, deterministic mapping of the 7-dimension PreferenceDimensions model onto the OPA optimizer's OptimizerObjectiveWeights (focus defense, priority, deadline urgency, fragmentation, context switch). Deep-work preferences raise focusDefenseWeight; deadline-driven preferences raise
deadlineUrgencyWeight.
./learning — the behaviour → preference learning loop. OPA scheduling interactions (focus respected/broken, slot rescheduled, evidence expanded, guidance dismissed…) become canonical
PreferenceEvolutionObservations and canonical BehaviorSignalModels, fed through suggestPreferenceEvolution so the objective weights adapt over time. Behaviour signals carry only interaction kinds, dimension ids, and opaque surface ids — no PII.
./surface — resolveOpaAdaptiveSurface(...): a typed accessor the host/UI consumes to adapt booking/planning per user preference AND role. RoleMorph/ACL boundaries are authoritative and fail closed (a read-only auditor never gets advanced controls). Its reasons trace resolves from the OPA catalog (experience.personalization.reason.*) in the optional
locale (en by default).
./opa-policy — deriveObjectiveFromOpaPolicy(policy): maps the OPA spec's local policy enums onto canonical preferences, so the spec's
applyOpaPersonalizationPolicy can delegate to the canonical mapping instead of maintaining a parallel scoring system.
Privacy
Behaviour data is personal data and is minimised. Signals never include actor identity, names, emails, titles, or free text — only stable ids and dimension keys. createBehaviorSignalModel additionally fails closed on unsafe behavioural labelling.
Layering
This is an integration: it depends only downward on lib.personalization
and lib.organization-planning-spec. It owns no scheduling, persistence, or optimizer logic (those live in spec/runtime).
Declared capabilities.
Integration Opa Personalization Bridge
Bridge mapping the canonical @lssm-tech/lib.personalization surfaces (preference-dimensions, preference-evolution, behavior-signals, adaptive-surface) onto OPA optimizer objective weights, the behavior→preference learning loop, and role-aware booking/UI adaptation. No ad-hoc preference state.
Use it to
Adopt bridge mapping the canonical @lssm-tech/lib.personalization surfaces (preference-dimensions, preference-evolution, behavior-signals, adaptive-surface) onto opa optimizer objective weights, the behavior→preference learning loop, and role-aware booking/ui adaptation. no ad-hoc preference state
Requires
TypeScript
Choose another boundary when
The @lssm-tech/integration.opa-personalization-bridge package constraints do not match the target runtime or platform.
These are package-manifest entry points. Named symbols listed above come from the capability catalogue; this is not an exhaustive TypeScript symbol reference.