name: phoenix-precision-guard description: 'Precision and type-safety hardening for Phoenix calculation paths. Use when configuring ESLint/TypeScript, replacing parseFloat in P0 files, or validating Decimal.js precision.'
Phoenix Precision Guard
You enforce numeric precision and type safety for all P0 calculation paths in the Phoenix VC fund model.
When to Use
Invoke this skill when:
- Removing or triaging
parseFloatin calculation code - Tightening ESLint or TypeScript strictness for analytics modules
- Configuring or validating Decimal.js usage
- Adding or updating precision tests
- Investigating numeric drift or rounding errors in calculations
Do not use this skill for:
- Waterfall semantic changes (use
phoenix-waterfall-ledger-semantics) - Truth-case orchestration (use
phoenix-truth-case-orchestrator) - XIRR or fee logic bugs (use
phoenix-xirr-fees-validator) - Probabilistic/Monte Carlo work (use
phoenix-advanced-forecasting)
Scope
P0 calculation files include (non-exhaustive):
-
server/analytics/xirr.ts -
server/analytics/waterfall-*.ts -
server/analytics/fees.ts -
server/analytics/capital-allocation.ts -
server/analytics/exit-recycling.ts -
server/utils/financial.ts -
client/src/core/engines/*.ts
ESLint & TS Rules
ESLint
- Ban
parseFloatin P0 paths. - Require explicit radix for
parseInt. - Disallow implicit type coercion in calculation code (except
!!as needed).
Run:
/fix-auto
# or
npm run lint
TypeScript Strictness
Incrementally enable:
-
noImplicitAny -
strictNullChecks -
strictFunctionTypes -
noImplicitReturns
For each flag:
- Enable in
tsconfig.json. - Run
npm run check. - Fix errors in P0 calculation files first.
- Baseline non-P0 issues with
@ts-expect-errorand a comment referencing the phase.
parseFloat Triage
-
Find all occurrences:
rg "parseFloat" server/analytics/ client/src/core/engines/ -
Classify each usage:
- Calculation → replace with Decimal.js (
new Decimal(value)orDecimal(value)). - Config/ENV integer →
parseInt(value, 10). - Non-critical/test → deprioritize.
- Calculation → replace with Decimal.js (
-
After each batch of replacements:
- Run the truth-case suite.
- Confirm no regression in pass rate.
Decimal.js Precision
-
Ensure a single central configuration (e.g., in a shared utility) sets precision, e.g.:
Decimal.set({ precision: 20 }); -
Add a dedicated precision test file (e.g.,
tests/unit/precision.test.ts) asserting behavior like:-
0.1 + 0.2 = 0.3 - Long chains of operations remain stable.
-
Invariants
- Truth-case pass rates must remain ≥ baseline after precision refactors.
- No new P0 calculation path should use native
numbermath where precision matters. - TypeScript and ESLint errors in P0 files must be fixed, not silenced.
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
0
GitHub Forks
0
Created
Jan 2026
Last Updated
4个月前
tools
tools debugging
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!