Requirements stay explicit.
Sources, destinations, and contract checks live in reviewable files.
Turn pipeline definitions and data requirements into versioned, executable configuration. Give people and agents a repeatable way to build, run, and check the work.
Change the sample. See which record fails and why. The same contract supplies the check each time. The panel beside it is a recorded PyCharter 0.0.67 run: good rows are kept, and the row with amount -5 is quarantined with its reason.
| Symbol | Date | Close | Check |
|---|---|---|---|
| DEMO | 2026-10-12 | 12.50 | |
| SAMPLE | 2026-10-12 | 8.25 |
The same contract. A corrected input. A repeatable check.
| Accepted | Quarantined | Failed |
|---|---|---|
| 3 | 1 | 0 |
| Order | Amount | Reason |
|---|---|---|
| ORD-1004 | -5 | Column 'amount': Input should be greater than or equal to 0 (found -5) |
ORD-1004: Column 'amount': Input should be greater than or equal to 0 (found -5) The reason code is validation_failed.
The specification lives with your project. The next developer or agent can inspect the pipeline, understand its requirements, and check a proposed change.
Pipeline standards travel with the configuration, across models and maintainers.
This local template reads orders and enforces their contract before writing an output file. Download the two manifests and the sample input into one directory.
Download sample inputpython -m pip install "pycharter==0.0.67" "sqlalchemy[asyncio]"
pycharter pipeline validate pipeline.yaml
pycharter pipeline run pipeline.yamlPython 3.11+ · local file input and output · no API key needed. A successful run replaces accepted.jsonl. Change an amount to −5 and rerun to see the load stop.
api_version: pycharter.io/v2
kind: Pipeline
metadata:
name: orders_feed
version: "1.0.0"
spec:
steps:
- id: read_orders
type: extract
source:
type: file
path: orders.jsonl
format: jsonl
- id: write_orders
type: load
input: read_orders
target:
type: file
path: accepted.jsonl
format: jsonl
mode: overwrite
contract:
ref:
type: file
path: orders-contract.yaml
validate: true
coerce: true
on_error: fail
The contract block is the enforcement point. A failed record stops this file loader; a previous output file is not proof of a successful new run.
Native review unavailable
Native preview and checks are not connected in this view. Review the draft with a supported PyCharter runtime before running it.
Reading, copying or downloading these bytes does not validate or run a pipeline.
api_version: pycharter.io/v2
kind: DataContract
metadata:
name: orders
version: "1.0.0"
spec:
json_schema:
version: "1.0.0"
type: object
properties:
order_id:
type: string
minLength: 1
amount:
type: number
minimum: 0
required: [order_id, amount]
additionalProperties: false
Each order needs an ID and a nonnegative amount. The versioned file preserves the requirements for the next developer or agent.
Native review unavailable
Native preview and checks are not connected in this view. Review the draft with a supported PyCharter runtime before running it.
Reading, copying or downloading these bytes does not validate or run a pipeline.
Sources, destinations, and contract checks live in reviewable files.
Attach the contract where it must be enforced. Every candidate faces the same declared requirements.
Use run results to diagnose failure. Add scheduling, independent health checks, and recovery through a qualified deployment.
Local validation and the file pipeline above are available in the pinned release. Continuous monitoring, durable publication, and recovery depend on the connector and deployment profile. See the capability guide before adopting a production workflow.
View capability status