{"schema":"draftadynasty.public-data/v1","readOnly":true,"boundary":"Original observations, research and definitions are provided in full. Read each record's source, period, scoring and availability. Research visibility does not promote a model into public rankings. Missing means unavailable, never zero. No account records or provider write access.","id":"survivor-features","title":"Survivor metric definitions","status":"Definitions","description":"Every feature, priority, stage and missing-data behavior used or proposed for survivor planning.","data":{"schemaVersion":"survivor-feature-registry/v1","updatedAt":"2026-08-21","canonicalProduct":"NFL Survivor","principles":["Current source-labeled survival probability is the dominant input.","Missing ownership remains unavailable and is never interpreted as zero percent.","Used-team eligibility is entry-specific and fails closed.","Probability estimation and contest-equity optimization are separate stages.","Portfolio independence arithmetic is a scenario, not a calibrated correlation claim.","Week 18 reserve health requires one normal selection plus five tiebreak teams for Smartypants."],"features":[{"id":"no_vig_win_probability","priority":1,"stage":"probability","scope":"team_game_week","type":"number_0_1","requiredForCurrentRecommendation":true,"missingBehavior":"unavailable","description":"Current consensus straight-up probability after removing market margin when possible."},{"id":"probability_source_age_minutes","priority":2,"stage":"probability","scope":"source_observation","type":"number_nonnegative","requiredForCurrentRecommendation":true,"missingBehavior":"block_current_label","description":"Age of the probability observation at recommendation time."},{"id":"consensus_source_count","priority":3,"stage":"probability","scope":"market_snapshot","type":"integer_nonnegative","requiredForCurrentRecommendation":false,"missingBehavior":"lower_confidence","description":"Number of independent sources contributing to consensus."},{"id":"market_dispersion","priority":4,"stage":"probability","scope":"market_snapshot","type":"number_nonnegative","requiredForCurrentRecommendation":false,"missingBehavior":"unavailable","description":"Cross-source disagreement in implied win probability."},{"id":"line_move_probability_delta","priority":5,"stage":"probability","scope":"team_game_time","type":"number_signed","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Current probability minus a comparable prior or opening snapshot."},{"id":"pick_ownership","priority":6,"stage":"contest_equity","scope":"contest_team_week","type":"number_0_1_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"null_exclude_leverage_weight","description":"Share of the relevant field selecting the team."},{"id":"ownership_scope","priority":7,"stage":"contest_equity","scope":"source_observation","type":"enum","allowedValues":["smartypants","external_proxy","unavailable"],"requiredForCurrentRecommendation":false,"missingBehavior":"unavailable","description":"Distinguishes contest-specific ownership from an external behavioral proxy."},{"id":"expected_field_elimination","priority":8,"stage":"contest_equity","scope":"contest_team_week","type":"number_0_1_nullable","formula":"pick_ownership * (1 - no_vig_win_probability)","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Expected share of the field eliminated if ownership and probability are sourced."},{"id":"future_value_cost","priority":9,"stage":"contest_equity","scope":"entry_team_week","type":"number_0_1","requiredForCurrentRecommendation":true,"missingBehavior":"conservative_high_cost","description":"Loss in the entry's optimal remaining path caused by using the team now."},{"id":"eligible_after_used_team_filter","priority":10,"stage":"constraint","scope":"entry_team_week","type":"boolean","requiredForCurrentRecommendation":true,"missingBehavior":"false","description":"Hard eligibility gate based on the entry's own used-team inventory."},{"id":"field_size","priority":11,"stage":"contest_equity","scope":"contest_week","type":"integer_positive_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"conservative_mid_stage_weights","description":"Number of live entries; changes survival-versus-leverage weighting."},{"id":"portfolio_wipeout_contribution","priority":12,"stage":"portfolio","scope":"portfolio_candidate","type":"number_0_1","requiredForCurrentRecommendation":true,"missingBehavior":"scenario_only","description":"Incremental complete-portfolio failure exposure from an allocation."},{"id":"qb_status","priority":13,"stage":"probability","scope":"team_week","type":"enum","allowedValues":["confirmed_starter","probable","questionable","out","competition","unknown"],"requiredForCurrentRecommendation":false,"missingBehavior":"unknown_lower_confidence","description":"Source-confirmed starting-quarterback state."},{"id":"qb_change_recency_hours","priority":14,"stage":"probability","scope":"team_week","type":"number_nonnegative_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Time since a material quarterback status change."},{"id":"ol_starters_available","priority":15,"stage":"probability","scope":"team_week","type":"integer_0_5_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"unknown_lower_confidence","description":"Expected starting offensive linemen available."},{"id":"ol_continuity","priority":16,"stage":"probability","scope":"team_week","type":"number_0_1_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Continuity of the expected offensive-line unit."},{"id":"injury_market_delta","priority":17,"stage":"probability","scope":"team_news_event","type":"number_signed_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Clean before/after market change around material injury news; prevents double counting."},{"id":"rest_days","priority":18,"stage":"probability","scope":"team_game","type":"integer_nonnegative_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"neutral_prior","description":"Days since the team's previous game."},{"id":"travel_distance_miles","priority":19,"stage":"probability","scope":"team_game","type":"number_nonnegative_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"neutral_prior","description":"Travel burden for the game."},{"id":"time_zone_shift_hours","priority":20,"stage":"probability","scope":"team_game","type":"number_signed_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"neutral_prior","description":"Time-zone shift from team base to game location."},{"id":"weather_severity","priority":21,"stage":"probability","scope":"game_lock_window","type":"number_0_1_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"inactive_until_decision_relevant","description":"Wind, precipitation, temperature, and venue exposure near lock."},{"id":"late_season_motivation_state","priority":22,"stage":"probability","scope":"team_week","type":"enum","allowedValues":["must_win","seeding_incentive","normal","eliminated_competing","rest_risk","confirmed_rest","unknown"],"requiredForCurrentRecommendation":false,"missingBehavior":"unknown_lower_confidence","description":"Source-confirmed incentive and starter-rest regime for late weeks."},{"id":"opponent_remaining_team_scarcity","priority":23,"stage":"contest_equity","scope":"contest_team_week","type":"number_0_1_nullable","requiredForCurrentRecommendation":false,"missingBehavior":"null","description":"Relative value of a team because opponents have already used it or lack comparable alternatives."},{"id":"week18_reserve_health","priority":24,"stage":"contest_equity","scope":"entry_week","type":"object","requiredForCurrentRecommendation":true,"missingBehavior":"fail_closed","description":"Count and quality of one normal Week 18 option plus five tiebreak teams."},{"id":"recommendation_change_magnitude","priority":25,"stage":"workflow","scope":"entry_snapshot_delta","type":"number_nonnegative","requiredForCurrentRecommendation":false,"missingBehavior":"initial_snapshot","description":"Difference from the prior immutable recommendation used to suppress immaterial alerts."}]},"observedAt":"2026-08-21","sha256":"e68d561cdee8ad9ee4ac15fba002b4b7c5864f5adc2183b9c6a41176414f1eb6","dataPointCount":226,"fields":[{"path":"$[\"schemaVersion\"]","types":["string"]},{"path":"$[\"updatedAt\"]","types":["string"]},{"path":"$[\"canonicalProduct\"]","types":["string"]},{"path":"$[\"principles\"][]","types":["string"]},{"path":"$[\"features\"][][\"id\"]","types":["string"]},{"path":"$[\"features\"][][\"priority\"]","types":["number"]},{"path":"$[\"features\"][][\"stage\"]","types":["string"]},{"path":"$[\"features\"][][\"scope\"]","types":["string"]},{"path":"$[\"features\"][][\"type\"]","types":["string"]},{"path":"$[\"features\"][][\"requiredForCurrentRecommendation\"]","types":["boolean"]},{"path":"$[\"features\"][][\"missingBehavior\"]","types":["string"]},{"path":"$[\"features\"][][\"description\"]","types":["string"]},{"path":"$[\"features\"][][\"allowedValues\"][]","types":["string"]},{"path":"$[\"features\"][][\"formula\"]","types":["string"]}],"freshness":{"mode":"frozen_snapshot","status":"not_live","note":"Original capture date; opening or downloading does not refresh the source. Per-record timestamps take precedence. Definitions may describe unavailable inputs."},"links":{"human":"https://draftadynasty.com/data/survivor-features","json":"https://draftadynasty.com/api/data/survivor-features","csv":"https://draftadynasty.com/api/data/survivor-features?format=csv","view":"https://draftadynasty.com/api/data/survivor-features/view"},"dictionary":{"notation":"JSON bracket paths; [] means every array element. CSV uses concrete zero-based indices. Types are observed, not a promise that future fields cannot change.","missing":"null is unavailable; empty array/object means an empty collection. Zero is preserved as a measured or supplied numeric value.","units":"Source-native units and scoring. Consult metric-definitions for formulas; ambiguous units remain unspecified, never inferred.","hash":"sha256 of UTF-8 JSON.stringify(data), excluding this envelope. Source receipt hashes remain inside data. CSV prefixes formula-looking text with an apostrophe; numeric signs are preserved. JSON keeps original strings."}}