Chapter 10: Recommendation Systems and Algorithmic Curation

A content platform recommends items to a flowing audience, and the recommendations themselves change which users come back, what they engage with, and how niche their tastes become. This chapter applies the Model Specification Protocol of Chapter 9 to that loop and builds a model large enough to make filter-bubble configurations visible in the phase space. The earlier running examples did not have that structure: the Chapter 0 two-state model had no separated clusters, and the Section 2.8 routing chain had no competing traffic patterns. The conclusion is deliberately limited: heavily specialized curation policies appear as boundary equilibria of the coupled actor-critic-law system, while a diverse-engagement operating point appears as an interior equilibrium. The compact attractor contains these equilibria, but containment in the attractor is not the same as attraction from nearby interior states; that stability question is decided by the transverse sign calculation below and, in higher-dimensional slices, by numerical basin computation.

10.1 The Recommendation Problem as a Dynamical System

A content platform recommends items to users. At each moment, the platform maintains a curation policy (the actor), a running estimate of how valuable different recommendations are (the critic), and a picture of the audience composition: how many users are browsing diverse content, how many are engaged with niche cluster A, and how many are deep in niche cluster B.

These three quantities form the familiar feedback loop. The curation policy shapes which content users see, which changes their browsing behavior and shifts the audience composition, which changes the rewards the platform observes, which feeds back into the curation policy. The loop closes on itself.

In the Chapter 0 model the same feedback loop was present, but with only two user types the platform could only distinguish “prefers action 1” from “prefers action 2,” leaving no room for a genuine content cluster to form. A filter bubble requires at least three ingredients: a diverse starting state where users are not yet specialized, a niche discovery state where users begin engaging with a specific content type, and a deep-engagement state where users are locked into that content type with low probability of returning to diverse browsing. Two states cannot represent this progression.

We therefore build a model with five user-browsing states arranged in a Y-shaped graph. The root of the Y is a diverse-browsing state. Two branches extend from the root, each consisting of a niche-discovery state and a deep-engagement state. The platform’s curation policy can push users deeper into a niche (curate) or pull them back toward diverse browsing (diversify).

The Y-graph captures the essential filter-bubble dynamics: users who start in diverse browsing can be drawn into either niche branch by curation, and once in deep engagement they are hard to pull back. The five states are few enough for explicit computation but enough for genuinely competing attractor branches.

10.2 Model Specification: States, Actions, and Features

We execute Steps 1—4 of the Model Specification Protocol.

Step 1. State space. Five user-browsing states on a Y-graph:

  • State 1: Diverse browsing (the Y-root). Users browse a mix of content types.
  • State 2: Niche-A discovery. Users have begun engaging with content cluster A (e.g., political commentary) but have not committed.
  • State 3: Niche-A deep engagement. Users consume cluster-A content almost exclusively and rarely return to diverse browsing.
  • State 4: Niche-B discovery. Users have begun engaging with content cluster B (e.g., entertainment) but have not committed.
  • State 5: Niche-B deep engagement. Users consume cluster-B content almost exclusively.

The graph structure is Code Test on one branch and Code Test on the other, with no direct edges between the two branches.

Step 2. Action space. Two curation modes at each state:

  • Code Test (Curate): recommend content aligned with the user’s current cluster. At state 1, this has no strong effect (diverse content is not a cluster). In niche states, this pushes users deeper into the niche.
  • Code Test (Diversify): recommend content from outside the user’s current cluster. At state 1, this maintains diverse browsing. In niche states, this pulls users back toward the root.

Step 3. Actor features. Two-dimensional actor (Code Test) with block-diagonal features, as previewed in Chapter 9.3. The first coordinate Code Test controls curation in the A-branch, and the second coordinate Code Test controls curation in the B-branch. At the diverse root (state 1), the features are zero: the policy is uniform regardless of Code Test.

  • State 1: Code Test and Code Test.
  • State 2: Code Test and Code Test.
  • State 3: Code Test and Code Test.
  • State 4: Code Test and Code Test.
  • State 5: Code Test and Code Test.

