feat: extend edge container with Playwright and docker compose for bug reproduction #256
Labels
No labels
action
backlog
blocked
bug-report
in-progress
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#256
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?
What
Add a reproduce-agent that runs as a sidecar container with docker socket access, host networking, and Playwright MCP, to automatically reproduce bug reports and do a quick log-based root cause check.
Design decisions (resolved)
network_mode: host— solocalhostreaches harb stack ports, matches Woodpecker agent patternstack_scriptfield in formula TOML (e.g.scripts/dev.sh) OR use existing staging environment. Agent chooses based on formula configScope
1. Reproduce
cannot-reproduce, post findings, done2. Quick log analysis
docker compose logs), browser console, network errorsbacklogissue, labelreproducedneeds-triagefor the triage agent (#258)What the reproduce-agent does NOT do
Architecture
Container spec
Dockerfile (
docker/reproduce/Dockerfile):Formula spec
formulas/reproduce.tomldeclares:Dependencies
bug-reportandneeds-triagelabels created during initbug-reportFiles
docker/reproduce/Dockerfileformulas/reproduce.tomldocker/reproduce/entrypoint-reproduce.shdocker/edge/dispatcher.sh— add reproduce dispatchdocker-compose.ymltemplate — addreproduceserviceDesign note: sibling containers + network access
The sidecar has
/var/run/docker.sockmounted, sodocker composecommands go to the host daemon. Harb stack containers start as siblings on the host, not children — this is correct.However,
scripts/dev.shhealth checks uselocalhostURLs (e.g.http://localhost:5173). From inside the sidecar container,localhostis the sidecar itself, not the host where harb containers bind.Resolution: sidecar should use
network_mode: hostso itslocalhostis the host network. This also means Playwright can reach the webapp atlocalhost:5173directly. The sidecar is already privileged (docker socket), sonetwork_mode: hostdoes not change the security posture.Stale in-progress issue detected
no_active_session_no_open_pr2026-04-06T07:19:01ZStatus: This issue was labeled
in-progressbut no active tmux session exists.Action required: A maintainer should triage this issue.
Blocked — issue #256
no_push2026-04-06T07:22:03ZDiagnostic output
Blocked — issue #256
no_push2026-04-06T07:39:06ZDiagnostic output