refactor(core): use pyproject.toml as single source of truth for version (#248) - #249
Merged
dan-petty merged 3 commits intoSep 18, 2026
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Correct the release helper’s success behavior for missing assignments and synchronize task metadata; cache invalidation coverage is also incomplete.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Refactors version handling to make pyproject.toml the authoritative source and updates release automation for dynamic versions.
Changes:
- Dynamizes package version and metadata loading.
- Updates release version updates and cache invalidation.
- Refreshes fallback versions and adds release coverage.
- Updates task tracking metadata.
File summaries
| File | Summary |
|---|---|
tests/test_release.py |
Adds dynamic-version release handling coverage. |
src/devops_cli/telemetry/tracer.py |
Updates the telemetry version fallback. |
src/devops_cli/config/metadata.py |
Updates the default metadata version fallback. |
src/devops_cli/commands/release.py |
Supports dynamic versions and cache invalidation; the missing-assignment behavior requires correction. |
src/devops_cli/__init__.py |
Loads and exports metadata dynamically. |
docs/agent/tasks/task-248-pyproject-version-single-source.md |
Tracks the version-source refactor and needs synchronized status fields. |
Review details
Suppressed comments (1)
src/devops_cli/commands/release.py:280
- The new cache invalidation path is not covered by this test: it updates the TOML and then reads it through
_get_init_version, which parses the file directly rather than exercising cachedget_version()/load_project_metadata(). Add an assertion that callsget_version(pyproject_path)before and after_update_pyproject_versionso a stale-cache regression fails.
from devops_cli.config.metadata import load_project_metadata
load_project_metadata.cache_clear()
- Files reviewed: 6/6 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
dan-petty
added a commit
that referenced
this pull request
Sep 18, 2026
dan-petty
force-pushed
the
refactor/pyproject-version-single-source
branch
from
September 18, 2026 16:26
b7db53c to
50e0967
Compare
dan-petty
added a commit
that referenced
this pull request
Sep 19, 2026
* feat(release): v0.2.20 * fix(pr): handle JSON array timeline payload in _parse_timeline_copilot_state (#245) (#246) * fix(pr): handle JSON array timeline payload in _parse_timeline_copilot_state (#245) * docs(tasks): update task 245 status to In Review and link PR #246 * docs(agents): add roadmap ingestion rules for missing parameters and bad patterns (#247) * docs(agents): add roadmap ingestion rules for missing parameters and bad patterns * fix(agents): gate devops roadmap governance block on is_devops_cli * fix(review): remediate markdown formatting issues and unbalanced code blocks in review reports (#250) (#251) * refactor(core): use pyproject.toml as single source of truth for version (#248) (#249) * refactor(core): use pyproject.toml as single source of truth for version (#248) * fix(release): require __version__ presence in init before dynamic fallback (#249) * docs(roadmap): add universal subcommand option propagation task * feat(cli): universal trailing --dry-run option propagation across subcommands (#252) (#253) * feat(pm): forward-looking project management, roadmap reconstruction, compactor hardening & issue sync (#254) (#255) * feat(pm): forward-looking project management, roadmap reconstruction, compactor hardening & issue sync (#254) * docs(agent): link PR #255 to task-254 * fix(github): handle remote issue query failures gracefully in roadmap sync (#254) * feat(ci): fast execution caching when unchanged & pre-commit file change tracking integration (#256) (#257) * feat(ci): fast execution caching when unchanged & pre-commit file change tracking integration (#256) * docs(agent): link PR #257 to task-256 * feat(pr): add integrations to keep pull requests up to date (#258) (#259) * feat(pr): add integrations to keep pull requests up to date (#258) * docs(agent): link PR #259 to task-258 * fix(ci): address actionlint shellcheck warning and add shellcheck to devcontainer * docs(roadmap): prune completed items from Value vs. Effort Prioritization Matrix * feat(ci): accelerate devops ci performance with worker auto-scaling, test hotspot isolation, and zero-blocking dispatch (#260) (#261) * docs(roadmap): add v0.2.24 milestone for Vibes architectural alignment - POSIX Process Group Sandbox Enforcement (Obs 05) - Structural Pre-Commit Hook Inversion (Systems Obs 08) - Anti-Brittle Constant Elimination (Obs 06) - Semantic Validator Deprecation & Structural Positional Oracles (Obs 17) * feat(ci): accelerate devops ci performance with worker auto-scaling, test hotspot isolation, and zero-blocking dispatch (#260) * fix(review): remediate session findings, harden defensive boundaries, and improve review feedback loop (#262) (#263) * fix(review): remediate session findings, harden defensive boundaries, and improve review feedback loop (#262) * docs(agent): link PR #263 and update status to In Review * docs(agent): reconcile task-262 as merged and prune completed item from matrix (#264) * fix(review): resolve PR #244 review threads, harden markdown fence/asterisk parsing, and update release notes (#265) (#266) * fix(review): resolve PR #244 review threads, harden markdown fence/asterisk parsing, and update release notes (#265) * docs(agent): link PR #266 and set status to In Review * refactor(core): replace inconsistent N-Gate references with Gated (#267) (#268) * refactor(core): replace inconsistent N-Gate references with Gated (#267) * docs(agent): link PR #268 in task-267 tracking * docs(agent): author deliverables as merged and prohibit administrative tracking PRs (#270) (#271)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary of Changes
Closes #248
src/devops_cli/__init__.py: Dynamically initializes__version__ = get_version()frompyproject.toml(viaload_project_metadata().version) and re-exports metadata helper functions directly.__version__ = "0.2.20"from__init__.py.src/devops_cli/commands/release.py:_update_pyproject_version(), invalidatesload_project_metadataLRU cache upon version updates._update_init_version(), inspects__init__.pyfor string literal quotes; if__version__is dynamically assigned, skips file modifications without errors.src/devops_cli/config/metadata.py: Updated_DEFAULT_METADATA.versionfrom stale"0.1.11"to"0.0.0".src/devops_cli/telemetry/tracer.py: Updated_detect_version()exception fallback from stale"0.1.0"to"0.0.0".tests/test_release.py: Addedtest_dynamic_init_version_handlingtesting dynamic init version retrieval and noop updates.