- Shipped
- August 27, 2026 at 6:17 AM UTC
- Author
- kamo
- Commit
- 2f5daaa
Both decide what NOT to send, which is the half of a form with no visible symptom when it goes wrong. A blank remittance line must not become a zero. Every line carrying a figure is what closes a claim, so posting zeros for the lines somebody left empty marks it finished while the payer is still working it — and it drops off the awaiting-adjudication queue with money still owed. Nobody notices, because a closed claim looks like a finished one. Zero itself IS a figure: a payer paying nothing is an adjudication, usually a denial, and dropping that would leave the claim open forever — the same bug pointing the other way. An untouched demographics field must not be sent. The server leaves an absent field alone, and diffing against what was loaded is what makes that true: a screen not rendering every column then cannot empty the ones it omits, which is a birth date disappearing because somebody fixed a misspelt surname. A cleared field is not a change to empty either — clearing a name is not something the form offers, so a stray select-all-delete must not wipe it on the next save. Both moved out of their components to be stated once and tested. A rule embedded in JSX is one that gets re-derived slightly differently the next time somebody touches the layout. 12 tests, including that amounts stay strings — parsing them to validate would put binary floating point back into money.