Member Junction
    Preparing search index...

    The normalized decision: everything a corpus case is allowed to assert against.

    interface ObservedDecision {
        actions: ObservedAction[];
        diagnostic?: string;
        dualChannel?: boolean;
        encoding: DecisionEncoding;
        envelopeParsed: boolean | null;
        kind: DecisionKind;
        message?: string;
        narrationWithCalls?: boolean;
        payloadChange?: Record<string, unknown>;
        placeholderCall?: boolean;
        shadowEnvelopeKind?: DecisionKind;
        stepType?: string | null;
        subAgents: ObservedSubAgent[];
        taskComplete: boolean;
    }
    Index

    Properties

    actions: ObservedAction[]
    diagnostic?: string

    Why the decision is unparseable / empty, for the oracle's message.

    dualChannel?: boolean

    Native turns only: the model ALSO returned a parseable Loop envelope alongside its tool calls The tool call still wins — this records that something was discarded.

    envelopeParsed: boolean | null

    Whether an envelope was expected and successfully parsed. null when none was expected.

    message?: string

    The user-facing message, when the agent produced one.

    narrationWithCalls?: boolean

    Native turns only: prose accompanied the call(s) and was not an envelope (Haiku: 30% of call turns in run 7).

    payloadChange?: Record<string, unknown>

    Present when the turn carried a payload change request.

    placeholderCall?: boolean

    Native turns only: the calls carried empty or placeholder arguments alongside prose — the Sonnet 5 pattern of results §13.3.

    shadowEnvelopeKind?: DecisionKind

    What that discarded envelope would have decided, when dualChannel is true.

    stepType?: string | null

    The raw nextStep.type exactly as the model wrote it, before any normalization.

    Kept because the DECISION and the VALIDITY are different questions. classifyEnvelope is lenient by design — it infers a kind from the payload when the type is missing or odd, which is what makes the decision comparable across encodings. But the runtime is not lenient: it switches case-sensitively on this string and sends anything unrecognized to a forced Retry. A response can therefore be a perfectly good decision and still be malformed, and evaluateWellFormed needs the raw value to say so.

    subAgents: ObservedSubAgent[]
    taskComplete: boolean

    True when the envelope declared the task finished.