fix(folio): bound the total-balance move instead of demanding it exactly

The write finishes before AddTransactionViewModel navigates, but nothing
establishes that Home's total has re-rendered before the frame is read, and
an equality convicts a healthy app for a total one frame behind. A delta of
zero is exactly the shape nine of the eleven measured android false
convictions had. 2x still exceeds x, so all four recorded convictions
survive, checked against the traces.

The trade is real: a balance that moves by LESS than the amount typed is no
longer judged anywhere in this spec.
This commit is contained in:
pj committed 2026-08-15 22:55:09 +05:30
1 parent ae3c9fe091
commit 6e8e6d51fe
3 files changed
+103 -9

No files matched your search

+19 -1
View File
@@ -131,7 +131,11 @@ test("the measured android transition chain no longer convicts at delta 0", () =
);
// What the reset bought the old spec: the same landing, judged against a
// window of one and a total the transition frame had already banked.
// window of one and a total the transition frame had already banked. It
// convicted on a delta of zero, and that shape cannot convict any more even
// with the window reset back to one, because the property is a bound rather
// than an equality. A balance that did not move is under any typed amount,
// whether nothing was submitted or the total has not caught up yet.
assert.equal(
submitChangesBalanceByTypedAmount({
route: "home",
@@ -141,6 +145,20 @@ test("the measured android transition chain no longer convicts at delta 0", () =
prevTotalBalance: 8691100,
currTotalBalance: 8691100,
}),
true,
);
// The double tap it was always meant to catch is untouched by that: two
// 33900 debits against one action still exceed the amount typed for it.
assert.equal(
submitChangesBalanceByTypedAmount({
route: "home",
lastAction: { ...phantomSubmit, kind: "DoubleTap" },
submitsInWindow: 1,
typedAmount: 33900,
prevTotalBalance: 8691100,
currTotalBalance: 8691100 - 67800,
}),
false,
);
});