When Code Test, the policy at states 2 and 3 favors Curate (deeper niche-A engagement). When Code Test, it favors Diversify. The second coordinate Code Test does the same for the B-branch, independently.

At state 1, the features are zero, so Code Test and Code Test for all Code Test. The platform’s policy at the diverse root is always a coin flip between curating and diversifying. This is a modeling choice, not a necessity: it says the platform does not have a curation lever that applies specifically to already-diverse users. The policy acts only in the niche branches.

Step 4. Critic features. Two-dimensional critic (Code Test) with the same block-diagonal structure:

  • State 1: Code Test and Code Test.
  • State 2: Code Test and Code Test.
  • State 3: Code Test and Code Test.
  • State 4: Code Test and Code Test.
  • State 5: Code Test and Code Test.

The critic tracks two reward signals, one per branch. The first component Code Test estimates the curation advantage in branch A, and Code Test estimates it in branch B.

10.3 Rewards and the Engagement-Diversity Tension

Step 5. Rewards. The reward table encodes the core tension of algorithmic curation: per-interaction engagement is higher in niche states under curation, but diverse browsing has its own value.

  • State 1: Code Test and Code Test.
  • State 2: Code Test and Code Test.
  • State 3: Code Test and Code Test.
  • State 4: Code Test and Code Test.
  • State 5: Code Test and Code Test.

At the diverse root (state 1), diversification pays more than curation: Code Test. Users in diverse browsing engage more when shown a mix of content. In niche states, curation pays progressively more: at discovery states, Code Test; at deep engagement, Code Test. Users deep in a niche click on aligned content at very high rates and barely respond to diverse recommendations.

The tension is between short-horizon and long-horizon outcomes. Curating in niche states earns immediate reward, but it pushes users deeper into the niche, making future diversification harder and future engagement dependent on a narrow content supply. Diversifying earns less per interaction but pulls users toward the diverse root, where the audience is more flexible.

The rewards are symmetric between the two branches: Code Test, Code Test, and so on. This is a deliberate simplification. A real platform would have different engagement rates for different content types. Breaking the branch symmetry would split the two bubble equilibria into attractors of different sizes–an interesting variation that Exercise 10.5 explores.

10.4 The Generator Family: A Y-Graph Controlled Chain

Step 6. Generator construction. We build two action-conditioned generators Code Test (Curate) and Code Test (Diversify) on the Y-graph. The graph topology constrains the sparsity: transitions are only possible along Y-graph edges (Code Test, Code Test, Code Test, Code Test). No direct transitions between the two branches are possible.

Curate generator Code Test: Under curation, users are pushed deeper into their current branch. Users at the diverse root are drawn into either niche with moderate rates. Users in discovery states advance into deep engagement. Users in deep engagement have very low return rates.

Code Test

The entries read as follows. From the diverse root (row 1), users transition to niche-A discovery (state 2) at rate 0.6 and to niche-B discovery (state 4) at rate 0.6. From niche-A discovery (row 2), users advance to deep engagement (state 3) at rate 0.6 or return to the root at rate 0.2. From deep engagement (row 3), users return to discovery at rate 0.1–a slow leak. The B-branch rates are symmetric.

The key structural feature: under curation, the deep-engagement states (3 and 5) are nearly absorbing. The exit rate is only 0.1, so once a user enters deep engagement under sustained curation, the expected residence time is 10 units. This is the generator-level encoding of the filter-bubble phenomenon: curation creates sticky niche states.

Diversify generator Code Test: Under diversification, users are pulled back toward the root. Discovery users return to the root at high rates. Deep engagement users are pulled to discovery at moderate rates.

Code Test

Under diversification, the return rate from deep engagement to discovery is 0.8 (row 3, column 2), and the return rate from discovery to the root is 1.0 (row 2, column 1). Both are much higher than under curation. The root itself has low exit rates under diversification (total rate 0.4 versus 1.2 under curation), so diverse users tend to stay diverse.

