Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
contract:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
persist-credentials: false
- name: Verify public contract and SDK copies
run: |
set -euo pipefail
jq empty openapi.json
cmp sdk/typescript/index.ts packages/typescript/src/index.ts
cmp sdk/typescript/index.ts packages/typescript/src/index.cts
cmp sdk/python/integration_recovery.py packages/python/src/integration_recovery/__init__.py
grep -F 'requiredBodyFieldAlternatives: [["check"], ["checks"]]' sdk/typescript/index.ts
grep -F '"413"' openapi.json

npm-package:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/typescript
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
persist-credentials: false
- uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
with:
node-version: '24.20.0'
registry-url: 'https://registry.npmjs.org'
package-manager-cache: false
- name: Build, test, and reproduce the npm archive
env:
SOURCE_DATE_EPOCH: '1788572555'
run: |
set -euo pipefail
test "$(npm --version)" = '11.19.0'
npm ci --ignore-scripts --no-audit --no-fund
npm run build
npm test
mkdir -p release-dist
npm pack --ignore-scripts --pack-destination release-dist
(cd release-dist && sha256sum -c ../release.sha256)

pypi-package:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/python
steps:
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12.14'
cache: ''
- name: Build, inspect, and reproduce the Python archives
env:
SOURCE_DATE_EPOCH: '1788572555'
PYTHONNOUSERSITE: '1'
run: |
set -euo pipefail
python -m pip install --disable-pip-version-check -r requirements-release.txt
python -c "compile(open('src/integration_recovery/__init__.py', encoding='utf-8').read(), '<public-sdk>', 'exec')"
python -m build --no-isolation --sdist --wheel
python -m twine check dist/*
PYTHONPATH=src python test/smoke.py
(cd dist && sha256sum -c ../release.sha256)
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,12 @@ curl -sS -X POST https://integrationrecovery-api.com/v1/checks \
- [TypeScript SDK](./sdk/typescript/index.ts)

The request shown here is a supported runtime example and has been checked
against the deployed comparison engine. The current OpenAPI document describes
the routes and documented request shapes, but it is not authoritative for the
still-unreconciled nullable or opaque response fields. Generated/certified
connector use remains held until Development reconciles the deployed runtime,
OpenAPI, and SDK request exclusivity, required fields, response shapes,
nullability, `evaluatedAt`, and `rateLimit` behavior. This hold does not prevent
the exact direct-HTTP example above from being used.
against the deployed comparison engine. The OpenAPI document, generated SDKs,
and production runtime now agree on the exactly-one-of `check`/`checks` input,
closed repair parameters, response fields and nullability, `evaluatedAt`,
`rateLimit`, and the `413 payload_too_large` error envelope. Connector builders
can use the published contract directly; the examples above remain the fastest
way to confirm the first useful result.

## Collection scope

Expand Down
Loading