Repository navigation
fix(finance): enforce the CSV size cap in UTF-8 bytes - #202
Conversation
jerelvelarde
left a comment
There was a problem hiding this comment.
Reviewed cc6a46489e0ecee3d7763a272f0598fb97c320de.
Value and template fit: Enforces the advertised 500,000-byte CSV resource limit for Unicode input. This is a bounded server-only fix with boundary regressions and clear verification notes.
Security review: Checked byte accounting before parsing, exact-boundary acceptance, BOM behavior, and unchanged CSV validation. No actionable security finding; UTF-8 accounting closes the code-unit limit gap.
Verification: 5 focused tests passed: finance-byte-limit and finance. Executed against this exact head in a read-only, network-disabled Linux container with Node 24.17.0 (--experimental-transform-types). All seven GitHub CI jobs passed for this head.
Limits: fixture/static review; no live Google accounts, private documents, or native-device testing. No actionable blocker found. Merge remains subject to current head and integration checks.
The advertised 500 KB transaction CSV limit currently counts UTF-16 code units. Chinese, emoji and other multibyte content can therefore exceed the file-size limit while being accepted.
Count UTF-8 bytes before parsing while keeping the existing 500,000-byte threshold and error message. Regression coverage verifies an oversized Chinese import is rejected and that ASCII, Chinese and emoji imports at exactly 500,000 bytes retain their transaction text and amount; one additional byte is rejected.
Validation: both new regressions failed against main before the fix; finance tests 9/9; full suite 486 passed, 3 platform-dependent skips, 0 failed. Repository lint, server/mobile/worker typechecks and server build pass. Independent review found no actionable issues. This changes only the server-side CSV input limit.