Read the equation
This relation defines score(i) in the source section “The algorithm”. Evaluates oscillatory sine or cosine terms using the stated phase or frequency. Its interpretation depends on the source’s stated variables and conditions; this record does not assign an unprovided physical or cognitive meaning to them.
Terms & definitions
The recovered passage does not supply a separate symbol table. Read the source context for the notation used in this version; familiar letters may carry different meanings in other builds.
How it works
Read score(i) as the quantity being defined or updated by this relation.
Evaluates oscillatory sine or cosine terms using the stated phase or frequency.
Use this version’s variable definitions and update order. The same symbol may be assigned a different meaning in another build.
Assumptions & limits
This source expression was recovered from the pinned code revision. Its presence does not establish that the associated program was built, run, or scientifically validated.
Original context
Read the surrounding source passage
| contact | 1.20 | reaching the contact surface |
| **skip** | **−0.60** | scrolling past faster than reading allows |
```
score(i) = w₁·Thompson(Beta(α,β) per topic) ← exploration, cold start
+ w₂·cos(interest, item) ← semantic match
+ w₃·freshness(i) − w₄·fatigue(i) ← recency, anti-repetition
```
Selection is Maximal Marginal Relevance, so a confident model still cannot
collapse the feed into a single topic — the characteristic failure of a
small-corpus recommender.
Completion is measured against estimated read time rather than in raw seconds,
so a long item cannot win by being long. Dwell does not accrue while the tab is
backgrounded. Skips carry real negative weight: a model that only learns from
positive signals drifts toward whatever it happened to show first.
## Architecture
```
src/core/ pure functions — no clock, no I/O, no DOM, no global random
src/ports/ contracts only; imports nothing
src/adapters/ the impure edge: fetch, storage, DOM observation
src/ui/ rendering; no business logic
src/app/ composition root — the only place wiring happens
```Exact original notation
score(i) = w₁·Thompson(Beta(α,β) per topic) ← exploration, cold start
+ w₂·cos(interest, item) ← semantic match
+ w₃·freshness(i) − w₄·fatigue(i) ← recency, anti-repetition