Narrative Stress

Plot-armour plausibility analyser — model beat sequences, measure narrative tension, and identify when simulation outcomes push against story structure.

What this uses

src/sim/morale.ts src/sim/condition.ts src/sim/wound-aging.ts src/sim/impairment.ts src/sim/combat.ts src/sim/events.ts docs/use-case-validation.md

Narrative stress measures the gap between what the physics demands and what the story requires. A high-stress beat is one where the simulation outcome is unlikely given the characters' physical state — e.g., a badly wounded character landing a decisive killing blow against a fresh opponent.

Tier 3 — planned A formal src/sim/narrative.ts module is not yet implemented. The beat editor and push scale on this page are design-stage tools using only in-browser state. The underlying primitives that would power a real API (morale.ts, condition.ts, wound-aging.ts) are stable Tier 1. Track STABLE_API.md for promotion.

Examples from fiction

Recognisable narrative beats calibrate the push scale against stories readers have already accepted. Higher push = more suspended disbelief required.

natural · 0.05 Gladiator — Maximus opens fight cautiously

Fresh combatant, high stamina, clear tactical read. Physics fully supports the outcome.

low push · 0.28 The Hobbit — Bilbo escapes goblins through luck and speed

Unlikely but physically possible — small, fast, and unarmoured vs. disorganised enemies. Acceptable without justification.

medium push · 0.52 Kill Bill Vol. 1 — The Bride fights 88 opponents while recovering from coma

Extreme skill and adrenaline partially justify this, but the physics demand special circumstances (story-native training). Needs in-world grounding.

high push · 0.74 Braveheart — Wallace fights on after catastrophic abdominal wound

Classic plot armour. Severe internal bleeding would cause consciousness loss within minutes. The story accepts it as a mythic finale. Suspension of disbelief required.

implausible · 0.92 Dragon Ball Z — Goku fights at full power with multiple fatal wounds

Explicit genre contract with the audience: physics are suspended. Requires an in-world override (ki, magic, divine intervention). Ananke would assign near-zero probability to every beat in this sequence.

Narrative push scale

0.0 – 0.2NaturalOutcome is well within what the physics supports. No narrative armour required.
0.2 – 0.4Low pushOutcome is unlikely but plausible — high-skill roll or lucky seed. Acceptable in fiction.
0.4 – 0.65Medium pushOutcome requires special circumstances (adrenaline, environment, artefact). Needs justification in story.
0.65 – 0.85High pushPhysics strongly contradicts outcome. Classic plot-armour territory. Suspension of disbelief required.
0.85 – 1.0ImplausibleSimulation gives near-zero probability to this outcome. Explicit narrative override needed (magic, divine intervention).

Beat sequence editor

A beat sequence describes a scene's narrative arc. Each beat has a type, description, and estimated narrative push. Aggregate push across the sequence flags high-stress scenes. Add beats below, or delete individual beats by clicking ✕.

1 setup Knight and mercenary face off, equal footing 0.05
2 tension Knight takes a deep cut to the sword arm 0.10
3 escalate Mercenary presses advantage — rapid combos 0.15
4 reveal Knight draws on rage — attacks despite wounds 0.42
5 climax One-hit KO from critically injured combatant 0.78
6 resolution Victor collapses immediately after — physics reasserts 0.08
natural aggregate push: 0.26 — low push implausible

Add a beat

Try this

  1. Map your scene's key moments to beat types. Assign push estimates based on how badly injured the protagonist is at each moment.
  2. Keep aggregate push below 0.35 for a grounded story. Above 0.65 you will need in-world justification (magic, poison, special training).
  3. Run the equivalent scenario in the Playground with different seeds to see the natural probability distribution for the scene's outcome.
  4. Use high push consciously: reserve the 0.7+ range for the story's defining mythic moment — not every chapter.