Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Comment on lines +23 to +25

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Release automation will not fire on merge

Both the release-notes-check.yml and release.yml workflows gate on startsWith(github.head_ref, 'release/v'). This PR's branch is not named release/v0.8.1, so neither workflow will run: the CHANGELOG entry will land on main without producing a v0.8.1 annotated tag or GitHub Release. The CHANGELOG itself states "A version is unreleased until it is tagged in git," so after this merges, the README will advertise 0.8.1 as the current release but no tag or binary will exist. Either rename the branch to release/v0.8.1 (preferred), or, if the branch cannot be renamed, use workflow_dispatch on Release on merge after merging to supply 0.8.1 as the version input.

Prompt To Fix With AI
This is a comment left during a code review.
Path: CHANGELOG.md
Line: 23-25

Comment:
**Release automation will not fire on merge**

Both the `release-notes-check.yml` and `release.yml` workflows gate on `startsWith(github.head_ref, 'release/v')`. This PR's branch is not named `release/v0.8.1`, so neither workflow will run: the CHANGELOG entry will land on `main` without producing a `v0.8.1` annotated tag or GitHub Release. The CHANGELOG itself states "A version is **unreleased** until it is tagged in git," so after this merges, the README will advertise `0.8.1` as the current release but no tag or binary will exist. Either rename the branch to `release/v0.8.1` (preferred), or, if the branch cannot be renamed, use `workflow_dispatch` on `Release on merge` after merging to supply `0.8.1` as the version input.

How can I resolve this? If you propose a fix, please make it concise.


## 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.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
2 changes: 1 addition & 1 deletion schema/ulc.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading