Skip to main content

PageProof

Mutation-aware pagination consistency verifier for REST/GraphQL-style list APIs.

PageProof tests a property ordinary one-request API tests cannot answer:

Does a complete traversal still satisfy the API's declared visibility, ordering, continuation, and scope guarantees while the collection changes between pages?

Quick start

Python 3.10+. Runtime has no third-party dependencies.

python -m pip install https://github.com/virajsabhaya23/pageproof/releases/download/v0.1.0/pageproof-0.1.0-py3-none-any.whl

python -m pageproof verify examples/offset_concurrent_insert.json \
  --out out/report.json \
  --junit out/report.junit.xml \
  --sarif out/report.sarif.json \
  --minimized out/minimized.json

Unsafe contracts exit 2.

Safe control:

python -m pageproof verify examples/safe_cursor.json

Benchmark:

python -m pageproof benchmark benchmark/corpus.json \
  --out benchmark/results.json

What is implemented

  • offset, keyset/cursor, and Relay-style cursor traversal models;
  • snapshot, stable-boundary, and best-effort consistency contracts;
  • deterministic insert/delete/sort-key mutation schedules;
  • duplicate and omission detection;
  • monotonic/tie-break ordering checks;
  • cursor round-trip checks;
  • gateway/SDK continuation-token preservation checks;
  • traversal termination;
  • scope/filter preservation;
  • deterministic SHA-256 result certificates;
  • JSON, JUnit, and SARIF output;
  • 50-case regression/seeded/safe benchmark;
  • CI workflow and evidence manifests.

Corpus interpretation

The 15 issue/release-grounded cases are minimal semantic reproductions of the reported pagination failure class, not copies of the upstream products. They are tagged with their upstream source URL.

The local benchmark does not pretend to be a live run of Schemathesis or RESTler. Those baselines require their actual toolchains and are separately documented as an external validation step.

Security

Default verification is local and mutates only in-memory fixture state. No production endpoint is modified. Contract files cannot execute commands.

Limitations

  • v0.1 is a deterministic reference engine rather than an arbitrary remote API traffic driver.
  • GraphQL Relay semantics are represented by the connection/cursor contract, not a GraphQL parser.
  • A live collection must declare its consistency model; PageProof does not impose snapshot semantics on best-effort APIs.
  • Actual Schemathesis and RESTler comparative execution remains required before claiming superiority over those systems.

Metadata

Release files for pageproof 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pageproof 0.1.1
File Size Uploaded
pageproof-0.1.1.tar.gz 13.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pageproof 0.1.1
File Interpreter ABI Platform
pageproof-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 27.7 kB

Release files / pageproof-0.1.1.tar.gz

Download URL pageproof-0.1.1.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
182d4bdda4a80e479852aba6b1a1d1c55963cfe0b38464a167bb7a2d68ed6f38
BLAKE2b-256 checksum
How to use checksums
621baf2997b1b3b633fa036df408aeed2c12d961c9729faaa23fb12c9e4e9996
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / pageproof-0.1.1-py3-none-any.whl

Download URL pageproof-0.1.1-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5978fbc1b592979f4b452d906813d62e228d161be83f3a913083d553a0921c68
BLAKE2b-256 checksum
How to use checksums
1bfb11cf5fd7d2a20f310eebdd918d9a45a6e28d4146a5c0843bdd1330101678
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page