← Back to Desktop app developers

Skill · Version 1.0.0

Minimal failure reproduction

Isolates the smallest faithful cause of a failure by systematically reducing the data, steps and configuration that trigger it.

minimal-reproduction-delta-debugging

Team members using this skill

See how it helps

When is it useful?

Use it when a large scenario fails but the decisive input or transition is still hidden among irrelevant details.

What does it help you do?

  • Reduces inputs and steps while preserving the same failure signature.
  • Minimizes data, component scope and configuration independently.
  • Records experiments and guards against replacing the original defect.

Try asking this

Reduce this large failing import to the smallest record that still triggers its parser bug. Remove rows and fields one at a time while checking the original error signature. Deliver the minimal input and exact command that still triggers it.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

Minimal Reproduction & Delta Debugging

When to Use

Use once an initial reproduction (or candidate failure path) is found, or when narrowing down a complex multi-step workflow, large payload, or multi-variable environment to the smallest set of conditions that still triggers the exact original bug.

Andreas Zeller's Delta Debugging (ddmin) Workflow

Never change five variables at once when narrowing a bug. Follow a disciplined Hypothesis $\rightarrow$ Single-Variable Experiment $\rightarrow$ Observation Log loop:

1. Partition & Binary-Search the Input / Step Space

Given a failing scenario with $N$ steps, fields, or configuration flags:

  1. Cut half of the non-essential setup steps, payload properties, or query filters.
  2. Run the check and verify whether the exact same Failure Signature still occurs:
    • Same failure occurs ($\text{FAIL}_{\text{same}}$): The removed half is irrelevant; discard it permanently and bisect the remaining half.
    • Bug disappears ($\text{PASS}$): The removed half contains a required trigger condition; restore it and bisect the other half (or bisect inside the restored half).
    • Different error occurs ($\text{FAIL}_{\text{other}}$ / invalid input): The cut broke a structural precondition (e.g., missing required foreign key or syntax error); restore only the minimal structural dependency and continue.
2. Minimize Across Four Orthogonal Axes
  • Action Sequence: Reduce a 15-click UI journey or 10-call API sequence to the minimum 1–3 state transitions required.
  • Data Payload: Shrink a 5 MB JSON/CSV/file or 50-column database seed down to the smallest record count and minimal string/number values that still fail.
  • Component Scope: If a bug inside a pure parser, validator, or service method can be triggered directly without spinning up the full browser + HTTP server, provide both the direct unit/integration reproduction and note its equivalence to the full flow.
  • Configuration Delta: Strip custom settings until only the specific flag or environment difference that flips PASS $\rightarrow$ FAIL remains.
3. Maintain a Concise Experiment Log

Record every variable tested in a brief table (Attempt # | Changed Condition | Observed Result) so dead ends are never repeated and non-reproducible boundaries are documented with proof.

4. Guard Faithfulness ("Minimal $\neq$ Distorted")

After reaching the minimal case, verify Symptom Identity:

  • Confirm the minimal reproduction produces the exact same error code, stack trace, or wrong state as the original report—never simplify away the real trigger and substitute a trivial validation error.

Included files 1

  • SKILL.md