Repository navigation
Conversation
…ion record in pr41 plan doc, open-issues DELIVERED entry + completed/ refs — final edits missed by interrupted commit af5d542)
…s, unit 651p, regression VERDICT: PASS, ruff/bandit clean); deployment recorded skip (not deployment-relevant); status VALIDATED, S5 gate passed
…ME/CONTRIBUTING changes); status VALIDATED, S6 gate pending
…Fixed-placement; 3-file delta vs branch point e83c8e2, 101-file GitHub diff is orphaned-tip STRIP artifact); plan doc + README + sequencing; status AWAITING-DECISION
… applied (code hunks clean on dev 30839f4, M1 CHANGELOG Fixed-placement, tree dirty for S5), status INTEGRATING
…proof on pre-integration scheduler, unit 652/10/68, regression PASS, ruff+bandit clean vs baseline, deployment recorded-skip), S5 gate passed, status VALIDATED
…er [Unreleased] Fixed, sanitized; no README/CONTRIBUTING changes), S6 gate passed, status VALIDATED; ready for S7
…on, full unit 665 passed) + S6 docs confirmed (CHANGELOG M1 entry stands under [Unreleased] Added, sanitized; README ntfy section renamed + extended), S6 gate passed, status VALIDATED; ready for S7
…count expectations (#49)
…placement; 6-file delta vs branch point e83c8e2, 104-file GitHub diff is orphaned-tip STRIP artifact, 4/5 byte-identical pre-images on dev 19c4164 + new test file clean add, no overlap with open #44/#45 besides runner.py + CHANGELOG, deployment not deployment-relevant); plan doc + README + sequencing; status AWAITING-DECISION
… files byte-identical to head 397b0b6, M1 CHANGELOG entry relocated to existing [Unreleased] Fixed section, tree left dirty for S5); status INTEGRATING
…, PR commands 130/30 + 18/14 exact, full unit 675/90 subtests, regression PASS, ruff clean, bandit zero-new on production files), deployment skip recorded + user-confirmed; status VALIDATED, S6 docs drafted
…ansport.md correction, no README/CONTRIBUTING change); status VALIDATED, S7 next
…6 files to dev tree — 5 byte-identical to head 93f71b2 + CHANGELOG M1 blank-line separator resolved, nothing staged, S4 preflight re-verified head stable on current tree; status INTEGRATING, S5 next); plan doc + README + sequencing
…ree: 22/22 focused, 697/10/90 full suite = baseline 675+22, regression PASS exit 0, ruff/bandit 0 new; deployment skip user-confirmed, not deployment-relevant; docs confirmed — CHANGELOG entry stands, no README/CONTRIBUTING changes; status VALIDATED, S7 next)
… PR #45 closed without merge (comment 6550508082, 2026-10-31T23:20:57Z), no related issues; Discussion summary recorded for manual web-UI post; plan doc archived to completed/ + README + sequencing refs
…le + mergeable clean, branch merged public 3c950d7 pre-#45 tip; 119-file view resolved: 18 C3 files + 1 already-on-dev (vault_transport.md via #48) + ~100 private deletions = fork-behind-base artifact never applied; pre-images on settled dev 31da0dc: 14 clean + 2 new (methods.py, test_bc_method_validation.py), runner.py diverged only by PR #45's disjoint launch_failure_record hunks → 3-way merge, CHANGELOG manual C3-entry-only, findings F1-F8; Status AWAITING-DECISION, S3 next); plan doc + README + sequencing
…rom head 0b9a57f, verified identical; runner.py 3-way merge resolved one adjacent-import conflict keeping both PR#45 launch_failure_record + PR load_recipe, all post-merge checks pass; CHANGELOG C3 entry inserted; tree left dirty for S5 validation)
…unchanged, 17/17 applied blobs match, runner.py post-merge checks pass; new module 57 passed; focused author set 311 passed/1 skipped/57 subtests = author's exact-head numbers; regression VERDICT: PASS 7 scenarios/8 PDFs exit 0; ruff 0.17.0 F821+E4/E7/E9 clean; bandit only pre-existing B110 runner.py:985; deployment skip user-confirmed 2026-11-01T13:16:36Z; Status VALIDATED, S6 next)
…, CHANGELOG verified as-is, no CONTRIBUTING change)
Sync upstream C3 and browser cache integration
Integrate the reviewed catalog adapter alongside the existing BD contract
fix: accept optional native login phase transitions
|
@pullfrog Please review PR #86 at current head 4898cc5 against playwright-next and submit a completed GitHub pull request review on that exact head, even if there are no findings. The original dependency batch had no review; this update preserves its history and retains pyee 13.0.1 within Playwright 1.64.1's >=13,<15 constraint. Inspect the final diff and dependency compatibility. Review only: do not implement changes, push commits, or merge. |
There was a problem hiding this comment.
ℹ️ No blocking issues. The pins resolve and install cleanly. One documented contract still names the old Playwright pin.
Reviewed changes
I reviewed head 4898cc5 against the current playwright-next tip (4a6e981). That tip is an ancestor of the head, and the merge commit's tree matches 7b3f79b exactly. The effective change therefore covers only 4 files. GitHub's 26-file list is computed from a stale base (b2ec6fe). The other 22 files are already on playwright-next through #91 and earlier merges, so they add no change here.
- Runtime pins —
apps/requirements.txtmoves certifi to 2026.10.23, FastAPI to 0.162.0, multidict to 7.2.1, Playwright to 1.64.1, python-engineio to 4.15.0, Starlette to 1.10.0 and tzdata to 2026.6.pyee==13.0.1stays unchanged. - Test/tool pins — pytest 9.2.0, pytest-asyncio 1.4.1 and Ruff 0.17.3 in
apps/requirements-dev.txtand.github/requirements-security.txt. - Changelog — one
### Changedentry under[Unreleased].
How I checked compatibility:
- Install — all three requirement files install together on Python 3.12 (the
ubuntu:24.04image Python line).pip checkreports no broken requirements. - Declared constraints — read from installed metadata:
playwright1.64.1 requirespyee>=13,<15andgreenlet>=3.1.1,<4(13.0.1 and 3.5.6 both satisfy them).fastapi0.162.0 requiresstarlette>=0.46.0, andnicegui3.18.0 requiresstarlette>=1.3.1,fastapi>=0.109.1,!=0.123.5,multidict>=6.9.1andpython-socketio>=5.16.2.python-socketio5.17.0 requirespython-engineio>=4.13.2.aiohttprequiresmultidict<8.pytest-asyncio1.4.1 requirespytest>=8.4,<10.
- No new unpinned runtime dependencies — the only installed packages missing from the pin files are existing transitive dependencies of pytest, Bandit and pip-audit.
- Playwright chain surface — the public members and signatures of
Page,Locator,Frame,FrameLocatorandElementHandleare identical between 1.64.0 and 1.64.1: 320 members, zero differences. - Tests —
tests/test_bc_method_validation.pypasses except its one real-browser test, which fails only because no Chromium is installed in this sandbox. Thetest_bc_ui_app,test_bc_ui_auth,test_bc_ui_settingsandtest_bc_ui_recipesfiles pass (40 tests), andruff check apps testspasses. When I submitted this review,Unit and browser testsandImage securitywere still running on this head.
ℹ️ The recipe method contract still pins playwright==1.64.0
doc/RECIPE_METHODS.md §6 says "a pin bump is a contract change: re-derive the surface and re-run the compatibility baseline." It names playwright==1.64.0 at lines 75 and 338. doc/BOURSE_DIRECT_ADAPTER.md:137 also tells operators to use "the browser cache that matches Playwright 1.64.0". This PR changes the pin to 1.64.1 but leaves those references unchanged. The re-derived surface is identical, so runtime behavior is unaffected, but the documented contract and the proof instructions no longer match the pin. Separately, the comment at apps/billcollector/ui/app.py:91 describes python-engineio 4.14.0 as "(latest)". 4.15.0 still has the same empty-environ REQUEST_METHOD path (engineio/async_drivers/asgi.py:162, async_server.py:238), so the wrapper is still needed and only the version wording is stale.
Technical details
# Stale Playwright/engineio version references after the pin bump
## Affected sites
- doc/RECIPE_METHODS.md:75 — "pinned Playwright version** (`playwright==1.64.0`, ...)"
- doc/RECIPE_METHODS.md:338 — "(`playwright==1.64.0`); the introspected allowlist is only as valid as the pin"
- doc/BOURSE_DIRECT_ADAPTER.md:137 — "browser cache that matches Playwright 1.64.0"
- apps/billcollector/ui/app.py:91 — "python-engineio 4.14.0 (latest) still ships this"
## Required outcome
- All three doc references name `playwright==1.64.1`, matching `apps/requirements.txt`.
- The engineio comment names a version that still ships the bug (4.15.0 does) without claiming it is the latest.
## Evidence that the surface is unchanged
- Public members and `inspect.signature` of Page/Locator/Frame/FrameLocator/ElementHandle are identical between 1.64.0 and 1.64.1 (320 members, 0 diffs), so the §6 re-derivation is satisfied and only the text needs updating.claude-opus-5-5 | 𝕏

