Skip to content

[BUG-03] Version drift across 6 files — pyproject=7.2.0, utils.py=8.0.0, README=v8.2, SKILL.md=v8.1 #37

Description

@Wolfvin

Summary

CodeLens version metadata is fragmented across 6 files with 4 different values: 7.2.0, 8.0.0, 8.1, 8.2. There is no single source of truth, and the release process documented in CONTRIBUTING.md (which instructs maintainers to bump version in utils.py, skill.json, and pyproject.toml) is clearly not being followed.

Evidence

Source Value Location
pyproject.toml 7.2.0 L7 version = "7.2.0"
skill.json 7.2.0 (top-level version field)
scripts/utils.py 8.0.0 L393 CODELENS_VERSION = "8.0.0"
README.md v8.2 L1 # CodeLens v8.2 — AI-Native Code Intelligence
SKILL-QUICK.md v8.2 L1 # CodeLens v8.2 — Quick Reference
SKILL.md v8.1 L12 # CodeLens v8.1
CHANGELOG.md [8.2.0] — Unreleased L8 (latest released: [8.1.0] — 2026-06-13)

The actual unreleased version per CHANGELOG is 8.2.0, but:

  • pyproject.toml / skill.json are stuck at 7.2.0 (two major versions behind).
  • utils.py (the runtime CODELENS_VERSION constant used by codelens --version and the MCP server's serverInfo.version) is at 8.0.0.
  • SKILL.md is at 8.1 (one minor behind).

Impact

  1. MCP clients see wrong version: initialize response's serverInfo.version reads from utils.CODELENS_VERSION = "8.0.0", but the actual feature set (compact format, graph-schema, git-aware, architecture, hybrid-type-resolver) is 8.2.0-level. Clients that gate behavior on version will mis-route.
  2. Packaging metadata lies: pip install codelens (if it ever ships to PyPI) would report 7.2.0 while the code is at 8.2.0.
  3. CHANGELOG credibility: The [8.2.0] — Unreleased section advertises features that the version constants don't acknowledge.
  4. Contributor confusion: New contributors can't tell which file is the source of truth.

Suggested fix

  1. Single source of truth: Make scripts/utils.py:CODELENS_VERSION the only authoritative version. Update pyproject.toml and skill.json to read from it (e.g., via a build-time hook in pyproject.toml using dynamic = ["version"] + [tool.setuptools.dynamic] version = {attr = "utils.CODELENS_VERSION"}).
  2. Bump to 8.2.0: Since CHANGELOG already has [8.2.0] features, set CODELENS_VERSION = "8.2.0" and release.
  3. Strip hardcoded versions from docs: Replace # CodeLens v8.2 in README.md / SKILL-QUICK.md / SKILL.md with a placeholder that's regenerated from CODELENS_VERSION (or just remove the version from the H1 — readers can run codelens --version).
  4. CI guard: Add a test that asserts pyproject.toml.version == skill.json.version == utils.CODELENS_VERSION, failing CI on any drift.

Files

  • pyproject.toml (L7)
  • skill.json
  • scripts/utils.py (L393)
  • README.md (L1)
  • SKILL.md (L12)
  • SKILL-QUICK.md (L1)
  • CHANGELOG.md (L8)
  • tests/test_version_consistency.py (new)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions