Skip to content

verify: Ruby 3.4/3.5 compatibility check (WA-VERIFY-074)#1059

Merged
kitcommerce merged 1 commit intonextfrom
issue-1051-ruby35-compat
Mar 17, 2026
Merged

verify: Ruby 3.4/3.5 compatibility check (WA-VERIFY-074)#1059
kitcommerce merged 1 commit intonextfrom
issue-1051-ruby35-compat

Conversation

@kitcommerce
Copy link
Contributor

Fixes #1051

Summary

Ruby 3.4.2 compatibility verification for WA-VERIFY-074.

What Was Tested

  • Ruby 3.4.2 (highest available via rbenv; 3.5 not yet released)
  • bundle install under Ruby 3.4.2 — ✅ clean
  • Syntax check: ~1,250 .rb files via RubyVM::InstructionSequence.compile_file — ✅ zero errors
  • Load-time warnings captured and categorized

Key Findings

Category Result
SyntaxError regressions ✅ None
Keyword argument warnings ✅ None
Frozen string warnings ✅ None
Test suite (MongoDB required) ⚠️ Blocked — MongoDB not running locally

Warnings Found

All warnings are pre-existing (not introduced by Ruby 3.4) or in third-party gems:

  • Mongoid 7.4.3: method-redefinition noise (pre-existing, known upstream issue)
  • ActiveSupport 6.1: Class#subclasses conflicts with Ruby 3.1+ stdlib (warning only)
  • Several indentation/unused-variable warnings in app code

Recommendation

Widen required_ruby_version upper bound from < 3.5.0 to < 3.6.0 once CI with full services (MongoDB/Redis/Elasticsearch) confirms clean runs. See notes/ruby35-compat-2026-03-17.md for full details.

Client Impact

None. Verification only.

- Test Ruby 3.4.2 (highest available rbenv version)
- Zero syntax errors across ~1,250 app source files
- Document all warnings: method-redefinitions (pre-existing), mismatched indents
- No keyword arg, frozen string, or SyntaxWarning regressions found
- Test suite blocked by MongoDB unavailability (not a Ruby issue)
- Recommend widening required_ruby_version upper bound to < 3.6.0

Fixes #1051
@kitcommerce
Copy link
Contributor Author

Architecture Review

Verdict: PASS ✅

Summary

This PR adds a single documentation file (notes/ruby35-compat-2026-03-17.md) recording Ruby 3.4.2 compatibility verification results. No application code, configuration, or structural changes are included.

Findings

No architectural findings. The diff contains zero .rb file changes — no new imports, no new types, no modified module boundaries, no dependency changes.

Notes

The verification document itself is well-structured and identifies legitimate technical debt items (method redefinitions in core models, indentation mismatches) that could inform future architectural work — particularly the freedom_patches/ pattern of monkey-patching third-party gems, which carries inherent coupling risk. These are pre-existing concerns, not introduced by this PR.

Scope: Documentation only — nothing to review architecturally.

@kitcommerce kitcommerce added review:architecture-done Review complete and removed review:architecture-pending Review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

Rails Conventions Review

Verdict: PASS

Findings

No Ruby code changes in this PR. The diff adds only notes/ruby35-compat-2026-03-17.md, a documentation file cataloguing Ruby 3.4.2 warnings (indentation mismatches, method redefinitions) as technical debt.

Nothing to evaluate against Rails conventions.

Recommendations

  • When the actual Ruby 3.4/3.5 compatibility fixes are implemented, revisit: method redefinitions via re- of modules is a common Rails/concern pattern that may need to be refactored using prepend or explicit override hygiene.
  • Indentation-mismatch warnings in heredocs are cosmetic but worth fixing alongside any 3.4 work to keep the signal-to-noise ratio low in CI output.

@kitcommerce
Copy link
Contributor Author

Simplicity Review

{
  "reviewer": "simplicity",
  "verdict": "PASS",
  "severity": null,
  "summary": "Documentation-only PR; no code changes to evaluate for simplicity.",
  "findings": []
}

No executable code added or modified. Simplicity review not applicable.

@kitcommerce
Copy link
Contributor Author

Security Review

Verdict: PASS

Reviewer: Security

Summary

This PR adds only a documentation file (notes/ruby35-compat-2026-03-17.md) cataloguing Ruby 3.4/3.5 compatibility warnings. No application code, configuration, or dependency changes are included.

