StaticBuildThe At-Risk options for a model: its resolved outcome config, and risk inverted when the score is the good outcome.
StaticDriverWhether a signed per-row contribution raises the risk the screen shows. Contributions are on the model's own score
(value > 0 pushed the score up). When that score is the probability of the good outcome (invertedRisk, e.g.
P(renew)), pushing it up LOWERS risk.
StaticFormatBuild the MJ: Lists.Name string (At-Risk: <title> (<timestamp>)) truncated to maxLength
(100 chars, matching MJ: Lists.Name NVARCHAR(100)) so long prediction titles never fail save validation.
StaticHumanizeTurn a raw feature/column name into a readable label — RetentionOverdueInvoices → Retention Overdue Invoices, overdue_invoices → Overdue invoices, and a one-hot MembershipType=Student →
Membership Type = Student. Splits camelCase + snake/kebab, spaces one-hot =, collapses whitespace,
and capitalizes the first letter. Already-spaced labels pass through unchanged.
StaticLabelBuild a human-readable label for a record from its (simple) row of the target entity — preferring the
entity's name field (nameField), then Name, else FirstName+LastName (with Email), else Email,
else the first short non-empty string field that is not a UUID (the row's ID adds nothing the caller's record-id
fallback doesn't). Returns null when nothing usable is found (caller falls back to the record id).
StaticParseParse + rank the per-record predictions into the at-risk list (highest risk first).
Optionaloptions: ParseAtRiskOptionsStaticParseStaticRiskStaticRiskThe risk band of a 0–1 risk. Every surface that tiers, filters or counts by risk uses this one rule.
StaticRiskRisk in 0–1 from a model's score: 1 - score when the score is the probability of the good outcome. Clamped on both
paths, so a score outside 0–1 (a regression value such as an LTV of 2500) reads as risk 1, never as 250000%.
StaticSelectThe members of an "At-Risk" list: highest displayed risk first, at least AT_RISK_LIST_MIN_RISK_PCT, at most limit.
StaticTopThe top plain-language drivers for the whole prediction, from the model's global feature importance.
Accepts the object form ({"MembershipType=Student": 0.9, ...}) or the array form
([{feature, importance}]), strips one-hot =value suffixes, de-duplicates, and returns the
highest-importance feature names — so a business user sees feature names, not raw weights.
The At-Risk rules the drawer, the resource, the gate probe and the tests share.