You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(demos): drop redundant sustained scenario from single-client retry demo (#112)
Retry can't help the caller on a sustained outage, so its counters read
plain ✗82 vs httpware ✗81 — "no difference" at a glance, against the suite's
one-number-that-pops design, and its stop overclaimed a "fails fast" that
never showed (budget-exhausted requests count as ✗, not fast-fail). Keep only
the Brief blip scenario (clear ✗6 vs ✗0 win); the herd view below now owns the
sustained/amplification story with numbers that pop (~18x vs ~3x). Preserve the
"retry rescues blips, not outages" point as one line of the herd intro.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/demos/retry.md
+3-17Lines changed: 3 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ a dead backend can't be amplified.
7
7
8
8
<divclass="hw-demo"id="retry-demo"></div>
9
9
10
-
<p>That was <b>one</b> client. The real danger of blind retries shows up at scale — when <b>many</b> clients retry the same outage at once.</p>
10
+
<p>That was <b>one</b> client recovering from a blip. The real danger of blind retries shows up at <b>scale</b> — when many clients hit a real outage at once.</p>
11
11
12
12
<divclass="hw-demo"id="retry-herd"></div>
13
13
@@ -20,22 +20,8 @@ document.addEventListener('DOMContentLoaded', function () {
body:'Both clients hit the same transient errors. Watch how each responds.' },
32
-
{ when: (s) =>s.now>=2.4, spot: ['ifB'], title:'httpware retries the blip',
33
-
body:'The plain client surfaces the error immediately. httpware retries with backoff — most of these recover on attempt 2 or 3, invisibly to the caller.' },
34
-
{ when: (s) =>s.mw.budgetExhausted, spot: ['ifB'], title:'The budget refuses to amplify',
35
-
body:'On a SUSTAINED outage, blind retries would multiply load. The budget is spent — httpware STOPS retrying and fails fast, protecting the dying backend instead of hammering it.' },
body:'Both clients are about to hit the same transient errors. Keep your eye on the ✗ failed counts — they start equal at zero.' },
41
27
{ when: (s) =>s.now>=2.4, spot: ['badWrapA', 'badWrapB'], title:'Plain surfaces every error; httpware retries',
@@ -47,7 +33,7 @@ document.addEventListener('DOMContentLoaded', function () {
47
33
48
34
HttpwareDemo.mountHerd('#retry-herd', {
49
35
clients:20,
50
-
intro:'A real backend rarely dies cleanly — it <b>flaps</b>: fails, recovers, fails again. These strips show <b>backend call-rate over time</b> for twenty clients through three dips. Press play and watch the shape.',
36
+
intro:'Retry rescues a transient blip (above) — but it can’t fix an <i>outage</i>: retried or not, the caller sees the same failures. There the danger isn’t caller failures, it’s <b>amplification</b>. A real backend rarely dies cleanly — it <b>flaps</b>: fails, recovers, fails again. These strips show <b>backend call-rate over time</b> for twenty clients through three dips. Press play and watch the shape.',
51
37
scenario: { id:'storm', dur:12.5,
52
38
fault: (now) => {
53
39
constdown= (now >=2.0&& now <4.0) || (now >=5.5&& now <7.5) || (now >=9.0&& now <11.0);
summary: Dropped the redundant "Sustained outage" scenario from the single-client retry demo (retry can't help the caller on a sustained outage, so its counters read ~equal and misled) and moved the myth-bust into the herd intro, which now owns the outage story with numbers that pop.
3
+
---
4
+
5
+
# Change: Drop the single-client retry demo's sustained-outage scenario
6
+
7
+
**Lane:** lightweight — docs demo only, one file (`docs/demos/retry.md`), no capability contract moves.
8
+
9
+
## Goal
10
+
11
+
The single-client retry demo's "Sustained outage" scenario shows plain ✗82 vs
12
+
httpware ✗81 — near-identical, because retry genuinely cannot rescue a caller
13
+
from a *sustained* outage (the backend is down the whole time). That is correct
14
+
model behavior, but it makes the scenario read as "no difference", against the
15
+
suite's design where every scenario spotlights a number that pops. Its stop copy
16
+
also overclaimed ("httpware STOPS retrying and **fails fast**") while the
17
+
fast-failed counter stays 0 — a budget-exhausted request still hits the backend
18
+
once and is counted as ✗, not a fast-fail.
19
+
20
+
## Approach
21
+
22
+
Remove the sustained scenario from the single-client demo, leaving only the
23
+
"Brief blip" scenario, where retry's caller-visible win is self-evident (plain
24
+
✗6 vs httpware ✗0). The sustained/amplification story now lives — with numbers
25
+
that pop (naive ~18× vs httpware ~3×) — in the herd view directly below, added
26
+
in `2026-07-19.02`. Preserve the "retry rescues blips, not outages" myth-bust as
27
+
one line of the herd intro rather than a whole flat scenario, and align the
28
+
bridging prose (the single-client demo now shows a blip, not an outage).
29
+
30
+
`buildStops` loses its `scenario.id === 'sustained'` branch and becomes the
31
+
single blip stop-list.
32
+
33
+
## Files
34
+
35
+
-`docs/demos/retry.md` — remove the `sustained` scenario + its stop branch;
36
+
simplify `buildStops`; add the myth-bust to the herd `intro`; retune the
37
+
bridging `<p>`.
38
+
39
+
## Verification
40
+
41
+
-[ ]`just docs-build --strict` clean; `just check-planning` OK.
42
+
-[ ] jsdom harnesses green: `verify-demos.js` (retry single-client tour still
43
+
completes with the one blip scenario), `verify-herd.js`, `verify-real-page.js`.
0 commit comments