Skip to content

fix(oci-cloud): dispatch pagination by SDK contract and preserve native responses - #490

Open
dustin-sale wants to merge 2 commits into
oracle:mainfrom
dustin-sale:codex/477-fix-oci-cloud-dispatch-pagination-by-sdk-contract-and-preserve-native-57494b66c889
Open

dustin-sale wants to merge 2 commits into
oracle:mainfrom
dustin-sale:codex/477-fix-oci-cloud-dispatch-pagination-by-sdk-contract-and-preserve-native-57494b66c889

Conversation

@dustin-sale

Copy link
Copy Markdown
Contributor

Description

Addresses #477 in the local worktree based on f99eeca09b42987a71a4568605f7efc611932269 (including the new test_native_pagination.py file).

Pagination selection now uses SDK continuation arguments rather than list_/summarize_ prefixes or limit alone. Scalar responses serialize normally. Native SDK envelopes with a single declared record array retain their shape and aggregate records; Identity Domains resources support OPC page tokens and SCIM start_index/count traversal. Original per-page non-record metadata is exposed in result_meta.page_metadata. Scalar and ambiguous multi-array paged aggregates remain intact as single-page payloads with explicit next_page continuation rather than speculative metric merging.

Existing raw-list, items, DNS, Logging Search results, and Object Storage behavior remains covered. Capped results report has_more_results in full and summary modes, expose continuation only at lossless page boundaries, and reject repeated/no-progress traversal. SCIM count=0 remains a metadata-only query. Updated README and changelog. No dependency changes.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • This change requires a documentation update

How Has This Been Tested?

  • From repository root: moon run oci-cloud-mcp-server:test — 226 passed; 92.98% branch-inclusive coverage, exceeding the configured 90% gate.
  • From repository root: moon run root:lint — passed.
  • From repository root: git diff --check — passed.

Regression tests exercise production public-method validation, dispatch, serialization, full/summary result shaping, real SDK envelopes, token and SCIM traversal, truncation, metadata-only queries, and no-progress failures. Execution is mocked; no live OCI calls were made.

Test Configuration:

  • Firmware version: N/A
  • Hardware: Docker sandbox
  • Toolchain: Python 3.13.15, locked uv environment, pytest 9.0.3, FastMCP 3.4.5
  • SDK: OCI Python SDK 2.185.1

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code (author attestation not supplied)
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings (uv emits an existing UV_NATIVE_TLS deprecation warning)
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules (N/A; none required)

This is a validation proposal only, not a published PR. OCA/signoff and publication prerequisites have not been verified.

…ve responses

Implemented contract-aware OCI pagination dispatch, safe scalar/aggregate serialization, native collection aggregation with SCIM continuation, retained page metadata and cap completeness, plus public FastMCP regressions using real OCI SDK models. Package tests, root lint, and diff hygiene pass locally.

Refs: oracle#477
@oracle-contributor-agreement oracle-contributor-agreement Bot added the OCA Verified All contributors have signed the Oracle Contributor Agreement. label Oct 13, 2026
@dustin-sale
dustin-sale marked this pull request as ready for review October 13, 2026 20:19
…by-sdk-contract-and-preserve-native-57494b66c889

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OCA Verified All contributors have signed the Oracle Contributor Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant