Skip to content

fix(rubric): reject executable integer controls - #892

Merged
seonghobae merged 5 commits into
mainfrom
fix/rubric-integer-callback-891
Aug 16, 2026
Merged

fix(rubric): reject executable integer controls#892
seonghobae merged 5 commits into
mainfrom
fix/rubric-integer-callback-891

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Scope

Closes #891 by hardening rubric-centered integer validation before caller-dispatchable conversion can occur.

Test-first lineage

  • RED b4670ce3ed8d95f42a9eccccdb878aeefc5b02de adds public-constructor regressions for arbitrary __index__ providers, caller-defined Python/NumPy integer subclasses, and genuine NumPy integer scalar compatibility.
  • GREEN 69921806a005a980280de9f94ad3c82400b7d961 replaces protocol-first admission with exact built-in / genuine supported NumPy integer scalar identity checks before normalization.
  • f5765979d1967b680c63c770a65925c4a3d1dc49 and 9a25eab37923258dd384b84213e23bc3c1feec0b add canonical changelog and security doctoring evidence.
  • Exact current head cce9478eef9cc0daea1a121092733b67857fbfb4 strengthens hostile public-constructor regressions so arbitrary providers and caller-defined Python/NumPy integer subclasses prove zero conversion, representation, equality, hashing, and rich-comparison callback execution.

Preserved boundary

Standards / doctoring

The doctoring records CWE-1287, OWASP ASVS 5.0.0 V2.2 input-validation guidance, final NIST SP 800-218 SSDF 1.1, and the newer SP 800-218 Rev. 1 / SSDF 1.2 Initial Public Draft without representing the draft as final normative guidance.

Verification

  • Protected base remains fb67ced09d8ee00542c05d56374537a9a7239751 at the latest refetch.
  • Exact source head is cce9478eef9cc0daea1a121092733b67857fbfb4; GitHub reports the PR mergeable and Draft.
  • Predecessor-head gate evidence is historical. Exact-head CI, security, package, coverage, provenance, and automated review evidence is being recomputed for cce9478eef9cc0daea1a121092733b67857fbfb4.

Any source-head or protected-base movement invalidates predecessor evidence and requires a fresh exact-head sweep. Protected integration still requires every live exact-head gate plus the qualifying independent non-author approval and last-push approval rules; no automated review or author action substitutes for those gates.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 44 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: fa1f206e-80f1-4802-9978-b9d7e4207c67

📥 Commits

Reviewing files that changed from the base of the PR and between fb67ced and cce9478.

📒 Files selected for processing (4)
  • docs/changelog.d/891-rubric-integer-controls.md
  • docs/doctoring/rubric_integer_control_callbacks.md
  • python/fast_mlsirm/rubric/models.py
  • tests/test_rubric_integer_controls.py

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.

@seonghobae
seonghobae marked this pull request as ready for review August 15, 2026 12:54
@seonghobae
seonghobae enabled auto-merge (squash) August 15, 2026 12:54
@seonghobae
seonghobae merged commit d38cb56 into main Aug 16, 2026
35 checks passed
@seonghobae
seonghobae deleted the fix/rubric-integer-callback-891 branch August 16, 2026 14:04
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.

Harden rubric authoring integer controls before caller callbacks

1 participant