code wiki / (root) / nx_creditcard_census.nx

nx_creditcard_census.nx source

↩ module page · 93 lines · 9431 B

1// nx_creditcard_census.nx -- HONEST HAVE/PARTIAL/GAP census for the CREDIT-CARD REWARDS-vs-INTEREST domain. 2// The operator's ask: a true-friend money helper that SHOWS whether interest payments are eating your rewards, 3// lays out the honest OPTIONS, and helps a person maximize spend + savings -- WITHOUT the affiliate pushiness 4// every other card site has. This organ maps that specific domain and marks what a sovereign engine already 5// HAS vs must still BUILD. Evidence-backed + liar-killed: a HAVE/PARTIAL claim must OPEN the real organ it 6// cites (cc_have) or it is downgraded to a logged LIE-GAP -- coverage cannot be faked by symbol-presence. 7// permille = (have*1000 + partial*500) / total. A LOW number here is HONEST -- it is the roadmap, not a failure. 8// Placement: extends the personal-money OS (nx_money_* / nx_debt / nx_fin_finance) with the rewards+interest arm. 9// license_tier: ORIGINAL expect_exit: 0 10import "nx_gate.nx" 11 12func cc_have(path: *u8) -> i64 { let fd: i64 = sys_openat_rd(path); if fd < 0 { return 0 } sys_close(fd); return 1 } 13 14// c = [have, partial, gap, lie]. kind: 2=HAVE, 1=PARTIAL, 0=GAP. HAVE/PARTIAL are LIAR-KILLED: the cited file must open. 15func cc_row(kind: i64, label: *u8, path: *u8, note: *u8, c: *i64) -> i64 { 16 let opens: i64 = cc_have(path) 17 if kind == 2 { 18 if opens == 1 { c[0] = c[0] + 1; gw(" [HAVE ] " as *u8) } 19 if opens == 0 { c[2] = c[2] + 1; c[3] = c[3] + 1; gw(" [LIE-GAP] " as *u8) } 20 } 21 if kind == 1 { 22 if opens == 1 { c[1] = c[1] + 1; gw(" [PARTIAL] " as *u8) } 23 if opens == 0 { c[2] = c[2] + 1; c[3] = c[3] + 1; gw(" [LIE-GAP] " as *u8) } 24 } 25 if kind == 0 { c[2] = c[2] + 1; gw(" [GAP ] " as *u8) } 26 gw(label); gw(" -> " as *u8); gw(note); gw("\n" as *u8) 27 return 0 28} 29 30func main() -> i64 { 31 let c: *i64 = sys_mmap(64) as *i64 32 c[0] = 0; c[1] = 0; c[2] = 0; c[3] = 0 33 gw("=== nx_creditcard_census: rewards vs interest -- is the interest eating the rewards, and what are the honest options? ===\n" as *u8) 34 gw(" (HAVE = a real sovereign organ opens on disk; PARTIAL = substrate exists but not card-aware; GAP = must build. liar-killed.)\n\n" as *u8) 35 36 gw("-- A. THE HEADLINE: does the interest eat the rewards? --\n" as *u8) 37 cc_row(2, "exact no-float APR / interest math " as *u8, "runtime/nx_money.nx" as *u8, "mny_apply_rate / mny_rate_monthly: interest to the cent, banker-rounded (no float error)" as *u8, c) 38 cc_row(2, "carry-a-balance interest + min-pay trap " as *u8, "runtime/nx_debt.nx" as *u8, "dbt_payoff_months: total interest to pay off a balance, DETECTS the minimum-payment trap" as *u8, c) 39 cc_row(2, "rewards earned on a real spend profile " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_rewards_annual: categorized spend profile -> cash-equivalent rewards (gate 14/14)" as *u8, c) 40 cc_row(2, "REWARDS-vs-INTEREST NET (the ask) " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_net_annual: rewards + signup - fee - interest; NEGATIVE = interest eats the rewards (gate-proven)" as *u8, c) 41 cc_row(2, "break-even carried balance " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_breakeven_balance: the carried balance where interest cancels a full year of rewards" as *u8, c) 42 43 gw("\n-- B. MODELING THE REWARDS --\n" as *u8) 44 cc_row(2, "card reward model (category rates + fee) " as *u8, "runtime/nx_card_rewards.nx" as *u8, "a card = category bps + annual fee + sign-up terms as DATA (Cardinal 11); statement credits = refinement" as *u8, c) 45 cc_row(2, "points / miles valuation (cents per pt) " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_point_bps: points_per_dollar x cents_per_point -> honest cash-equivalent bps (cash floor default)" as *u8, c) 46 cc_row(2, "sign-up bonus math (min-spend + window) " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_signup_value: bonus credited ONLY if reachable without overspending to chase it" as *u8, c) 47 cc_row(0, "category optimization (best card per bucket)" as *u8, "" as *u8, "which card to swipe for groceries vs gas vs dining, given the cards you hold" as *u8, c) 48 cc_row(0, "redemption strategy (cash vs travel) " as *u8, "" as *u8, "the highest-value honest redemption for THIS person, not the flashiest" as *u8, c) 49 50 gw("\n-- C. THE OPTIONS (what to do), un-pushy --\n" as *u8) 51 cc_row(1, "rank cards by TRUE net value to this person" as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_pick ranks two options by net-to-user (NO commission input); a full N-card ranker is R4" as *u8, c) 52 cc_row(0, "annual-fee break-even for this person " as *u8, "" as *u8, "does the fee earn itself back on THEIR real spend, or is a no-fee card better" as *u8, c) 53 cc_row(1, "revolver -> low-APR / balance-transfer " as *u8, "runtime/nx_fin_finance.nx" as *u8, "fe_total_cost ranks by TRUE cost incl fees; needs card-reward awareness to specialize" as *u8, c) 54 cc_row(0, "multi-card portfolio (optimal set) " as *u8, "" as *u8, "the smallest set of cards that covers a spend profile, fees netted" as *u8, c) 55 cc_row(1, "no-affiliate honest ranking (the pattern) " as *u8, "runtime/nx_fin_finance.nx" as *u8, "the scam-shield already ranks by user-value and EXCLUDES bait; reuse the honest-by-construction idiom" as *u8, c) 56 57 gw("\n-- D. THE TRUE-FRIEND INVARIANT (no pushiness, by construction) --\n" as *u8) 58 cc_row(2, "revolver-protection rule " as *u8, "runtime/nx_card_rewards.nx" as *u8, "cr_verdict: carry a balance -> INTEREST EATS REWARDS (0) -> pay down first (gate-proven both ways)" as *u8, c) 59 cc_row(1, "deferred-interest / store-card shield " as *u8, "runtime/nx_fin_finance.nx" as *u8, "fe_risk flags predatory/usury; deferred-interest store-card traps need a specific rule" as *u8, c) 60 cc_row(0, "tone gate (no urgency, no apply-now push) " as *u8, "" as *u8, "a gate that refuses pressure language -- the medbilling never-says-fight pattern, for money advice" as *u8, c) 61 62 gw("\n-- E. DATA-IN + SITUATION (what the person actually spends) --\n" as *u8) 63 cc_row(2, "spend-profile ingestion (own CSV, no Plaid)" as *u8, "runtime/nx_money_ledger.nx" as *u8, "parses a user-owned statement export into a categorized ledger -- sovereign, no data broker" as *u8, c) 64 cc_row(2, "spend categorization + pattern " as *u8, "runtime/nx_spend_analyze.nx" as *u8, "needs/wants + recurring detection: the category weights the rewards engine needs" as *u8, c) 65 cc_row(1, "payment-behavior model (payer vs revolver) " as *u8, "runtime/nx_money_situation.nx" as *u8, "has DTI / cash-flow / surplus; needs a card-utilization + pays-in-full signal added" as *u8, c) 66 cc_row(1, "situation-aware fit (does a card fit them) " as *u8, "runtime/nx_money_situation.nx" as *u8, "sit_priority routes crisis/efund/debt/invest -> would steer a revolver AWAY from rewards" as *u8, c) 67 68 gw("\n-- F. GROUNDING (the researcher) --\n" as *u8) 69 cc_row(0, "credit-card-rewards research corpus " as *u8, "" as *u8, "reward structures, cents-per-point, the rewards trap, CFPB card data -- corpus probe: ABSENT" as *u8, c) 70 71 gw("\n-- G. MEASURE + SURFACE --\n" as *u8) 72 cc_row(2, "critic + adversary: ruler survives red-team" as *u8, "runtime/nx_card_adversary_gate.nx" as *u8, "the rewards-vs-interest verdict discriminates a good card from the 'rewards always win' fake (gate 7/7)" as *u8, c) 73 cc_row(0, "reality-check vs named card apps " as *u8, "" as *u8, "measured HONEST standing vs NerdWallet / CardPointers / Kudos / MaxRewards before any claim" as *u8, c) 74 cc_row(0, "UI: rewards-vs-interest calculator + picker" as *u8, "" as *u8, "a zero-JS page on the public edge: enter spend + balance -> see net + the honest options" as *u8, c) 75 76 let total: i64 = c[0] + c[1] + c[2] 77 let permille: i64 = (c[0] * 1000 + c[1] * 500) / total 78 gw("\n--- TALLY ---\n HAVE=" as *u8); gn(c[0]); gw(" PARTIAL=" as *u8); gn(c[1]); gw(" GAP=" as *u8); gn(c[2]) 79 gw(" of " as *u8); gn(total); gw(" capabilities (LIE-GAP downgrades caught = " as *u8); gn(c[3]); gw(")\n" as *u8) 80 gw(" rewards-vs-interest domain coverage = " as *u8); gn(permille); gw(" permille (partial counts half)\n" as *u8) 81 82 gw("\n--- VERDICT ---\n" as *u8) 83 gw(" The MONEY SUBSTRATE is real and reusable: exact interest math (nx_money), the carry-a-balance +\n" as *u8) 84 gw(" min-payment-trap engine (nx_debt), sovereign spend ingestion + categorization (nx_money_ledger,\n" as *u8) 85 gw(" nx_spend_analyze), and the honest-by-construction scam-shield idiom (nx_fin_finance) that already\n" as *u8) 86 gw(" ranks by user-value and refuses bait. What is GREENFIELD is the REWARDS side and the JOIN of the\n" as *u8) 87 gw(" two: model a card, earn rewards on a real spend profile, then NET rewards against interest + fees\n" as *u8) 88 gw(" -- the exact 'is the interest eating my rewards' headline -- plus the un-pushy recommender + a UI.\n" as *u8) 89 gw(" DONE this arc: R2/R3 nx_card_rewards (earn + the rewards-vs-interest NET, gate 14/14) + the critic/\n" as *u8) 90 gw(" adversary ruler (gate 7/7 = LAW). NEXT: R1 researcher (ground the domain corpus), R4 nx_card_advise\n" as *u8) 91 gw(" (full recommender + tone gate), R5 reality-check vs NerdWallet/CardPointers + a zero-JS UI on the edge.\n" as *u8) 92 sys_exit(0); return 0 93}