Skip to content

Run Pylint through the PyPy shim - #10

Merged
leynos merged 8 commits into
mainfrom
feat/ruff-pylint-pypy-shim
May 16, 2026
Merged

Run Pylint through the PyPy shim#10
leynos merged 8 commits into
mainfrom
feat/ruff-pylint-pypy-shim

Conversation

@leynos

@leynos leynos commented May 15, 2026

Copy link
Copy Markdown
Owner

Summary

This branch imports the Episodic lint policy into BeatCue and adds a second lint tier that runs Pylint through the pinned PyPy shim after Ruff. It keeps the fast Ruff pass first while making the extra Pylint checks reproducible from the standard make lint target.

It also documents the lint architecture for contributors, records the Ruff-first, PyPy-shimmed Pylint decision in ADR 004, and addresses review feedback by adding a stamped dependency-sync target plus clearer uv failure handling.

Review walkthrough

  • Start with Makefile to see how .deps guards uv sync --group dev, how uv is checked before use, and how make lint runs Ruff before the pinned pylint-pypy-shim command.
  • Then review pyproject.toml for the imported Ruff rule changes, banned typing.* APIs, NumPy pydocstyle convention, and grouped focused Pylint message selection.
  • Read docs/developers-guide.md for contributor-facing guidance on the two-tier linting approach, make lint, Makefile variables, the .deps stamp, the Episodic policy, and the lint configuration sections.
  • Finish with docs/adr-004-two-tier-python-linting.md for the architecture decision, alternatives considered, migration plan, and known risks.

Validation

  • mbake validate Makefile: passed; Makefile syntax is valid.
  • make check-fmt: passed; Ruff reported 27 files already formatted.
  • make lint: passed; Ruff reported all checks passed and Pylint rated the code 10.00/10.
  • make typecheck: passed; ty check reported all checks passed.
  • make test: passed; 1 test passed.
  • make markdownlint: passed.
  • make nixie: passed.
  • make check-fmt UV=/definitely/missing: failed as expected with the explicit uv error message.

Notes

No roadmap task, issue, or execplan is associated with this branch.

make fmt was run during the documentation update. Ruff formatting and import sorting passed, but the mdformat-all wrapper exits non-zero on pre-existing long-table diagnostics in unrelated Markdown files even though the repository's configured make markdownlint target passes. Formatter side effects outside the requested files were reverted.

@coderabbitai

coderabbitai Bot commented May 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 81cd42bb-d3ee-4dfa-a11b-b0392c38fea5

📥 Commits

Reviewing files that changed from the base of the PR and between 51d4c89 and 0b69bde.

📒 Files selected for processing (1)
  • Makefile

Two-tier Python linting workflow with Pylint via PyPy shim

This PR implements a two-tier local Python linting architecture: a fast Ruff pass followed by a reproducible, pinned Pylint run executed through a PyPy-backed shim. The decision, rationale and migration plan are recorded in ADR 004 (docs/adr-004-two-tier-python-linting.md) and developer-facing usage is documented in docs/developers-guide.md.

Motivation

Provide a single documented lint command that is fast for frequent local use (Ruff) while adding focused Pylint checks for logging safety, pattern-matching correctness, selected code-quality heuristics and size/complexity limits — executed reproducibly via a pinned PyPy shim and Makefile-driven tool wiring.

