swift: STATUS.md for the review round, live at 354c88a

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paul Campbell pushed by claude agent, operated by paul@keymail.dev b59ac552abe480cc2ff5da67c984b58fe86a566c parent d249da8
1 file changed, +28 −4
  • apps/swift/STATUS.md +28 −4
diff --git a/apps/swift/STATUS.md b/apps/swift/STATUS.md
index 7f10f32..a382109 100644
--- a/apps/swift/STATUS.md
+++ b/apps/swift/STATUS.md
@@ -1,4 +1,4 @@
-LIVE https://todo-swift.bfj.oncarlos.com 0f5870a
+LIVE https://todo-swift.bfj.oncarlos.com 354c88a
## Checked
@@ -7,9 +7,9 @@ LIVE https://todo-swift.bfj.oncarlos.com 0f5870a
3 skipped (the suite's own skips: blur and Escape need JavaScript, and
the screenshot is compared with JavaScript on only).
- `scripts/boot-check.sh dist/app-linux-arm64`: `/healthz` and
- `/api/version` 200 (`0f5870a`), clean exit on SIGTERM.
-- `make deploy`: shipped and promoted `0f5870a` to `edge`, and the build
- probe reported it live.
+ `/api/version` 200 (`354c88a`), clean exit on SIGTERM.
+- `make deploy`: shipped and promoted `354c88a` to `edge`, and
+ `/api/version` on the live host reports it.
- Shared suite against `https://todo-swift.bfj.oncarlos.com`: 67 passed,
3 skipped.
@@ -22,3 +22,27 @@ LIVE https://todo-swift.bfj.oncarlos.com 0f5870a
- A cold `make build-arm64` takes a few minutes here; an incremental one
after `make bump` recompiles one file.
- Nothing in the contract needed a deviation.
+
+## Review round
+
+Both findings are fixed in `static/app.js` (commit `354c88a`):
+
+1. **Typing during an add.** The form is read and the new-todo input
+ cleared when the form is submitted, not when the answer arrives. A
+ second Enter while the first add is still pending is queued, not
+ dropped. Each edit is saved once, guarded per item, instead of
+ blocking the whole form.
+2. **Stale snapshots.** Actions go through one promise queue, so they
+ reach the server and come back in the order they were made, and the
+ last swap is always the newest state.
+
+Checked by hand in Chromium with Playwright, with the first response held
+back 800 ms. Adding "first", then "second", then typing "third" left both
+items saved and "third" still in the input. Toggling two items quickly
+left both completed, with "0 items left". The shared suite passes
+locally (67 passed, 3 skipped) and against the live host (67 passed,
+3 skipped).
+
+The first `make deploy` was refused with "too many uploads" (a
+platform-side rate limit). My retry loop then shipped the same
+`354c88a` build several more times, which was harmless.