Skip to content

chore(version): consolidate version to a single ods/VERSION source - #275

Merged
azilber merged 1 commit into
mainfrom
chore/consolidate-version-source
Aug 10, 2026
Merged

chore(version): consolidate version to a single ods/VERSION source#275
azilber merged 1 commit into
mainfrom
chore/consolidate-version-source

Conversation

@azilber

@azilber azilber commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Consolidates the 9 hardcoded version-string locations (manifest.json x2, constants.sh, macos/constants.sh, constants.ps1, 06-directories.sh fallback, dashboard-api main.py, ods-cli, ARCHITECTURE.md) into a single ods/VERSION file. scripts/sync-version.sh regenerates every derived literal from it — each location stays a plain language-native literal (no new runtime cross-language coupling or container-mount risk), matching this repo's existing convention of checked literals over dynamic reads.

check-version-consistency.py now reads ods/VERSION as canonical (was manifest.json), accepts an optional pre-release suffix in its semver check (needed for 2.6.1-exp), and skips the CHANGELOG.md parity requirement only for suffixed/experimental builds — verified a real x.y.z bump still enforces it.

Also fixes ods-cli and ARCHITECTURE.md, which were missed in the earlier 2.6.1-exp bump (#274) and would have failed this repo's own consistency checker.

Verified: scripts/sync-version.sh round-trip tested (set+sync, restore), check-version-consistency.py passes, make lint clean.

Previously the version string was hardcoded in 9 separate locations
(manifest.json x2, constants.sh, macos/constants.sh, constants.ps1,
06-directories.sh's fallback, dashboard-api main.py, ods-cli,
ARCHITECTURE.md), kept in sync only by convention (comments saying 'must
match constants.sh') and checked post-hoc by check-version-consistency.py.

ods/VERSION is now the single file to edit. scripts/sync-version.sh
regenerates every derived literal from it (each location stays a plain
language-native literal — no new runtime cross-language coupling or
container-mount risk). check-version-consistency.py now reads ods/VERSION
as the canonical value instead of manifest.json, accepts an optional
pre-release suffix (e.g. 2.6.1-exp) in its semver check, and skips the
CHANGELOG.md parity requirement for suffixed/experimental builds (a real
x.y.z release still requires a matching CHANGELOG entry, verified).

Also brings ods-cli and ARCHITECTURE.md's version strings up to
2.6.1-exp, which were missed in the earlier bump (#274) — this repo's own
consistency checker caught them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@azilber
azilber merged commit a0c1ca5 into main Aug 10, 2026
27 of 33 checks passed
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