pub struct Decision {Show 13 fields
pub signal_id: String,
pub category: DecisionCategory,
pub question: String,
pub anchor_file: String,
pub anchor_line: u32,
pub signal_key: String,
pub previous_signal_id: Option<String>,
pub blast: u64,
pub consequence: u64,
pub expert: Vec<String>,
pub bus_factor_one: bool,
pub internal_consumer_count: u64,
pub tradeoff: String,
}Expand description
One consequential structural decision, framed as a judgment question for a human with taste, anchored to a fallow-emitted signal.
Fields§
§signal_id: StringDeterministic anchor to the fallow-emitted candidate this decision frames.
accept_signal_id rejects any id not in the emitted set.
category: DecisionCategoryOne of the SOLID-3 categories.
question: StringThe decision framed as a judgment question for the human.
anchor_file: StringRoot-relative file the decision is anchored at.
anchor_line: u321-based anchor line, when the underlying signal carries one (0 = file head).
signal_key: StringThe raw fallow-emitted candidate key the signal_id hashes.
previous_signal_id: Option<String>The signal_id this decision WOULD have had before any rename in this
change (the anchor file’s pre-rename path). Present only when the anchor was
renamed. A review-memory layer carries a dismissal across a git mv: if
previous_signal_id was dismissed in an earlier PR, treat this decision as
dismissed too. Keeps signal_id itself exact + deterministic.
blast: u64Blast radius: count of modules affected beyond the diff by this decision.
consequence: u64blast * reversibility_weight: the rank key (sorted descending).
expert: Vec<String>The routed expert(s) to ask, from ownership routing. Empty when no ownership signal is available for the anchor file.
bus_factor_one: boolWhether the anchor file’s only qualified owner is one person.
internal_consumer_count: u64Honest per-decision count: in-repo modules OUTSIDE the diff that already
depend on this decision’s anchor. This is the DISPLAY number (taste
ownership: the human reads reversibility from the count itself), distinct
from blast (the project-wide proxy used only for ranking). Never a door
label. Internal-only by construction, so it cannot see a published library’s
external consumers; the public-API trade-off clause names that risk in prose.
tradeoff: StringThe named structural sacrifice this change makes, stated as a fact, never a
recommendation (e.g. “Couples app to infra; 4 in-repo modules already
depend on this anchor.”). A sibling fact to question; it never tells the
human what to choose.