Verification of the generator property. Both Code Test and Code Test have nonnegative off-diagonal entries (all rates are nonnegative) and rows that sum to zero by construction. The softmax mixture is built row-by-row, with each row Code Test of Code Test the convex combination of the corresponding rows of Code Test and Code Test with weights Code Test and Code Test,

Code Test

matching the generator-construction template Code Test of Chapters 2 and 6. The mixture inherits the generator property because each row is a convex combination of generator rows.

Reference-state structure. State 1 (the diverse root) is the reference state for minorization. From every state, there is a path to state 1 of length at most 2:

  • From state 2: Code Test (one step, rate Code Test under either action).
  • From state 3: Code Test (two steps, minimum rates Code Test and Code Test).
  • From state 4: Code Test (one step, rate Code Test).
  • From state 5: Code Test (two steps, minimum rates Code Test and Code Test).

All rates are bounded below by positive constants independent of Code Test, since the softmax assigns positive weight to both actions. The bridge theorem of Chapter 6 (Corollary 6.5, via Theorems 6.3 and 6.4) consumes Assumption 6.2, uniform exponential mixing of the frozen chain. The minorization criterion that produces it, Proposition 6.6, postulates a uniform direct jump rate into the reference state from every other state, and the Y-graph fails that literal hypothesis: the deep-engagement states 3 and 5 have no direct edge to the root, Code Test under both actions. The two-step structure substitutes for it at the level of the propagator. For fixed Code Test and every state Code Test, the entry Code Test is bounded below by a constant Code Test independent of Code Test, because mass moves from Code Test to the intermediate state at rate at least Code Test on a window of length Code Test and from there to the root at rate at least Code Test on the remaining window; Exercise 10.9 carries this computation for the worst case Code Test (state 5 is symmetric), states 2 and 4 have a direct edge and need only the one-step estimate from the proof of Proposition 6.6, and the root retains mass by the Gronwall bound of that proof’s first stage. Column domination of a fixed-time propagator is exactly the input to the contraction stage of the same proof, which uses only the kernel bound and not the rate hypothesis, so that stage yields Assumption 6.2 with Code Test and Code Test. Theorems 6.3 and 6.4 then give the unique frozen invariant law and the Lipschitz map Code Test, so the bridge theorem applies. Chapter 11 (Lemma 11.1) states and proves the same two-step minorization with explicit constants for its hub-and-spoke chain.

10.5 The Full Recommendation System

We now assemble the recommendation ODE from the data of Sections 10.2—10.4.

Phase space. The system lives on Code Test, where Code Test with Code Test. The phase space dimension is Code Test (using four free coordinates on the five-state simplex).

Occupancy measure. For each state-action pair,

Code Test

At the diverse root, Code Test for all Code Test, so Code Test. In the A-branch (states 2, 3), the policy depends only on Code Test: Code Test, where Code Test.

Critic coefficients. From Chapter 2, Sections 2.3—2.4:

Code Test

The block-diagonal feature pattern collapses the rank-one outer products Code Test to coordinate projectors:

Code Test

since Code Test and similarly for the B-branch features. Summing weighted by Code Test yields a diagonal Code Test:

Code Test

where Code Test is the total occupancy at A-branch states and Code Test is the total occupancy at B-branch states. The critic equation decouples into two scalar equations:

Code Test

Actor drift. The raw drift has two components. The first component Code Test receives contributions only from A-branch states (the features at state 1 are zero, and Code Test is zero at state 1 since Code Test is identically zero in Code Test; the features at B-branch states have zero first component):

Code Test

Following the Chapter 2.4 decomposition, we split the integrand into three pieces–reward advantage, critic correction, and entropy regularization–and write Code Test with

Code Test Code Test Code Test

where Code Test is the entropy of a probability vector Code Test, and the second equality in the last line uses Code Test together with Code Test. The softmax entropy Code Test is maximized at the uniform policy and decreases as Code Test, so the entropy gradient Code Test is positive at Code Test and negative at Code Test for Code Test. Section 10.6 invokes this sign pattern when locating the interior zero.

