Visual walkthrough — SOLID — Single Responsibility Principle
This is a visual walkthrough of the central result in the parent SRP note. By the end you will see why a class serving many actors is a risk multiplier — and why splitting it to one-actor-per-class drops that risk to a flat zero.
Step 1 — What is an "actor", drawn as a person pulling a rope
WHAT. Before any maths, we need the raw ingredient. An actor is one stakeholder or role that can request a change to your class — Accounting, HR, the DBA. Picture each actor as a person, and the class as a box. If an actor can order a change, we draw a rope from that person to the box.
WHY this picture. SRP is not about how many methods a class has; it is about how many ropes are tied to the box. Counting ropes = counting reasons-to-change. That count is the single number our whole formula is built on. We will call it (for Actors).
WHAT IT LOOKS LIKE. One box, three people, three ropes. Every rope is a hand that can yank the box and possibly jolt the others.

Step 2 — What is ? One dice-roll per rope
WHAT. When one actor requests a change, the developer edits shared code. That edit might accidentally break behaviour some other actor depends on. We call the chance of one such accidental break — a probability, so a number between and .
WHY a probability and not certainty? Because a break is not guaranteed — it depends
on whether the two actors happen to share a helper (recall the parent's regularHours()
example). "Depends, with some chance" is exactly what a probability captures. We model
it as rolling a weighted die: land in the red slice = break; land in the green = safe.
WHAT IT LOOKS LIKE. A single die where a fraction of the face is red (break) and the rest, , is green (survive).

Recall
If , what is the survival probability for one other actor? ::: .
Step 3 — Only the OTHER actors can be surprised: why
WHAT. One actor requests the change — they are not surprised by their own request. So the actors who might be accidentally broken are everyone except the requester. That count is .
WHY subtract one? Because you cannot startle the person who pulled the rope on purpose. If (Accounting requests, HR + DBA at risk), the number of bystanders is . This is the single most-missed piece of the formula, so we draw it.
WHAT IT LOOKS LIKE. Three people; one glows (the requester, safe by choice); the other two are the "at-risk" bystanders. We roll one survival-die per bystander.

Step 4 — Everybody survives: why we MULTIPLY
WHAT. We now ask a cleaner question first: what is the chance that nobody gets broken — every bystander survives? For each bystander the survival chance is , and there are of them.
WHY multiply, not add? Because the dice are independent — HR breaking has nothing to do with the DBA breaking. The rule for "this AND that AND that, all independent" is to multiply the probabilities: Multiplying shrinks the number: each extra bystander is another survival-die that must also come up green, and stacking green-on-green is rarer. That is why it is a power, not a product of different things — every factor is the same .
WHAT IT LOOKS LIKE. A chain of green survival-dice. The joint-survival probability is the area of a shrinking green square: two dice → , drawn as a square of side .

Step 5 — Flip it: why
WHAT. We wanted the risk: the chance that at least one bystander is broken. We just computed the opposite — the chance that none is. These two are complements, so:
WHY compute the opposite first? "At least one broken" is messy — it could be exactly one, or two, or all of them, and you'd have to add all those cases. But "none broken" is a single clean product (Step 4). Then "at least one" is just everything else, which is minus that. This complement trick turns a hard sum into an easy subtraction.
WHAT IT LOOKS LIKE. The full bar is (certainty). The green slab is "all survive." Whatever is left — the red slab — is the risk . As you add actors, green shrinks and red grows.

Step 6 — The SRP-clean case: why gives exactly
WHAT. Plug in the SRP-obedient class, (one boss, one rope):
WHY does the exponent go to zero? With one actor there are bystanders — nobody to accidentally surprise. Anything raised to the power is (an empty product of survival-dice is "fully safe"), so the green slab fills the whole bar and red vanishes.
WHAT IT LOOKS LIKE. A pure-green bar — no red at all. This is the payoff of SRP drawn as a picture: split a class until each has one actor, and the cross-actor risk is not just small — it is identically zero, for any .

Step 7 — Reading the whole curve: risk vs. number of actors
WHAT. Sweep from upward at a fixed and plot .
WHY plot it? A single number () is a dot; the curve shows the trend — where SRP saves you most. It starts pinned at (Step 6), then climbs and flattens as it approaches .
WHAT IT LOOKS LIKE. A rising curve starting at , passing through the parent's worked point , bending toward the ceiling . The steepest gains from splitting happen early — going from to erases risk outright.

The one-picture summary
Everything above, compressed: ropes → dice → shrinking green square → red risk slab → the rising curve, with SRP pinning it back to zero.

Recall Feynman: tell the whole walkthrough to a 12-year-old
Picture a toy box with ropes tied to it — one rope per person allowed to yank it. If only you hold a rope (SRP: one boss), nobody else gets jolted, ever. But if three people hold ropes and you pull yours, the other two might get knocked over. Each of those two flips a coin that's mostly green ("I'm fine") with a little red ("ouch"). For both to stay fine, both coins must be green — and two greens in a row is rarer than one, which is why we multiply the green chances and get a smaller number. The chance that someone gets knocked over is just "everything that isn't all-green," so we take minus the all-green number. With one boss there are zero other people, all-green is guaranteed, and the risk is a clean zero. That flat zero is the reason we split classes — SRP turns a room full of tangled ropes into calm, one-rope boxes.
Connections
- Cohesion and Coupling — this whole risk model is coupling made numeric: high = high cross-actor coupling.
- God Object (anti-pattern) — the large- end of our curve; risk near the ceiling.
- Facade Pattern — after splitting to classes, a Facade restores one entry point without re-tangling ropes.
- Open-Closed Principle — one-actor classes are the units you extend without editing.
- Dependency Inversion Principle — separated (low-) classes talk through abstractions.
- Shotgun Surgery — over-splitting swings the other way; SRP is the balance point.
- DRY Principle — a shared helper is precisely what raises between two actors.