frontend-e2e: Playwright job has never passed in PR CI — container Python 3.10 vs backend 3.12 requirement (PEP 695) #110
Labels
No labels
agentic-osint
audit
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:preflight
blocked:verify-failed
bug
chore
deferred
enhancement
feature-request
in-progress
lint-baseline
lint-cleanup
needs-decompose
needs-triage
performance
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/osint-hub#110
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Problem
The
frontend-e2ejob in.forgejo/workflows/ci.ymlhas never passed in a PR run on this repo. Historical job status across all runs: 49 skipped (deps red), 32 cancelled, and on the first run where its deps (backend-test, frontend-test) were green, it failed entirely.Root cause
The job uses
container: mcr.microsoft.com/playwright:v1.40.0-jammy(Ubuntu jammy → Python 3.10). The backend requires Python 3.12:backend/app/services/llm/parsing.pyuses PEP 695 genericsdef safe_parse_llm_json[T: BaseModel](...)(introduced in commit6a0ee5b). When the job starts the backend withpython3 -m uvicorn app.main:app, the import fails with:(with the PEP 695 SyntaxError also present on a pre-3.12 interpreter). The
Start backend serverstep swallows this via|| echo "Backend not ready yet", so every Playwright spec then fails in 2-3ms (backend down → frontend can't render), producing ~120 failing specs across chromium/firefox/webkit.Why this matters
all-checks-passgates onneeds.frontend-e2e.result; until this job can actually pass, no PR can merge with a genuinely-green full gate. It was scoped non-gating (continue-on-error) on PR #107 (commit pending) so the ruff-lint PR and issue #100 can land, mirroring the mypy#109 convention.Scope (proposed)
|| echoon backend start should be removed so a dead backend fails the job loudly instead of producing 120 meaningless green-then-fail specs.launcher-failure (t_a819e607): pre-dispatch gate blocked on dirty worktree (?? .worktrees/t_5df1a1a4 — sibling worktree from prior task with branch fix/annotation-tidy-t_5df1a1a4 and uncommitted changes). The gate script (.gsd/gates/pre-dispatch.sh) only excludes .gsd/, .venv/, .kilo/. Not blocking issue-side — does not need a label change; awaiting janitor triage on whether to extend the gate exclusion or clean up the sibling worktree.
kilo-gsd launch blocked twice on this repo: (1) prior run on
?? .worktrees/(now stale), (2) current run on tracked-file dirt from t_fc47564c (issue-70-case-membership-ui leftovers) plus an untracked alembic migration filef101c4scd0a1_add_ondelete_cascade_case_membership_fk.pythat triggers ruff S608. Both gate and kilo-gsd.py preflight refuse. Operator intervention needed: discard or commit the orphan modifications, or extend the pre-dispatch gate to ignore the alembic untracked file. kanban card t_a819e607 holds the queue position.PR opened: #123
Direct-fix landed on branch
fix/110-frontend-e2e-python312(commit3620da5). Changes to.forgejo/workflows/ci.yml:mcr.microsoft.com/playwright:v1.40.0-jammy(jammy, Python 3.10) →mcr.microsoft.com/playwright:v1.49.0-noble(noble, Python 3.12.3). Backend requires 3.12 due to PEP 695 genericdef safe_parse_llm_json[T: BaseModel](...)atbackend/app/services/llm/parsing.py:17.apt-get install python3 python3-pip(no longer needed on noble); replaced withpython3 --version+sys.version_info >= (3,12)assertion so future regressions fail loudly at runtime check.Start backend serverstep:setsid+disownso uvicorn survives past the step boundary, 60s readiness loop on/healthz,::error::+ tail of/tmp/uvicorn.log+exit 1on timeout or uvicorn crash. Replaced the|| echo "Backend not ready yet"swallow.Verification:
setsid+disowndetach tested locally — server survives parent exit and serves HTTP.Leaving the issue open until a green Playwright run is observed in CI. Per task scope,
continue-on-error: trueon the security/full-suite jobs is left in place for a separate follow-up.