Profile shape
profileTtlMs, optional eventTtlMs, halfLifeMs and maxEvents; there is no single universal production retention period for all websites.
Normalization
The normalizer checks profile version/site, identifier syntax, finite timestamps, expiry and a one-minute future tolerance. It considers only the lastmaxEvents, deduplicates event IDs, rejects unknown event kinds and validates resources against registered pages/products. Durable WordPress reading IDs have a narrowly defined exception.
Exposures must reference existing targets/variants. Attention must reference configured sections and valid durations. Article reading requires compatible editorial configuration and bounded progress/time fields. Purchases are capped separately to the latest 20 valid configured-product entries before live server logic removes browser claims.
Interest calculation
Product/resource actions contribute decaying weight:Attention and reading
Configured section attention requires visibility and foreground activity and emits a bounded dwell record. Article reading uses a dedicated body observer, cumulative per-visit state, time deltas and progress milestones. Both measure observable behavior, not gaze or comprehension. Activity updates the stored profile and inspector. It normally affects the next navigation or explicit refresh. A storage change from another tab restores current bindings and leaves the runtime ready for the next page; it does not continuously optimize the page in place.External profile source
An internalVisitorProfileSource supplies read() and optional subscribe(listener). In live mode it replaces the local profile store; automatic local action/attention collection is disabled for that source. A null/invalid profile yields no usable visitor context and original content. The host must own consent and lifecycle, and the server still normalizes submitted data.