Salon Ladder

The salon ladder tracks how the salon as a whole is doing, not just any single elf. It is a five-rung health track (Steady, Drifting, Named, Dissolving, Fallen) evaluated every 10 ticks from a pure health assessment, and it is the mechanism behind the escalation the drone narrates when things start to slip: a warning that names the trouble, a plainer warning that the salon barely counts as one anymore, and finally the ending, recorded for good in the salon chronicle.

Overview

Every 10 ticks the sim computes a SalonHealth snapshot (member count, restless elves, recent departures, average satisfaction, average inspiration, days since the last completed work, and a single 0-100 score) and compares it against five descending conditions. The ladder moves at most one rung per evaluation, in either direction, so a salon in serious trouble is narrated on the way down rather than jumping straight to the worst case. Recovery out of Named or Dissolving requires a full day (100 ticks) of clear conditions before the ladder climbs back, so a single good day does not erase a real decline.

Fallen is terminal. Once every elf is gone, the ladder stops evaluating and the salon's final chapter, its peak size, its departures, and its three best-remembered compositions, is written into the salon chronicle.

Source: crates/er-sim/src/sim/salon.rs, assess and GameWorld::salon_ladder_tick.

How It Works

The Health Score

score = 0.5 x avg_satisfaction + 0.3 x avg_inspiration + 20.0
        - 15.0 x discontented
        - 20.0 x departures_recent
        - 3.0 x min(days_since_art, 5)

The result is clamped to 0-100. avg_satisfaction and avg_inspiration are the current means across all elves (the same Satisfaction value and Inspiration total used elsewhere). discontented counts elves currently marked Discontented. departures_recent counts departures logged in the last 5 days (500 ticks). days_since_art mirrors the salon pulse's own rule: it only starts counting once the salon has gone more than 3 days without a single completed composition.

ComponentWeightEffect
Average satisfactionx 0.5Rewards a contented salon
Average inspirationx 0.3Rewards a creatively fed salon
Base+20.0Floor so a merely quiet salon isn't automatically unhealthy
Discontented elves-15.0 eachPunishes visible unrest heavily
Recent departures-20.0 eachPunishes actual loss even more heavily
Days without art (capped at 5)-3.0 eachPunishes creative stagnation

Source: crates/er-sim/src/sim/salon.rs, assess.

The Five Rungs

Conditions are checked top-down; the first one that is true wins. peak is the highest member count the salon has ever reached.

RungCondition
FallenNo elves remain, or exactly one remains and peak membership was ever 4 or more
DissolvingMembership has fallen to a third of peak (minimum 2), or the score is under 20
NamedScore under 40, or 2+ discontented elves, or 2+ recent departures
DriftingScore under 55, or 1+ discontented elf, or 1+ recent departure
SteadyNone of the above

Source: crates/er-sim/src/sim/salon.rs, target_rung.

One Rung at a Time

The ladder never skips a rung. If the computed target is two or more rungs worse than the current one, the salon still only descends a single step this evaluation; the next evaluation (10 ticks later) will push it further if the underlying trouble hasn't cleared. The same is true climbing back: recovery is one rung per qualifying evaluation, never a jump straight back to Steady.

Recovery Hysteresis

Once the target rung is better than the current one, the ladder doesn't move immediately. It starts a clock (clear_since), and only climbs a rung once that clock has held for a full day (100 ticks) with the condition still clear. A single good tick doesn't undo a real decline; the salon has to hold steady for a day before the drone will say so.

Source: crates/er-sim/src/sim/salon.rs, GameWorld::salon_ladder_tick.

What Gets Said

Every rung change fires a SalonRungChanged event (priority Critical for Named, Dissolving, and Fallen; Notable otherwise). On top of that, the drone speaks at the moments that matter:

  • Descending into Named: a first, direct warning naming how many have left recently and how many are restless now.
  • Descending into Dissolving: a blunter line, no longer pretending the remaining handful is really a salon.
  • Reaching Fallen: a closing line, and a SalonFell event recording the day, the peak membership, and the salon's best-remembered songs.
  • Climbing back out of Named or Dissolving: a short line of relief, walking part of the warning back.

Both the Claude and Hermes curators are consulted whenever a SalonRungChanged or SalonFell event fires, so an LLM-backed advisor always gets a chance to react to a ladder move.

Source: crates/er-sim/src/sim/salon.rs, GameWorld::apply_rung_change; crates/er-sim/src/sim/curator/llm.rs and curator/hermes.rs, should_consult.

The Salon Chronicle

When the ladder reaches Fallen, a SalonChronicleEntry is appended to GameWorld::salon_chronicle: the day it happened, the peak membership the salon ever reached, the names of whoever was still there at the end (usually none), every departure logged since founding, and the titles of the three compositions with the highest combined mastery and originality, the songs the salon leaves behind.

Source: crates/er-sim/src/sim/salon.rs, SalonChronicleEntry.

Values & Formulas

Worked Example

A salon with 8 founding members, no departures yet, healthy satisfaction and inspiration, sits comfortably above the Drifting threshold (score >= 55) and stays Steady. If two elves become discontented in the same window, Named triggers immediately regardless of score (discontented >= 2), and the drone's first warning fires on the very next 10-tick evaluation.

Timing Summary

EventTicks
Ladder evaluatedEvery 10 ticks
Recovery hysteresis100 ticks (1 day) of clear conditions before climbing a rung
Departure lookback window500 ticks (5 days)
Days-without-art penalty cap5 days

Interactions

  • Satisfaction & Departure feeds avg_satisfaction and the Discontented marker directly into the health score.
  • Inspiration feeds avg_inspiration.
  • The salon pulse gained a new category, DeparturePressure, that surfaces the first restless elf between the Breaking and ResourceScarcity checks.
  • The Curator is consulted on every ladder move, so ladder health is part of what an LLM-backed advisor reasons about.

Tips

  • Watch the Salon Overview screen (s). It now shows the current rung, the health score, membership against peak, restless count, and recent departures directly under the title.
  • A single discontented elf is enough to trigger Drifting. Two are enough to trigger Named outright, skipping the score check entirely, so a small cluster of unhappy elves is more dangerous than the score alone suggests.
  • Recovery takes a full day of genuinely clear conditions. Don't expect a single good revel to undo a Named or Dissolving warning; the ladder wants to see it hold.
  • Fallen is permanent within a session. There is no path back once the last elf departs, only the chronicle entry that remembers what the salon was.