**Implementation Plan** 1. **Create a virtual environment** to avoid PEP 668 issues with system Python: `python3 -m venv .venv && source .venv/bin/activate` 2. **Install project with dev dependencies**: `pip install -e '.[dev]'` 3. **Add an end-to-end test** for comment max length validation in `tests/e2e/comments/test_create_comment_too_long.py`. - Follow existing e2e test patterns (likely using Playwright). - Steps: - Log in as a test user. - Navigate to a page where a comment can be submitted (e.g., a rant detail view). - Attempt to submit a comment with text exceeding `DEVPLACE_COMMENT_MAX_LENGTH` (default 1000). - Assert that the submission fails with an appropriate error (e.g., 400/422 response, error message shown in UI). - Optionally verify that the `maxlength` HTML attribute is present on the textarea. - Import `DEVPLACE_COMMENT_MAX_LENGTH` from `devplacepy.config` to keep the test consistent with the codebase constant. 4. **Run the existing unit tests** to confirm no regressions: `make test-unit` 5. **Run the new e2e test** (if project provides a separate target) or run all e2e tests: e.g., `make test-e2e` or `pytest tests/e2e/comments/test_create_comment_too_long.py` 6. **Run the linter**: `ruff check .` 7. If all commands pass, the change is complete. --- **Definition of Done** - [ ] New file `tests/e2e/comments/test_create_comment_too_long.py` exists and contains a working e2e test for comment max length rejection. - [ ] `pip install -e '.[dev]'` succeeds in a dedicated virtual environment. - [ ] `make test-unit` passes (all existing tests + no new failures). - [ ] `ruff check .` passes with no linting errors introduced. - [ ] No other files were modified (everything else was already in place per the investigation findings).