Skip to content

feat(release): emit compatibility receipts as JSON - #3660

Open
tang-vu wants to merge 2 commits into
Osmantic:mainfrom
tang-vu:feat/compatibility-json
Open

feat(release): emit compatibility receipts as JSON#3660
tang-vu wants to merge 2 commits into
Osmantic:mainfrom
tang-vu:feat/compatibility-json

Conversation

@tang-vu

@tang-vu tang-vu commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add check-compatibility.sh --json with release/manifest versions and ordered check results
  • preserve warnings as structured non-failing results
  • emit a partial receipt before exiting on the first failed contract
  • keep the existing human release-gate output unchanged

Why this matters

The compatibility validator is called by CI and the local release gate. Downstream release automation can now annotate the exact contract that failed without parsing ANSI-formatted console lines, while preserving the current fail-fast invariant.

Overlap check

Searched open and closed PRs for compatibility validator json and PRs referencing ods/scripts/check-compatibility.sh. Open PR #2751 adds help, #2753 adds general test coverage, and #2618/#2575 harden path checks; none adds structured receipts. This PR leaves all compatibility rules unchanged.

Test plan

  • bash ods/tests/test-compatibility-json.sh
  • bash -n ods/scripts/check-compatibility.sh
  • bash -n ods/tests/test-compatibility-json.sh
  • git diff --check -- ods/scripts/check-compatibility.sh ods/tests/test-compatibility-json.sh

Tradeoffs and rollback

JSON construction reuses jq, already a mandatory dependency of this validator. The human path and fail-fast exit codes remain the default; rollback is removal of the optional reporter only.

Generated with Codex

Batch compatibility

  • Independently mergeable; tested combined in order feat(mode): emit routing status as JSON #3657feat(bootstrap): list hosted verification endpoints #3666.
  • Base: upstream/main@6ff9b4fc; synthetic integration head: e45e2647.
  • All focused public-boundary suites, the canonical generated-config JSON scan (12 surfaces), make lint, and git diff --check upstream/main...HEAD passed.
  • tests/test-installer-context-parity.sh still fails at Hermes template bounds each model turn; the identical failure was reproduced on the exact upstream base, so it is not introduced by this batch.
  • No live Docker mutation, model activation, migration, hosted deployment, or hardware validation is claimed.
  • Integration follow-up 740f6bc1 preserves exit 0 in human mode and adds a regression assertion; focused tests were rerun.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant