Skip to content

test(e2e): add typed provider operation cases - #6528

Merged
serrrfirat merged 2 commits into
codex/capability-coverage-inventoryfrom
codex/provider-operation-cases
Jul 23, 2026
Merged

serrrfirat merged 2 commits into
codex/capability-coverage-inventoryfrom
codex/provider-operation-cases

Conversation

@serrrfirat

@serrrfirat serrrfirat commented Jul 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Add a typed ProviderOperationCase registry with capability arguments, clean-baseline assertions, and provider-side outcome oracles.
  • Execute four operations through standalone Reborn, the real first-party extension boundary, credential/network mediation, and Emulate: Drive get/update and Gmail draft/trash.
  • Reset each case's declared provider world while reusing the existing binary and module-scoped Reborn process; the initial four cases all target Google.
  • Move those four capabilities from waived to tested, bringing hermetic provider coverage from 27/123 to 31/123.

This is stacked on #6526 and should be reviewed/merged after it.

Change Type

  • Bug fix
  • New feature
  • Refactor
  • Documentation
  • CI/Infrastructure
  • Security
  • Dependencies

Linked Issue

Part of #6524

Validation

  • cargo fmt --all -- --check — Not applicable: no Rust files changed.
  • cargo clippy --all --benches --tests --examples --all-features -- -D warnings — Not applicable: no Rust files changed.
  • cargo build — Not applicable: no build inputs changed; this reuses the parent lane's single binary build.
  • Relevant tests pass: 101 inventory, provider-contract, recorded-replay, full-path journey, and typed operation tests.
  • cargo test --features integration if database-backed or integration behavior changed — Not applicable: no product/database behavior changed.
  • Manual testing: ran the exact stacked Emulate selection against the pinned fork and verified all four provider readbacks.
  • If a coding agent was used and supports it, review-pr or pr-shepherd --fix was run before requesting review — forced eight-lens code-review-multi completed; all three low-severity findings were fixed in d46d4935e.

Test Strategy

User behavior: Developers can add deterministic provider-operation coverage without waiting for a harvested model trace, while still proving the real IronClaw extension path and provider-observable outcome.

Risk areas:

  • Model behavior
  • Browser
  • Side effect
  • Persistence
  • Security or permissions
  • External provider
  • Cross-component behavior

Tests added or updated:

  • Unit or contract: The inventory gate requires every tested capability to have harvested full-path evidence or a collected typed operation case.
  • Reborn integration: Four typed cases execute through served Reborn, installed/authenticated first-party extensions, capability dispatch, and network mediation.
  • Recorded fixture: No recorded fixture added; inline deterministic traces drive the operation runner without claiming model-behavior coverage.
  • Browser E2E: Not applicable: no browser behavior changed.
  • Backend or runtime: Provider baselines and readbacks verify Drive metadata and Gmail draft/trash state in Emulate.
  • Live canary: Not applicable: these operations are fully hermetic.

What the tests prove: Each operation begins from a known provider baseline, executes exactly once through the real capability boundary, completes successfully, produces the expected provider state or response, and cannot leak mutation state into the next case.

Commands run:

./tests/e2e/.venv/bin/python -m py_compile \
  tests/e2e/provider_operation_cases.py \
  tests/e2e/scenarios/test_provider_capability_inventory.py \
  tests/e2e/scenarios/test_reborn_qa_trace_replay.py \
  tests/e2e/scenarios/test_reborn_qa_trace_full_path.py

IRONCLAW_EMULATE_CLI=/tmp/emulate-6528/packages/emulate/dist/index.js \
  ./tests/e2e/.venv/bin/pytest -q \
  tests/e2e/scenarios/test_provider_capability_inventory.py \
  tests/e2e/scenarios/test_emulate_reborn_provider_contracts.py \
  tests/e2e/scenarios/test_reborn_qa_trace_replay.py \
  tests/e2e/scenarios/test_reborn_qa_trace_full_path.py \
  --timeout=240

git diff --check
python3 /Users/firatsertgoz/.codex/skills/autoreview/scripts/autoreview \
  --mode local --stream-engine-output

Result after review fixes, using the exact CI-pinned Emulate commit 92bd9c2: 101 passed in 57.32s. The forced multi-agent review found three low-severity maintainability issues; all were fixed and the focused 4-case operation selection also passed.

Security Impact

None. Test-only capability calls use seeded local credentials and loopback Emulate services; production permission, credential, network, and sandbox behavior is unchanged.

Reborn Trust-Boundary Checklist

N/A: test-harness-only change. The tests exercise existing trust boundaries but do not change their construction, policy, errors, serialization, or runtime behavior.

Database Impact

None.

Blast Radius

Limited to the Emulate-backed E2E lane and provider coverage metadata. The four cases add approximately five seconds to the combined local selection and do not add a Rust build, Reborn process, or CI lane.

Rollback Plan

Revert this commit to remove the operation registry/cases and return the four capabilities to the owned waiver list. No migration or compatibility step is required.

Review Follow-Through

google-drive.share_file remains waived because the pinned Emulate fork does not expose Drive permissions routes. Future provider-family PRs can add cases by declaring the Emulate provider service, capability arguments, and provider-owned baseline/readback oracles.


Review track: C (CI/test infrastructure)

