From bf56a76a6dc45084ad1cc405b58a846fc25ae1e5 Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Sat, 12 Sep 2026 18:55:58 -0500 Subject: [PATCH] Account calendar: completion cell says 'Passed' for non-payoutable types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An eval that completes its target passes to the next account rather than paying out — the projected completion marker reads 'Passed ✓' unless the type is marked payoutable on the master. Co-Authored-By: Claude Fable 5 --- app/accounts/[id]/page.tsx | 7 +++++-- types.ts | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/accounts/[id]/page.tsx b/app/accounts/[id]/page.tsx index e5f5d06..8bfc693 100644 --- a/app/accounts/[id]/page.tsx +++ b/app/accounts/[id]/page.tsx @@ -204,7 +204,7 @@ const MONTH_NAMES = [ ]; const DOW_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; -function CalendarMonth({ year, month, pnlMap, fundMap, stageMap, projPnlMap, projFundMap, projStageMap, projProbMap, payoutDate }: { +function CalendarMonth({ year, month, pnlMap, fundMap, stageMap, projPnlMap, projFundMap, projStageMap, projProbMap, payoutDate, payoutLabel }: { year: number; month: number; pnlMap: Map; @@ -217,6 +217,8 @@ function CalendarMonth({ year, month, pnlMap, fundMap, stageMap, projPnlMap, pro /** Cumulative probability of reaching each projected day (fair-walk ruin model). */ projProbMap?: Map; payoutDate?: string; + /** "Payout ✓" for payoutable types; "Passed ✓" for evals that just pass. */ + payoutLabel?: string; }) { const daysInMonth = new Date(year, month, 0).getDate(); const firstDow = new Date(year, month - 1, 1).getDay(); // 0 = Sunday @@ -331,7 +333,7 @@ function CalendarMonth({ year, month, pnlMap, fundMap, stageMap, projPnlMap, pro )} {isPayout && ( - Payout ✓ + {payoutLabel ?? 'Payout ✓'} )} {projProb !== undefined && ( @@ -827,6 +829,7 @@ export default function AccountPage() { projPnlMap={projPnlMap} projFundMap={projFundMap} projStageMap={projStageMap} projProbMap={projProbMap} payoutDate={payoutDate} + payoutLabel={cfg?.payoutable === true ? 'Payout ✓' : 'Passed ✓'} /> ); })} diff --git a/types.ts b/types.ts index 2dbac5b..5b84029 100644 --- a/types.ts +++ b/types.ts @@ -20,7 +20,9 @@ export interface AccountConfig { /** Payout model, from the master's payout settings (absent on old masters): * withdraw withdrawalPct of balance (capped at payoutCap) per cycle, * receive profitSplit of the gross; trailingDrawdown feeds the ruin - * probabilities. */ + * probabilities. payoutable=false means completing the target just + * PASSES the account (an eval) rather than paying out. */ + payoutable?: boolean; withdrawalPct?: number; payoutCap?: number; profitSplit?: number;