The second component Code Test has the same structure with B-branch states and Code Test, and the same three-piece decomposition Code Test. The two-dimensional damping is

Code Test

and the damped drift is Code Test.

The full system. Setting Code Test and Code Test and Code Test:

Code Test Code Test Code Test Code Test Code Test

This is a system of the form in Chapter 2, Definition 2.10, with the distribution equation in controlled-chain generator form rather than prescribed-closure relaxation form, so the distribution tracks the chain’s generator dynamics instead of relaxing toward a prescribed closure.

Standing constants. From the data tables: Code Test, Code Test, Code Test. The critic forcing bound from Chapter 4 is Code Test. The Chapter 4 absorbing set is Code Test with Code Test.

10.6 Equilibria and Filter Bubbles

We now compute the equilibria of the recommendation system and identify them in domain terms.

We label the equilibria Code Test (balanced curation, interior), Code Test (A-bubble), Code Test (B-bubble), and Code Test (dual bubble), written without subscripts to keep them distinct from the entropy components Code Test of the drift decomposition in Section 10.5. The interpretive labels are domain readings of the equilibrium structure rather than theorem outputs. Proposition 10.1 below makes a purely mathematical statement about the existence and location of the four equilibria; the identification of Code Test with a filter bubble in branch A is a modeling reading, valid under the specific feature, reward, and generator choices of Sections 10.2—10.4.

Boundary equilibria. The damping Code Test vanishes when Code Test for some coordinate Code Test, so on each boundary face the damping suppresses the actor drift regardless of the raw gradient. At fixed Code Test, the critic and distribution equations each have a unique equilibrium: the critic converges to Code Test by coercivity, and the distribution converges to the invariant law Code Test of the generator Code Test by exponential mixing.

Some boundary equilibria have direct domain meaning. Locating them needs a little care: with a two-dimensional actor, saturating a single coordinate (Code Test, say) makes only the Code Test-drift vanish through the damping factor Code Test. The other coordinate is still interior, so its equation Code Test forces Code Test at any equilibrium. A boundary equilibrium therefore lives either at a corner, where both coordinates saturate and the damping kills both drifts outright, or on an open face, where one coordinate saturates and the raw drift in the other coordinate happens to vanish.

The same damping mechanism also creates mathematically possible boundary candidates that are not the three curation configurations emphasized below. Faces with Code Test correspond to anti-curation or aggressive diversification in that branch, and mixed-sign corners correspond to asymmetric policies that curate one branch while diversifying the other. We therefore do not claim that the four equilibria listed below exhaust the boundary. They are the domain-relevant candidates selected by the symmetric reward and feature design; additional face or corner equilibria must be checked by the same raw-drift equations on each face.

E2: The A-bubble. Saturate the A-branch by setting Code Test, and let Code Test be a zero of the B-branch raw drift on that face, Code Test with Code Test. Such a zero exists by the same intermediate-value argument used below for the interior point, applied to the continuous map Code Test restricted to the face, with the endpoint signs supplied by Hypothesis (H’) recorded below (numerically Code Test). The policy at A-branch states strongly favors Curate (Code Test), so the generator Code Test pushes users into A-branch deep engagement and lets them leak slowly back, and the frozen invariant law concentrates mass on states 2 and 3. In domain terms, the platform curates heavily in niche A and the audience becomes dominated by users deep in that content cluster. This is the branch-A filter-bubble configuration.

The A-branch raw drift Code Test is nonzero at this point; for the reward, feature, and generator data of Sections 10.2—10.4 it is in fact negative (Exercise 10.3 asks the reader to compute its sign), because the entropy-regularization piece Code Test dominates the reward-advantage and critic-correction pieces at the saturated edge. The equilibrium persists because the damping Code Test suppresses this drift entirely, not because the incentive signal vanishes.

