Patch RequestResponder.respond() and cancel() at startup to handle
the race where a notifications/cancelled arrives between handler
return and respond(), which crashes the session with
"AssertionError: Request already responded to".
Also improve build.sh to handle registry push failures gracefully
and auto-restart the container after building.
- Dockerfile now installs schwab-scraper from vendor/ dir (no git needed)
- Upgrade playwright to latest to match browserless chromium container
- CI workflow checks out schwab-scraper into vendor/ before build
- Add scripts/build.sh for local builds via docker-test
- Add curl to runtime image for compose healthcheck
- Increase memory limit to 512M for large account position scraping