From a34df9001b648ca3a9d53b6787cd646f3efd051f Mon Sep 17 00:00:00 2001 From: Foad Shafighi <208281409+foadshafighi@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:07:53 -0400 Subject: [PATCH] fix(schema): correct the source_files description to match the required envelope The source_files field description said the array is neither schema-required nor graded. That contradicted the root required array, which includes source_files, and the record-envelope descriptions in the root schema and the ConformanceLevel definition, which both list the source-files array as a required envelope member. Reword the description to distinguish the required envelope key (present on every record) from its contents (the array may be empty and its entries are neither required nor graded). Description-only: no structural change, no enum or behavior change, and no re-grade. Records continue to declare ulc_version 0.8.0. --- CHANGELOG.md | 4 ++++ README.md | 2 +- schema/ulc.schema.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 511bebf..1e56634 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ Releases are automated. To ship a release: For emergency manual releases (bypassing the PR flow), trigger the `Release on merge` workflow manually via `workflow_dispatch`, providing the version input. +## 0.8.1 (2026-06-23) + +Corrects the `source_files` field description in `schema/ulc.schema.json`, which contradicted the rest of the schema. The `source_files` key is a required member of the record envelope (present on every record), while its array may be empty (`minItems` 0) and its entries are neither required nor graded. The description previously said the array was "neither schema-required," disagreeing with the root `required` array and the record-envelope descriptions in the root schema and the `ConformanceLevel` definition. This is a description-only correction: no structural change, no enum or behavior change, and no re-grade. Records continue to declare `ulc_version` `0.8.0`; a 0.8.0 record is unchanged and valid under 0.8.1. + ## 0.8.0 (2026-06-23) `incomplete` becomes the true floor of the conformance model. The tooling never fails a record on data completeness: a record with identity but zero source documents is valid, grades `incomplete`, and carries a roadmap to core. The roadmap now decomposes per grade all the way to full, showing the grades a record already satisfies and, for each grade it has not yet reached, only that grade's own remaining fields. The model is now framed as three grades (`core`, `standard`, `full`) above an `incomplete` floor. diff --git a/README.md b/README.md index 60dbc98..c68a745 100644 --- a/README.md +++ b/README.md @@ -126,7 +126,7 @@ To check the current state of manufacturer adoption (which manufacturers have pu ## Project status -The current release is `0.8.0`. Conformance is computed rather than declared: the reference builder grades each record against three grades (`core`, `standard`, `full`) above an `incomplete` floor and stamps the result into the generated index. The toolchain ships the split schema and taxonomy, the drift-guard tooling, the reference command-line validator and compiler (`ulc`) with schema validation, builder parity, and source-file hash verification, the deterministic `from-sheet` workbook-to-record converter, the fill-in workbook template under `templates/workbook/`, and the PIM platform mapping guides under `mappings/pim/`. See `CHANGELOG.md` for the full release history. +The current release is `0.8.1`. Conformance is computed rather than declared: the reference builder grades each record against three grades (`core`, `standard`, `full`) above an `incomplete` floor and stamps the result into the generated index. The toolchain ships the split schema and taxonomy, the drift-guard tooling, the reference command-line validator and compiler (`ulc`) with schema validation, builder parity, and source-file hash verification, the deterministic `from-sheet` workbook-to-record converter, the fill-in workbook template under `templates/workbook/`, and the PIM platform mapping guides under `mappings/pim/`. See `CHANGELOG.md` for the full release history. The specification will continue to evolve based on real-world use, industry feedback, and alignment with adjacent standards. See `CHANGELOG.md` for release notes. diff --git a/schema/ulc.schema.json b/schema/ulc.schema.json index 86d9edf..fc13118 100644 --- a/schema/ulc.schema.json +++ b/schema/ulc.schema.json @@ -143,7 +143,7 @@ }, "source_files": { - "description": "Source files from which this record derives its data. Each file is referenced by filename, optional URL, and SHA-256 content hash. Files are not embedded. The array may be empty for an incomplete record that is still being authored; the array is neither schema-required nor graded. The graded core cutsheet item is the family-level pointer `product_family.cutsheet`; `source_files[]` is the integrity-tracked provenance manifest for whatever documents a record cites.", + "description": "Source files from which this record derives its data. Each file is referenced by filename, optional URL, and SHA-256 content hash. Files are not embedded. The `source_files` key is part of the record envelope, so it is present on every record, but the array may be empty (`minItems` 0) for an incomplete record still being authored, and its entries are neither required nor graded. The graded core cutsheet item is the family-level pointer `product_family.cutsheet`; `source_files[]` is the integrity-tracked provenance manifest for whatever documents a record cites.", "type": "array", "items": { "$ref": "#/$defs/SourceFile" }, "minItems": 0