Skip to content

Invaract

Stop hoping your Spark job or Beam pipeline matches its contract. Prove it, before the write happens.

Invaract parses a data contract, translates the engine’s own description of a job (a Spark logical plan, or a Beam pipeline graph) into an engine-independent representation, and checks the two against each other — structurally, before the write executes. A violation stops the job. No output is created.

The real job

Verification runs against what the engine is about to execute: Spark’s logical plan, or a Beam pipeline’s graph — not a mock, not a static description of a table.

Enforcement, not just reporting

A contract-violating write is stopped before it happens, on Spark inside the session and on Beam before the pipeline reaches its runner.

No code change to the job

A platform team attaches Invaract with a spark-submit --conf or a Beam --runner option, to jobs whose source it doesn’t own.

Fails closed

A write shape Invaract doesn’t recognize is rejected, not silently let through unverified.

Never crashes

Constructs the adapter can’t translate degrade to a diagnostic, not an exception — checked by property-based fuzzing.

Quick Start

Go from a fresh clone to a verified Spark write in one command. Start here →

Apache Beam

Check a Java or Python pipeline before it runs, or in CI without running it. Java → · Python →

Write a Contract

Learn the contract format by extending the one this project ships with. Read the guide →

Concepts

Understand verification vs. enforcement, and why Invaract fails closed. Learn more →

Reference

The contract format, every setting, supported connectors, and every violation type. Browse reference →