Repository navigation
test(e2e): cover Google provider mutations - #6555
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
🔎 IronLoop Review StatusHead: Current reviewers:
Reviewer summaries
Recent activity
Available commands
Run metadataAdmission: webhook accepted the request and IronLoop persisted reviewer state before this projection. |
📝 WalkthroughWalkthroughGoogle provider e2e operation cases were extracted into shared types and a dedicated Google module. Drive, Gmail, and Calendar state assertions now back registered operations, with MIME, fixture, and capability-coverage updates for the added cases. ChangesGoogle provider operation coverage
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tests/e2e/provider_operation_google_cases.py`:
- Around line 18-33: Extract a shared async _get(emulate_url, path, params=None)
-> httpx.Response helper that creates the configured httpx.AsyncClient, performs
the GET, calls raise_for_status(), and returns the response. Update _drive_file,
_drive_files_named, and the other identified call sites to use _get while
preserving their existing paths, query parameters, and JSON handling.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: cc680319-fa3b-4346-bf0b-fabfdd3a92d4
📒 Files selected for processing (5)
tests/e2e/fixtures/emulate/google_gmail.yamltests/e2e/fixtures/provider_capability_coverage.tomltests/e2e/provider_operation_cases.pytests/e2e/provider_operation_google_cases.pytests/e2e/provider_operation_types.py
There was a problem hiding this comment.
❌ IronLoop Review: reviewer
Review at a glance
| Verdict | Blocking | Notes | Inline | Head |
|---|---|---|---|---|
| ❌ Changes requested | 1 | 0 | 1 | 07b642487705 |
Head: 07b64248770517e70b4173df453af81dd2fa4df9
Next: Fix the blocking findings, push the PR branch, then re-run this reviewer.
Run details
Status: Current
Needs human: no
Needs validation: no
Summary
The focused 5-file E2E change has one blocking coverage gap: the new Gmail reply case cannot form a valid Gmail thread, so it should not move that capability from waived to tested.
Findings
Blocking: 1 / Notes: 0
Blocking findings
1. ❌ [MEDIUM] Send a Gmail-valid reply fixture
Location: tests/e2e/provider_operation_google_cases.py:271-274
This raw message uses a different subject from the seeded message (Emulate seeded unread) and raw_mime supplies neither In-Reply-To nor References. Gmail requires matching subject plus RFC-compliant In-Reply-To and References headers, in addition to threadId, to place a sent message in an existing thread (Gmail threading requirements). Emulate accepts this and makes the readback pass, but live Gmail need not, leaving the newly classified reply capability effectively untested. Seed a Message-ID and send a matching-subject RFC-compliant reply before moving this capability from the waiver.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
| "message": { | ||
| "raw": raw_mime( | ||
| to="qa-sender@example.com", | ||
| subject=GMAIL_REPLY_MARKER, |
There was a problem hiding this comment.
This cannot be a valid Gmail reply: its subject differs from the seeded message and raw_mime adds no In-Reply-To/References headers. Gmail requires those headers and a matching subject with threadId to join an existing thread. Emulate will pass this, but production Gmail may not; seed a Message-ID and construct a compliant reply before classifying the capability as tested.
|
🚅 Deployed to the ironclaw-pr-6555 environment in ironclaw-ci-preview
|
|
@ironloopai review --agent reviewer |
|
@ironloopai review --agent reviewer |
There was a problem hiding this comment.
✅ IronLoop Review: reviewer
Review at a glance
| Verdict | Blocking | Notes | Inline | Head |
|---|---|---|---|---|
| ✅ Approved | 0 | 0 | 0 | 8ff441aa4652 |
Head: 8ff441aa4652c226e8ff640f153c60f71b71e954
Next: No reviewer action needed.
Run details
Status: Current
Needs human: no
Needs validation: no
Summary
Reviewed the complete normal, test-only diff (6 files; 411 additions/162 deletions). The added Google mutation cases are wired through the existing full-path runner with provider-side readback assertions, and the inventory classifications match those cases. No actionable regression found.
Findings
None.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
Summary
Change Type
Linked Issue
Part of #6524
Validation
cargo fmt --all -- --check— Not applicable: no Rust changed.cargo clippy --all --benches --tests --examples --all-features -- -D warnings— Not applicable: no Rust changed.cargo build— Not applicable: no product code changed; the existing debug binary drove the full black-box lane.serrrfirat/emulate@92bd9c2157a74613c47549eb5cfcccc7c0740adf.review-prorpr-shepherd --fixwas run before requesting review — Not run; final diff, duplicate case IDs/capabilities, and complete caller-path lane were checked locally.Test Strategy
User behavior: No product response contract changes. The harness now detects regressions where a real Reborn turn fails to reply in the requested Gmail thread, create/delete a calendar event, create a Drive folder, or upload exact Drive contents.
Risk areas:
Tests added or updated:
What the tests prove: Every new case executes the real capability boundary exactly once, starts from reset seeded state, completes successfully, and produces one provider-observable result with the requested semantic fields. The full combined lane proves the new mutable cases remain isolated from all existing provider contracts and harvested journeys.
Commands run:
Security Impact
None. This changes only hermetic E2E fixtures, case definitions, and assertions. It adds no permissions, production network calls, secrets, file access, tool execution path, or sandbox-policy change.
Reborn Trust-Boundary Checklist
N/A: the PR exercises the existing Reborn trust boundaries but does not change runtime, policy, evidence, serialization, queues, errors, or host interfaces.
Database Impact
None.
Blast Radius
Limited to the combined hermetic provider E2E lane and its deterministic Google seed. A faulty oracle or seed could fail that lane; product binaries and live provider behavior are unchanged.
Rollback Plan
Revert this commit to restore the four-case registry and return the five capabilities to their owned waiver.
Review Follow-Through
No known unaddressed feedback. Reviewer focus: whether each provider readback is the right durable semantic evidence and whether the provider-owned module boundary is appropriate for subsequent batches.
Review track: A (tests/infrastructure only)