Skip to content

fix(schema): correct the source_files description to match the required envelope#33

Merged
foadshafighi merged 1 commit into
mainfrom
release/v0.8.1
Jun 23, 2026
Merged

fix(schema): correct the source_files description to match the required envelope#33
foadshafighi merged 1 commit into
mainfrom
release/v0.8.1

Conversation

@foadshafighi

Copy link
Copy Markdown
Contributor

What

Corrects the source_files field description in schema/ulc.schema.json. It said the array is "neither schema-required nor graded," which contradicted three other surfaces that are all correct:

  • the root required array includes source_files (the key is a required envelope member),
  • the root schema description lists "the source-files array" as part of the required envelope,
  • the ConformanceLevel description (taxonomy) lists it the same way.

The reword distinguishes the required envelope key (present on every record) from its contents (the array may be empty via minItems: 0, and its entries are neither required nor graded). This matches the v0.8.0 design intent and the floor fixtures, which carry "source_files": [].

Scope

  • schema/ulc.schema.json: the one field description (no structural change; required, minItems, root description, and ConformanceLevel description are untouched).
  • CHANGELOG.md: 0.8.1 entry.
  • README.md: current-release line to 0.8.1.

Description-only correction: no enum change, no behavior change, 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.

Why it matters

ulcspec.org renders the canonical schema byte-for-byte, so the /docs/schema and /docs/taxonomy pages contradicted each other on whether source_files is required. The website re-vendors after this lands.

…ed 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.
@foadshafighi foadshafighi requested a review from a team as a code owner June 23, 2026 19:08
@github-actions

Copy link
Copy Markdown

Codex Automated Code Review

Code Review Summary

PR: Patch release 0.8.1 correcting the source_files schema description and updating release docs.

P0 - Critical Issues (Must Fix)

None found.

P1 - High Priority Issues (Should Fix)

None found.

P2 - Medium Priority Issues (Consider Fixing)

None found.

P3 - Low Priority Issues (Optional)

None found.

Positive Observations

  • schema/ulc.schema.json:146 now matches the actual root required envelope at schema/ulc.schema.json:164: source_files is required, but may be an empty array via minItems: 0.
  • No enum, taxonomy, $ref, unit, provenance, workflow, or generated-index behavior changed in this PR.
  • README.md:129 and CHANGELOG.md:23-25 consistently frame this as a patch/documentation-only release.

Validation performed:

  • jq empty schema/ulc.schema.json schema/taxonomy.schema.json passed.
  • python3 -m json.tool passed for both schema files.
  • python3 tools/schema-drift-guard.py passed: all 219 $ref pointers resolve.
  • go test ./... could not run because the review sandbox is read-only and cannot create a Go build cache, even under /tmp.

Automated review by OpenAI Codex

@greptile-apps

greptile-apps Bot commented Jun 23, 2026

Copy link
Copy Markdown

Greptile Summary

This PR corrects the source_files field description in schema/ulc.schema.json to distinguish the required envelope key (present on every record) from the optionally-empty array contents (entries neither required nor graded), resolving a contradiction with the root required array, root schema description, and ConformanceLevel definition. It also adds a 0.8.1 CHANGELOG entry and bumps the README version badge.

  • Schema change: description-only reword of source_files; no structural, enum, required, or behavioral change. Existing 0.8.0 records remain valid.
  • Versioning: CHANGELOG and README are updated to 0.8.1, but the PR branch is not named release/v0.8.1, which means the automated tag-and-release pipeline will not fire on merge — see inline comment.

Confidence Score: 4/5

The schema correction itself is safe; the only risk is that merging without a release/v0.8.1 branch name leaves main advertising version 0.8.1 in the README and CHANGELOG with no corresponding git tag or GitHub Release.

The description reword is accurate and internally consistent with the rest of the schema. The concern is the release pipeline: both release-notes-check.yml and release.yml gate on the branch being named release/v*, so merging this as-is will silently skip tagging and binary publication for 0.8.1.

CHANGELOG.md — the 0.8.1 entry is correct but the branch naming means the automated release won't run on merge.

Important Files Changed

Filename Overview
schema/ulc.schema.json Description-only correction to source_files: distinguishes the required envelope key from the optionally-empty array contents; no structural, enum, or behavioral change.
CHANGELOG.md Adds a well-formed 0.8.1 entry, but this PR's branch is not named release/v0.8.1, so the automated release pipeline will not tag the commit on merge.
README.md Version badge bumped from 0.8.0 to 0.8.1; accurate if the release tag is eventually created.
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
CHANGELOG.md:23-25
**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.

Reviews (1): Last reviewed commit: "fix(schema): correct the source_files de..." | Re-trigger Greptile

Comment thread CHANGELOG.md
Comment on lines +23 to +25
## 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.

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.

@foadshafighi foadshafighi merged commit 4077e70 into main Jun 23, 2026
4 checks passed
@foadshafighi foadshafighi deleted the release/v0.8.1 branch June 23, 2026 19:16
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.

1 participant