chore: engineering hygiene — version-sync, lint/type gate, reformat, supply-chain (final, on settled main)#86
Merged
Conversation
Regenerated on current (settled) main; supersedes the stale #77 whose reformat was generated on an old main and no longer applies. - Version-sync (the real bug): openadapt_flow.__version__ was 0.1.0 while the released pyproject version is 0.19.0. Sync __version__ and add version_variables to [tool.semantic_release] so releases keep them in lockstep (the wheel job already asserts they match). - Lint/type gate: add ruff, mypy, pytest-cov to [dev]; add [tool.ruff] (lint+format), [tool.mypy] (core package, ignore_missing_imports, a documented ignore_errors debt list re-derived against current main), and [tool.coverage]. Ship py.typed + wheel force-include (PEP 561). - CI: add a `lint` job (ruff check + ruff format --check + mypy) as its own job; the required `test` gate and the #76 structure are untouched. - Supply chain: SHA-pin the release.yml actions; add .github/dependabot.yml. - Scaffolding (absent on main): CONTRIBUTING, SECURITY, CODE_OF_CONDUCT, CODEOWNERS, issue + PR templates. - Import hygiene: ruff --fix import sorting + 3 dead-import removals so the lint gate is green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CKrVJJy5jWVCkXAqgUqtqZ
Mechanical `ruff format openadapt_flow tests` reflow only — no behavior change. Isolated in its own commit so it is trivially revertable and keeps the chore commit's config/infra diff legible. Regenerated fresh on current main (the stale #77 reformat was generated on an old main).
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.
Final engineering-hygiene pass, regenerated on the current (settled) main (0.19.0). Supersedes #77, whose reformat was generated on an old main and no longer applies. Closes #77.
What this lands
openadapt_flow.__version__was0.1.0while the releasedpyprojectversion is0.19.0. Synced__version__to0.19.0and addedversion_variables = ["openadapt_flow/__init__.py:__version__"]to[tool.semantic_release]so future releases keep them in lockstep. (The existingwheelCI job already asserts__version__ == importlib.metadata.versionand thatpy.typedships — this makes that assertion pass.)ruff,mypy,pytest-covto[dev]; added[tool.ruff](lint + format),[tool.mypy](core package only,ignore_missing_imports, a documentedignore_errorsdebt list re-derived against current main), and[tool.coverage]. Shippedopenadapt_flow/py.typed+ wheelforce-include(PEP 561).ruff format openadapt_flow testson current main, in a separatestyle:commit (146 files, mechanical reflow only — trivially revertable).lintjob. Added alintjob (ruff check + ruff format --check + mypy) toci.ymlas its own job. The requiredtestgate and the entire ci: fast required gate (e2e post-merge) to unclog the merge queue #76 structure are byte-unchanged (verified: the only diff toci.ymlis the insertedlintblock).release.ymlactions; added.github/dependabot.yml. Added the scaffolding that was absent on main:CONTRIBUTING.md,SECURITY.md,CODE_OF_CONDUCT.md,.github/CODEOWNERS, issue templates, PR template.Re-derived vs #77
The mypy debt list was re-derived against current main (mypy 2.3.0): identical to #77's list plus
openadapt_flow.learning.synth_stream(new module since #77, from the continuous-learning work).Verification (committed tree)
ruff check openadapt_flow— cleanruff format --check openadapt_flow tests— clean (198 files already formatted)mypy— Success: no issues found in 109 source filespytest -q --ignore=tests/e2e— 1173 passed, 16 skippedThe
lintjob is intentionally a separate context; wire it into branch protection separately if desired. The requiredtestcontext is unchanged.🤖 Generated with Claude Code
https://claude.ai/code/session_01CKrVJJy5jWVCkXAqgUqtqZ