Fix CI: make the pipeline green (closes #41) #66
No reviewers
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED!66
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/41-green-ci"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #41 — the keystone blocker for the v1.0.0 milestone. CI had failed on every run; every cause was a real, locally-reproduced code issue.
What changed
F821dead param,B904exception chaining,SIM105/117). AddedB008to ignore (FastAPIDepends(...)default pattern — not a bug).--checkclean.callable→Callable[...], missing generics, untyped defs,Literalvariance via documentedcast()). Root ofapp/main.py's attr-defined cascade wasimport app.modelsshadowingapp = FastAPI()— fixed withfrom app import models as _models. Zero blanket ignores.devdependency group (tests import it; collection failed without it).test_builtin_yaml_covers_bundled_eventsnow anchorsconfig/events.yaml/schemes/builtin.yamlon__file__, so it passes from any cwd.0008_drop_unused_indexesdropsix_sessions_expires_at,ix_sessions_subject,ix_webhook_configs_enabled.alembic upgrade head+alembic checkclean.input.tsxempty-interface → type alias.datetime.utcnow(): replaced acrossapp/with a newapp/timeutil.py::utcnow()returning naive-UTC — bit-identical value, no deprecation warning, and preserves the naive/naive comparisons used against the DBDateTimecolumns (avoids introducing tz-aware/naive comparison bugs).Local verification (backend)
ruff check�·ruff format --check�·mypy app/�·pytest -q→ 204 passed �·alembic upgrade head+alembic check�all clean.Not verified locally
Frontend (
npm ci/ lint /tsc/ vitest / build) and the Docker E2E job — this dev box has no Node/Docker-runner toolchain. This PR's CI run is the authoritative check for those; theinput.tsxchange is correct by inspection (idiomatic shadcn/ui pattern).Unblocks #5, #10, #56, #58, #64 and the Renovate PRs (#35–#39).
🤖 Generated with Claude Code
The docker-e2e Playwright job surfaced failing happy-path specs (the app was fine — build + health smoke pass). All were selector/a11y gaps: - Year prev/next, settings, and user-menu buttons were icon-only with no accessible name. Added aria-labels ("Previous year", "Next year", "Settings", "User menu") — a real a11y improvement. - The year-selector test targeted the lucide icon name (/chevronright/i), which is never an accessible name. Point it at the new "Next year" label. - getByText("Authentication") was ambiguous: with DISABLE_AUTH=true a "Dev mode — authentication" banner also matches. Target the section heading via getByRole("heading", { name: "Authentication" }). Verified by building the image and running the full suite against it. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>