pub struct CruxStory {
pub id: String,
pub competitor: Option<String>,
pub demand_score: Option<i64>,
pub status: Option<IntakeStatus>,
}Expand description
One row of the CRUX master registry’s stories: list.
Fields beyond the three domain-checked ones are accepted and ignored — the
registry carries title/contract/category that no rule constrains.
Fields§
§id: StringStory id, e.g. CRUX-A-01. Used only to locate a violation.
competitor: Option<String>Which competitor’s UX the story was extracted from. Membership-checked
against CRUX_COMPETITORS (rule CRUX-002), the same registry that
governs metadata.competitor, and trimmed on parse for the same reason.
demand_score: Option<i64>Demand, documented 1..=5. Range-checked by rule CRUX-001 — the same
DEMAND_SCORE_RANGE that governs metadata.demand_score.
i64 for the same reason as Metadata::demand_score: an out-of-range
value must REACH the validator and be named, not die in serde.
status: Option<IntakeStatus>Story status. A closed enum, so an invented value FAILS TO PARSE — the
registry is held to exactly the vocabulary IntakeStatus defines.