gatelineAPI reference
interface DecisionInput {
    action: DecisionAction;
    advancePhase?: boolean;
    burden?: "confirmation" | "light-correction" | "heavy-correction";
    closure?: "already-delivered" | "superseded" | "obsolete" | "abandoned";
    costLimitUsd?: number;
    disposition?: "re-review" | "return-to-implement" | "re-plan";
    escalationIndex?: number;
    gate?: "G0" | "G1" | "G2" | "G3";
    hold?: boolean;
    holdReason?: string;
    notes?: string;
    pauseReason?: string;
    resumePhase?:
        | "spec"
        | "plan"
        | "implement"
        | "integrate"
        | "release"
        | "done"
        | "paused"
        | "closed";
}

Properties

advancePhase?: boolean

approve: also move phase forward (the v0 human is the orchestrator). Default true.

burden?: "confirmation" | "light-correction" | "heavy-correction"

Required for approve — captured in the act of deciding (principle 3).

closure?: "already-delivered" | "superseded" | "obsolete" | "abandoned"

close: why the run is ending short of done (#200). Required — a closure with no disposition is the untyped terminal state the record can never be re-derived out of.

costLimitUsd?: number

resume: a new budget.cost_limit_usd, written in the same commit as the phase restore. Required when the run is paused budget-exhausted (#96): the pause is a condition the engine recomputes from the ledger and the limit, so a resume that changes neither re-pauses on the next tick and burns two human decisions for nothing. Optional otherwise; must exceed the current limit whenever given.

disposition?: "re-review" | "return-to-implement" | "re-plan"

resolve-escalation: an optional machine-actionable route for the engine's D17 rule (ORCHESTRATOR.md §4.2) — absent leaves today's guarded-re-review default unchanged.

escalationIndex?: number
gate?: "G0" | "G1" | "G2" | "G3"
hold?: boolean

approve: sign the gate but pause the run in the same commit, instead of advancing. This is the dispatch-safe way to approve when a human decision still stands between this gate and the next phase's producer: a bare advancePhase: false leaves the approved gate visible to the engine, whose convergence rule advances the phase and dispatches anyway.

holdReason?: string

hold: what the run is waiting on; recorded in paused_reason. Required with hold.

notes?: string

Free-text notes; required (as the reason) for decline and resolve-escalation.

pauseReason?: string

pause: reason recorded in paused_reason.

resumePhase?:
    | "spec"
    | "plan"
    | "implement"
    | "integrate"
    | "release"
    | "done"
    | "paused"
    | "closed"

resume: target phase; derived from the gate ledger when omitted.