|
| 1 | +# Data Contract Now Speaks Bitol ODCS v3.0.2 |
| 2 | + |
| 3 | +**17 April 2026** |
| 4 | + |
| 5 | +AgileDataGuides today released a major upgrade to the Data Contract app, aligning it with the [Bitol Open Data Contract Standard (ODCS) v3](https://bitol-io.github.io/open-data-contract-standard/) — a Linux Foundation project setting an emerging vendor-neutral standard for data contracts. Contracts authored in the app now export as valid ODCS v3.0.2 YAML and import the same format straight back. The release also introduces a reusable Language Framework that establishes a pattern for interoperability with other standards. |
| 6 | + |
| 7 | +## The Problem |
| 8 | + |
| 9 | +The v1 Data Contract captured contracts as a 3×3 canvas of plain name/description items. That was fine for sketching but fell short of what a real, machine-readable contract needs: |
| 10 | + |
| 11 | +- No schema field types (everything was a string) |
| 12 | +- No quality rule semantics (operator, threshold, target column) |
| 13 | +- No SLA structure (property, value, unit) |
| 14 | +- No team roles |
| 15 | +- No contract metadata (status, domain, data product, tags) |
| 16 | +- And no path to interchange with established standards |
| 17 | + |
| 18 | +Without typed fields and a recognised serialisation format, a contract was a document rather than a programmable artefact. |
| 19 | + |
| 20 | +## The Solution |
| 21 | + |
| 22 | +Data Contract v2.0 enriches the data model to match ODCS v3 structure and ships a Language Framework that translates the native model to/from external standards. |
| 23 | + |
| 24 | +### Enriched data model |
| 25 | + |
| 26 | +- **Columns** carry `logicalType`, `required`, `unique`, `primaryKey`, `classification` |
| 27 | +- **Quality Rules** have `ruleType` (completeness/uniqueness/accuracy/freshness/custom), target `column`, `operator`, `threshold` |
| 28 | +- **SLAs** have `property` (frequency/latency/uptime/retention), `value`, `unit` |
| 29 | +- **Team Members** have a `role` (owner/steward/engineer/analyst/consumer) and replace the singular Publisher |
| 30 | +- **Contract metadata** — status, domain, data product, tags — sits in a Tier 2b strip below the toolbar, all fields editable inline |
| 31 | + |
| 32 | +### Bidirectional ODCS YAML |
| 33 | + |
| 34 | +A new **Export ODCS** button produces valid ODCS v3.0.2 YAML. The **Import** button auto-detects YAML files (by extension or `apiVersion:` prefix) and parses them back to the native format. Round-trip tested — export → import → equivalent contract. |
| 35 | + |
| 36 | +### Language Framework |
| 37 | + |
| 38 | +The bigger idea sitting behind the ODCS work: a general-purpose Language Framework in `packages/shared/src/languages/`. The Context Plane has its own native vocabulary (`contract_model`, `dict_column`, `has_data_asset`, …). External standards — ODCS, OWL, RDF, SKOS, Snowflake Semantic — are "languages" that translate to/from that vocabulary. Each language is a single file implementing an `export()` / `import()` contract. Adding a new standard means adding one file, not scattering format-specific aliases across the schema. |
| 39 | + |
| 40 | +### Agreement tab |
| 41 | + |
| 42 | +A new **Agreement** tab renders the contract as a legal-style document — Producer commits, Consumer obligations, signature blocks — useful for circulating to non-technical stakeholders for sign-off without showing them the canvas. |
| 43 | + |
| 44 | +## How It Works |
| 45 | + |
| 46 | +The Language Framework registry maps language IDs to translator modules. Apps call `getLanguage('bitol').export(graph)` to emit YAML and `getLanguage('bitol').import(yamlString)` to parse it. Each module owns its own pure conversion code; the registry resolves at runtime so apps don't need to import every language they might need. |
| 47 | + |
| 48 | +## Migration |
| 49 | + |
| 50 | +Existing v1 contracts upgrade automatically on load. The migration runs in-place, persists back to disk, and fills sensible defaults for enriched fields (`logicalType: 'string'`, `operator: '>='`, etc.). No manual action required. |
| 51 | + |
| 52 | +## Key Benefits |
| 53 | + |
| 54 | +- **Interoperability** — export to ODCS YAML and share with any tool that reads the Bitol standard |
| 55 | +- **Typed fields** — column types, quality thresholds, SLA units are first-class |
| 56 | +- **Standards-aligned** — the metadata fields match what ODCS Fundamentals expects |
| 57 | +- **Backward compatible** — v1 JSON files auto-migrate, v2.0 round-trips cleanly |
| 58 | +- **Foundation for more standards** — the Language Framework is the path to OWL, RDF, Snowflake Semantic, and more |
| 59 | +- **Sign-off-ready** — the Agreement tab renders the contract as a legal document for stakeholder approval |
| 60 | + |
| 61 | +Data Contract v2.0 is available now in the Context Plane monorepo at `apps/data-contract/`. |
0 commit comments