CodeLattice Release Versioning
CodeLattice release metadata has two separate version tracks:
- Product version: Cargo
workspace.package.version. - MCP profile version: MCP serverVersion in runtime manifests and MCP
initializeresponses.
The product version is what users see in release artifacts and codelattice --version. The MCP serverVersion describes the sidecar tool/profile contract exposed over MCP. They may advance at different speeds and must not be treated as interchangeable.
Source of Truth
Cargo.toml [workspace.package] version is the source of truth for CodeLattice product releases.
It controls:
codelattice --version- the default
scripts/package-release.shartifact name - the required version section in
CHANGELOG.md
Release artifacts use this shape:
codelattice-<version>-<platform>.tar.gz
codelattice-<version>-<platform>.tar.gz.sha256
SemVer Rules
Use patch versions for:
- compatible bug fixes
- documentation updates
- packaging, install, and smoke-script fixes
- internal refactors with no CLI, JSON, MCP, or quality-gate contract break
Use minor versions for:
- additive CLI commands or flags
- additive MCP tools
- additive JSON fields
- compatible quality gates
- new supported fixtures, language coverage, or release artifact contents
Use major versions for:
- removed or renamed CLI commands, flags, or exit-code meanings
- removed or renamed stable JSON/MCP fields
- incompatible quality-gate semantics
- removal of the compatibility binary before an announced deprecation window ends
- Rust toolchain or platform support changes that break existing supported users
Changelog Rules
CHANGELOG.md must contain:
## [Unreleased]- one dated section for the current product version, for example
## [0.1.0] - 2026-05-11 - entries grouped under the categories below when relevant
Allowed categories:
- Added
- Changed
- Fixed
- Deprecated
- Removed
- Security
- Compatibility
- Internal
Every release version must have at least one meaningful changelog entry. Do not publish an empty version section.
Release Checklist
Before publishing or sharing an artifact:
bash scripts/check-release-metadata.sh
cargo fmt --check
git diff --check
cargo test
cargo test --features tree-sitter-cangjie
bash scripts/package-release.sh
bash scripts/release-smoke.sh
bash scripts/install-release.sh --dry-run --version v<version> --platform <platform>
bash scripts/fresh-clone-smoke.sh --skip-tests
For a version bump:
- Update Cargo
workspace.package.version. - Move relevant
Unreleasedentries into## [<version>] - <date>. - Keep a fresh
## [Unreleased]section at the top. - Run
bash scripts/check-release-metadata.sh. - Build and smoke the release tarball.
- Tag the release as
v<version>only after the artifact passes smoke.
Compatibility Naming
codelattice is the primary public binary. gitnexus-rust-core-cli remains a compatibility binary for existing scripts and should be removed only through an announced deprecation path in a future major release.
Release Status
Current product status: External Beta / daily-use candidate.
- Local production trial has passed for Rust and Cangjie projects.
- ArkTS, TypeScript, JavaScript, C, C++, Python, and Shell are included in the full-language beta artifact and release smoke.
- This is not a GA release. Breaking changes to CLI output, MCP contract, or quality gates may occur in minor versions during beta.
- Users should pin to a specific version and verify after upgrades.
Language Support Labels
| Language | Crate Feature | Status | Notes |
|---|---|---|---|
| Rust | tree-sitter-extraction (default) |
Stable | Full symbol extraction, import/call resolution, quality gates |
| Cangjie / 仓颉 | tree-sitter-cangjie |
Stable | Symbol extraction, import/call reference, diagnostics runner, quality gates |
| ArkTS / HarmonyOS | tree-sitter-arkts |
Production Trial | Component/buildMethod extraction, import edges, no @Builder/@Extend, struct→ERROR workaround |
| TypeScript | tree-sitter-typescript |
Beta Hardened | Symbol extraction, imports, calls, tsconfig path alias, workspace package imports |
| JavaScript | tree-sitter-javascript |
Phase A Hardened | JS/JSX/MJS/CJS symbol extraction, ESM/CommonJS imports, package entry points, framework hints |
| C | tree-sitter-c |
Phase A Hardened | Symbol extraction, include edges, compile_commands include path resolution |
| C++ | tree-sitter-cpp |
Phase A Hardened | Symbol extraction, include edges, calls, compile_commands include path resolution |
| Python | tree-sitter-python |
Phase A Hardened | Symbol extraction, calls, package-aware import resolution, simple re-exports |
| Shell | built-in static scanner | Phase A Hardened | Shell script files, functions, source edges, command calls, environment variables, risky-script diagnostics |
Status definitions:
- Stable: Used in production, tested with real projects, quality gates pass.
- Production Trial: End-to-end path works on real projects; known limitations documented.
- Phase A: Basic analysis pipeline works; active development, expect gaps.
- Beta Hardened / Phase A Hardened: Phase A capability plus fixture smoke, MCP smoke, and real-project baseline evidence for beta trial use.
MCP Contract Versioning
The MCP serverVersion (returned by initialize) tracks the sidecar tool/profile contract independently from the product version. When a new MCP tool is added or an existing tool's output schema changes, the serverVersion advances.
Breaking MCP output changes (removed fields, renamed keys) bump the major version. Additive changes (new fields, new tools) bump the minor version.
Product version and MCP serverVersion may advance at different rates.