request_decision
Escalate a blocking decision to an authoritative overlord, providing a question and options, and receive the ruling plus rationale to proceed.
Instructions
Escalate a blocking decision to the overlord, which rules on the user's behalf per the decision policy. The ruling is appended to the plan's decisions log (audit trail, readable via list_decisions) and returned.
plan_name: the plan's name this story belongs to.
story_key: the story's key within that plan's manifest — the story
that's actually blocked.
question: the specific question you need answered, stated so a ruling
of "pick one of these options" fully resolves it.
options: the mutually exclusive choices the overlord may rule between,
as plain strings (e.g. ["hand-roll a parser", "add a dependency"]).
Not free text — the ruling should select one of these verbatim.
context: optional — anything the overlord needs to rule correctly that
isn't in question itself (constraints, tradeoffs you've already
found, why the choice matters). Defaults to empty; provide it
whenever the bare question is ambiguous without it.
On success returns a dict with at least "ruling" (the chosen option's text), "rationale", "risk", "tier", "action", and "notify_user" — act on "ruling", not on your own preference. Call this from a story agent when you are blocked on a choice the user would normally make; do not guess.
Fails open: if the overlord backend errors, the story is parked for a human and a single-line escalation message (a plain string, not the dict above) is returned instead of raising — check whether the return value is a str before reading dict keys off it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| options | Yes | ||
| question | Yes | ||
| plan_name | Yes | ||
| story_key | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |