ContractRadar
Deterministic contract change-governance: compare declared schemas, localise structural changes to JSON Pointers, classify them breaking / minor / cosmetic, and record the configured routing intent.
Runs the existing canonical, classification and impact engines in memory. It does not write to the workspace, call the network or deliver notifications.
Choose path
Run the isolated guided demo or continue with your own contracts.
Start once to compute the complete deterministic story. All roles can inspect this read-only demo; workspace write permissions are not used.
| Service | Rev | Fingerprint (L0) | Fields | Last change | Seen |
|---|---|---|---|---|---|
Payment payment | v3 | sha256:5dbad8eaed… | 3/4 | This contract change can break an existing consumer. | demo— |
Order Management order-management | v2 | sha256:603a984092… | 4/4 | This contract change can break an existing consumer. | demo— |
Shipment Tracking shipment-tracking | v2 | sha256:bf0edf001a… | 2/4 | This additive change can still require consumer review. | demo— |
Billing Account billing-account | v2 | sha256:1e62cc5b02… | 2/3 | Meaning or presentation changed without a structural break. | demo— |
Customer Account customer-account | v2 | sha256:71185ac338… | 1/2 | This additive change can still require consumer review. | demo— |
- paymentThis contract change can break an existing consumer.alert intentv7—
- This contract change can break an existing consumer.domain-changedrange [0, 1000000] → [0, 500000]
#/components/schemas/payment/properties/amount
sha256:a74dae8d54… → sha256:5dbad8eaed… - This contract change can break an existing consumer.domain-changedrange [0, 1000000] → [0, 500000]
- customer-accountThis additive change can still require consumer review.log intentv6—
- This additive change can still require consumer review.enum-value-addedenum += 'enterprise'
#/components/schemas/customer-account/properties/segment
sha256:c6dca59d5b… → sha256:71185ac338… - This additive change can still require consumer review.enum-value-addedenum += 'enterprise'
- billing-accountMeaning or presentation changed without a structural break.suppress intentv5—acknowledged
- Meaning or presentation changed without a structural break.meaning-changedbusiness meaning edited
#/components/schemas/billing-account/properties/amount/description
sha256:65de0ff161… → sha256:1e62cc5b02… - Meaning or presentation changed without a structural break.meaning-changedbusiness meaning edited
- shipment-trackingThis additive change can still require consumer review.log intentv4—
- This additive change can still require consumer review.field-addednew optional field 'trackingRef'
#/components/schemas/shipment-tracking/properties/trackingRef
sha256:4602839da6… → sha256:bf0edf001a… - This additive change can still require consumer review.field-addednew optional field 'trackingRef'
- order-managementThis contract change can break an existing consumer.alert intentv3—
- This contract change can break an existing consumer.field-now-required'channel' became required
#/components/schemas/order-management/required
sha256:c81d159a66… → sha256:603a984092… - This contract change can break an existing consumer.field-now-required'channel' became required
- paymentThis contract change can break an existing consumer.alert intentv2—
- This contract change can break an existing consumer.enum-value-removedenum -= 'rate_limit'
#/components/schemas/payment/properties/action
sha256:a74dae8d54… → sha256:b8d74dbd80… - This contract change can break an existing consumer.enum-value-removedenum -= 'rate_limit'
This local screen persists the intended route only. It does not send a webhook or page anyone. Provider headers and outbound connectors are separate, paid-pilot integration scope.
ContractRadar consumes the Companion Sandbox's L0/L1/L2 change-governance surface.
The files are bundled demonstration fixtures. The export is not a compliance attestation, production monitoring result, or proof that a webhook, page, or external notification was sent.
Prepare a tamper-evident local intake receipt
This preflight is fixed to the bundled synthetic pair. It accepts no customer identity, customer specification, attachment, credential, confidential payload, payment, or external submission.
- Evaluation reference
- SYNTHETIC-LOCAL-DEMO
- API
- Synthetic Orders API
- Version pair
- 1.0.0 → 1.1.0
- Scope
- #/components/schemas/OrderCreate
- Sample
- synthetic-orders-api-1.0.0-to-1.1.0
- Analysis hash
- sha256:4c9200015cf8a401c087b00a12660e130e00caa0191d51fc693672d0af528c92
- 1.Prepare this receipt only against the bundled synthetic baseline/candidate pair.
- 2.Download the JSON and Markdown copies and verify that both carry the same receipt and analysis hashes.
- 3.Review the proposed fixed scope, exclusions, support boundary, and unvalidated EUR 1,250 price hypothesis.
- 4.Do not enter or provide customer identity, customer specifications, credentials, secrets, personal data, or confidential payloads in this build.
- 5.Before any real engagement, obtain written scope acceptance and agree a separately authorised secure transfer channel.
- 6.Treat the receipt as local and unsubmitted until a human records an independently verified commercial hand-off.
orders-api.before.openapi.jsonorders-api.after.openapi.jsonDemo proves the method. Real work still requires separate human gates.
Bundled synthetic inputs, local classification, and exports permanently marked SAMPLE.
One API, one customer-provided baseline/candidate OpenAPI pair, one declared schema scope, deterministic classification, executive PDF, machine-readable JSON appendix, and a 60-minute findings readout.
Multiple contract pairs, agreed governance rules, prioritised findings, and a team readout.
The in-app demo is a synthetic, local sample and takes no payment. EUR 1,250 is an unvalidated price hypothesis, not a transaction or validated willingness-to-pay signal. Commercial entitlement starts only after written scope and commercial acceptance. AWP1-DEMO-* licence keys and sandbox demo keys never authorise customer evidence, paid monitoring, or production use. There is no active payment processor or automatic paid activation in this build.
Standard target: two business days after valid inputs and written scope acceptance. Remediation, runtime traffic analysis, continuous monitoring, webhooks, SSO, and production integration are excluded.
UNVERIFIED/HOLD: sales@apimaster.dev is the intended APIMaster-domain sales address, but inbound/outbound delivery, ownership and staffing have not been proved. The application does not expose a mailto action or response-time promise. No action sends mail, charges a card, uploads a specification, or grants access. Use the verified local synthetic receipt above for this release candidate.
In this browser-only simulation, an API spec is reduced to one canonical SHA-256 using a demonstration policy that strips servers. A real pilot must agree the canonicalisation and volatile-field policy. To ask "did anything change?" you send the hash as an If-None-Match ETag: unchanged → 304 with an empty body; changed → a fresh ~200-byte L0, and only then do you pull L1/L2. Edit the spec and press Poll to simulate that exchange; no HTTP request is sent.
{
"api": "Orders API",
"version": "2.4.1",
"schemaHash": "sha256:5c4617bcf9dc80ababfbec299942c951751dd791a7cddb98c521e2403733064e"
}This L0 JSON body stays ~125 bytes even as the source spec grows. In this simulation an unchanged poll has a 304 and a 0-byte response body. Request bytes, response headers, TLS, polling frequency, and any L1/L2 fetches are not included.
The whole story on one sheet — click to open the full one-pager.Open ↗A partner narrows one enum, makes one field required, changes one type — and three integrations break in production weeks later. ContractRadar makes declared structural drift easier to surface and prove: it fingerprints the agreed contract scope and turns supported changes into dated, localised, severity-graded, machine-readable evidence.
A provider-assisted L0 fingerprint can reveal declared contract drift; an unchanged response may use ETag/304.
L1 Merkle fingerprints + L2 diff pin the change to an exact RFC-6901 JSON Pointer.
Supported structural changes are graded breaking / minor / cosmetic; a human still owns the release decision.
The local app records alert / log / suppress intent. Actual paging or webhook delivery requires a connector.
typical changed L0 response body in the provider-assisted design; request and header bytes are extra.
breaking / minor / cosmetic policy intent, so a connector can reserve paging for declared breaks.
fingerprint + supported structural classification; notification delivery and the release decision stay explicit.
| Capability | ContractRadar | Manual changelog | oasdiff in CI | Uptime monitor |
|---|---|---|---|---|
| Catches a one-word / enum / domain change | ||||
| Localises to an exact JSON Pointer | ||||
| Classifies severity automatically | ||||
| Can feed consumer signals (connector required) | ||||
| Zero manual changelog writing | ||||
| Provider-assisted L0 response body ≈ 200 bytes |
full · partial / manual · none