sensitivity
Which of your declared inputs moves the outcome, ranked over a cohort you declare exactly as you declare it to `simulate`, by two measures that fail differently. `first_order_index` is the share of the response's variance tracked by that input, over ten equal-count bins, computed from the replay with no further estimator calls. `p10_to_p90_swing` pins one input at its own p10 across EVERY draw and again at its p90 and reports the difference, which costs 2 * k * draws calls and the count is served so the price is visible. A PINNED input carries no index at all and carries `pinned_reason` instead: held fixed and varied-but-inert are different findings that would both render as zero. `response` is required and is either "answered" or a figure path, because an input that decides WHETHER there is an answer can look inert in a figure's decomposition, and a default would decide which question you asked. A negative `unexplained_share` is served as measured and never clamped: it is the binned estimator saying it has too few draws to be trusted. It refuses rather than guessing, and these are the kinds it returns, so you can read them before spending a call: simulation/bad-input, simulation/nothing-varied, simulation/nothing-answered, simulation/no-such-figure, simulation/cohort-id-mismatch, simulation/estimator-fault, simulation/cohort-vintage-moved.
Use this form for new arguments. Follow concrete links for known values. Fetch-only readers may be unable to submit new URLs.
Exact input contract
{
"additionalProperties": false,
"properties": {
"cohort": {
"description": "Optional. The cohort id you believe these arguments describe; it is recomputed from the recipe and must match.",
"type": "string"
},
"draws": {
"description": "How many times to run it. Required; this tool ships no default. Every draw is a real call to the world's own estimator, and the refusal names the ceiling if you cross it.",
"minimum": 1,
"type": "integer"
},
"fixed": {
"description": "Literal values passed unchanged to every draw. A key here and in over at once is refused.",
"type": "object"
},
"label": {
"description": "A name for your own use. It is not part of the cohort id, so renaming a cohort does not make it a different one.",
"type": "string"
},
"over": {
"description": "The inputs that vary, each mapped to its declared distribution. Non-empty, always. Shapes: {\"shape\":\"point\",\"value\":v}, {\"shape\":\"uniform\",\"low\":a,\"high\":b}, {\"shape\":\"triangular\",\"low\":a,\"mode\":m,\"high\":b}, {\"shape\":\"categorical\",\"weights\":[[value,weight],...]}. A point belongs here rather than in fixed when you want it reported as pinned rather than as absent. There is no normal and no beta: both need a function IEEE 754 does not require to be correctly rounded, and a draw that differs in its last bit between two machines cannot replay.",
"type": "object"
},
"response": {
"description": "Required. \"answered\" for the 0/1 indicator that a draw produced an answer at all, or the dotted path of a served figure. No default: the two rank differently and a default would decide which question you asked.",
"type": "string"
},
"seed": {
"description": "The seed every draw is addressed from. Required; this tool ships no default, because a defaulted seed is a declared input nobody declared and the seed is what a cohort's identity is about. The same seed and the same declaration give the same draws on any machine.",
"minimum": 0,
"type": "integer"
},
"template": {
"description": "The records a wildcard path is resolved against, with the addressed field left out. Supply it whenever an input in over is written name[*].field.",
"type": "object"
},
"tool": {
"description": "The tool to run, named exactly as this world declares it. A runtime tool is refused: simulating a check decides nothing. Name one this world does not declare and the refusal lists the ones it does.",
"type": "string"
}
},
"required": [
"tool",
"draws",
"seed",
"over",
"response"
],
"type": "object"
}