decision_navigate

From a refused state to the cheapest DECLARED move set that makes the estimator answer, or the other way for fragility. A move is a name, an input, a delta and a cost, and all four are yours: this tool cannot decide that an input is movable, by how much, or at what price, and the cost is in your own units and is never money. Every candidate is re-run through the estimator, so a path reaches the goal only when the world says so and never because the deltas suggest it. The payload carries no verb. `optimum_cost` and `optimum_path` are a PRICE your own proposal is measured against, never the route to take: the cheapest flip is provably the fragile one, which is why `holds_across_cohort` is computed for the optimum as well as for every returned path. `unreachable_inputs` names what you declared no move for. 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/no-moves-declared, simulation/no-path-within-budget, simulation/already-at-the-goal, simulation/no-such-draw, 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 and must match.",
      "type": "string"
    },
    "direction": {
      "description": "recourse goes from refused to answered; fragility the other way. Defaults to recourse.",
      "enum": [
        "recourse",
        "fragility"
      ],
      "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"
    },
    "from": {
      "description": "{\"draw\": n} to start from a draw of this cohort, or {\"arguments\": {...}} for a literal state. Defaults to the first draw.",
      "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"
    },
    "max_steps": {
      "description": "The search bound, 1 to 12, default 6. Served on every answer, because a cost is only an optimum with respect to a bound.",
      "type": "integer"
    },
    "moves": {
      "description": "The moves you declare, each {\"name\", \"input\", \"delta\", \"cost\"}. Required. Two moves may not share a name.",
      "type": "array"
    },
    "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"
    },
    "paths": {
      "description": "How many diverse routes to return, default 3. Fewer may come back, and the payload says whether the move vocabulary or the search was the binding constraint.",
      "type": "integer"
    },
    "proposed": {
      "description": "Optional. An ordered list of move names you propose. The answer prices it and, when it reaches the goal, reports the regret against the optimum.",
      "type": "array"
    },
    "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",
    "moves"
  ],
  "type": "object"
}

Ready links