The sign also determines the transverse stability of the saturated face. Write Code Test for a nearby interior point with Code Test. Then

Code Test

Thus, at the Code Test face, a negative saturated raw drift makes Code Test: nearby interior points move away from the face. For the baseline reward and entropy parameters used here, the pure curation face is therefore transversely repelling from the interior, not a lock-in attractor. True attracting lock-in at this boundary would require the opposite transverse sign, for example after changing the reward scale or the regularization strength.

E3: The B-bubble. By the branch symmetry of the model, saturating the B-branch with Code Test and taking Code Test the matching zero of the A-branch raw drift on that face produces an analogous equilibrium with mass concentrated on states 4 and 5. The platform curates heavily in niche B.

E4: The dual bubble. Set Code Test, Code Test. At this corner the damping vanishes in both coordinates, so Code Test is an equilibrium outright, with no condition on the raw drift. The policy strongly curates in both branches simultaneously, and the audience splits between the two niche clusters with little mass at the diverse root. This is the worst-case scenario from a diversity perspective: the platform has specialized in both directions, and only users who arrive in diverse browsing (a shrinking population under this policy) see mixed content.

Interior equilibrium. An interior equilibrium requires Code Test and Code Test simultaneously, with Code Test in the interior of Code Test. We exploit the branch symmetry of the model to reduce the simultaneous 2-D problem to a 1-D one. Rewards, features, and generators are all invariant under the swap Code Test; Section 10.3 records the reward symmetry, and the generator and feature symmetries are visible in Sections 10.2 and 10.4.

Equivariance under Code Test implies the diagonal Code Test is invariant under the flow, and on Code Test the two raw drifts coincide: Code Test. Restricting to the reduced manifold inside Code Test, where Code Test, Code Test, and the diagonal symmetry holds, it suffices to locate a single zero of the scalar function

Code Test

We check the signs of Code Test at the box edges using the three-piece decomposition Code Test of Section 10.5.

Sign at s = -1$: The policy at A-branch states strongly favors Diversify, with Code Test. A direct computation using the niche-state rewards Code Test and the score functions Code Test, Code Test at Code Test gives Code Test. The entropy piece Code Test is positive at Code Test because Code Test on Code Test, with the entropy increasing as Code Test moves toward zero from the box edge, and evaluates to Code Test. The critic-correction piece is Code Test, so Code Test. A sufficient condition for Code Test is Code Test, comfortably inside Code Test; we adopt Code Test at Code Test as part of Hypothesis (H) below.

Sign at s = +1$: The policy at A-branch states strongly favors Curate. The entropy piece satisfies Code Test, negative because Code Test on Code Test, and the reward-advantage and critic-correction pieces evaluate to Code Test and Code Test by the same kind of direct computation as at Code Test. The damping Code Test does not enter the raw drift, so the sign of Code Test is decided by

Code Test

This is negative whenever the coefficient on Code Test is negative, Code Test, and the coefficient on Code Test is negative, Code Test; the binding constraint is Code Test. We collect both endpoint conditions as a single sign hypothesis on the frozen critic along the diagonal:

Code Test

Both bounds sit well inside the absorbing-set range Code Test. The face equilibria Code Test and Code Test use the same edge sign pattern on the boundary faces, where the moving coordinate is governed by the other critic component, so we record the branch-symmetric analogue:

Code Test

and symmetrically Code Test at Code Test on the face Code Test. As on the diagonal, the lower bound is binding at the Code Test endpoint (it produces the positive sign) and the upper bound at the Code Test endpoint (the negative sign). Exercise 10.2 verifies an analogous bound at the boundary Code Test by direct computation of Code Test, and the parallel computation at Code Test and Code Test follows the same route. Under Hypothesis (H), Code Test and Code Test.

The intermediate value theorem applied to the continuous function Code Test on Code Test yields Code Test with Code Test. By Code Test-equivariance, Code Test jointly solves Code Test on the reduced manifold, and the corresponding Code Test inherit the diagonal symmetry. The result is an interior equilibrium Code Test distinct from the three boundary equilibria Code Test, each of which has at least one coordinate equal to Code Test.

