Problem
The CI workflow files were disorganised: lint and test jobs lived in the same file under a misleading name, workflow filenames did not reflect their purpose, and there was no automated dependency-update mechanism. This made it hard to reason about CI at a glance and left dependency hygiene entirely manual.
Acceptance Criteria
Implementation Notes
- The lint job extracted into
ci-lint.yml is identical to what was previously embedded in lint-and-format.yml; the old file is repurposed as ci-test.yml with the lint job block deleted and the workflow name updated to "Tests and coverage"
- Dependabot's
uv ecosystem does not yet support dependency-type-based groups (see dependabot/dependabot-core#13202), so groups are defined by semver bump size (patch/minor vs major) as a workaround
- All action references use pinned commit SHAs (not floating tags) to prevent supply-chain attacks; the SHA comments document the human-readable version
References
Problem
The CI workflow files were disorganised: lint and test jobs lived in the same file under a misleading name, workflow filenames did not reflect their purpose, and there was no automated dependency-update mechanism. This made it hard to reason about CI at a glance and left dependency hygiene entirely manual.
Acceptance Criteria
ci-lint.ymlworkflow exists that runs pre-commit checks (ruff, reuse, etc.) independently of the test suiteci-test.ymlworkflow exists that runs only the test-and-coverage jobbuild-and-check.ymlis renamed toci-package.ymlso its purpose is clear from the filenamedep-audit.ymlis renamed toci-dependencies.ymlfor naming consistencydependabot.ymlis present and configures automated weekly PRs foruv(Python),github-actions, andpre-commitecosystemsci-<purpose>.ymlnaming conventionImplementation Notes
ci-lint.ymlis identical to what was previously embedded inlint-and-format.yml; the old file is repurposed asci-test.ymlwith the lint job block deleted and the workflownameupdated to "Tests and coverage"uvecosystem does not yet supportdependency-type-based groups (see dependabot/dependabot-core#13202), so groups are defined by semver bump size (patch/minorvsmajor) as a workaroundReferences