Skip to content

Commit 305eb5a

Browse files
committed
prerelease 10-07 a3: #7505 final head 4cfafa3 validated (37/37 matrix runs, design kept and tightened)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SjCrbdguMkfe4bhbaREiwo
1 parent f12a322 commit 305eb5a

19 files changed

Lines changed: 11955 additions & 3 deletions

‎prerelease_testing/2026-10-07-a3/FINDINGS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ Numbered A3-xx. "Pending verification" until a `verify_*` item reports.
196196
overrides, but never write back an unchanged echo (the verifier's scratch patch of the compiled state.js: 0 storms).
197197
- **Fix prototyped (10-07, at the maintainer's request)** on branch `claude/a3-11-storage-echo` (frontend only, `state.js`): do not write
198198
an echoed localStorage value back unless the value stored now is one the tab itself wrote after sending it (cookies and session
199-
storage written as before); on a storage event send the value stored now, not `e.newValue`. Final commit d03ddb107 vs published
199+
storage written as before); on a storage event send the value stored now, not `e.newValue`. Final head 4cfafa359 vs published
200200
a3: storm driver dev 0/5 (a3 3/4), prod 0/3; `on_load` stamps (A3-12) 0 storms in 16 runs, all converge (a3 4/4 storms); verifier
201201
100 ms RTT and dev-reload scenarios 0 storms in 13 runs (race fired in all 7 click runs). Playwright regression tests fail on main.
202202
PR [reflex-dev/reflex#7505](https://github.com/reflex-dev/reflex/pull/7505); design history in `a3_hydration/pr7505/NOTES.md`.

‎prerelease_testing/2026-10-07-a3/RELEASE_PLAN.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Release plan after the 0.10.0a3 re-verification (reflex / reflex-base 0.10.0a3 + reflex-enterprise 0.9.7a5)
22

3-
**Status: FINAL (#7505 pushed at d03ddb107, awaiting CI/review)** — every exploration item and all four independent verifications (A3-01..A3-12) are in. Rubric (testing skill): fix before release =
3+
**Status: FINAL (#7505 at 4cfafa359, awaiting CI/review)** — every exploration item and all four independent verifications (A3-01..A3-12) are in. Rubric (testing skill): fix before release =
44
confirmed regression vs the previous stable (0.9.12), security-relevant, significant user impact, or trivially small. Evidence:
55
[FINDINGS.md](./FINDINGS.md). Supersedes [../2026-10-07/RELEASE_PLAN.md](../2026-10-07/RELEASE_PLAN.md) for everything it re-checked.
66

@@ -27,7 +27,7 @@ No upgrade regression 0.9.12 → a3 or a2 → a3; F-002/F-003/F-004 stay fixed;
2727
can leave localStorage on the old value; A3-12 is set off by any dev save/deploy/restart with ≥4 tabs whose on_load stamps a synced
2828
var). **Decided 10-07: fix in 0.10.0** — [reflex-dev/reflex#7505](https://github.com/reflex-dev/reflex/pull/7505) (frontend only: an echo
2929
is written back only over a value the tab itself stored after sending it, storage events send the stored value; final commit
30-
d03ddb107: 0 storms and full convergence in 37/37 matrix runs dev/prod incl. 100 ms RTT and dev reload; Playwright regression tests
30+
4cfafa359: 0 storms and full convergence in 37/37 matrix runs dev/prod incl. 100 ms RTT and dev reload; Playwright regression tests
3131
fail on main). Two intermediate designs were rejected during review (one reintroduced the storm, one lost a value when the socket
3232
reply beat the `storage` event) — [a3_hydration/pr7505/NOTES.md](./a3_hydration/pr7505/NOTES.md).
3333
- **A3-01** (LOW, regression vs a2; CONFIRMED) — trivially small arm: in `BaseStateMeta.__setattr__`, push the "kept default" undo entry

‎prerelease_testing/2026-10-07-a3/a3_hydration/pr7505/NOTES.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,11 @@ echo is still written. Result: it does **not** stop the loop. PR Playwright test
5252
1/3 runs stormed (~3.5k storage events per tab, tabs split s3/s2); `/stamp 6` 2/3 stormed (32–36k frames per 5 s), the third
5353
converged after 1,737 frames (PR: ~100). Writing a stale echo flips storage and the other tab answers that flip, so a frontend
5454
fix has to recognise and skip stale echoes, which needs a record of the values sent.
55+
56+
## Final head 4cfafa359 (10-08): design kept, tightened
57+
58+
After the lean-variant result the maintainer kept the design and asked for it to be as tight as possible. Since d03ddb107:
59+
c38383dc8 ignores session-storage `storage` events (cubic); 05f0e4bfd tracks this tab's writes by storage name (Greptile: a write
60+
through a non-synced var sharing a synced var's `name` was missed; new `[shared_name]` test fails on c38383dc8); 4cfafa359 is a
61+
no-behaviour-change cleanup of the code and tests. `results/4cfafa359/`: explorer 24/24 converge, 0 storms (storm dev 71–83 frames,
62+
prod 95; stamp dev6 83–107, dev3 33–51, prod6 89–111); verifier 13/13, 0 storms, race fired 7/7. Playwright 24/24, Selenium 23/23.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
fix dev n=6 run 1: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 94, "finals": ["8e7b05-1", "8e7b05-1", "8e7b05-1", "8e7b05-1", "8e7b05-1", "8e7b05-1"], "storage_events": [6, 6, 6, 6, 5, 6]}
2+
fix dev n=6 run 2: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 103, "finals": ["f328b3-1", "f328b3-1", "f328b3-1", "f328b3-1", "f328b3-1", "f328b3-1"], "storage_events": [7, 6, 6, 7, 7, 7]}
3+
fix dev n=6 run 3: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 107, "finals": ["9dde0f-1", "9dde0f-1", "9dde0f-1", "9dde0f-1", "9dde0f-1", "9dde0f-1"], "storage_events": [7, 8, 8, 6, 8, 8]}
4+
fix dev n=6 run 4: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 94, "finals": ["a3277c-1", "a3277c-1", "a3277c-1", "a3277c-1", "a3277c-1", "a3277c-1"], "storage_events": [6, 6, 6, 5, 6, 6]}
5+
fix dev n=6 run 5: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 83, "finals": ["888c74-1", "888c74-1", "888c74-1", "888c74-1", "888c74-1", "888c74-1"], "storage_events": [5, 5, 5, 5, 5, 5]}
6+
fix dev n=6 run 6: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 83, "finals": ["650ea9-1", "650ea9-1", "650ea9-1", "650ea9-1", "650ea9-1", "650ea9-1"], "storage_events": [5, 5, 5, 5, 5, 5]}
7+
fix dev n=3 run 1: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 51, "finals": ["0dea01-1", "0dea01-1", "0dea01-1"], "storage_events": [3, 5, 6]}
8+
fix dev n=3 run 2: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 41, "finals": ["bc433a-1", "bc433a-1", "bc433a-1"], "storage_events": [4, 4, 2]}
9+
fix dev n=3 run 3: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 42, "finals": ["af77d8-1", "af77d8-1", "af77d8-1"], "storage_events": [2, 4, 4]}
10+
fix dev n=3 run 4: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 33, "finals": ["1d9dbd-1", "1d9dbd-1", "1d9dbd-1"], "storage_events": [2, 2, 2]}
11+
fix dev n=3 run 5: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 33, "finals": ["aedd94-1", "aedd94-1", "aedd94-1"], "storage_events": [2, 2, 2]}
12+
fix dev n=3 run 6: {"path": "/stamp", "n": 3, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 42, "finals": ["a6810c-1", "a6810c-1", "a6810c-1"], "storage_events": [4, 3, 3]}
13+
fix prod n=6 run 1: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 89, "finals": ["be46a3-1", "be46a3-1", "be46a3-1", "be46a3-1", "be46a3-1", "be46a3-1"], "storage_events": [5, 6, 6, 6, 6, 6]}
14+
fix prod n=6 run 2: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 95, "finals": ["584e35-1", "584e35-1", "584e35-1", "584e35-1", "584e35-1", "584e35-1"], "storage_events": [6, 7, 7, 7, 6, 7]}
15+
fix prod n=6 run 3: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 89, "finals": ["ce40e5-1", "ce40e5-1", "ce40e5-1", "ce40e5-1", "ce40e5-1", "ce40e5-1"], "storage_events": [6, 5, 6, 6, 6, 6]}
16+
fix prod n=6 run 4: {"path": "/stamp", "n": 6, "converged": true, "storm": false, "windows_5s": [0, 0], "frames_total": 111, "finals": ["f5b689-1", "f5b689-1", "f5b689-1", "f5b689-1", "f5b689-1", "f5b689-1"], "storage_events": [8, 9, 9, 7, 8, 9]}
17+
--- fix dev run 1
18+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 3, "t2": 2, "t3": 2, "t4": 2, "t5": 2, "t6": 2}, "frames_total": 73, "frames_in_quiet_2s": 0, "converged": true}
19+
--- fix dev run 2
20+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 3, "t2": 2, "t3": 2, "t4": 2, "t5": 2, "t6": 2}, "frames_total": 73, "frames_in_quiet_2s": 0, "converged": true}
21+
--- fix dev run 3
22+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 3, "t2": 3, "t3": 3, "t4": 3, "t5": 3, "t6": 3}, "frames_total": 83, "frames_in_quiet_2s": 0, "converged": true}
23+
--- fix dev run 4
24+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 2, "t2": 2, "t3": 2, "t4": 2, "t5": 2, "t6": 2}, "frames_total": 71, "frames_in_quiet_2s": 0, "converged": true}
25+
--- fix dev run 5
26+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 2, "t2": 1, "t3": 2, "t4": 2, "t5": 2, "t6": 3}, "frames_total": 71, "frames_in_quiet_2s": 0, "converged": true}
27+
--- fix prod run 1
28+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 4, "t2": 4, "t3": 4, "t4": 4, "t5": 4, "t6": 4}, "frames_total": 95, "frames_in_quiet_2s": 0, "converged": true}
29+
--- fix prod run 2
30+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 4, "t2": 4, "t3": 4, "t4": 4, "t5": 4, "t6": 4}, "frames_total": 95, "frames_in_quiet_2s": 0, "converged": true}
31+
--- fix prod run 3
32+
S: {"observe_windows_5s": [], "finals": {"t0": "s5", "t1": "s5", "t2": "s5", "t3": "s5", "t4": "s5", "t5": "s5", "t6": "s5"}, "ls_final": "s5", "storage_events_per_tab": {"t0": 0, "t1": 5, "t2": 5, "t3": 5, "t4": 5, "t5": 5, "t6": 5}, "uvi_per_tab": {"t0": 0, "t1": 4, "t2": 4, "t3": 4, "t4": 4, "t5": 4, "t6": 4}, "frames_total": 95, "frames_in_quiet_2s": 0, "converged": true}

0 commit comments

Comments
 (0)