# Exact ordered feature schema `build_features` returns31float64 slots in the following order. `UtilityModel.load` validates that order against the saved checkpoint; preprocessing uses the saved DEV-only medians,means and scales. Never reorder columns or fit a new scaler on an evaluation cohort. Here s=selected FT5 score,f=full FT5 score,d=B192 score. The implementation `factcascade/features.py` is authoritative for regex/token/overlap details and missing-data behavior. | Slot | Name | Meaning | |---|---|---| | 1 | `ft5_score` | Selected FT5 support score s. | | 2 | `ft5_abs_distance_to_calibrated_threshold` | abs(s-0.763). | | 3 | `b192_score` | B192 support score d. | | 4 | `ft5_b192_delta` | s-d. | | 5 | `ft5_b192_disagreement` | Indicator of (s>0.763) differing from (d>=0.398). | | 6 | `table_or_mixed_indicator` | TABLE_OR_MIXED modality flag. | | 7 | `ft5_margin_x_table` | abs(s-0.763) multiplied by table flag. | | 8 | `ft5_full_score` | Full-packet FT5 support score f. | | 9 | `selected_full_score_delta` | f-s. | | 10 | `selected_full_disagreement` | Indicator of (f>0.763) differing from (s>0.763). | | 11 | `log_ft5_selected_chunks` | log1p(selected FT5 chunk count). | | 12 | `log_ft5_full_chunks` | log1p(full FT5 chunk count). | | 13 | `log_claim_word_count` | log1p(claim whitespace word count). | | 14 | `log_selected_evidence_words` | log1p(selected-evidence whitespace word count). | | 15 | `log_full_evidence_words` | log1p(full-evidence whitespace word count). | | 16 | `log_selected_source_count` | log1p(selected-source count). | | 17 | `selected_source_coverage_ratio` | Supplied selected-source coverage ratio. | | 18 | `ft5_selected_margin_to_050` | abs(s-0.5). | | 19 | `ft5_selected_margin_to_0763` | abs(s-0.763). | | 20 | `ft5_full_minus_selected` | f-s. | | 21 | `b192_minus_ft5_selected` | d-s. | | 22 | `b192_ft5_decision_disagreement` | Historical extra-block disagreement: DEV uses s>0.763, external uses s>0.5, against d>=0.398. | | 23 | `full_only_support_signal` | Indicator of f>0.763 and s<=0.763. | | 24 | `b192_disagreement_x_table_or_mixed` | Slot22 disagreement multiplied by table flag. | | 25 | `selected_full_discrepancy_x_evidence_length_ratio` | abs(f-s)*log1p(full words)/max(1,log1p(selected words)). | | 26 | `claim_negation_proxy_count` | Negation matches plus bounded content terms in negation scope; surface proxy. | | 27 | `claim_comparator_quantifier_count` | Comparator/quantifier regex match count. | | 28 | `claim_numeral_unit_count` | Numeral/unit regex match count. | | 29 | `claim_titlecase_entity_proxy_count` | Titlecase entity surface-proxy count,capped at20; no NER model. | | 30 | `claim_selected_number_overlap_ratio` | Claim numeric strings shared with selected evidence / claim numeric-string count;0 if empty. | | 31 | `claim_entity_selected_minus_full_overlap` | Claim-entity overlap with selected evidence minus overlap with full evidence;0 for empty claim entity set. | Some original names use "disagreement" for a label-derived indicator:slot5 uses the calibrated fallback convention,while slot22 uses the adapter-specific historical convention. Allocation independently uses the raw score gap abs(s-d) in equal-weight rank fusion. These quantities must not be conflated or silently recalibrated. Required build_features keyword arguments:claim,selected_evidence,full_evidence,selected_ft5_score,full_ft5_score,deberta_score,selected_chunks,full_chunks. Optional values are selected_source_count,source_coverage,table_or_mixed,adapter;use registered source geometry and explicit adapter. `adapter="external"` is default,while "dev" preserves the historical extra-block convention. The trained loader supports saved missing-value imputation;the convenience constructor validates supplied scores/counts/text and returns a finite feature vector. This API consumes native verifier observations;it does not run inference,generate evidence,select a source protocol or infer that two adapters are scientifically interchangeable.