Skip to content

superseded: exported option validation consolidated in #126 - #109

Closed
seonghobae wants to merge 2 commits into
masterfrom
security/input-validation-11102809417009025986
Closed

superseded: exported option validation consolidated in #126#109
seonghobae wants to merge 2 commits into
masterfrom
security/input-validation-11102809417009025986

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

Superseded by #126

Fresh exact-head audit at b8502ac1dfcf4833e549fdee81c321c2b07a680a confirms this branch contains the same three exported option-domain checks now owned by Draft #126@4af198147f33a83cb62d1e66f6d95eaf2b06d838: scalar non-missing logical nested, scalar supported adjustment name, and scalar numeric conf.level inside (0,1) before model evaluation.

#126 carries a stronger persistent exported-boundary regression across NA/NULL/wrong type/vector/bounds, empty and whitespace-padded adjustment values, exact package-owned messages, and null condition calls. No unique test, statistical contract, fixture, or release evidence remains only here.

The branch-local .jules/sentinel.md generalization and MEDIUM/information-leak claim are not inherited because the demonstrated behavior supports deterministic input/error handling, not that deployment-specific severity assertion.

Every valid semantic delta is fully represented in #126. This closure transfers neither GREEN status nor merge authority.

Added strict type, length, and bounds validation at the beginning of exported functions to fail securely using stop(..., call. = FALSE).
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5914f5b0-94cb-4b44-b655-4bfcdb653e64

📥 Commits

Reviewing files that changed from the base of the PR and between 807e940 and a2db6a4.

📒 Files selected for processing (3)
  • .jules/sentinel.md
  • R/icci.R
  • R/vuongtest.R

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


📝 Walkthrough

Walkthrough

icci()vuongtest()에 실행 전 입력 검증을 추가했습니다. 잘못된 입력에는 명시적 오류를 반환합니다. 내보낸 함수의 입력 검증 및 stop(..., call. = FALSE) 사용 지침도 문서에 추가했습니다.

Changes

입력 검증 강화

Layer / File(s) Summary
내보낸 함수 입력 검증
.jules/sentinel.md, R/icci.R, R/vuongtest.R
icci()conf.level이 단일 숫자이고 0과 1 사이인지 검증합니다. vuongtest()nestedadj의 형식과 허용값을 검증합니다. 입력 검증 지침을 문서에 추가했습니다.

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

Merge Risk: ⚪ Minimal · up to a2db6

The change adds bounded validation for invalid arguments so users receive clear errors instead of internal execution failures; no actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 내보낸 함수의 입력값 검증 추가라는 주요 변경 사항을 정확하게 요약합니다. 이모지와 우선순위 표기는 다소 부가적이지만 제목의 의미를 훼손하지 않습니다.
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.
Full details: Docstring Coverage

Explanation

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 files. (3 skipped: 3 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch security/input-validation-11102809417009025986

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.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 2 potential issues.

Devin Review

Comment thread R/icci.R
Comment on lines +68 to +70
if (length(conf.level) != 1 || !is.numeric(conf.level) || is.na(conf.level) || conf.level <= 0 || conf.level >= 1) {
stop("The 'conf.level' argument must be a single numeric value between 0 and 1.", call. = FALSE)
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Validation change omitted from changelog

The new exported argument errors change user-visible behavior, but NEWS contains no entry. Repository conventions require one.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread R/vuongtest.R
Comment on lines +101 to +106
if (length(nested) != 1 || !is.logical(nested) || is.na(nested)) {
stop("The 'nested' argument must be a single logical value (TRUE or FALSE).", call. = FALSE)
}
if (length(adj) != 1 || !is.character(adj) || !(adj %in% c("none", "aic", "bic"))) {
stop("The 'adj' argument must be a single string ('none', 'aic', or 'bic').", call. = FALSE)
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Validation lacks regression coverage

No tests exercise the new scalar, missing-value, membership, or boundary checks. Later changes can silently weaken these exported input guarantees.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Added strict type, length, and bounds validation at the beginning of exported functions to fail securely using stop(..., call. = FALSE).
@seonghobae seonghobae changed the title 🛡️ Sentinel: [MEDIUM] Fix input validation missing in exported functions superseded: exported option validation consolidated in #126 Sep 6, 2026
@seonghobae seonghobae closed this Sep 6, 2026
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