code wiki / (root) / nx_hardship_nav.nx

nx_hardship_nav.nx

buildroot/runtime/nx_hardship_nav.nx

3839 B55 linesdepth 2pulls 2 transitivereach 1 importersview sourcekind library
docsdependenciesstructsconstsfunctions

about

nx_hardship_nav.nx -- the HARDSHIP / RELIEF module (operator's explicit emphasis; where sit_priority=0 routes). Computable, verifiable eligibility + impact math for the relief paths: bankruptcy means-test (11 USC 707(b)), PSLF/IDR loan forgiveness tracking, and forbearance interest-accrual impact. Integer-exact (cents/bps/months). DOCTRINE: these are REGULATED. This is decision-SUPPORT + eligibility screening + draft-prep ONLY -- a licensed attorney / advisor signs. hn_requires_professional() = 1 always for these paths. license_tier: ORIGINAL

dependencies 1 imports · 1 importers

nx_syscalls.nx nx_hardship_nav.nx nx_hardship_nav_gate.nx

imports: nx_syscalls.nx

imported by: nx_hardship_nav_gate.nx

structs

none

consts

7const PSLF_MAGIC_10000: i64 = 10000
8const PSLF_MAGIC_120000: i64 = 120000
10const PSLF_REQUIRED_PAYMENTS: i64 = 120 // 120 qualifying payments (34 CFR 685.219 -- PSLF)
12const MT_CH7_OK: i64 = 0 // below median OR low disposable -> Chapter 7 available
13const MT_NEEDS_ANALYSIS: i64 = 1 // between thresholds -> depends on unsecured debt (further analysis)
14const MT_PRESUMED_ABUSE: i64 = 2 // high disposable -> presumption of abuse -> steered to Chapter 13

functions

17func hn_annualize(monthly_cmi: i64) -> i64 { return monthly_cmi * 12 }
called by 1: main
19func hn_below_median(annual_cmi: i64, state_median: i64) -> i64 { if annual_cmi <= state_median { return 1 } return 0 }
called by 2: hn_ch7_screenmain
21func hn_disposable_monthly(cmi_monthly: i64, allowed_expenses_monthly: i64) -> i64 { return cmi_monthly - allowed_expenses_monthly }
called by 2: hn_ch7_screenmain
23func hn_presumption(disposable_monthly: i64, low_60mo: i64, high_60mo: i64) -> i64
called by 2: hn_ch7_screenmain
31func hn_ch7_screen(annual_cmi: i64, state_median: i64, cmi_monthly: i64, allowed_monthly: i64, low_60mo: i64, high_60mo: i64) -> i64
37func hn_pslf_remaining(qualifying: i64) -> i64 { let r: i64 = PSLF_REQUIRED_PAYMENTS - qualifying; if r < 0 { return 0 } return r }
called by 1: main
38func hn_pslf_complete(qualifying: i64) -> i64 { if qualifying >= PSLF_REQUIRED_PAYMENTS { return 1 } return 0 }
called by 1: main
39func hn_pslf_progress_bps(qualifying: i64) -> i64
called by 1: main
44func hn_idr_remaining(qualifying: i64, plan_months: i64) -> i64 { let r: i64 = plan_months - qualifying; if r < 0 { return 0 } return r }
called by 1: main
48func hn_forbearance_cost(balance: i64, apr_bps: i64, months: i64) -> i64
52func hn_forbearance_balance(balance: i64, apr_bps: i64, months: i64) -> i64 { return balance + hn_forbearance_cost(balance, apr_bps, months) }
called by 1: main calls 1: hn_forbearance_cost
55func hn_requires_professional() -> i64 { return 1 }
called by 1: main