Originally created by: fu351
.github/workflows/ci.yml's only install step is pip install -e ".[dev]" (line 39) — an editable install. CI never builds and installs the actual distributable wheel, so a packaging bug (e.g. a missing packages/package-data entry in [tool.hatch.build.targets.wheel], or a file that only exists because of the editable symlink) would ship to a release without CI ever catching it. Add a CI job (or an extra step in the existing test job) that runs python -m build, installs the resulting wheel into a clean venv, and runs doberman --version to prove the packaged distribution actually works standalone.
Tooling/CI/packaging: mechanically small (a few new steps), but packaging failures are exactly the "unfamiliar failure" category this level is about — a wheel that's missing a data file fails in ways pip install -e never surfaces.
pip install -e ".[dev]" editable-install test path (the fast dev-loop signal for ruff/lint-imports/pytest); it runs alongside it..github/workflows/ci.yml — the test job (lines 12–51); add a python -m build + wheel-install step, or a new job.pyproject.toml — [build-system] / [tool.hatch.build.targets.wheel] (the build package will need to be available; add it to CI, not to runtime dependencies).python -m build and installs it (not -e) into a fresh environment.doberman --version (or another lightweight smoke command) against the installed wheel and fails the build if it errors.test job steps (ruff/lint-imports/pytest) are unchanged.ruff check . && ruff format --check . and lint-imports passpytest passespython -m pip install build
python -m build
python -m venv /tmp/wheel-check && /tmp/wheel-check/bin/pip install dist/*.whl
/tmp/wheel-check/bin/doberman --version
[tool.hatch.build.targets.wheel]'s actual package list unless the wheel build genuinely fails without it — this issue is about catching packaging bugs in CI, not fixing a specific one that isn't yet known to exist.New here? Start with CONTRIBUTING.md. Issues are labelled level-1 (docs only) through level-10 (new subsystem) — pick one at your level and climb. Comment to claim an issue before starting.
Ticket changed by: fu351