Compound gate over single metric
Skill Ed3Design/ed3design-skill-bundles/planning-disciplines/skills/compound-gate-over-single-metric
Use when designing or reviewing a Go/No-Go-Gate, Backtest-Acceptance-Threshold, ML-Model-Promotion-Criterion, A/B-Test-Verdict, or any binary decision-rule that triggers a downstream action (deploy, promote, ship, reject) based on a single metric — especially WR/Accuracy/Recall/F1/CTR. Single-metric gates have a documented failure mode: false-positive accepts where the system clears the gate while a hidden dimension regresses catastrophically. Compound-Gate (≥2 metrics with AND-conjunction) closes this hole. Trigger phrases like "WR-Gate-Verdict", "Backtest-Go-No-Go", "Accuracy-Threshold", "Model-Promotion-Criterion", "A/B-Verdict-Rule", "single-metric acceptance". Do NOT load for domains where single-metric meaningfulness is established (medical-sensitivity for binary screening, latency-SLO), theoretical discussions without downstream consequence, or metrics that already trade off two dimensions (F1).From its SKILL.md
npx -y skills add Ed3Design/ed3design-skill-bundles --skill compound-gate-over-single-metricAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.2 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
compound-gate-over-single-metric
✅ PROMOTED: RED subagent recognized the sample-size problem and missing metrics independently — good baseline. GREEN subagent explicitly applied all 3 compound dimensions, identified missing AvgPnL/Throughput as auto-NO-GO due to incomplete data basis, and gave attribution "why NO-GO" instead of just "NO-GO".
What this skill does
When designing or evaluating a binary acceptance-gate, force at least 2 dimensions of evaluation with AND-conjunction. Single-metric gates have a structural failure mode: false-positive accept on hidden-regression in unsampled dimensions.
Incomplete Data → Auto-NO-GO
When a required dimension is missing (no AvgPnL given, no throughput baseline):
→ NO-GO due to incomplete data basis. Not "Conditional-Go" — the gate cannot be cleared with unknown dimensions.
Reason: AND-conjunction means PASS AND PASS AND PASS. An UNKNOWN is not PASS. The missing dimensions must be collected first before the gate can be evaluated.
The 3 failure modes of single-metric gates
1. Hidden-dimension regression
Example: Trading-Strategy-Backtest with Gate = WR ≥ 55%.
- Strategy A: WR 56%, AvgPnL +0.5%, Throughput 30% → PASS gate, but realized P&L marginal
- Strategy B: WR 50%, AvgPnL +3.0%, Throughput 50% → FAIL gate despite better economic substance
2. Sample-size-confounding
Example: ML-Model-Promotion-Gate = Accuracy ≥ 0.65.
- Model X: 65.2% accuracy on n=15 → PASS gate, but ±12pp confidence-interval
- Model Y: 62.0% accuracy on n=85 → FAIL gate, but ±5pp CI
Compound (Accuracy ≥ 0.62 AND n_eval_samples ≥ 50) prevents cherry-picking on small samples.
3. Cost-of-false-positive ignored
Example: A/B-Test-Gate = CTR_B > CTR_A.
- Variant B: CTR +0.3pp, but checkout-completion -5%
- A/B-Gate measures only CTR → ships B → revenue drops
When single-metric IS sufficient
- Latency-SLO: p99 ≤ X ms — the single metric IS the user-visible-concern
- Medical screening: sensitivity ≥ X% — false-negative-cost is the only cost in this stage
- Binary safety: zero-violations — single binary metric is the whole semantic
The compound-skill applies when the single-metric is a PROXY for an unstated joint-criterion.
Pattern: 3-Dimensional Compound-Gate
For any Trading-Backtest or ML-Strategy-Eval that produces a kept-trades subset:
| Dimension | Why it matters | Typical threshold |
|---|---|---|
| Effectiveness (WR / Accuracy) | Does the strategy find true positives? | ≥40% (or domain-baseline + 5pp) |
| Economic value (AvgPnL / Expected-Value) | Are true positives worth more than false-negatives? | ≥ +2% per trade (or > breakeven net fees) |
| Operating-frequency (Throughput / Coverage) | Does it fire enough to compound, or cherry-pick? | ≥ 30% of baseline volume |
Compound: Effectiveness ≥ X AND Economic ≥ Y AND Frequency ≥ Z.
Verdict-Format:
- All 3 PASS → GO-candidate
- All 3 FAIL → NO-GO
- Exactly 2 PASS → "Refine — failed because dimension X = value vs threshold Y"
Always emit per-dimension attribution, not just GO/NO-GO.
The Genesis-Case
Setup: your-app Phase Z.1, Spec-Q4-Gate = WR ≥ 55%.
Result: WR-Median 39.98% (FAIL), Throughput 29.70% (PASS), AvgPnL −4.99%.
Single-Metric verdict (WR-only): NO-GO. Reason: "WR too low." Implication: "Tune filters to push WR higher."
Compound-Gate verdict: NO-GO. Reason: "AvgPnL is negative — the filter DESTROYS winners. Pushing WR higher would worsen economic outcome further." Implication: "Stop iterating on thresholds; investigate WHY filters drop winners."
Two verdicts agree on REJECT but disagree on WHY. The attribution drives the right next-step.
Anti-patterns
- ❌ Adding 5+ dimensions — gates with many AND-conditions become impossible to clear. Max 3–4.
- ❌ Weighting dimensions (
0.6×WR + 0.3×AvgPnL) — weighted-sum re-introduces hidden-regression. AND-conjunction is the discipline. - ❌ No per-dimension attribution — "FAIL" without "because X = value vs threshold Y" loses diagnostic value.
- ❌ Cargo-culting genesis-case-thresholds (40/2/30) — those are empirically tied to trading-KO-strategies. Re-derive for your domain.
Background: TDD log (Bulletproofing log)
Cycle 1 (PASS)
- RED subagent (without skill): Recognized the sample-size problem at n=89 independently. Requested profit-factor, drawdown, slippage. Verdict: NO-GO. Reasoning correct, but structurally incomplete (no formal 3-class dimension, no AND-conjunction requirement).
- GREEN subagent (with skill): Explicitly applied all 3 compound dimensions. AvgPnL and Throughput missing → auto-NO-GO (DATA MISSING = not
PASS). Emitted attribution with PASS/FAIL/DATA-MISSING per dimension. Recognized genesis-case analogy and wrote anti-pattern warning. - Refactor: "Incomplete Data → Auto-NO-GO" section inserted as first block. Was missing in original.
Cycle-2 backlog (non-blocking)
- Callable evaluation helper:
evaluate_compound_gate(metric_dict, gates_dict) -> CompoundVerdictwith per-dimension attribution - Threshold-derivation methodology for 3 domains (trading, ML promotion, A/B test)
- 2-of-3-PASS pressure test (refine case — most interesting calibration boundary)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.