In domain terms, Code Test is a balanced curation level: the platform partially curates in each branch, but not aggressively enough to concentrate users in a single branch. The audience distribution has substantial mass at the diverse root, and the critic’s value estimate reflects the moderate engagement rates of a mixed audience.

Proposition 10.1. Under Hypotheses (H) and (H’), the recommendation system with the Y-graph data of Sections 10.2—10.4 has at least four equilibria: three boundary equilibria (A-bubble E2$, B-bubble E3$, dual bubble E4$) and one interior equilibrium E1$ where the advantage signal vanishes in both coordinates.

Proof. At frozen Code Test the critic and distribution equations have unique fixed points (by coercivity of Code Test and exponential mixing of Code Test), so an equilibrium is determined by the actor equation Code Test for Code Test. The dual-bubble corner Code Test is an equilibrium outright: the damping Code Test vanishes in both coordinates, so both actor equations hold regardless of the raw drift. The A-bubble Code Test and B-bubble Code Test are face equilibria: one coordinate saturates (killing its drift through the damping), while the other coordinate is interior, so its raw drift must vanish. On the face Code Test the continuous map Code Test is positive at Code Test and negative at Code Test (the same edge sign pattern established for Code Test below, with the branch roles exchanged, using Hypothesis (H’) for the face critic component), so the intermediate value theorem yields Code Test with Code Test; the B-bubble is symmetric. For the interior equilibrium Code Test, the branch symmetry of the model (rewards, features, generators all invariant under the swap Code Test defined above) makes the diagonal Code Test invariant under the flow, and on Code Test the raw drifts satisfy Code Test. Restricting to the reduced manifold Code Test intersected with Code Test, the scalar function Code Test is continuous on Code Test, with Code Test and Code Test under Hypothesis (H) above (positive at Code Test from the joint contribution of reward-advantage and entropy pieces, with the bounded critic-correction term controlled; negative at Code Test from the entropy piece dominating the reward-advantage and critic-correction pieces, with damping playing no role in the raw drift). The intermediate value theorem yields Code Test with Code Test; by Code Test-equivariance, Code Test jointly solves Code Test, and Code Test is interior. The four points Code Test are distinct because Code Test has both coordinates in Code Test while each of Code Test, Code Test, and Code Test has at least one coordinate at Code Test. Code Test

Corollary 10.2. The recommendation system has a compact global attractor \mathcal{A}$ containing all four equilibria.

Proof. The model data satisfy Assumption 2.7 (finite-state, positive temperature, positive regularization) and Assumption 2.8 for the generator family constructed in Section 10.4. The law equation is in generator form, so we invoke the exact-system theorem of Chapter 7, Section 7.1, applied with Code Test: the system generates a continuous semiflow with compact forward invariant absorbing set Code Test, and hence has a unique compact global attractor Code Test. Equilibria are invariant points, hence contained in Code Test. Code Test

10.7 What the Theory Reveals

The equilibrium structure of the recommendation system gives a precise geometric vocabulary for a phenomenon that is usually discussed only in qualitative terms. We now extract the domain-level conclusions, keeping the existence theorem separate from stability claims.

Filter bubbles are boundary equilibria. The A-bubble equilibrium Code Test and the B-bubble equilibrium Code Test owe their existence to the saturated coordinate, where the damping Code Test suppresses the actor drift, rather than to a vanishing advantage signal in that coordinate. The saturated-branch raw drift at these points is nonzero–for the data of Sections 10.2—10.4 it points inward, back toward the box interior, because the entropy-regularization pull toward a uniform policy outweighs the reward and critic incentives at the edge (Exercise 10.3). The bubble configuration is thus held in place by the geometry of the parameter box, not by a raw gradient that has been clipped while still pushing outward. With the baseline sign just computed, it is transversely repelling from nearby interior points in the saturated coordinate.