@ironloopai

ironloopai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

🔎 IronLoop Review Status

Head: d46d4935eed88ceedf1a07808c1e841f4f2633df
Result: One or more review results were superseded by a newer PR head.
Next: Run @ironloopai review on the latest PR head.
Updated: 2026-07-22T22:46:27.756Z

Current reviewers:

Reviewer State Verdict Findings Last update
ironloop/common-reviewer (reviewer) Superseded N/A N/A 2026-07-22T22:46:27.745Z
Reviewer summaries
Reviewer Detail
ironloop/common-reviewer (reviewer) Superseded by a newer PR head. New head: d46d493. Previous verdict: Needs validation.
Recent activity
Time Reviewer State Detail
2026-07-22T22:16:50.059Z ironloop/common-reviewer (reviewer) Queued Accepted review request for head 82ea1ca.
2026-07-22T22:16:50.059Z ironloop/common-reviewer (reviewer) Queued Waiting for this reviewer lane to become available.
2026-07-22T22:16:50.714Z ironloop/common-reviewer (reviewer) Started Reviewer worker started.
2026-07-22T22:16:53.318Z ironloop/common-reviewer (reviewer) Workspace ready Prepared isolated checkout (merge_ref) at ccd72fa.
2026-07-22T22:19:59.660Z ironloop/common-reviewer (reviewer) Result captured Needs validation; 0 blocking findings.
2026-07-22T22:19:59.660Z ironloop/common-reviewer (reviewer) Completed Review completed and terminal status was persisted.
2026-07-22T22:46:27.745Z ironloop/common-reviewer (reviewer) Superseded A newer PR head replaced this review (d46d493).
Available commands
  • @ironloopai help
  • @ironloopai agents
  • @ironloopai review
  • @ironloopai review --agent <agent>
Run metadata

Admission: webhook accepted the request and IronLoop persisted reviewer state before this projection.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (2)
  • staging
  • reborn-integration

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7fd2bd6a-fab0-4567-b289-4a6eca66b98a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-6528 July 22, 2026 22:16 Destroyed
@github-actions github-actions Bot added scope: docs Documentation size: XS < 10 changed lines (excluding docs) risk: low Changes to docs, tests, or low-risk modules contributor: core 20+ merged PRs labels Jul 22, 2026

@ironloopai ironloopai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ IronLoop Review: reviewer

Review at a glance

Verdict Blocking Notes Inline Head
⚠️ Needs validation 0 0 0 82ea1ca9cc23

Head: 82ea1ca9cc230579acf629165e16b3257791507e
Next: Human review or validation is required before merging.

Run details

Status: Current
Needs human: no
Needs validation: yes

Summary

No concrete correctness, security, or maintainability defect found in this focused stack-layer diff. The four typed cases match their manifest schemas, handler routes, seeded provider IDs, and the CI-selected full-path test module.

Findings

None.

Developer follow-up

After fixing this feedback:

  1. Push the fix to this PR branch.
  2. Re-run this reviewer with @ironloopai review --agent reviewer if you only changed this reviewer's findings.
  3. Re-run all reviewers with @ironloopai review when the fix may affect multiple areas.

@serrrfirat serrrfirat left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Multi-agent review

Coverage is complete for the exact six-file stacked layer (codex/capability-coverage-inventory...codex/provider-operation-cases). Eight specialist reviewers read the full unpacketized diff; receipt validation passed with no limitations.

Found three low-severity maintainability issues: misleading recorded-only terminology, duplicated capability wire-name normalization, and a provider-neutral case type coupled to a Google-only runner. No security, correctness, performance, test-coverage, or approach defects were found.

Comment thread tests/e2e/scenarios/test_provider_capability_inventory.py
Comment thread tests/e2e/scenarios/test_reborn_qa_trace_full_path.py Outdated
Comment thread tests/e2e/scenarios/test_reborn_qa_trace_full_path.py Outdated
@railway-app
railway-app Bot temporarily deployed to ironclaw-ci-preview / ironclaw-pr-6528 July 22, 2026 22:46 Destroyed
@railway-app

railway-app Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

🚅 Deployed to the ironclaw-pr-6528 environment in ironclaw-ci-preview

Service Status Web Updated (UTC)
ironclaw ✅ Success (View Logs) Web Jul 22, 2026 at 10:56 pm

@serrrfirat
serrrfirat merged commit 48c9a29 into codex/capability-coverage-inventory Jul 23, 2026
18 checks passed
@serrrfirat
serrrfirat deleted the codex/provider-operation-cases branch July 23, 2026 07:30
personal-upstream-sync Bot pushed a commit to theredspoon/ironclaw that referenced this pull request Jul 23, 2026
* test(e2e): isolate mutable Emulate provider state

* test(e2e): inventory provider capability coverage

* test(e2e): add typed provider operation cases (nearai#6528)

* test(e2e): add typed provider operation cases

* test(e2e): address provider operation review

This branch was successfully deployed

No deployments
ironclaw-ci-preview / ironclaw-pr-6528 — d46d4935 Deployed Jul 22, 2026 by railway-app[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor: core 20+ merged PRs risk: low Changes to docs, tests, or low-risk modules scope: docs Documentation size: XS < 10 changed lines (excluding docs)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant