Skip to content

Validate React on Rails RC5 in the RSC tutorial - #826

Merged
justin808 merged 4 commits into
masterfrom
jg-codex/validate-ror17-rc5-tutorial
Sep 17, 2026
Merged

justin808 merged 4 commits into
masterfrom
jg-codex/validate-ror17-rc5-tutorial

Conversation

@justin808

@justin808 justin808 commented Sep 15, 2026

Copy link
Copy Markdown
Member

🤖 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.5 release candidate in the tutorial's Pro, node renderer, and RSC path. The open RC3 validation PR remains a separate earlier-candidate record.

Change

  • Pin react_on_rails_pro and its dependent OSS gem to 17.1.0.rc.5; pin the Pro and node-renderer npm packages to 17.1.0-rc.5.
  • Keep independently versioned react-on-rails-rsc at 19.3.0-rc.4, with React, React DOM, and React Server DOM Webpack aligned at 19.2.8.
  • Regenerate the Ruby and Yarn locks from the public registries and update README version targets. Application source is unchanged.

Validation

RC artifact test commit: 46490755cbeaf21c319b2f61c62fed09e5052928; current PR head: 67d78d7a4c00b20a3b313a8530f66618b90dc424; base: f760670c2097fe10382cee63d23cc28b41822a65.

  • Frozen Yarn install and Bundler dependency check passed.
  • yarn build:dev compiled 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.
  • Local Rails and node renderer smoke: / and /server-components returned HTTP 200; the RSC payload endpoint returned HTTP 200, application/x-ndjson, and a nonempty stream.
  • RuboCop: 59 files, 0 offenses. ESLint: 0 errors and one existing warning. git diff --check passed.
  • Pre-push Codex review of the RC artifact commit against master found 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 yarn launcher was absent at runtime. The Node Renderer template now uses non-login bash -c and runs node renderer/node-renderer.js, preserving the Dockerfile's Node PATH. 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, and git diff --check passed. RAILS_ENV=production NODE_ENV=production bundle exec bin/rails react_on_rails:assets:webpack built 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/LiveActivity and /rsc_payload/ServerComponentsPage?props=%7B%7D returned HTTP 200 nonempty application/x-ndjson streams. 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

  • Chores
    • Updated the React and server-rendering stack to React 19.2.8.
    • Updated React on Rails Pro and related rendering components to their 17.1.0 release candidates.
    • Updated React Server Components support to the 19.3.0 release candidate.
    • Increased default runner memory allocation for improved workload reliability.
  • Documentation
    • Refreshed version targets and Node Renderer startup instructions to match the updated configuration.
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.

Provider Configured model Routed model Effort Input Cached input Output Reasoning output Cache writes Native total
openai gpt-5.6-sol UNKNOWN medium 71466806 70994944 145132 61995 0 71611938

@github-actions

Copy link
Copy Markdown

🚀 Quick Review App Commands

Welcome! Here are the commands you can use in this PR:
They require the repository to have cpflow review apps configured, including the CPLN_TOKEN_STAGING secret.

+review-app-deploy

Deploy your PR branch for testing.

+review-app-delete

Remove the review app when done.

+review-app-help

Show detailed instructions, environment setup, and configuration options.

Comment +review-app-help for full setup details.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 15, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-15T09:22:17.475850Z 67d78d7 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown

No description provided.

@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 099dd143-5142-43bb-a27c-b73347850349

📥 Commits

Reviewing files that changed from the base of the PR and between 4649075 and f29bbb1.

📒 Files selected for processing (5)
  • .controlplane/controlplane.yml
  • .controlplane/readme.md
  • .controlplane/shakacode-team.md
  • .controlplane/templates/node-renderer.yml
  • bin/test-cpflow-github-flow

Included review availability: Your plan provides up to 4 included reviews per hour; 0 remain after this review.


Walkthrough

The 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.

Changes

Project Updates

Layer / File(s) Summary
Update dependency version pins
Gemfile, package.json, README.md
React on Rails Pro and React Server Components versions are updated. React packages are pinned to exact 19.2.8 versions.
Update renderer runtime configuration
.controlplane/controlplane.yml, .controlplane/templates/node-renderer.yml, .controlplane/readme.md, .controlplane/shakacode-team.md, bin/test-cpflow-github-flow
The Node Renderer runs through /usr/local/node/bin/node renderer/node-renderer.js. Documentation and command validation use this command. QA runner memory increases from 1Gi to 2Gi.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to f29bb

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)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: validating React on Rails RC5 in the RSC tutorial. It is concise, specific, and consistent with the dependency and renderer updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jg-codex/validate-ror17-rc5-tutorial

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@justin808

Copy link
Copy Markdown
Member Author

+review-app-deploy

Comment thread package.json
Comment thread Gemfile
@greptile-apps

greptile-apps Bot commented Sep 15, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

The dependency pins, generated lockfiles, and documented targets are internally consistent, and the PR appears safe to merge.

Summary

This PR updates the tutorial’s coordinated React on Rails release-candidate validation stack and regenerates its dependency locks.

  • Pins the Pro gem, Pro npm package, and node renderer to 17.1.0 RC5.
  • Aligns React, React DOM, and React Server DOM Webpack at 19.2.8.
  • Updates the independently versioned RSC package to 19.3.0 RC4.
  • Documents the resulting version targets in the README.

Reviews (1) · Last reviewed commit: "Validate tutorial against React on Rails..."

@claude

claude Bot commented Sep 15, 2026

Copy link
Copy Markdown

Review summary

This 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 17.0.0/19.2.7/RC-9 leftovers found).

Two things worth a second look before this becomes a merge candidate (left as inline comments too):

  1. react/react-dom/react-server-dom-webpack switched from a semver range (~19.2.7) to exact pins (19.2.8) — a versioning-policy change beyond just bumping the RC, which stops automatic patch pickup if it lands on master long-term.
  2. Pre-release (.rc.5/-rc.4) versions pinned in Gemfile/package.json — fine for this validation checkpoint per the PR description ("does not request a merge or decide the release"), but worth confirming this branch won't land on master as-is so tutorial users don't end up installing release candidates.

No security or performance concerns beyond the general risk of running pre-release dependencies. The Gemfile.lock diff (async/protocol-* transitive bumps, metrics/traces gems dropped) all looks like normal bundle lock output tracking upstream react_on_rails_pro's updated dependency graph, not a manual edit issue.

@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

❌ Review App Deployment Failed

Deployment failed for PR #826, commit 4649075

🎮 Control Plane Console
📋 View Failed Action Build and Deploy Logs

@github-actions
github-actions Bot temporarily deployed to review/qa-react-webpack-rails-tutorial-826 September 15, 2026 07:20 Destroyed
@justin808

Copy link
Copy Markdown
Member Author

+review-app-delete

@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

✅ Review App Deleted

Review app for PR #826 is deleted

🎮 Control Plane Console
📋 View Workflow Logs

@justin808

Copy link
Copy Markdown
Member Author

+review-app-deploy

@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

❌ Review App Deployment Failed

Deployment failed for PR #826, commit 4649075

🎮 Control Plane Console
📋 View Failed Action Build and Deploy Logs

@github-actions
github-actions Bot temporarily deployed to review/qa-react-webpack-rails-tutorial-826 September 15, 2026 08:11 Destroyed
@justin808

Copy link
Copy Markdown
Member Author

+review-app-delete

@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

✅ Review App Deleted

Review app for PR #826 is deleted

🎮 Control Plane Console
📋 View Workflow Logs

@github-actions

Copy link
Copy Markdown

No description provided.

@claude

claude Bot commented Sep 15, 2026

Copy link
Copy Markdown

Review

The core change (bumping react_on_rails_pro/react-on-rails-rsc/React to the RC5 validation set in Gemfile, package.json, and the lockfiles) is a straightforward, well-tested version pin update — no concerns there.

Two things worth flagging that go beyond what the PR description covers:

  1. Undisclosed scope creep in .controlplane/. The PR description ("Change" section) only mentions gem/npm version pins and lockfile regeneration, but the diff also includes:

    • Bumping runner_job_default_memory from 1Gi to 2Gi in .controlplane/controlplane.yml.
    • Switching the node-renderer boot command from yarn node-renderer to a hardcoded /usr/local/node/bin/node renderer/node-renderer.js (in .controlplane/templates/node-renderer.yml, .controlplane/readme.md, .controlplane/shakacode-team.md, and bin/test-cpflow-github-flow).

    Neither change is mentioned in the PR's stated rationale or validation notes, so reviewers evaluating "does this correctly validate RC5" may not notice these unrelated ops changes riding along. Worth calling out explicitly in the description (or splitting into a separate PR) since they affect production/review-app deploy behavior, not just RC validation.

  2. The hardcoded Node path is unnecessary and adds a maintenance surface. Per .controlplane/Dockerfile, the image already sets ENV PATH=/usr/local/node/bin:$PATH, and the default Docker CMD still just runs node renderer/node-renderer.js (no absolute path). So the switch to /usr/local/node/bin/node ... in the workload template doesn't change resolution behavior (bare node already resolves to the same binary) — it just hardcodes an internal image path in 4 separate files instead of 1. If the image's Node install location or install mechanism ever changes, all 4 references need to be updated in lockstep, whereas leaving it as bare node (matching the Dockerfile CMD) would need none. If the actual goal was to bypass the yarn wrapper (e.g., to avoid yarn's PATH/signal-handling overhead), that could be achieved with exec node renderer/node-renderer.js without hardcoding the absolute path.

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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.

@github-actions

Copy link
Copy Markdown

No description provided.

@justin808

Copy link
Copy Markdown
Member Author

+review-app-deploy

@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 15, 2026

Copy link
Copy Markdown

🎉 Deploy Complete!

Open Review App

Deployment successful for PR #826, commit 67d78d7

🎮 Control Plane Console
📋 View Completed Action Build and Deploy Logs

@github-actions
github-actions Bot temporarily deployed to review/qa-react-webpack-rails-tutorial-826 September 15, 2026 09:36 Destroyed

@justin808 justin808 left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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.

@justin808
justin808 merged commit 691c88a into master Sep 17, 2026
14 of 15 checks passed
@justin808
justin808 deleted the jg-codex/validate-ror17-rc5-tutorial branch September 17, 2026 02:08
@github-actions

Copy link
Copy Markdown

No description provided.

@github-actions

github-actions Bot commented Sep 17, 2026

Copy link
Copy Markdown

✅ Review App Deleted

Review app for PR #826 is deleted

🎮 Control Plane Console
📋 View Workflow Logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant