Skip to content

Dev v3.2.0 - #315

Closed
jgperrin wants to merge 36 commits into
devfrom
dev-v3.2.0
Closed

Dev v3.2.0#315
jgperrin wants to merge 36 commits into
devfrom
dev-v3.2.0

Conversation

@jgperrin

@jgperrin jgperrin commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

RFC 58

DatSciMeMa and others added 30 commits May 5, 2026 16:08
As discussed in the working group added an avis for an updated description for version 3.2.0.
The v3.1.0 standard deprecates `dataProduct`, but neither the v3.1.0
JSON schema, the `latest` JSON schema, nor `docs/fundamentals.md`
reflected the deprecation. Adds `"deprecated": true` to both schemas
and strikes through the property in the docs table.

Closes #226. Supersedes #238 (which mishandled the dated-snapshot
naming convention; that policy lives on `dev` and is not in scope here).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add ContractGate to official ODCS vendors list
… fix

v3.1.0 is a released line, so the silent-update rule applies: any
modification to `odcs-json-schema-v3.1.0.json` should be accompanied
by a frozen dated snapshot so downstream consumers who pin a specific
day's validator can recover the exact bytes.

Snapshot file equals the patched rolling file (`deprecated: true` on
`dataProduct`) at this commit. UTC committer date is 2026-05-05.

Refs #226, #274.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ustomProperties.property

Update custom-other-properties.md
Avis was supposed to be under the table.
…v3.1.0