This observation has a concrete implication. A platform operator who observes the system near a bubble equilibrium should not conclude that the curation policy is a genuine optimum: the advantage signal in the saturated branch has not vanished, so the equilibrium is an artifact of the parameter limit and the audience dynamics rather than a stationary point of the unconstrained policy gradient. Because the saturated-branch drift here points inward, enlarging the actor box would let Code Test relax back toward the interior rather than push the bubble further out. The boundary point exists because of the damping geometry; whether it attracts requires a separate transverse-stability and basin calculation.

Diverse engagement is the true gradient zero. The interior equilibrium Code Test is the only point where the advantage signal genuinely vanishes. In domain terms this is the operating point where the curation level is self-consistent: the policy, the critic’s value estimate, and the audience composition are mutually compatible without parameter saturation. A platform at Code Test has no incentive to change its policy, not because it has hit a wall but because the current policy is locally optimal given the current audience.

Basin structure is a numerical question here. The theory proves that the equilibria lie in a compact global attractor; it does not classify which equilibria attract interior trajectories. For the baseline parameters, the transverse calculation above already rules out interpreting the pure curation faces as attracting lock-in from the interior. If a modified reward or regularization regime reverses that transverse sign, the next question is basin geometry: which initial conditions converge to the interior operating point and which converge to a boundary configuration?

Those basin boundaries are subsets of the eight-dimensional phase space; whether they are smooth manifolds depends on the hyperbolicity structure of the equilibria, which we do not analyze here. Appendix B describes how to compute lower-dimensional cross-sections in the Code Test-plane at fixed critic and distribution values; those computations are evidence, not part of Proposition 10.1 or Corollary 10.2.

Design levers. The reward table and the generator structure are the platform designer’s instruments. Changing the diversity reward Code Test changes the strength of the incentive to diversify at the root. Changing the return rates in Code Test changes how quickly users leave deep engagement. Both changes feed directly into the raw-drift signs and the basin computation; one should recompute the transverse signs and the numerical cross-sections after changing them rather than infer lock-in from the existence of boundary equilibria alone.

These are domain-actionable conclusions. The attractor framework does not tell the platform what it should do–that is a normative question–but it shows which structural quantities must be recomputed when those choices change.

The fast-slow reading. The audience equation displayed in Section 10.5 reads Code Test, with rates of Code Test and Code Test that are Code Test; this is the Code Test regime, where the audience and the policy update on the same time scale. The fast-slow regime of Chapter 7 introduces a separation parameter Code Test by writing the audience equation as Code Test (equivalently rescaling time by Code Test), so small Code Test corresponds to faster user response than policy update at the generator scale of Code Test. In this regime, the audience distribution tracks the frozen invariant law Code Test on finite time horizons. The reduced system–the actor-critic ODE on the invariant-law graph–is four-dimensional (Code Test) and governs the long-run curation outcome. By Corollary 7.5 (Chapter 7), the attractor of the exact eight-dimensional system is close to the attractor of this reduced system as Code Test.

In domain terms, when users adapt quickly to content changes, the platform designer can analyze the reduced system to understand the long-run behavior. The frozen-audience analysis is a good proxy because the audience never falls far behind the policy.

10.8 Summary and Bridge Forward

This chapter executed the Model Specification Protocol on a content recommendation platform and built a model with enough structure to represent filter-bubble configurations as boundary equilibria. The five-state Y-graph, the block-diagonal features, and the engagement-diversity reward tension produced a system with at least four equilibria: a diverse-engagement interior equilibrium and three boundary equilibria corresponding to filter bubbles.

The attractor framework gave three domain-level insights that are not available from convergence-rate analysis alone: (1) bubble equilibria are boundary artifacts, not gradient zeros; (2) their transverse stability must be checked before calling them lock-in attractors; (3) the reward table and generator structure are design levers because they change the raw-drift signs and the basin computation.

