Repository navigation
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs changes before merge. What this changesThe React SDK refreshes flags on stream connections and reconnections, with regression coverage, documentation, and equivalent provider-value simplification. Example: With stream enabled and polling set to 60000 milliseconds, souls changes from false to true while disconnected.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness⛔ Needs changes before merge - 1 item remains This PR fixes a reconnect gap that remains on current main; no introduced correctness defect was found, but GitHub reports a merge conflict. Priority: P2 Before merge
FindingsNone. Agent review detailsHow this fits togetherThe React provider receives Worker SSE notifications, requests context-specific flag evaluations with ETags, and supplies values to React consumers and the existing browser cache. flowchart LR
A[Worker change log] --> B[SSE hello and change events]
B --> C[React provider refresh]
C --> D[Public evaluation endpoint]
D --> E[React flag values]
E --> F[Browser cache]
Technical reviewBest possible solution: Land the hello-triggered refresh while preserving current main's stream URL normalization and changelog entries. Do we have a high-confidence way to reproduce the issue? Source establishes the failure: the Worker resets its baseline on each connection and sends hello, while current main refreshes only on change; no target code was run during this review. Is this the best way to solve the issue? Using the existing refresh owner directly addresses missed changes without a second evaluation path, new option, or protocol change. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against c6843b3efda4. Provenance checked
TestingProof path: shipped entry point. SecurityNone. EvidenceWhat I checked:
Likely related people:
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (4 earlier review cycles)
Reviewed October 12, 2026, 9:25 AM ET / 13:25 UTC (Revision 5). |
What Problem This Solves
Fixes stale React SDK flags after the event stream reconnects, when a flag changed while the client was disconnected.
User Impact
With
streamenabled, flags refresh on every stream connection as well as on change events. Existing polling and ETag handling remain in place.Why This Change Was Made
The server starts every stream with
hello. The provider now handles that event through its existing refresh path. The redundant memo around the provider's current value is also removed.Evidence
The focused regression failed before the fix: the initial
helloleft the request count at one instead of two. It now passes, including an unchanged 304 response and a later reconnect that changes the displayed flag while preserving the conditional-request ETag.The full Crabbox AWS gate passed with Node 24.18.1 and pnpm 11.24.0: frozen install, lint, typecheck, all 253 tests (6 script, 37 core, 34 React, 48 CLI, 128 Worker), dashboard/demo/CLI builds, docs build, and packed SDK verification. Lint retained 14 warnings in unchanged CSS.
The built SDK was exercised against a real synthetic HTTP/SSE server using native EventSource. Two initial evaluation requests became three after forced disconnect/reconnect; the displayed flag changed to true, and the reconnect request retained the previous ETag. Polling was set to 60 seconds, so the check verifies the stream-triggered refresh.
Independent Codex review is clean through P2. Exact-head CI and CodeQL passed at
ee6af3f0005a980ac48a4eb29a2bea67cd5ea52b. @vincentkoc has been requested for the required code-owner review; this PR awaits approval.