Behavior
The original dependency batch cannot install: Playwright 1.64.1 requires
pyee>=13,<15, while the batch selected pyee 16.0.0. Keep pyee 13.0.1 and apply the remaining runtime and test updates on the currentplaywright-nextbaseline.Runtime updates: certifi 2026.10.23, FastAPI 0.162.0, multidict 7.2.1, Playwright 1.64.1, python-engineio 4.15.0, Starlette 1.10.0 and tzdata 2026.6. Test/tool updates: pytest 9.2.0, pytest-asyncio 1.4.1 and Ruff 0.17.3. No engine logic, database or recipe-schema change.
Retain the original Dependabot commit and merge the current fork history without force-pushing. Final candidate
4898cc572602325effed6e3bf795956f08994aabhas the same Git tree as the qualified local correction7b3f79bd690acb05443830038ef662cc4c7fceda(06d1a72f881afc1ad8d772989e7d42058cad895e).Verification
uv pip install --dry-run 'playwright==1.64.1' 'pyee==16.0.0'rejects the incompatible constraints.python -m pip checkreports no broken requirements (98 packages).LC_ALL=C python -m pytest tests/ -q --tb=short: 905 passed, 6 skipped, 104 subtests passed.sha256:0ab784b2983a3aa8dab06390bcee2d68e12b4d11bd10590d96c4df44371fa46c, revision7b3f79b:tests/qualify_bourse_direct_image.pypasses 159 tests, confirms packaged source hashes, exercises headless/headed Chromium and NiceGUI startup, and passes the legacy regression (7 expected scenarios, 8 PDFs). Trivy 0.70.0 finds zero fixable HIGH/CRITICAL vulnerabilities.Tests use synthetic credentials, loopback fixtures and isolated DB/profile/output. The retained image-proof container exited 0 with network disabled, UID 1003 and GID 1000. Image fixtures inject credentials and consumers; they do not qualify a real vault, provider or Paperless deployment. GitHub CI must validate the final PR head before merge.
Infra handoff
N/A: dependency maintenance, no deployment. Recipe schema remains
023dd141a90db23d1d6d9f182d40fe9347f7901ef0fb582f9cfa8de6a6c50e75. Default-branch image automation runs after merge; Infra selects and deploys an immutable image separately. Rollback is a focused dependency-pin revert.AI assistance
Codex prepared the compatible pins and checked the resolver, installed metadata, complete diff, synthetic suite and local image proof. Existing Dependabot and published history are preserved.
Pullfrog review
Pullfrog is the sole reviewer. Require a completed review of the final head, resolved actionable threads and green CI. Ignore CodeRabbit and the known sticky
pullfrog-approvalstatus only.Review evidence: completed Pullfrog review of
4898cc572602325effed6e3bf795956f08994aab. No blocking issues and no unresolved review threads. All required CI checks passed;pr-shipmerged the exact reviewed head at83f5bfa8645bb6016c69eb996619cd2ad46e6dd8. The nonblocking version-reference observation is resolved by PR #92, merged atfffae499d26857f8259c8461a315e1079548e73cafter green CI and completed Pullfrog review. Automatic image publication succeeded:ghcr.io/flowcool/billcollector-playwright:sha-83f5bfa@sha256:0de48b6dbfaae66d8e6ce61b11490c86ed9232926d1284a9ed836bb53d148038.