Skip to content

COE-231: Bootstrap repository, tooling, and package skeleton#3

Open
kumanday wants to merge 2 commits intomainfrom
leonardogonzalez/coe-231-bootstrap-repository-tooling-and-package-skeleton
Open

COE-231: Bootstrap repository, tooling, and package skeleton#3
kumanday wants to merge 2 commits intomainfrom
leonardogonzalez/coe-231-bootstrap-repository-tooling-and-package-skeleton

Conversation

@kumanday
Copy link
Collaborator

Closes COE-231

Summary

Create the foundational repository structure with Python tooling, package layout, and development workflow.

Deliverables

  • ✅ pyproject.toml with uv, ruff, mypy, pytest, coverage
  • ✅ src/stackperf package skeleton (5 modules)
  • ✅ tests/ skeleton with import smoke tests
  • ✅ Makefile with quality commands
  • ✅ uv.lock for reproducible dependencies

Validation

All quality checks pass:

  • make lint → ruff check passes
  • make type-check → mypy strict passes
  • make test → 6/6 pytest tests pass
  • make quality → all gates pass

…skeleton

- Add uv-managed pyproject.toml with ruff, mypy, pytest tooling
- Create src/stackperf package with 5 core modules (api, benchmark_core, cli, collectors, reporting)
- Add tests skeleton with import smoke tests
- Add Makefile with lint, type-check, test, and quality commands
- Include uv.lock for reproducible dependencies
- All quality checks pass

Closes COE-231
@kumanday kumanday added the symphony Symphony orchestrated task label Mar 21, 2026
@coderabbitai
Copy link

coderabbitai bot commented Mar 21, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a9ca4c57-4f45-4444-b1ea-8e8d5bc8083b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch leonardogonzalez/coe-231-bootstrap-repository-tooling-and-package-skeleton

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c9589c654c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Makefile Outdated
uv sync --all-extras

sync: ## Sync dependencies with uv
uv sync

Choose a reason for hiding this comment

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

P2 Badge Install dev extras in the sync target

ruff, mypy, pytest, and pytest-cov are declared under [project.optional-dependencies].dev, but this target runs plain uv sync. I checked uv sync --help, which only installs optional dependencies when --extra/--all-extras is passed, and uv sync --dry-run on this tree shows it would install only stackperf. On any fresh checkout, make sync therefore leaves the environment without the quality tools, so make lint, make type-check, and make test will either fail or pick up unrelated global binaries instead of the locked versions.

Useful? React with 👍 / 👎.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This issue has been addressed in this commit. The sync target now uses uv sync --all-extras which installs the dev extras including ruff, mypy, pytest, and pytest-cov. Fresh checkouts will have all quality tools available.

- Makefile: sync now includes --all-extras for dev tools
- pyproject.toml: added hatchling to dev dependencies
- This ensures fresh checkouts have all tools available and
  offline builds work correctly with locked dependencies
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8b92e3ee7a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +16 to +17
lint: ## Run linting with ruff
uv run ruff check src tests

Choose a reason for hiding this comment

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

P2 Badge Pass dev extras to the uv run quality targets

I checked uv run --help: optional dependencies are only included when --extra or --all-extras is passed. Here ruff, mypy, pytest, and pytest-cov are declared only under [project.optional-dependencies].dev in pyproject.toml, so make lint, make type-check, make test, and make test-cov are not self-contained on a fresh checkout unless the operator happened to run make sync first. In that state these targets will either fail or pick up unrelated global binaries instead of the locked toolchain.

Useful? React with 👍 / 👎.

Comment on lines +10 to +14
install: ## Install dependencies with uv
uv sync --all-extras

sync: ## Sync dependencies with uv (includes dev extras)
uv sync --all-extras

Choose a reason for hiding this comment

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

P2 Badge Freeze the lockfile in the bootstrap targets

I checked uv sync --help and uv run --help: --locked/--frozen are the switches that stop uv.lock from being updated. Because these bootstrap commands use plain uv sync and the quality targets use plain uv run, running make install, make sync, or a quality gate after a dependency edit can silently re-resolve and rewrite the checked-in lockfile instead of failing fast. That undermines the reproducibility goal of committing uv.lock and can leave read-only commands with a dirty worktree.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

symphony Symphony orchestrated task

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant