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.
| Component | Weight | Effect |
|---|---|---|
| Average satisfaction | x 0.5 | Rewards a contented salon |
| Average inspiration | x 0.3 | Rewards a creatively fed salon |
| Base | +20.0 | Floor so a merely quiet salon isn't automatically unhealthy |
| Discontented elves | -15.0 each | Punishes visible unrest heavily |
| Recent departures | -20.0 each | Punishes actual loss even more heavily |
| Days without art (capped at 5) | -3.0 each | Punishes 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.
| Rung | Condition |
|---|---|
| Fallen | No elves remain, or exactly one remains and peak membership was ever 4 or more |
| Dissolving | Membership has fallen to a third of peak (minimum 2), or the score is under 20 |
| Named | Score under 40, or 2+ discontented elves, or 2+ recent departures |
| Drifting | Score under 55, or 1+ discontented elf, or 1+ recent departure |
| Steady | None 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
SalonFellevent 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
| Event | Ticks |
|---|---|
| Ladder evaluated | Every 10 ticks |
| Recovery hysteresis | 100 ticks (1 day) of clear conditions before climbing a rung |
| Departure lookback window | 500 ticks (5 days) |
| Days-without-art penalty cap | 5 days |
Interactions
- Satisfaction & Departure feeds
avg_satisfactionand theDiscontentedmarker 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.