pub struct Metadata {Show 13 fields
pub version: String,
pub created: Option<String>,
pub author: Option<String>,
pub description: String,
pub references: Vec<String>,
pub depends_on: Vec<String>,
pub registry: bool,
pub kind: ContractKind,
pub enforcement_level: Option<EnforcementLevel>,
pub locked_level: Option<String>,
pub competitor: Option<String>,
pub demand_score: Option<i64>,
pub intake_status: Option<IntakeStatus>,
}Expand description
Contract metadata block.
Fields§
§version: String§created: Option<String>§description: String§references: Vec<String>§depends_on: Vec<String>Contract dependencies — other contracts this one composes. Values are contract stems (e.g. “silu-kernel-v1”).
registry: boolLegacy registry flag — prefer metadata.kind: registry for new contracts.
kind: ContractKindContract kind. Defaults to ContractKind::Kernel.
enforcement_level: Option<EnforcementLevel>Per-contract enforcement level (Section 17, Gap 1).
basic → schema valid; standard → + falsification + kani;
strict → + all bindings implemented; proven → + Lean 4 proved.
locked_level: Option<String>Once set, the contract cannot drop below this verification level
without an explicit pv unlock (Section 17, Gap 5).
competitor: Option<String>CRUX competitive-research story: which competitor’s UX the story was
extracted from. Membership-checked against the CRUX_COMPETITORS
registry in schema/validator.rs (rule CRUX-002).
NORMALISED ON PARSE (trimmed). The validator used to .trim() before
comparing, so competitor: " ecosystem " passed CRUX-002 while the
stored value kept its padding: the gate laundered a value it never
fixed, and every consumer reading this field still saw the untrimmed
string. Trimming here means the checked value and the stored value are
the same value.
demand_score: Option<i64>CRUX competitive-research story: demand, documented 1..=5 by
contracts/crux-competitive-research-ux-v1.yaml §“demand_score (1..5)”.
Range-checked by rule CRUX-001.
Deliberately i64, not u8: an out-of-range value must reach the
validator and be reported as demand_score 99999 is outside 1..=5,
not die in serde as an opaque integer-overflow message.
intake_status: Option<IntakeStatus>CRUX competitive-research story: intake status. A closed enum, so an
invented value FAILS TO PARSE (see IntakeStatus).