Key changes

  • Makefile

    • Adds configurable UV invocation (UV ?= uv), UV_ENV wiring and an ensure_uv guard that hard-fails with an explicit error when uv is missing.
    • Introduces a stamped .deps target (now depends on pyproject.toml and uv.lock) which runs uv sync --group dev and touches .deps; many targets (build, fmt/check-fmt, lint, typecheck, test, check-architecture) now depend on .deps.
    • Rewires tool invocation to run through $(UV_ENV) $(UV) run / $(UV_ENV) $(UV) tool run rather than hardcoded calls. TOOLS no longer lists uv/ruff directly.
    • Adds pinned Pylint shim configuration and invocation:
    • lint target: runs Ruff first (ruff check) then the pinned pylint-pypy shim against beatcue and tests, then make check-architecture.
    • fmt/check-fmt/typecheck/test targets run tooling via the uv wiring; test depends on .deps and runs pytest via $(UV_ENV) $(UV) run.
  • pyproject.toml

    • Imports an Episodic-aligned Ruff configuration: preview=true, target-version = "py314", NumPy pydocstring convention, mccabe complexity limit, and expanded per-file-ignores for tests.
    • Adds flake8-tidy-imports banned-api mappings forbidding deprecated typing.* generics/aliases with migration guidance.
    • Adds a focused Pylint configuration under tool.pylint: recursive scanning, module size and design limits (max-module-lines, max-args, max-locals, max-statements, max-positional-arguments), and a messages-control block that disables all then selectively enables a curated set of message IDs (logging safety, pattern-matching correctness, selected quality heuristics and basic size/complexity checks).
  • Documentation

    • ADR 004 (docs/adr-004-two-tier-python-linting.md) documents the Ruff-first / PyPy-shimmed Pylint decision, alternatives considered, migration plan, operational wiring (.deps, UV handling), and known risks (PyPy lag, slower second tier, disabled syntax-error for parseable usefulness, shim pin maintenance).
    • docs/developers-guide.md updated with the linting architecture, Makefile variables, .deps behaviour and where configuration lives.
  • Tests & housekeeping

    • tests/test_architecture_cli.py: small assertion refactor to use assert not captured.out / assert not captured.err instead of equality with "".
    • .gitignore: adds .deps.
    • Makefile now depends on uv.lock for .deps so uv sync --group dev runs when the lockfile changes (commit adds uv.lock to prerequisites).

Validation

Author-reported validation:

  • mbake validate Makefile passed.
  • make check-fmt passed (Ruff formatted 27 files).
  • make lint passed (Ruff OK; Pylint via pinned PyPy shim scored 10.00/10).
  • make typecheck passed.
  • make test passed (1 test).
  • make markdownlint and make nixie passed.
  • Negative test: make check-fmt UV=/definitely/missing failed as expected showing the explicit uv error message.

Notes & follow-ups

  • The Pylint shim is pinned (PYLINT_PYPY_SHIM_REF = 726d09f968b4d729ee4b29c71fc732e744854f3b) to ensure reproducible second-tier behaviour; maintainers should advance the pin when appropriate.
  • ADR and docs describe migration and known limitations; there is no execplan, issue or roadmap task referenced in the PR.

Walkthrough

Centralise Makefile tool execution behind UV; create .venv via $(UV_ENV) $(UV) venv --clear, add a .deps stamp for uv sync --group dev, run ruff/pylint/pytest via $(UV_ENV) $(UV) run/tool run; add Ruff and focussed Pylint configuration, ADR/docs, update tests and ignore .deps.

Changes

Tool Execution & Configuration Modernisation

Layer / File(s) Summary
UV execution framework & Make targets
Makefile, .gitignore
Introduce UV ?= uv and ensure_uv; create .venv via $(UV_ENV) $(UV) venv --clear; add .deps running $(UV_ENV) $(UV) sync --group dev; run ruff, python -m beatcue.architecture, pytest and pylint-pypy-shim through $(UV_ENV) $(UV) run/tool run; update ensure_tool_venv, build, clean and ignore .deps.
Ruff & Pylint configuration
pyproject.toml
Set Ruff target-version = "py314", expand test per-file ignores, add flake8-tidy-imports banned typing.* APIs with migration notes, set pydocstyle = "numpy", and add tool.pylint main, design and messages control blocks with a curated message set.
ADR: Two‑tier Python linting
docs/adr-004-two-tier-python-linting.md
Add ADR documenting Ruff-first, pinned PyPy‑based pylint-pypy-shim second tier, .deps‑guarded dev dependency sync, Makefile UV behaviour, decision drivers, migration plan, risks and architectural rationale.
Developers guide linting doc
docs/developers-guide.md
Reword v1 boundary, replace planned package table with a bullet list, and add "Linting architecture" section describing the Ruff-then-Pylint gate, Makefile variables and where lint config lives.
CLI tests: empty-output assertions
tests/test_architecture_cli.py
Replace == "" stdout/stderr checks with assert not captured.out / assert not captured.err in multiple CLI tests.

Sequence Diagram(s)

