Lessons
SD App — Lessons Learned
Section titled “SD App — Lessons Learned”AI marks
[→ CLAUDE.md]candidates for Talbot approve+promote.
Architecture
Section titled “Architecture”-
TypeScript never do math — all financial calc live Python (sd-math). TypeScript/SvelteKit renderer only. Corrected from initial wrong plan: porting VB6 math to TypeScript.
[→ CLAUDE.md] -
Port ALL math as-is — don’t selectively port only Phase 1 strategies. VB6 and Python near drop-in equivalents. Complete port eliminates conditional logic errors, makes TDD against LevPro outputs straightforward.
-
Phase 1 = SD Snapshot, not interactive calculator — Phase 1 static pre-calculated demo-teaser. Full interactive app (live API calls, user inputs) = Phase 2.
Planning
Section titled “Planning”-
Task → Project migration — SD App scope initially underestimated as Task. Multi-phase project, needs sd-math design, API design, parallel implementation tracks. Caught, corrected before implementation started.
-
Separate design notes before implementation — sd-math structure and API definition must agree before code written. Foundational decisions, affect both parallel tracks.
Testing
Section titled “Testing”-
Normalise fixtures to $100K — varying loan amounts add no testing value, make sanity checks harder. $100K canonical amount for all golden fixtures.
-
2 one-page summaries + 2 projections enough — 10 bottom-line results + 2 annual schedules cover full math. Intermediate values can’t be wrong while summary correct.
- 3 significant digits for one-page summaries — dollar precision (e.g., 28,569) noise at overview level. ”% Increase” column = aha moment. Round balances to 3 significant digits (28,600) in one-page summary only. Projection detail tables keep dollar precision.