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}