sequenceDiagram
  participant Makefile
  participant UV as uv
  participant UV_ENV as UV_ENV
  participant Venv as ".venv"
  participant Sync as "uv sync --group dev"
  participant Ruff as ruff
  participant PylintShim as "pylint-pypy-shim"
  participant PyTest as pytest

  Makefile->>UV: $(UV_ENV) $(UV) venv --clear
  UV->>Venv: create venv
  Makefile->>UV: $(UV_ENV) $(UV) sync --group dev
  UV->>Sync: install dev deps
  Makefile->>UV: $(UV_ENV) $(UV) run ruff check
  UV_ENV->>Ruff: execute Ruff
  Makefile->>UV: $(UV_ENV) $(UV) tool run --python pypy pylint-pypy-shim
  UV_ENV->>PylintShim: execute focused Pylint
  Makefile->>UV: $(UV_ENV) $(UV) run pytest
  UV_ENV->>PyTest: run tests
Loading

Possibly related PRs

  • leynos/stilyagi#13: Share the same Ruff‑then‑pinned pylint-pypy-shim lint wiring and Makefile PYLINT* variables.
  • leynos/prosidy-darn#10: Implement the same two-tier lint workflow and pinned pylint-pypy-shim runner in Makefile.

Poem

Wrap the tools in UV's care,
Centralise the venv and the air,
Point out typing ghosts with a ban,
Ruff shouts first while Pylint scans,
Docs and tests now march in pair.


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
Testing (Overall) ❌ Error PR introduces two-tier linting, .deps target, ensure_uv macro, and Pylint config, but provides no unit tests. Only test changes are assertion style improvements. Validation is CI-only. Add unit tests for: .deps target sync; ensure_uv uv detection and errors; PYLINT variable expansion; pyproject.toml Pylint/Ruff configuration correctness.
Testing (Unit And Behavioural) ⚠️ Warning PR changes Makefile workflow, adds .deps target, integrates Pylint-pypy-shim. Only assertion refactoring in tests; zero new tests for behaviour, edge cases, error paths. Add tests for ensure_uv macro, .deps target logic, and integration tests for make lint and make test workflows.
Testing (Compile-Time / Ui) ⚠️ Warning PR lacks testing for compile-time behaviour and UI-adjacent output. No trybuild tests for Makefile linting. test_architecture_cli.py tests CLI diagnostics but uses string assertions, not snapshots. Add snapshot tests for architecture CLI diagnostic output (ARCH001 messages). Consider compile-time validation tests verifying Ruff/Pylint configuration and output in the linting pipeline.
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title directly describes the main change in the pull request: adding Pylint execution through the PyPy shim, which is confirmed by the Makefile, pyproject.toml, and ADR 004 changes.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, explaining the two-tier lint workflow, documenting the architecture, and providing validation results.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
User-Facing Documentation ✅ Passed PR contains no user-facing functionality changes. Changes are developer-infrastructure only (Makefile, linting config, contributor docs). docs/users-guide.md correctly remains unmodified.
Developer Documentation ✅ Passed ADR 004 documents linting decision. Developers-guide updated with linting architecture, UV, .deps, and PYLINT variables. No roadmap items affected. Single-language docs.
Module-Level Documentation ✅ Passed The PR introduces no new Python modules. The single modified module retains its docstring. All 10 existing modules carry proper docstrings explaining purpose and function.
Testing (Property / Proof) ✅ Passed No algorithms or invariants introduced—tooling and configuration changes only (build orchestration, linting rules, documentation).
Unit Architecture ✅ Passed Query paths are pure and read-only with explicit fallibility. Dependencies are injectable. Responsibilities are single and coherent. Build changes do not affect application architecture.
Domain Architecture ✅ Passed Domain Architecture check not applicable. PR contains no domain/application/adapter code changes; only tooling and configuration updates. No infrastructure coupling in existing code.
Observability ✅ Passed PR modifies only build system, configuration, documentation, and tests. No runtime application code changed. Observability check applies to production operational behaviour, which is unaffected.
Security And Privacy ✅ Passed No secrets, injection risks, or privacy concerns. Git URL pinned via SHA-1 commit hash. Variables properly quoted. Pylint enables security-relevant checks for logging, resource, and subprocess safety.
Performance And Resource Use ✅ Passed Changes avoid algorithmic regressions and unbounded resource use. UV caches local and gitignored. .deps stamping avoids redundant syncs. Tool targets bounded. No blocking on hot paths.
Concurrency And State ✅ Passed PR changes only build configuration, tool settings, documentation, and test assertions. No concurrency, shared state, locking, async execution, or synchronisation introduced.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/ruff-pylint-pypy-shim

