{
 "about": {
  "method": "power-sample-size",
  "origin": "Planning inputs chosen for the cases; no data",
  "ruling": "CSO memo of 13 October 2026 (docs/board/memos/2026-10-13-cso-power-and-sample-size.md); roadmap A-2 family 7",
  "settings": {
   "t": "power.t.test(n | power, delta, sd, sig.level, type, alternative = 'two.sided', strict = FALSE); strict = TRUE recorded",
   "anova": "power.anova.test(groups = k, n | power, between.var = var(means), within.var = sd^2, sig.level)",
   "proportions": "power.prop.test(n | power, p1, p2, sig.level, strict = FALSE)",
   "n": "uniroot(power(n) - target, c(2, 1e7), tol = 1e-10, extendInt = 'upX'); the smallest integer reaching the target, floor 3 (t, ANOVA) or 2 (proportions)"
  },
  "withheldCodes": [
   "INPUT_INVALID",
   "EFFECT_ZERO",
   "POWER_UNREACHABLE"
  ],
  "tolerances": {
   "power, t-tests and proportions": "1e-8 absolute",
   "power, ANOVA": "1e-7 absolute",
   "computed n (tol = 1e-10)": "1e-6 relative",
   "R's own n at its default tolerance": "1e-3 absolute (recorded, not compared by the engine's test)",
   "integer n, flags and withheld codes": "exact",
   "SciPy cross-check": "1e-6"
  },
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/power_sample_size.py",
  "scriptSha256": "9753f300d80837176c0afe962a82548ea73ab4f0430d9fb0ca4778396c6ca52d",
  "helper": {
   "script": "pipeline/assay-analyser/oracles/stage_a_oracle.py",
   "sha256": "492d85ca2fa6750db80b1c64214fd4a0b13cd4c588267244f6262c504c73e3e8"
  },
  "environment": {
   "image": "ghcr.io/biotechmat/drybench/oracle-env:11b8a5e4456df7eb@sha256:7e69891ca1d9f24838660e0a9887bdb654ce7771d2f2ac7e7275e9b1eb3b6a09",
   "r": "R version 4.4.3 (2025-02-28)",
   "packages": {
    "jsonlite": "2.0.0"
   },
   "python": "3.11.15",
   "numpy": "2.0.2",
   "scipy": "1.13.1",
   "recordedOn": "2026-10-13",
   "cpu": "AMD EPYC 7763 64-Core Processor",
   "cpuClass": "x86-64-v3",
   "simd": [
    "SSSE3",
    "SSE41",
    "POPCNT",
    "SSE42",
    "AVX",
    "F16C",
    "FMA3",
    "AVX2"
   ],
   "openblasCore": "Haswell",
   "threads": 1
  },
  "crossCheck": {
   "tool": "SciPy (stats.nct.sf, stats.ncf.sf, stats.norm)",
   "ran": true,
   "cases": 19,
   "agreeing": 19,
   "result": [
    {
     "what": "help-t-power power",
     "r": 0.868952801692498,
     "scipy": 0.8689528016921272,
     "agrees": true
    },
    {
     "what": "help-t-n achieved",
     "r": 0.912498295660624,
     "scipy": 0.9124982956605627,
     "agrees": true
    },
    {
     "what": "small-n-strict power",
     "r": 0.0697682929619086,
     "scipy": 0.06976829296187856,
     "agrees": true
    },
    {
     "what": "one-sample-power power",
     "r": 0.616222499728621,
     "scipy": 0.6162224997093773,
     "agrees": true
    },
    {
     "what": "paired-n achieved",
     "r": 0.80729089627584,
     "scipy": 0.8072908962756664,
     "agrees": true
    },
    {
     "what": "one-sample-n-same achieved",
     "r": 0.80729089627584,
     "scipy": 0.8072908962756664,
     "agrees": true
    },
    {
     "what": "alpha-0.01 achieved",
     "r": 0.90595627655821,
     "scipy": 0.9059562765580331,
     "agrees": true
    },
    {
     "what": "tiny-effect achieved",
     "r": 0.800000017233948,
     "scipy": 0.800000017233949,
     "agrees": true
    },
    {
     "what": "floor achieved",
     "r": 0.992775913628304,
     "scipy": 0.9927759136278184,
     "agrees": true
    },
    {
     "what": "smallest-integer achieved",
     "r": 0.850644186787823,
     "scipy": 0.8506441867877991,
     "agrees": true
    },
    {
     "what": "help-anova-n achieved",
     "r": 0.802953711947505,
     "scipy": 0.8029537118593204,
     "agrees": true
    },
    {
     "what": "anova-means achieved",
     "r": 0.91672167995724,
     "scipy": 0.9167216798652217,
     "agrees": true
    },
    {
     "what": "anova-power power",
     "r": 0.365275480870559,
     "scipy": 0.3652754807451225,
     "agrees": true
    },
    {
     "what": "help-prop-power power",
     "r": 0.740165901331388,
     "scipy": 0.7401659013313878,
     "agrees": true
    },
    {
     "what": "help-prop-n achieved",
     "r": 0.901104272537757,
     "scipy": 0.9011042725377573,
     "agrees": true
    },
    {
     "what": "prop-weak-wide achieved",
     "r": 0.828883800438429,
     "scipy": 0.8288838004384287,
     "agrees": true
    },
    {
     "what": "prop-weak-rare power",
     "r": 0.322740416850945,
     "scipy": 0.3227404168509446,
     "agrees": true
    },
    {
     "what": "ncp-beyond-series power",
     "r": 1,
     "scipy": 1.0,
     "agrees": true
    },
    {
     "what": "alpha-0.10-power power",
     "r": 0.60503402706096,
     "scipy": 0.6050340270706607,
     "agrees": true
    }
   ],
   "r": {
    "tool": "R stats",
    "version": "R version 4.4.3 (2025-02-28)",
    "script": "pipeline/assay-analyser/oracles/r/power_sample_size.R",
    "scriptSha256": "64c637620507357566bfe79052ced3514ac5ebee05da5eaaa9c0951b2894c291",
    "jobs": 20
   }
  }
 },
 "oracle": {
  "engine": "R stats (power_sample_size.R)",
  "method": "every number from R; the withholding policy from the memo, applied here"
 },
 "cases": [
  {
   "name": "help-t-power",
   "design": {
    "test": "two-sample",
    "delta": 1,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 20
   },
   "expected": {
    "kind": "power",
    "n": 20,
    "power": 0.868952801692498,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.868953027724586
    }
   }
  },
  {
   "name": "help-t-n",
   "design": {
    "test": "two-sample",
    "delta": 1,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.9
   },
   "expected": {
    "kind": "n",
    "n": 23,
    "achieved": 0.912498295660624,
    "computed": 22.0210955700935,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 22.0210977038512,
     "strictRoot": 22.0210884263736,
     "powerAtNMinusOne": 0.899713647531507
    }
   }
  },
  {
   "name": "small-n-strict",
   "design": {
    "test": "two-sample",
    "delta": 0.5,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 3
   },
   "expected": {
    "kind": "power",
    "n": 3,
    "power": 0.0697682929619086,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.0768490499604122
    }
   }
  },
  {
   "name": "one-sample-power",
   "design": {
    "test": "one-sample",
    "delta": 0.8,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 10
   },
   "expected": {
    "kind": "power",
    "n": 10,
    "power": 0.616222499728621,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.616232763475035
    }
   }
  },
  {
   "name": "paired-n",
   "design": {
    "test": "paired",
    "delta": 2,
    "sd": 3,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 20,
    "achieved": 0.80729089627584,
    "computed": 19.6669890772473,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 19.6669729270756,
     "strictRoot": 19.6669489668716,
     "powerAtNMinusOne": 0.78468482678992
    }
   }
  },
  {
   "name": "one-sample-n-same",
   "design": {
    "test": "one-sample",
    "delta": 2,
    "sd": 3,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 20,
    "achieved": 0.80729089627584,
    "computed": 19.6669890772473,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 19.6669729270756,
     "strictRoot": 19.6669489668716,
     "powerAtNMinusOne": 0.78468482678992
    }
   }
  },
  {
   "name": "alpha-0.01",
   "design": {
    "test": "two-sample",
    "delta": 1,
    "sd": 1.0,
    "alpha": 0.01
   },
   "ask": {
    "solveFor": "n",
    "target": 0.9
   },
   "expected": {
    "kind": "n",
    "n": 32,
    "achieved": 0.90595627655821,
    "computed": 31.4624497981118,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 31.4624504033528,
     "strictRoot": 31.4624497928211,
     "powerAtNMinusOne": 0.894613294747357
    }
   }
  },
  {
   "name": "tiny-effect",
   "design": {
    "test": "two-sample",
    "delta": 0.002,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 3924441,
    "achieved": 0.800000017233948,
    "computed": 3924440.82753949,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 3924440.82753949,
     "strictRoot": 3924431.21502804,
     "powerAtNMinusOne": 0.799999917304109
    }
   }
  },
  {
   "name": "unreachable",
   "design": {
    "test": "two-sample",
    "delta": 0.0005,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "POWER_UNREACHABLE",
    "r": {
     "powerAtMax": 0.199913554542377
    }
   }
  },
  {
   "name": "floor",
   "design": {
    "test": "two-sample",
    "delta": 5,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 3,
    "achieved": 0.992775913628304,
    "computed": 2.11721991170738,
    "atFloor": true,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 2.11724524658123,
     "strictRoot": 2.11721991111116,
     "powerAtNMinusOne": 0.719180535357104
    }
   }
  },
  {
   "name": "smallest-integer",
   "design": {
    "test": "two-sample",
    "delta": 0.8,
    "sd": 1.1,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.85
   },
   "expected": {
    "kind": "n",
    "n": 35,
    "achieved": 0.850644186787823,
    "computed": 34.9373110616489,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 34.9373110207085,
     "strictRoot": 34.9372764011321,
     "powerAtNMinusOne": 0.840072199788084
    }
   }
  },
  {
   "name": "help-anova-n",
   "design": {
    "test": "anova",
    "means": [
     0,
     0,
     0,
     2
    ],
    "sd": 1.7320508075688772,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 12,
    "achieved": 0.802953711947505,
    "computed": 11.9261111657036,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 11.9261309577356,
     "strictRoot": 11.9261111657036,
     "powerAtNMinusOne": 0.759855860218588
    }
   }
  },
  {
   "name": "anova-means",
   "design": {
    "test": "anova",
    "means": [
     120,
     130,
     140,
     150
    ],
    "sd": 22.360679774997898,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.9
   },
   "expected": {
    "kind": "n",
    "n": 16,
    "achieved": 0.91672167995724,
    "computed": 15.1883307537059,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 15.1883392140579,
     "strictRoot": 15.1883307537059,
     "powerAtNMinusOne": 0.895721158286638
    }
   }
  },
  {
   "name": "anova-power",
   "design": {
    "test": "anova",
    "means": [
     1,
     2,
     3
    ],
    "sd": 1.5,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 5
   },
   "expected": {
    "kind": "power",
    "n": 5,
    "power": 0.365275480870559,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.365275480870559
    }
   }
  },
  {
   "name": "help-prop-power",
   "design": {
    "test": "proportions",
    "p1": 0.5,
    "p2": 0.75,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 50
   },
   "expected": {
    "kind": "power",
    "n": 50,
    "power": 0.740165901331388,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.740167193453611
    }
   }
  },
  {
   "name": "help-prop-n",
   "design": {
    "test": "proportions",
    "p1": 0.5,
    "p2": 0.75,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.9
   },
   "expected": {
    "kind": "n",
    "n": 77,
    "achieved": 0.901104272537757,
    "computed": 76.7069284517808,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "defaultTolN": 76.7069301141077,
     "strictRoot": 76.706916115821,
     "powerAtNMinusOne": 0.89729042660579
    }
   }
  },
  {
   "name": "prop-weak-wide",
   "design": {
    "test": "proportions",
    "p1": 0.1,
    "p2": 0.9,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "kind": "n",
    "n": 5,
    "achieved": 0.828883800438429,
    "computed": 4.74680707554271,
    "atFloor": false,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": true
    },
    "r": {
     "defaultTolN": 4.74680761709047,
     "strictRoot": 4.74680707554203,
     "powerAtNMinusOne": 0.693090465888796
    }
   }
  },
  {
   "name": "prop-weak-rare",
   "design": {
    "test": "proportions",
    "p1": 0.02,
    "p2": 0.1,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 40
   },
   "expected": {
    "kind": "power",
    "n": 40,
    "power": 0.322740416850945,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": true
    },
    "r": {
     "strictPower": 0.322958896953946
    }
   }
  },
  {
   "name": "invalid-sd",
   "design": {
    "test": "two-sample",
    "delta": 1,
    "sd": 0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "INPUT_INVALID"
   }
  },
  {
   "name": "zero-delta",
   "design": {
    "test": "two-sample",
    "delta": 0,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 10
   },
   "expected": {
    "withheld": "EFFECT_ZERO"
   }
  },
  {
   "name": "invalid-p",
   "design": {
    "test": "proportions",
    "p1": 0,
    "p2": 0.5,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "INPUT_INVALID"
   }
  },
  {
   "name": "equal-p",
   "design": {
    "test": "proportions",
    "p1": 0.3,
    "p2": 0.3,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "EFFECT_ZERO"
   }
  },
  {
   "name": "equal-means",
   "design": {
    "test": "anova",
    "means": [
     4,
     4,
     4
    ],
    "sd": 1,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "EFFECT_ZERO"
   }
  },
  {
   "name": "one-group",
   "design": {
    "test": "anova",
    "means": [
     4
    ],
    "sd": 1,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "n",
    "target": 0.8
   },
   "expected": {
    "withheld": "INPUT_INVALID"
   }
  },
  {
   "name": "ncp-beyond-series",
   "design": {
    "test": "one-sample",
    "delta": 10,
    "sd": 1.0,
    "alpha": 0.05
   },
   "ask": {
    "solveFor": "power",
    "n": 16
   },
   "expected": {
    "kind": "power",
    "n": 16,
    "power": 1,
    "flags": {
     "ncpBeyondSeries": true,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 1
    }
   }
  },
  {
   "name": "alpha-0.10-power",
   "design": {
    "test": "paired",
    "delta": 1.5,
    "sd": 2,
    "alpha": 0.1
   },
   "ask": {
    "solveFor": "power",
    "n": 8
   },
   "expected": {
    "kind": "power",
    "n": 8,
    "power": 0.60503402706096,
    "flags": {
     "ncpBeyondSeries": false,
     "approximationWeak": false
    },
    "r": {
     "strictPower": 0.605200998652201
    }
   }
  }
 ]
}
