pub struct ReasonStep {
pub strategy: String,
pub target: String,
pub given: String,
pub ask: String,
pub depth: Option<u32>,
pub loc: Loc,
}Expand description
v2.83.0 — reason { given: … ask: "…" depth: N }, the README’s
most-published cognitive block (16 occurrences) and, until this cycle, the
most expensive silent drop in the language.
What was wrong. The block form had NO home in this struct: strategy
and target were its only fields. Written at flow level, reason { … }
did not parse at all (the parser wanted reason <target>); written inside a
step { } body — the only place the README ever writes it — it hit
skip_flow_step_structural, which threw the whole block away. Measured on
2.85.0: a step whose ENTIRE cognition was a reason { given ask depth }
block passed axon check with exit 0 and lowered to "ask": "",
"given": "". advertised.rs attested reason as
Real { proof: "pure_shape::run_reason" } — and the attestation was true
of an engine no published program could reach. v2.67.0’s own words: motor
real, cable muerto.
The field set is CLOSED (v2.83.0’s rule: when a block skips what it does
not recognise, ask which direction the silence fails in — a typo’d ask:
yields a promptless deliberation, which is weaker, not louder).
Fields§
§strategy: Stringchain_of_thought: enabled and strategy: <name> both land here.
target: StringThe pre-v2.83.0 positional form reason <target>. Empty for the
block form, which names its evidence in given instead.
given: Stringgiven: — the evidence this deliberation reasons OVER. One reference,
a comma list (given: Initialize.output, sessions) or a bracketed list
(given: [baseline.topology, current.topology]); all three forms occur
in the published README. Resolved against the flow bindings at dispatch.
ask: Stringask: — the question. This is the deliberation’s actual prompt; before
v2.83.0 it reached the model in exactly zero published programs.
depth: Option<u32>depth: — the declared deliberation depth. Consumed by the dispatch
FRAMING (like strategy, the other declared-posture field), not by a
runtime iteration bound. Stated plainly so the field is not read as a
loop count it has never been.
loc: Loc