Comment @coderabbitai help to get the list of available commands and usage tips.

@sourcery-ai

sourcery-ai Bot commented May 15, 2026

Copy link
Copy Markdown

Reviewer's Guide

Integrates a PyPy-backed Pylint pass into the existing uv-driven workflow, tightens Ruff configuration (Python 3.14 target, NumPy docstrings, banned typing generics), and standardizes Makefile tooling so all lint/format/test commands run through the project virtualenv.

Flow diagram for updated lint workflow with PyPy-backed Pylint

flowchart LR
    A[make lint] --> B[build]
    B --> C[.venv via UV_ENV and UV]
    C --> D[UV sync --group dev]
    D --> E[UV run ruff check]
    E --> F[UV tool run pylint-pypy]
    F --> G[PyPy interpreter]
    F --> H[pylint-pypy-shim repo@PYLINT_PYPY_SHIM_REF]
    G --> I[Pylint checks beatcue and tests]
    H --> I
Loading

File-Level Changes

Change Details Files
Tighten Ruff configuration to align with project style and future Python version targets.
  • Set Ruff target-version to Python 3.14 for linting compatibility checks.
  • Extend per-file ignores for test modules to cover additional PLR rules that would be noisy in tests.
  • Introduce flake8-tidy-imports banned-api rules to forbid deprecated typing.* generics in favour of built-in and collections.abc types.
  • Enable NumPy-style docstring enforcement via Ruff pydocstyle configuration.
pyproject.toml
Introduce a focused Pylint configuration for code quality, logging safety, pattern matching correctness, and size/complexity limits.
  • Add [tool.pylint.main] settings for recursive analysis and module size limits.
  • Configure [tool.pylint.design] thresholds for arguments, locals, statements, and positional parameters to complement Ruff’s limits.
  • Define [tool.pylint."messages control"] to disable all messages by default, re-enable a curated set of logging, pattern-matching, refactoring, safety, and style checks, and ignore syntax-error to accommodate the PyPy version gap.
pyproject.toml
Standardize Makefile tooling through uv and extend linting to run Pylint via a pinned PyPy shim after Ruff.
  • Introduce a configurable UV variable with a fallback discovery mechanism and remove uv from the TOOLS list so it is not treated as an external prerequisite.
  • Update virtualenv and dependency management targets to invoke uv via the UV variable and ensure build, fmt, check-fmt, lint, and test run inside the project virtualenv using uv run.
  • Add Pylint-related variables (interpreter, targets, shim ref, shim spec, and command) and extend the lint target to run Ruff first and then Pylint via the PyPy-backed shim.
  • Adjust fmt, check-fmt, and test targets to depend on build and use $(UV_ENV) $(UV) run instead of invoking tools directly, keeping execution consistent across environments.
Makefile

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@leynos
leynos marked this pull request as ready for review May 15, 2026 11:41
sourcery-ai[bot]

This comment was marked as resolved.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Around line 4-5: The Makefile defines UV and a TOOLS variable but doesn't
include UV in TOOLS, so preflight validation misses the uv binary; update the
TOOLS definition to include the UV variable (reference symbols: UV and TOOLS) so
Makefile targets that run `$(UV_ENV) $(UV)` are validated ahead of execution and
fail with a clear message if uv is missing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 805a3cce-be08-44f8-8853-d85bf23ebbe8

📥 Commits

Reviewing files that changed from the base of the PR and between 53ba3e1 and 13d0f26.

📒 Files selected for processing (2)
  • Makefile
  • pyproject.toml

Comment thread Makefile Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/adr-004-two-tier-python-linting.md`:
- Around line 138-141: The sentence "Managed PyPy may lag the project's target
Python version. The Pylint configuration disables `syntax-error` so the second
tier remains useful on files it can parse while Ruff and the project type
checker continue to cover the Python target." would read more smoothly with a
comma to separate clauses; update the text (the fragment containing "files it
can parse while Ruff") to "files it can parse, while Ruff" so the clause is
clearly delimited.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f660467e-f51f-4da2-85b5-17c3ad8a3703

📥 Commits

Reviewing files that changed from the base of the PR and between 4da6b1a and d7fbb81.

📒 Files selected for processing (5)
  • .gitignore
  • Makefile
  • docs/adr-004-two-tier-python-linting.md
  • docs/developers-guide.md
  • pyproject.toml

Comment thread docs/adr-004-two-tier-python-linting.md
leynos added 5 commits May 16, 2026 13:21
Import the Episodic Ruff lint baseline and add the focused Pylint
configuration used there as a second lint tier.

Run Ruff from the project environment first, then invoke the pinned
`pylint-pypy-shim` tool against `beatcue` and `tests` so the slower
Pylint checks stay explicit and reproducible.
Add developer guidance for running `make lint`, overriding the lint
Makefile variables, and understanding the imported Episodic policy.

Record the Ruff-first and PyPy-shimmed Pylint design in ADR 004 so the
lint architecture has an explicit rationale and migration path.
Add a `.deps` stamp so routine formatting and linting reuse an up-to-date
synced environment instead of invoking `uv sync` unconditionally.

Fail early when `uv` is unavailable, keep the generated dependency stamp out
of Git, and group the focused Pylint enable list by purpose so future rule
changes are easier to review.
Add a comma in ADR 004 so the PyPy parser caveat separates the Pylint
limitation from Ruff and type-checker coverage more clearly.
Use truthiness checks for empty captured stdout and stderr assertions so
the tests imported from `main` pass the branch's PyPy-backed Pylint tier.
Keep exact stderr comparisons where diagnostics are part of the behaviour.
@lodyai
lodyai Bot force-pushed the feat/ruff-pylint-pypy-shim branch from e1230f1 to 509ef07 Compare May 16, 2026 11:22

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Around line 93-94: The check-architecture Makefile target currently runs the
UV command directly; guard it by invoking the existing ensure_uv preflight so a
direct make check-architecture fails with the explicit UV error path. Modify the
target named check-architecture to depend on or call ensure_uv before executing
$(UV_ENV) $(UV) run python -m beatcue.architecture (or insert a line to run
ensure_uv at the top of the target) so ensure_uv runs first and provides the
explicit error handling.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6ab1414-86b3-4d1b-b55b-c52d1caf68e6

📥 Commits

Reviewing files that changed from the base of the PR and between e1230f1 and 509ef07.

📒 Files selected for processing (6)
  • .gitignore
  • Makefile
  • docs/adr-004-two-tier-python-linting.md
  • docs/developers-guide.md
  • pyproject.toml
  • tests/test_architecture_cli.py

Comment thread Makefile Outdated
Run the shared `ensure_uv` check before invoking the architecture checker so
`make check-architecture` uses the same explicit missing-UV error path as the
other UV-backed targets.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Line 93: The Makefile's check-architecture target depends on .venv but needs
the project installed; update the dependency to .deps so running make
check-architecture ensures `uv sync` (project installation) runs before
executing `python -m beatcue.architecture`; change the dependency from `.venv`
to `.deps` in the `check-architecture:` rule to fix the ModuleNotFoundError.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 323ec33d-f765-4535-b195-4afbe3d5c603

📥 Commits

Reviewing files that changed from the base of the PR and between 509ef07 and 243824e.

📒 Files selected for processing (1)
  • Makefile

Comment thread Makefile Outdated
Make `check-architecture` depend on `.deps` so direct invocations run
`uv sync` before executing `python -m beatcue.architecture`.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Around line 33-36: The .deps Makefile rule currently lists only pyproject.toml
and .venv as prerequisites, so changes to the uv.lock lockfile won't trigger the
uv sync; update the .deps target prerequisites to include the lockfile (uv.lock)
so that when uv.lock changes the recipe (calling ensure_uv and "$(UV_ENV) $(UV)
sync --group dev") runs and the .deps stamp is retouched; keep the existing
ensure_uv call and recipe intact (refer to the .deps target, ensure_uv, UV_ENV
and UV symbols).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 13c555b3-d61b-4105-9387-0945ae94b6d4

📥 Commits

Reviewing files that changed from the base of the PR and between 243824e and 51d4c89.

📒 Files selected for processing (1)
  • Makefile

Comment thread Makefile Outdated
Add `uv.lock` to the `.deps` prerequisites so `uv sync --group dev` runs
again when the lockfile changes and refreshes the dependency stamp.
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