Skip to content

[The Table] Fail Forward — engine-rolled complications turn failure into story #839

@100yenadmin

Description

@100yenadmin

Concept

The engine resolves success/fail; great D&D treats failure as NEW CONTENT — fail forward. The botched lockpick wakes the guard who knows your name. Today a failed check is a dead end the DM must improvise around; make complications a first-class engine output.

Design

  1. Complication roll (additive in dice.py/check resolution): on a failed check (and on a natural-1 / failed-by-5+), the engine rolls on a complication table seeded by context (location danger, active quest, present NPCs) — emitting complication: {kind, seed} in the check result. Kinds: noise/attention, cost (gear/resource), new-arrival, information-leak, time-pressure. "Probability proposes, DM disposes" — the DM is TOLD the complication and weaves it; content stays DM-advisory per invariant Epic 2: Characters & progression #3.
  2. Success-at-cost: failed-by-1-2 offers the DM a success_at_cost option (the classic "yes, but").
  3. Complication debts: complications log into scene_debt.py so unresolved ones resurface (the guard remembers).

Files

servers/engine/dice.py (or the check-resolution path in server.py), a data/srd/complications.json table (authored, ~40 entries by kind), scene_debt.py (logging), dungeon-master skill (the weave directive). Engine tests: deterministic complication on seeded rolls; debt logged; no complication on plain success.

Acceptance

Engine tests green; a duo transcript shows a failed check producing a woven complication (story-lens evidence); behavioral GREEN unaffected.

Moves

story_craft (failure becomes story), mechanical (the Angry-DM lens rewards consequence-bearing checks), cross_persona_sat.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions