# Contract Gate > Diff two versions of a published API's OpenAPI spec and gate the breaking changes by your own policy. Paste the > baseline and the candidate; the browser diffs operations, parameters, request and response bodies, enums, required > fields and security, reads deprecated, x-sunset, x-internal and x-extensible-enum, gives every change a check id, a > level and a fingerprint, applies your levels file, audits your acknowledgement rows and judges the gate. Metered runs > write the changelog pipeline design, and the traced changelog entries. Built on the SkillSafe skill > @samber/api-changelog-automation, from samber/developer-platform-skills (MIT), by Samuel Berthe. https://contract-gate.skillsafe.ai/ ## What is free - The diff: operations removed (without deprecation, before or after their sunset date), newly marked internal or pre-beta, operationIds renamed; parameters and request and response properties added, removed, made required or optional, retyped; enum values added or removed; success statuses removed; security requirements, scopes and alternatives changed. Local $refs and allOf are resolved; OpenAPI 3.x and Swagger 2.0, JSON or YAML. - The levels: the common defaults, your levels file (check-id level) on top, x-extensible-enum and the policy answers on auth and enums; a semver release with breaks but no major bump is raised to err. - The record: acknowledgement rows matched by fingerprint and audited for approver, date, ticket, reason class and link; rows that match nothing are flagged for deletion. - The gate verdict, the five gates, the rungs ranked from the interview, and files: severity-map.md, the levels file, the ignore file generated from the rows, skeleton entries, the findings (.csv), the checks (.csv), everything (.json). ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (pipeline or entries), `api`, `diff`, `carry` (entries only: the pipeline's decisions) and `facts`. - `pipeline` replies with `summary`, `rungs` (all six, ranked, with now, later or skip), `baselines` (pr-gate, changelog, drift), `severity_map` (one row per fired check), `gate`, `declared`, `gaps` and `caveats`. - `entries` replies with `summary`, `api_version`, `entries` (id, classification, source, fingerprints, operations, summary, action_required, sunset), `unapproved` and `caveats`. The page holds every reply to its own facts: the ranked rungs, the page's level on every fired check, provisional exactly when no policy is written, fail on err, the validation gap first; every breaking and potentially breaking change traced once with the page's classification and operations, an action for each, no path or status code its findings lack, and the exact unapproved list. ## Links - API tutorial: https://contract-gate.skillsafe.ai/api.html - Source skill: https://skillsafe.ai/skill/@samber/api-changelog-automation