Chapter 11 applies the same protocol to a network routing problem, where the competing attractor branches correspond to hub-heavy versus spoke-heavy traffic configurations rather than diverse versus niche audience states. Appendix B describes how to compute the corresponding phase portraits and parameter sweeps for both models.

Exercises

Exercise 10.1 (Verify: frozen invariant law at the root). Compute the frozen invariant law Code Test for the Y-graph chain at Code Test by solving the linear system Code Test with the simplex constraint Code Test. What fraction of the audience is in diverse browsing (state 1)? Describe the distribution in domain terms.

Exercise 10.2 (Compute: the A-bubble equilibrium). At the A-bubble boundary with Code Test:

(a) Compute the softmax policy Code Test for each state-action pair.

(b) Form the mixture generator Code Test and solve for the invariant law Code Test.

(c) Compute the critic equilibrium Code Test at Code Test.

(d) What fraction of the audience is in deep niche-A engagement (state 3)?

Exercise 10.3 (Verify: nonzero raw drift at the bubble). At the saturated A-branch edge Code Test, compute the A-branch raw actor drift Code Test from the three-piece decomposition of Section 10.5. Confirm that it is nonzero and state its sign. (You should find it negative: the entropy piece Code Test outweighs the reward and critic pieces.) Since the drift points inward, explain why enlarging the actor box to Code Test would let Code Test relax back toward the interior rather than push it further out–so the A-bubble is held in place by the chain and damping geometry, not by an outward-pushing gradient.

Exercise 10.4 (Break: removing block-diagonal structure). Replace the block-diagonal features with uniform features: set Code Test and Code Test for all states Code Test (keep state 1 features at zero). Now the actor has two dimensions but only one effective degree of freedom Code Test, since the policy depends on Code Test only through Code Test. Show that the maximal-curation policy inside the box is reached at the corner Code Test, where the damping vanishes in both coordinates, so the two separate A- and B-bubbles collapse to a single “generic bubble” at that corner. (Note that the point Code Test is interior to the box, with damping Code Test, so it cannot be a damping-created boundary equilibrium.) Why does the block-diagonal structure matter for distinguishing the two bubbles?

Exercise 10.5 (Compute: asymmetric branch rewards). This exercise replaces the scaffolded sweep over Code Test with a qualitative branch-asymmetry study, since the asymmetric variant illustrates how the interior equilibrium loses its diagonal symmetry. Break the branch symmetry by changing the B-branch rewards to Code Test, Code Test, Code Test, Code Test (niche B is less engaging than niche A). Describe qualitatively how the interior equilibrium Code Test shifts: does Code Test increase or decrease relative to the symmetric case? What about Code Test?

Exercise 10.6 (Connect: fast-slow reading). Starting from the Code Test-scaled audience equation Code Test of the Section 10.7 fast-slow paragraph and using the fast-slow reduction of Chapter 7, write the reduced actor-critic system that governs the recommendation platform when the audience responds instantaneously (Code Test). The reduced system is four-dimensional (Code Test) with Code Test at all times. Explain why a platform that updates slowly (small actor learning rate) is more likely to track the reduced system’s trajectory than one that updates aggressively.

Exercise 10.7 (Extend: the trident model). Add a third content cluster with states 6 (discovery) and 7 (deep engagement), forming a “trident” Y-graph with three branches from the root. What is the actor dimension? How many boundary equilibria does the model have? State (without proof) the expected number of equilibria.

Exercise 10.8 (Connect: design lever for bubble prevention). A platform operator proposes adding an “exploration bonus” Code Test to the diversification reward at all deep-engagement states: replace Code Test and Code Test with Code Test and Code Test. Using the attractor framework, explain qualitatively how this changes the basin boundaries. For large enough Code Test, can the bubble equilibria disappear? Why or why not?

Exercise 10.9 (Verify: two-step minorization). Check that state 1 supplies the two-step propagator minorization used in Section 10.4 for the generator Code Test at all Code Test. Specifically, show that the minimum two-step transition probability from state 3 to state 1 is bounded below by a positive constant that does not depend on Code Test.