1. Calibrate. Each condition and the outcome become fuzzy-set membership scores in [0,1]. The direct method uses three anchors (full non-membership 0.05, crossover 0.5, full membership 0.95).
2. Truth table. Every logically possible configuration (2^k) gets a row. Each is scored for consistency — how reliably that configuration is a subset of the outcome.
3. Necessity. A condition is necessary if the outcome is a subset of it (consistency ≥ ~0.9).
4. Sufficiency & minimisation. Rows above your frequency & consistency thresholds are minimised into complex (no counterfactuals), parsimonious (all counterfactuals) and intermediate (only theory-consistent counterfactuals) solutions, each with raw/unique coverage and consistency.
5. Read the plots. In an XY sufficiency plot, cases in the lower-right (high in the recipe, high in the outcome) support the solution; the diagonal is the consistency reference.