fix(schema): mark dataProduct as deprecated in v3.1.0
Signed-off-by: Speculator55005 <50082482+fas89@users.noreply.github.com>
Aligns the external shorthand reference example with the fully-qualified
example above it (both use '#/'). Same fix as #221 (merged to dev),
applied here to the dev-v3.2.0 line.



Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: FriedrichBu <FriedrichBu@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a single vendor entry for Collate, the managed cloud service built
on the open-source OpenMetadata platform, with direct ODCS documentation
links for both. Reconstructed from #232 against dev-v3.2.0.



Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: PubChimps <PubChimps@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Allow both .yaml and .yml file extensions in external references
(\.yaml# -> \.ya?ml#) in odcs-json-schema-latest.json.

Clean reapplication of #220, which also injected a stray leading 'r'
into the pattern, edited the frozen v3.1.0 schema, and reformatted the
whole file. This applies only the intended change to the latest schema.



Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: FriedrichBu <FriedrichBu@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR #285 merged a stale single-file revision (latest.json only) due to a
force-push/merge race, dropping the rolling-minor sync. Per
schema/README.md, the .yaml->.ya?ml relaxation must also live in the
rolling v3.2.0 file so latest and v3.2.0 stay consistent.

- schema/odcs-json-schema-v3.2.0.json: apply \.yaml# -> \.ya?ml#
- schema/README.md: v3.2.0 snapshot changelog entry (2026-06-23)

Frozen v3.1.0 schema intentionally untouched.


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
logicalType is valid on schema objects (the JSON schema allows it on
SchemaObject, and the examples use logicalType: object), but the schema
docs only listed it under 'Applicable to Properties'. Move it to the
shared 'Applicable to Elements (either Objects or Properties)' table and
note its object-level usage.

logicalTypeOptions, items, and map remain property-specific.

Closes #228.


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Brings main-only work into the v3.2.0 line so it is not lost when the
release chain (dev-v3.2.0 -> dev -> main) eventually runs:
- dataProduct deprecation (#274/#226): schema + fundamentals.md
- FLUID Forge, Data Contract Editor, Entropy Data vendors; richer Data
  Contract CLI description (#279/#272 et al.)
- custom-other-properties.md edits (#270/#275)
- v3.1.0-20260505 dated snapshot

Conflict resolutions:
- docs/fundamentals.md: keep the v3.2.0 table (apiVersion default v3.2.0,
  status optional per schema) AND mark dataProduct deprecated (from main).
- vendors.md: union of both native-support lists (Collate + Data Contract
  Manager from v3.2.0 line; FLUID Forge etc. from main).

Also synced the dataProduct deprecation note into odcs-json-schema-v3.2.0.json
to keep it consistent with latest.json (per schema/README.md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY
Reconcile main into dev-v3.2.0 (no main-only work lost)
…293)

Implements approved RFC-0043 (Physical Data Encoding) for ODCS v3.2.0.
Adds an optional free-form `encoding` string to the server types that
expose serialized payloads (Azure, Glue, Custom, Kafka, Kinesis, Local,
S3, SFTP), alongside `format`/`delimiter`. Default UTF-8, non-breaking.

- schema: encoding on 8 server defs in both latest + v3.2.0 (lockstep)
- docs: encoding row in infrastructure-servers.md for those servers
- example: docs/examples/server/s3-server-encoding.odcs.yaml (validated)
- negative test: server-encoding-wrong-type.odcs.yaml (schema rejects)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0043-physical-data-encoding.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…properties (#294)

Implements approved RFC-0028 (Deprecated flag), shared with ODPS v1.1.0,
for ODCS v3.2.0. Adds an optional `deprecated` boolean (default false) on
SchemaElement, which both schema objects and properties (including nested)
inherit — mirroring the synonyms placement.

- schema: deprecated on SchemaElement in both latest + v3.2.0 (lockstep)
- docs: deprecated row in schema.md + a Deprecated section
- example: docs/examples/schema/deprecated.odcs.yaml (validated)
- negative test: deprecated-wrong-type.odcs.yaml (schema rejects non-boolean)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0028-deprecated-flag.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Implements approved RFC-0035 (Vendor Attribution), shared with ODPS v1.1.0
and OORS v1.0.0, for ODCS v3.2.0. Adds an optional `vendor` string to
CustomProperty. Per the RFC, vendor SHOULD be lowercase / match
^[a-z0-9][a-z0-9-]*$ but this is NOT enforced as a schema pattern (tools
MUST preserve unknown vendor values); the recommended format is documented.

- schema: vendor on CustomProperty in both latest + v3.2.0 (lockstep)
- docs: vendor row in custom-other-properties.md
- example: docs/examples/custom-other-properties/vendor.odcs.yaml (validated)
- negative test: vendor-wrong-type.odcs.yaml (schema rejects non-string)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0035-extensions.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update all ODCS references to the deprecated-flag RFC from 0028 to 0051
after the number was renumbered in bitol-io/tsc to resolve a collision
with the earlier RFC-0028 (Permalink).


Claude-Session: https://claude.ai/code/session_01FRgkVBM2ry2NQecEAeddnN

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Implements approved RFC-0042 (Vector Type) for ODCS v3.2.0. Adds a `vector`
value to the logicalType enum and a conditional logicalTypeOptions block
(if logicalType==vector) with required `dimensions` plus optional
`elementType`, `distanceMetric`, `normalized`, `embeddingModel`, and
`embeddingModelVersion`. Field names are those the TSC ratified at approval
(`dimensions`, `elementType`).

- schema: vector enum value + conditional options block in both latest +
  v3.2.0 (lockstep); `dimensions` required when logicalType==vector
- docs: vector rows in Logical Type Options table + a Vectors section in schema.md
- example: docs/examples/schema/vector.odcs.yaml (validated)
- negative test: vector-missing-dimensions.odcs.yaml (schema rejects: missing dimensions)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0042-vector-type.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Implements approved RFC-0045 for ODCS v3.2.0. Adds `hana` to the server type
enum, a HanaServer ServerSource def, and the type->$ref mapping. Required
`host` plus optional `port`, `database` (tenant), and `schema`.

Note: the RFC lists `port` as "number"; implemented as integer to match every
other server type (a port is an integer).

- schema: hana enum value + HanaServer def + oneOf mapping in both latest +
  v3.2.0 (lockstep); only `host` required
- docs: SAP HANA section in infrastructure-servers.md
- example: docs/examples/server/hana-server.odcs.yaml (validated)
- negative test: hana-missing-host.odcs.yaml (schema rejects: missing host)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0045-hana-server-type.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…n SLA properties (#299)

Implements approved RFC-0046 for ODCS v3.2.0. Adds optional `customProperties`
and `authoritativeDefinitions` (reusing the existing $defs) to each
slaProperties[] entry, consistent with other ODCS objects.

- schema: both fields on ServiceLevelAgreementProperty in both latest +
  v3.2.0 (lockstep)
- docs: two rows in service-level-agreement.md
- example: docs/examples/sla/sla-extensions.odcs.yaml (validated)
- negative test: sla-authoritativedefinition-missing-type.odcs.yaml
  (schema rejects: authoritativeDefinitions entry missing required `type`)
- CHANGELOG entry

Approved RFC: https://github.com/bitol-io/tsc/blob/main/rfcs/approved/odcs-v3.2.0/0046-sla-custom-properties-and-authoritative-definitions.md


Claude-Session: https://claude.ai/code/session_01Adou6Wv1WCxD3JzmMkewvY

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…faults (#300)

Applies approved RFC-0050 (Variables) to ODCS v3.2.0: any string value MAY
contain ${VAR_NAME} references resolved at runtime by tooling, with the POSIX
${VAR_NAME:-default} form for inline defaults (Option B, TSC 2026-07-13).
No schema change — the RFC adds no section or field. New docs page, example,
and a negative test (variable token in an integer-typed field is rejected).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Applies approved RFC-0047 to ODCS v3.2.0: a new optional `id` string on
RelationshipBase (surfaced on schema-level and property-level relationships),
completing RFC-0026a's stable-identifier coverage. Unique within its
relationships array; SHOULD be stable; cannot contain . # / \ @ ! % & ^.
Both schema files updated in lockstep; references.md field table + example
extended. No negative-test fixture: the RFC adds only an optional string with
no schema-enforced pattern/uniqueness (id-format rules are textual, like every
other ODCS id), so there is no schema-level violation to assert.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
jgperrin and others added 5 commits July 14, 2026 12:01
Applies approved RFC-0049 to ODCS v3.2.0: new `iceberg` server type for Apache
Iceberg catalogs via the Iceberg REST API. Both schema files updated in
lockstep — enum value, conditional dispatch, and IcebergServer def with
required catalog + catalogUrl (per the RFC field table / TSC decision) and
optional namespace + warehouse. Docs section, positive example, and a negative
test (missing catalogUrl → rejected).

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ssary/taxonomy) (#304)

The contract-level context example in docs/context.md documented
authoritativeDefinitions in the Definitions table but no longer showed it in
use. Re-add the Ontology/Glossary/Taxonomy authoritativeDefinitions block on a
constraint, matching the approved RFC-0038 example.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
The variables RFC allows ${VAR_NAME} references in string values only,
which made it impossible to parameterize server ports: the unresolved
token is a string and the integer-typed port rejected it.

Relax all 19 server port definitions via a shared Port $def typed as
integer or string, so a port can hold a variable reference such as
${DB_PORT} or ${DB_PORT:-5432}.

Discussed in the bitol-wg Slack thread; other integer fields remain
integer-only.
Applies approved RFC-0058 to ODCS v3.2.0: new `exasol` server type for Exasol,
an in-memory MPP analytics database. Both schema files updated in lockstep —
enum value, conditional dispatch, and ExasolServer def with required host and
optional port (default 8563) + schema. No `database` field: an Exasol cluster
runs a single database and the schema is the namespace. Docs section, positive
example, and a negative test (missing host -> rejected).

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…BM Informix (#314)

Consistency pass over docs/infrastructure-servers.md.

Eighteen server sections jumped straight from the heading to the property
table while the rest opened with a one-line definition of the technology.
Adds that definition (linked to the vendor/project page, matching the existing
style) for: API, Azure, Databricks, IBM Db2, Denodo, Dremio, Amazon Glue,
Kafka, Amazon Kinesis, Local Files, MySQL, Oracle, Presto, Snowflake, Synapse,
Trino, Vertica, and Custom. All 36 server sections now have one.

Informix is always named as "HCL Informix and IBM Informix" — heading, intro,
and the host/port descriptions, which previously said just "Informix". The
lowercase `informix` in the `type` value list is the schema enum value and is
left as is.

Also re-aligns the three tables whose pipes had drifted (Common Server
Properties, Exasol, Informix) — no content change.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jgperrin
jgperrin requested a review from a team as a code owner August 5, 2026 01:28
Brings the dev-only work into the v3.2.0 line: the ShorthandReference dash fix
(#260), the Enkinex vendor entry (#310), the references URL fragment fix (#221),
and the v3.1.0 dated schema snapshots.

Conflict resolution — 8 files. All but one conflict is dev replaying an older
snapshot of dev-v3.2.0 content through the #290/#301 rollup merges, so the
version-branch side is kept:

* CHANGELOG.md, docs/infrastructure-servers.md, docs/variables.md,
  docs/examples/fundamentals/variables.odcs.yaml,
  src/script/negative-tests/variables-in-integer-field.odcs.yaml — kept
  dev-v3.2.0 (exasol RFC-0058, the server definitions pass, and the RFC-0050
  follow-up #307 that lets `port` hold a string).
* schema/odcs-json-schema-{latest,v3.2.0}.json — kept dev-v3.2.0 for the
  `exasol` enum value and the `$defs/Port` reference; dev's ShorthandReference
  dash pattern merged in cleanly and is preserved.
* vendors.md — kept dev's Enkinex ODCS entry (the only genuinely new
  dev-side content in a conflicted file).

Validated: validate-examples.sh and validate-negative.sh both exit 0,
Total failed=0. The two schema files remain in lockstep.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jgperrin

jgperrin commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Closing this one — superseded. dev has been merged into dev-v3.2.0 instead (ea1fc27), so the v3.2.0 line now contains everything on dev: the ShorthandReference dash fix (#260), the Enkinex vendor entry (#310), the references URL fragment fix (#221), and the v3.1.0 dated snapshots.

The v3.2.0 → dev rollup can be re-cut cleanly from here when v3.2.0 is ready to ship.

@jgperrin jgperrin closed this Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants