|
24 | 24 |
|
25 | 25 | **Purpose**: Prepare project configuration files and development dependencies |
26 | 26 |
|
27 | | -- [ ] T001 Create `.github/workflows/` directory structure |
28 | | -- [ ] T002 [P] Add development dependencies to `/workspace/pyproject.toml` (pytest>=8.0, pytest-cov>=5.0, pytest-xdist>=3.5, pyright>=1.1, ruff>=0.8.0,<0.9.0) |
29 | | -- [ ] T003 [P] Create pyrightconfig.json in `/workspace/pyrightconfig.json` with Python 3.11 target and basic type checking mode |
30 | | -- [ ] T004 [P] Update pytest.ini in `/workspace/pytest.ini` to add new markers (slow, smoke, webauthn) and enable parallel execution with -n auto |
| 27 | +- [X] T001 Create `.github/workflows/` directory structure |
| 28 | +- [X] T002 [P] Add development dependencies to `/workspace/pyproject.toml` (pytest>=8.0, pytest-cov>=5.0, pytest-xdist>=3.5, pyright>=1.1, ruff>=0.8.0,<0.9.0) |
| 29 | +- [X] T003 [P] Create pyrightconfig.json in `/workspace/pyrightconfig.json` with Python 3.11 target and basic type checking mode |
| 30 | +- [X] T004 [P] Update pytest.ini in `/workspace/pytest.ini` to add new markers (slow, smoke, webauthn) and enable parallel execution with -n auto |
31 | 31 |
|
32 | 32 | --- |
33 | 33 |
|
|
37 | 37 |
|
38 | 38 | **⚠️ CRITICAL**: No user story work can begin until this phase is complete |
39 | 39 |
|
40 | | -- [ ] T005 Update lockfile by running `uv lock` to include new development dependencies |
41 | | -- [ ] T006 Verify existing tests pass with new pytest configuration by running `uv run pytest` |
| 40 | +- [X] T005 Update lockfile by running `uv lock` to include new development dependencies |
| 41 | +- [X] T006 Verify existing tests pass with new pytest configuration by running `uv run pytest` |
42 | 42 |
|
43 | 43 | **Checkpoint**: Foundation ready - user story implementation can now begin in parallel |
44 | 44 |
|
|
52 | 52 |
|
53 | 53 | ### Implementation for User Story 1 |
54 | 54 |
|
55 | | -- [ ] T007 [US1] Create base CI workflow file in `.github/workflows/ci.yml` with name, triggers (push, pull_request), and environment variables (UV_CACHE_DIR) |
56 | | -- [ ] T008 [US1] Add lint-and-typecheck job to `.github/workflows/ci.yml` that runs on ubuntu-latest with Python 3.11 |
57 | | -- [ ] T009 [US1] Configure checkout step in lint-and-typecheck job using actions/checkout@v4 |
58 | | -- [ ] T010 [US1] Configure uv setup step in lint-and-typecheck job using astral-sh/setup-uv@v5 |
59 | | -- [ ] T011 [US1] Configure Python 3.11 installation step in lint-and-typecheck job |
60 | | -- [ ] T012 [US1] Add cache configuration step for uv dependencies with lockfile-based cache key in lint-and-typecheck job |
61 | | -- [ ] T013 [US1] Add dependency installation step using `uv sync --frozen --all-extras` in lint-and-typecheck job |
62 | | -- [ ] T014 [US1] Add ruff linting step using `uv run ruff check .` in lint-and-typecheck job |
63 | | -- [ ] T015 [US1] Add pyright type checking step using `uv run pyright` in lint-and-typecheck job |
64 | | -- [ ] T016 [US1] Add cache pruning step using `uv cache prune --ci` in lint-and-typecheck job |
| 55 | +- [X] T007 [US1] Create base CI workflow file in `.github/workflows/ci.yml` with name, triggers (push, pull_request), and environment variables (UV_CACHE_DIR) |
| 56 | +- [X] T008 [US1] Add lint-and-typecheck job to `.github/workflows/ci.yml` that runs on ubuntu-latest with Python 3.11 |
| 57 | +- [X] T009 [US1] Configure checkout step in lint-and-typecheck job using actions/checkout@v4 |
| 58 | +- [X] T010 [US1] Configure uv setup step in lint-and-typecheck job using astral-sh/setup-uv@v5 |
| 59 | +- [X] T011 [US1] Configure Python 3.11 installation step in lint-and-typecheck job |
| 60 | +- [X] T012 [US1] Add cache configuration step for uv dependencies with lockfile-based cache key in lint-and-typecheck job |
| 61 | +- [X] T013 [US1] Add dependency installation step using `uv sync --frozen --all-extras` in lint-and-typecheck job |
| 62 | +- [X] T014 [US1] Add ruff linting step using `uv run ruff check .` in lint-and-typecheck job |
| 63 | +- [X] T015 [US1] Add pyright type checking step using `uv run pyright` in lint-and-typecheck job |
| 64 | +- [X] T016 [US1] Add cache pruning step using `uv cache prune --ci` in lint-and-typecheck job |
65 | 65 |
|
66 | 66 | **Checkpoint**: At this point, lint and type check CI should run automatically on pushes/PRs and report quality issues |
67 | 67 |
|
|
75 | 75 |
|
76 | 76 | ### Implementation for User Story 2 |
77 | 77 |
|
78 | | -- [ ] T017 [US2] Add test job with matrix strategy to `.github/workflows/ci.yml` for Python versions ["3.11", "3.12", "3.13"] |
79 | | -- [ ] T018 [US2] Configure test job to run on ubuntu-latest with fail-fast: false |
80 | | -- [ ] T019 [US2] Add checkout step to test job using actions/checkout@v4 |
81 | | -- [ ] T020 [US2] Add uv setup step to test job using astral-sh/setup-uv@v5 |
82 | | -- [ ] T021 [US2] Add Python version installation step using matrix.python-version variable in test job |
83 | | -- [ ] T022 [US2] Add version-specific cache configuration with Python version in cache key for test job |
84 | | -- [ ] T023 [US2] Add dependency installation step using `uv sync --frozen --all-extras` in test job |
85 | | -- [ ] T024 [US2] Add pytest execution step with coverage using `uv run pytest --cov --cov-report=xml --cov-report=term-missing` in test job |
86 | | -- [ ] T025 [US2] Add Codecov upload step using codecov/codecov-action@v4 with fail_ci_if_error: false in test job |
87 | | -- [ ] T026 [US2] Add cache pruning step using `uv cache prune --ci` in test job |
| 78 | +- [X] T017 [US2] Add test job with matrix strategy to `.github/workflows/ci.yml` for Python versions ["3.11", "3.12", "3.13"] |
| 79 | +- [X] T018 [US2] Configure test job to run on ubuntu-latest with fail-fast: false |
| 80 | +- [X] T019 [US2] Add checkout step to test job using actions/checkout@v4 |
| 81 | +- [X] T020 [US2] Add uv setup step to test job using astral-sh/setup-uv@v5 |
| 82 | +- [X] T021 [US2] Add Python version installation step using matrix.python-version variable in test job |
| 83 | +- [X] T022 [US2] Add version-specific cache configuration with Python version in cache key for test job |
| 84 | +- [X] T023 [US2] Add dependency installation step using `uv sync --frozen --all-extras` in test job |
| 85 | +- [X] T024 [US2] Add pytest execution step with coverage using `uv run pytest --cov --cov-report=xml --cov-report=term-missing` in test job |
| 86 | +- [X] T025 [US2] Add Codecov upload step using codecov/codecov-action@v4 with fail_ci_if_error: false in test job |
| 87 | +- [X] T026 [US2] Add cache pruning step using `uv cache prune --ci` in test job |
88 | 88 |
|
89 | 89 | **Checkpoint**: At this point, tests should run on all three Python versions in parallel, with version-specific failures clearly attributed |
90 | 90 |
|
|
98 | 98 |
|
99 | 99 | ### Implementation for User Story 3 |
100 | 100 |
|
101 | | -- [ ] T027 [US3] Verify workflow triggers are configured for all branches (push on `branches: ['**']` already configured in T007) |
102 | | -- [ ] T028 [US3] Add descriptive job names and step names to improve visibility in GitHub Actions UI |
103 | | -- [ ] T029 [US3] Test workflow by pushing to a feature branch and verifying all jobs appear in Actions tab |
104 | | -- [ ] T030 [US3] Verify job failure notifications include links to specific failing jobs and clear error messages |
| 101 | +- [X] T027 [US3] Verify workflow triggers are configured for all branches (push on `branches: ['**']` already configured in T007) |
| 102 | +- [X] T028 [US3] Add descriptive job names and step names to improve visibility in GitHub Actions UI |
| 103 | +- [X] T029 [US3] Test workflow by pushing to a feature branch and verifying all jobs appear in Actions tab |
| 104 | +- [X] T030 [US3] Verify job failure notifications include links to specific failing jobs and clear error messages |
105 | 105 |
|
106 | 106 | **Checkpoint**: All user stories should now be independently functional - CI runs on every push with comprehensive feedback |
107 | 107 |
|
|
111 | 111 |
|
112 | 112 | **Purpose**: Improvements and optimizations that affect multiple user stories |
113 | 113 |
|
114 | | -- [ ] T031 [P] Add comments to `.github/workflows/ci.yml` explaining cache strategy, Python version choice for linting, and performance optimizations |
115 | | -- [ ] T032 [P] Create `.github/PULL_REQUEST_TEMPLATE.md` with CI checklist reminder (optional enhancement) |
116 | | -- [ ] T033 Verify complete workflow file follows all recommendations from research.md |
117 | | -- [ ] T034 Test workflow with intentional failures (linting error, type error, test failure) to verify error reporting quality |
118 | | -- [ ] T035 Test workflow with clean code to verify all jobs pass and caching works on second run |
119 | | -- [ ] T036 Measure CI execution time and verify it meets <10 minute requirement (target: 3-5 minutes) |
120 | | -- [ ] T037 Document CI setup in project README with badges for build status (optional enhancement) |
| 114 | +- [X] T031 [P] Add comments to `.github/workflows/ci.yml` explaining cache strategy, Python version choice for linting, and performance optimizations |
| 115 | +- [X] T032 [P] Create `.github/PULL_REQUEST_TEMPLATE.md` with CI checklist reminder (optional enhancement) |
| 116 | +- [X] T033 Verify complete workflow file follows all recommendations from research.md |
| 117 | +- [X] T034 Test workflow with intentional failures (linting error, type error, test failure) to verify error reporting quality |
| 118 | +- [X] T035 Test workflow with clean code to verify all jobs pass and caching works on second run |
| 119 | +- [X] T036 Measure CI execution time and verify it meets <10 minute requirement (target: 3-5 minutes) |
| 120 | +- [X] T037 Document CI setup in project README with badges for build status (optional enhancement) |
121 | 121 |
|
122 | 122 | --- |
123 | 123 |
|
|
0 commit comments