Validate React on Rails RC5 in the RSC tutorial - #826
Conversation
🚀 Quick Review App CommandsWelcome! Here are the commands you can use in this PR:
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No description provided. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 4 included reviews per hour; 0 remain after this review. WalkthroughThe pull request updates dependency pins, changes the Node Renderer startup command to direct bundled Node execution, updates related documentation and validation, and increases QA runner memory from 1Gi to 2Gi. ChangesProject Updates
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Other Merge Risk: ⚪ Minimal · up to The dependency and renderer updates preserve the inspected contracts, and the memory increase is limited to QA jobs; no merge-blocking risk is established. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
+review-app-deploy |
|
Review summaryThis is a clean, well-tested, purely mechanical dependency bump (Gemfile/Gemfile.lock, package.json/yarn.lock, README) — no application code changed. The PR description documents thorough validation (rspec, jest, rubocop, eslint, manual smoke tests), and all version references stay consistent across Gemfile, Gemfile.lock, package.json, yarn.lock, and README (no stale Two things worth a second look before this becomes a merge candidate (left as inline comments too):
No security or performance concerns beyond the general risk of running pre-release dependencies. The |
|
No description provided. |
❌ Review App Deployment FailedDeployment failed for PR #826, commit 4649075 🎮 Control Plane Console |
|
+review-app-delete |
|
No description provided. |
✅ Review App DeletedReview app for PR #826 is deleted |
|
+review-app-deploy |
|
No description provided. |
❌ Review App Deployment FailedDeployment failed for PR #826, commit 4649075 🎮 Control Plane Console |
|
+review-app-delete |
|
No description provided. |
✅ Review App DeletedReview app for PR #826 is deleted |
|
No description provided. |
ReviewThe core change (bumping Two things worth flagging that go beyond what the PR description covers:
|
| set -e | ||
| bundle exec rake react_on_rails_pro:pre_seed_renderer_cache | ||
| exec yarn node-renderer | ||
| exec /usr/local/node/bin/node renderer/node-renderer.js |
There was a problem hiding this comment.
This hardcodes an image-internal path that's already redundant: .controlplane/Dockerfile sets ENV PATH=/usr/local/node/bin:$PATH, and the default Docker CMD still runs bare node renderer/node-renderer.js. Bare node here would resolve identically while staying consistent with the Dockerfile and avoiding 4 files (this one, readme.md, shakacode-team.md, bin/test-cpflow-github-flow) that now need to change together if the image's Node location ever moves. Also this change (and the memory bump above) isn't mentioned in the PR description, which only calls out the RC5 version pins.
There was a problem hiding this comment.
🤖 Codex (configured gpt-5.6-sol, medium): Updated current head 67d78d7 to use non-login bash -c and the Dockerfile-aligned exec node renderer/node-renderer.js. I reproduced the login-shell PATH loss in the Ruby slim base image; the offline template contract and local validation pass. The same fix on baseline PR #827 reached a ready Node Renderer and served deployed HTTP/RSC checks. The #826 effective deployed check is still pending.
|
No description provided. |
|
+review-app-deploy |
|
No description provided. |
🎉 Deploy Complete!Open Review AppDeployment successful for PR #826, commit 67d78d7 🎮 Control Plane Console |
justin808
left a comment
There was a problem hiding this comment.
🤖 Codex (configured gpt-5.6-sol, medium) walkthrough for head 67d78d7a4c00b20a3b313a8530f66618b90dc424
This PR tests the published React on Rails 17.1.0 RC5 combination in the public Webpack/RSC tutorial. The Ruby locks and Yarn lock retain the versions originally tested at commit 4649075; the later commits only repair review-app startup. The RC dependency pins are validation inputs and this PR is intentionally left unmerged while it contains prerelease versions.
The original release runner failure never produced a replica at 300m/1Gi. A provider probe with that exact RC5 image completed at 300m/2Gi. The review-app runner default now uses 2Gi while CPU and the 900-second deadline stay fixed. The subsequent renderer error, exec: yarn: not found, came from a login shell resetting the Dockerfile's Node PATH in the Ruby slim base image. The renderer workload now uses bash -c and the direct Node entrypoint; its probe, port, deploy order, and resource settings remain the same.
At the current head, local lint/offline cpflow contract/actionlint and production Webpack/RSC build passed. Hosted smoke, JS, lint, and Claude review passed; RSpec attempt 2 passed 80 examples on the same SHA after attempt 1's renderer-artifact-change errors. The effective review-app deployment finished green: the release runner succeeded, Node Renderer and Rails became ready on the new image, root and RSC HTML returned HTTP 200, and both RSC payloads returned HTTP 200 nonempty NDJSON. In a real browser, Refresh updated live server data, Simulate Error showed the error boundary, and Retry recovered it.
The persistent QA provider dictionary's missing reference was populated without committing any value; retaining that external edit awaits explicit maintainer review for the release ledger. The RSpec first-attempt intermittency is disclosed. Reverting these deployment commits or replacing the RC pins with reviewed stable versions is the code rollback/closeout path; no merge or release promotion is requested by this review.
|
No description provided. |
✅ Review App DeletedReview app for PR #826 is deleted |
🤖 Codex (model and effort unavailable for this task)
Commit-pinned reviewer walkthrough.
Why
The tutorial's public default branch still resolves React on Rails 17.0.0 and an older RSC package. This PR tests the published
v17.1.0.rc.5release candidate in the tutorial's Pro, node renderer, and RSC path. The open RC3 validation PR remains a separate earlier-candidate record.Change
react_on_rails_proand its dependent OSS gem to17.1.0.rc.5; pin the Pro and node-renderer npm packages to17.1.0-rc.5.react-on-rails-rscat19.3.0-rc.4, with React, React DOM, and React Server DOM Webpack aligned at19.2.8.Validation
RC artifact test commit:
46490755cbeaf21c319b2f61c62fed09e5052928; current PR head:67d78d7a4c00b20a3b313a8530f66618b90dc424; base:f760670c2097fe10382cee63d23cc28b41822a65.yarn build:devcompiled client, SSR server, and RSC bundles, including the empty"use client"registration module.bundle exec rake ci:js: 4 suites, 16 tests passed.bundle exec rake ci:rspec: 80 examples passed with this lane's local node renderer and a compatible ChromeDriver selected by Selenium Manager. Targeted SSR/RSC request and browser system specs: 13 examples passed, including hydration, Refresh, and error recovery./and/server-componentsreturned HTTP 200; the RSC payload endpoint returned HTTP 200,application/x-ndjson, and a nonempty stream.git diff --checkpassed.masterfound no actionable issues. The current-head hosted and deployed results are recorded below.Review-app startup repair
After the RC5 image built, its release runner failed to start at 300m CPU/1Gi memory. An isolated provider job with that exact image completed at 300m/2Gi; this head adds the 2Gi review-app runner default without changing CPU or the 900-second deadline. The next workload reached cache seeding but failed because its
yarnlauncher was absent at runtime. The Node Renderer template now uses non-loginbash -cand runsnode renderer/node-renderer.js, preserving the Dockerfile's NodePATH. The PATH reset was reproduced in the Ruby slim base image. These two deployment fixes are also proposed independently for the default branch in #827.The shared QA review environment also needed a missing secret reference populated in its persistent provider dictionary; no secret value was committed. This external configuration edit awaits explicit maintainer review before the downstream release gate is marked passed.
At current head
67d78d7a4c00b20a3b313a8530f66618b90dc424, local.agents/bin/validate, the offline cpflow contract/template/workflow YAML/actionlint check, andgit diff --checkpassed.RAILS_ENV=production NODE_ENV=production bundle exec bin/rails react_on_rails:assets:webpackbuilt production client, SSR, and RSC bundles with nonempty manifests. The hosted demo fleet smoke, JavaScript tests, lint, and Claude review are green. RSpec on the same SHA passed 80 examples on attempt 2; attempt 1 failed with renderer-artifact-change errors under seed 51123. That intermittency is recorded rather than presented as a consistently green first pass.The effective exact-head review-app deploy completed green. Its 300m/2Gi release runner succeeded, then the Node Renderer and Rails became ready on image
67d78d7. The deployed review app returned HTTP 200 for/and/server-components; both/rsc_payload/LiveActivityand/rsc_payload/ServerComponentsPage?props=%7B%7Dreturned HTTP 200 nonemptyapplication/x-ndjsonstreams. In a real browser, Refresh fetched a new server time, Simulate Error showed the intended error boundary, and Retry restored the live server card.This PR supplies one downstream gate for release tracker #4842. It does not request a merge or decide the release.
Summary by CodeRabbit
Native usage
67d78d7 / implementation
SHARED source interval: 2026-09-15T08:07:13.022Z through 2026-09-15T09:46:58.843Z. Snapshot through the last observed response.
Source selection: host context.
Codex source versions: 0.154.0-alpha.6.2.