Skip to content

Add conformance.toml manifest and CI guard#77

Merged
chris-colinsky merged 2 commits into
mainfrom
chore/conformance-manifest
May 27, 2026
Merged

Add conformance.toml manifest and CI guard#77
chris-colinsky merged 2 commits into
mainfrom
chore/conformance-manifest

Conversation

@chris-colinsky
Copy link
Copy Markdown
Member

@chris-colinsky chris-colinsky commented May 27, 2026

Summary

  • New conformance.toml at the repo root listing which openarmature-spec proposals are implemented in this package and at which release version. Seeded from CHANGELOG: 23 implemented, 3 textual-only (0019, 0026, 0030).
  • New scripts/check_conformance_manifest.py validates the manifest against the pinned spec submodule's proposals/ directory on every PR and release build. Catches missing entries, stale entries (proposals that no longer exist or aren't Accepted), unknown status values, and malformed since versions.
  • Intended consumer: the openarmature-spec docs build will fetch the file from raw.githubusercontent.com/LunarCommand/openarmature-python/main/conformance.toml to render a per-implementation status column on the proposals index page.
  • RELEASING.md pre-release checklist gets a new bullet so the manifest is refreshed in lockstep with CHANGELOG.md.

Proposal 0031 (Langfuse mapping) is deliberately absent: it was accepted on spec main after the v0.9.0 cut and isn't in the pinned submodule. The manifest's scope is "proposals visible in the pinned spec submodule"; the spec docs site computes the pinned-vs-head gap on its end.

Test plan

  • CI green on the new validation step (runs after uv sync, before lint, in both ci.yml and release.yml)
  • python3 scripts/check_conformance_manifest.py exits 0 locally and prints OK: 26 accepted proposals, 26 manifest entries, all consistent
  • Eyeball seed values in conformance.toml against CHANGELOG.md

Records which openarmature-spec proposals are implemented in this
package and at which release version. The openarmature-spec docs
build fetches this file from raw.githubusercontent.com to render
a per-implementation status column on the proposals index page.

scripts/check_conformance_manifest.py validates the file against
the pinned spec submodule's proposals/ on every PR and release
build, so a stale entry can't quietly serve wrong data to the docs
site.

Seeded from CHANGELOG: 23 implemented, 3 textual-only (0019, 0026,
0030). Proposal 0031 is intentionally absent: it was accepted on
spec main after the v0.9.0 cut and isn't in the pinned submodule.
Copilot AI review requested due to automatic review settings May 27, 2026 00:53
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a repo-level conformance manifest and CI validation to keep openarmature-python’s implemented-proposal list in sync with the pinned openarmature-spec submodule, so external consumers (notably the spec docs build) can reliably render implementation status.

Changes:

  • Add root conformance.toml mapping accepted spec proposals to implementation status and first-shipped version.
  • Add scripts/check_conformance_manifest.py and run it in CI/release workflows to validate manifest ↔ pinned spec proposal set consistency.
  • Update RELEASING.md checklist to require keeping the manifest current during releases.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
scripts/check_conformance_manifest.py New CI guard to validate the conformance manifest against the spec submodule proposals.
conformance.toml New manifest listing per-proposal implementation status and since versions.
RELEASING.md Adds a release checklist item to keep the manifest and spec_pin current.
.github/workflows/ci.yml Runs the new manifest validation step on PRs.
.github/workflows/release.yml Runs the new manifest validation step on tag-based release builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/check_conformance_manifest.py
Comment thread scripts/check_conformance_manifest.py
Comment thread scripts/check_conformance_manifest.py
Two structured errors instead of AttributeError / TypeError
tracebacks when conformance.toml has a malformed shape:

- Entry that's a scalar instead of a table (e.g., accidentally
  writing `proposals."0001" = "oops"` at the top level).
- `since` value that's an int because the version was written
  without quotes (e.g., `since = 1` instead of `since = "1.0.0"`).

Both are plausible hand-edit typos. The guard now emits the
script's standard ::error::-style messages for either, matching
the rest of the validator's failure output.

Addresses CoPilot PR review feedback on #77.
@chris-colinsky chris-colinsky merged commit fcb3718 into main May 27, 2026
5 checks passed
@chris-colinsky chris-colinsky deleted the chore/conformance-manifest branch May 27, 2026 01:03
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.

2 participants