Fix YAML timestamp handling in action scanner - #305
Conversation
|
Warning Review limit reached
Next review available in: 56 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
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: Fix YAML timestamp handling in action scannerOverviewFixes #302: Code quality
Security considerations
Minor nit (left inline)
Test coverage / validation
Overall: a well-scoped, correctly-reasoned bug fix with solid regression coverage. No blocking issues found. |
Address-review summaryScan scope: full PR history; no previous address-review cutoff existed. Mattered
Optional
Skipped
No code changes or follow-up commits were required. Current candidate head: Next default scan starts after this comment. Say |
|
Completed-batch audit: replay evidence follows. |
|
head_sha: e55a6d2
|
|
Completed-batch audit: replay evidence follows. |
…gned-launch-readiness * origin/main: fix: allow YAML timestamps in action scanner (#305)
* origin/main: fix: allow YAML timestamps in action scanner (#305)
…arded-merge-seam * origin/main: fix: allow YAML timestamps in action scanner (#305)
…/pr291-redesign-implementation * commit '6239fd0afa5bb7d87cd3fb09cc22ae30bcf1e369': Fix locale-dependent test, surface policy-only CLAUDE.md follow-ups, add read-only seam-drift audit (#337) Add PR #377 changelog entry (#382) Make PR descriptions human-first (#377) Remove unsupported signed-launch enforcement (#374) Emit coordination telemetry and provenance at workflow checkpoints (#290) Add explicit multi-language lint CI (#313) Reconcile later-completed audit targets (#315) Report source lines in security preflight findings (#311) Gate completed-batch publication on terminal scope and QA (#308) Add guarded merge submission seam (#304) Fix exact-head readiness when status rows omit SHA (#307) fix: allow YAML timestamps in action scanner (#305) Pin workflow dependencies and define release trust boundary (#295) Support direct merges without merge queues (#297)
Why
The repository action-pinning scanner used Psych safe loading without the two scalar classes Psych uses for valid YAML timestamps. On Ruby 3.4/Psych 5.4, an unquoted date or full timestamp could therefore raise before the scanner checked any action reference.
Closes #302.
What changed
YAML.safe_load_fileand narrowly permit onlyDateandTimefor scanner inputs.Validation
main: Ruby 3.4.6/Psych 5.4.0 raisedPsych::DisallowedClassforDate; a full timestamp reproduced the same boundary forTime.ruby bin/repository-security-policy-test.rb: 9 runs, 34 assertions, 0 failures.bin/validateunder the host-compatible macOS Bash path: passed, including RuboCop on 112 files with 0 offenses.e55a6d2e895a80f9d2d15cdc4fc7e2abc80354ee, including base negative controls, parser red-team cases, and action-reference behavior.validateandclaude-review: passed on the exact head; CodeRabbit was terminally unavailable because of its service rate limit.Codex Decision Log
DateandTime, the classes Psych materializes for valid date and timestamp scalars.Review churn
Confidence note: High implementation confidence from red/green reproduction, fail-closed reference assertions, one-file scope, full local validation, independent QA, and current-head GitHub evidence.
QA Evidence
Psych::DisallowedClassindependently for bothDateandTimeon Ruby 3.4/Psych 5.4.Completed-batch audit
Status: Clean — no outstanding findings or follow-ups. Durable receipt.