Findings

  • No secrets, credentials, or sensitive data present in the notes file.
  • No code changes — zero security surface.

Recommendations

None. Documentation-only change with no security implications.

@kitcommerce kitcommerce added review:rails-conventions-done Rails conventions review complete review:simplicity-done Review complete review:security-done Review complete review:wave1-complete review:rails-security-pending Rails security review in progress review:database-pending Database review in progress review:test-quality-pending Review in progress and removed review:rails-conventions-pending Rails conventions review in progress review:simplicity-pending Review in progress review:security-pending Review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

🔒 Security Review — PR #1059

Reviewer: rails-security sentinel
Scope: Notes file notes/ruby35-compat-2026-03-17.md

Findings

# Severity Finding
No security issues identified

Analysis

  1. Diff content: This PR adds only a markdown notes file documenting Ruby 3.4/3.5 compatibility testing results. No executable code changed.
  2. Secret exposure: No credentials, tokens, or sensitive data in the notes. Clean.
  3. No new dependencies: No Gemfile changes, so no new CVE surface introduced.
  4. Note: The incomplete test suite run (MongoDB not available) means full compatibility is not yet verified, but this is a functional concern, not a security one for this PR.

Verdict

APPROVED — Documentation-only change with no security impact.

@kitcommerce kitcommerce added review:rails-security-done Rails security review complete and removed review:rails-security-pending Rails security review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

🧪 Test Quality Review — PASS (notes-only)

PR: Ruby 3.4/3.5 compatibility check (WA-VERIFY-074)
Reviewer role: test-quality (Wave 2)

Coverage Assessment

This is a compatibility verification PR — no production code changes, only a detailed notes file. Test quality review covers the adequacy of the verification methodology.

What was tested:

  • bundle install under Ruby 3.4.2 — clean ✅
  • Syntax check of ~1,250 .rb files via RubyVM::InstructionSequence.compile_file — zero errors ✅
  • Warning categorization across Mongoid, ActiveSupport, and app code ✅

Methodology strengths:

  • Syntax checking all 1,250 files is more thorough than spot-checking
  • Warning categorization distinguishes pre-existing upstream noise from newly introduced issues
  • Correct judgment that required_ruby_version upper-bound widening should wait for CI with full services

Gap (environment constraint, not a PR deficiency):

  • Full test suite could not run due to missing MongoDB. This is the single most important validation — syntax passes and bundle resolves, but behavioral compatibility (Mongoid query behavior, ActiveSupport integration under Ruby 3.4 object model changes) requires a CI run with all services.
  • The recommendation to hold the required_ruby_version change until CI confirms is correct and well-reasoned.

Verdict: Methodology is as thorough as possible given the local environment. The CI gate is the correct final validator for Ruby compatibility. PASS — the PR correctly scopes its claims to what was actually verified and defers the authoritative confirmation to CI.

@kitcommerce kitcommerce added review:test-quality-done Review complete and removed review:test-quality-pending Review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

🗄️ Database Review — PR #1059

Verdict: ✅ No database concerns (notes-only PR) — with relevant Mongoid observations

This PR documents Ruby 3.4 compatibility findings. No code changes are made.

Database-relevant observations from the notes

  1. Mongoid 7.4.3 method redefinitions: The notes report 97 occurrences of discriminator_key and include_root_in_json redefinition warnings under Ruby 3.4. These are cosmetic warnings from Mongoid internals — no runtime data-integrity impact was observed. However, they signal that Mongoid 7.4.x is reaching end-of-life compatibility with modern Ruby.

  2. MongoDB dependency for test execution: Tests couldn't run due to no MongoDB. This means the full Mongoid query/persistence layer has not been verified under Ruby 3.4. The notes correctly flag this as a follow-up.

  3. Class#subclasses conflict: ActiveSupport 6.1 redefines Class#subclasses which Ruby 3.1+ provides natively. This is a warning only and does not affect Mongoid's inheritance/STI behavior.

Recommendation

Before widening required_ruby_version to include Ruby 3.5 (as proposed in the notes), the full test suite must run against MongoDB to verify:

  • Mongoid query correctness (especially around type coercion changes in newer Ruby)
  • Document serialization/deserialization integrity
  • Mongoid callbacks and lifecycle hooks
Check Result
Migration safety N/A — no migrations
Data loss risk None (notes only)
Query correctness Unverified — tests blocked by missing MongoDB
Mongoid patterns Cosmetic warnings only; no runtime impact
Job retry safety N/A

The notes are thorough. The key database follow-up is running the full test suite with MongoDB before any Ruby version bound changes.

@kitcommerce
Copy link
Contributor Author

Frontend Review

Verdict: PASS (N/A)

No frontend code in this PR. The diff contains only a notes markdown file documenting Ruby 3.4/3.5 compatibility findings. No JavaScript, CSS, view templates, or asset pipeline changes. No frontend concerns to evaluate.


Reviewed by frontend reviewer — Wave 3

@kitcommerce
Copy link
Contributor Author

⚡ Performance Review

Verdict: PASS

Reviewer: performance-oracle (Wave 3)

Analysis

This PR adds a documentation-only markdown file (). No production code, no application logic, no runtime paths affected.

Performance concerns: N/A — documentation only.

The notes document Ruby 3.4.2 compatibility findings. No performance-impacting changes are proposed in this PR; the actual gemspec change (widening to ) is explicitly deferred to a follow-up PR.


Performance review complete. No blocking findings.

@kitcommerce kitcommerce added review:frontend-done Frontend review complete review:performance-done Review complete review:performance-pending Review in progress review:frontend-pending Frontend review in progress review:accessibility-pending Review in progress and removed review:performance-pending Review in progress review:frontend-pending Frontend review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

Wave 3 Accessibility Review

{
  "reviewer": "accessibility",
  "verdict": "PASS",
  "severity": null,
  "summary": "Documentation-only change (notes/ruby35-compat-2026-03-17.md) with no UI, HTML, CSS, or interactive elements. No accessibility concerns.",
  "findings": []
}

@kitcommerce kitcommerce added review:accessibility-done Review complete and removed review:accessibility-pending Review in progress labels Mar 17, 2026
@kitcommerce
Copy link
Contributor Author

Documentation Review

Verdict: PASS_WITH_NOTES

Findings

  • PR Description: Well-structured with a clear summary, categorized findings table, and recommendation. The "What Was Tested" section effectively serves as verification steps for a reviewer. ✅
  • Notes file (): Appropriate for a verification-only PR — the detail belongs in the notes file rather than inline code comments.
  • No public API changes: This PR adds no new public functions, types, or properties, so no doc comments are required.
  • CHANGELOG: No entry needed — this is a verification-only change with no user-facing behavior.

Observations (PASS_WITH_NOTES)

  • The PR title says "Ruby 3.4/3.5" but the body clarifies that Ruby 3.5 was not yet released and only 3.4.2 was tested. The title could be more precise (e.g., "Ruby 3.4.x"), but this is a cosmetic note — the body correctly scopes the claim.
  • The recommendation to widen the required_ruby_version upper bound is well-placed but lives only in the notes file. If/when that change is made in a future PR, the gemspec doc comment should be updated to reflect the new constraint rationale.

Recommendations

  • No blocking changes. Documentation is appropriate for a verification PR of this scope.

Wave 4 — Documentation Reviewer. Findings are informational only and do not block merge.

@kitcommerce kitcommerce added review:documentation-done review:wave3-complete Wave 3 review complete review:wave4-complete Wave 4 (documentation) review complete merge:ready All conditions met, eligible for merge merge:hold In hold window before auto-merge labels Mar 17, 2026
@kitcommerce kitcommerce merged commit 877350b into next Mar 17, 2026
@kitcommerce kitcommerce deleted the issue-1051-ruby35-compat branch March 17, 2026 09:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gate:build-passed Build gate passed merge:hold In hold window before auto-merge merge:ready All conditions met, eligible for merge review:accessibility-done Review complete review:architecture-done Review complete review:database-done Database review complete review:documentation-done review:frontend-done Frontend review complete review:performance-done Review complete review:rails-conventions-done Rails conventions review complete review:rails-security-done Rails security review complete review:security-done Review complete review:simplicity-done Review complete review:test-quality-done Review complete review:wave1-complete review:wave2-complete review:wave3-complete Wave 3 review complete review:wave4-complete Wave 4 (documentation) review complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant