fix: feat: extend edge container with Playwright and docker compose for bug reproduction (#256) #271
No reviewers
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#271
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-256"
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 #256
Changes
AI Review — Error\n\nReview failed.\n---\n
300f335AI Review
Summary
New reproduce-agent sidecar: polls for
bug-reportissues, boots the project stack, drives Claude+Playwright to follow repro steps, then labels the issue and posts findings. Solid implementation overall.Findings
minor
docker/reproduce/Dockerfile:7:agentuser is created but noUSER agentdirective follows, so the container runs as root. The agents container does the same intentionally (cron needs root), but the reproduce container has no equivalent justification. Not blocking since docker.sock access typically requires root-equivalent access anyway, and this is consistent with the project-wide pattern.minor
docker/edge/dispatcher.sh:494-506(fetch_reproduce_candidates):tmpjsontempfile leaks on the unhappy path. Withset -euo pipefailactive, ifpython3exits non-zero the function bails beforerm -f "$tmpjson". Atrapon the tmpfile would guard this:trap 'rm -f "$tmpjson"' RETURNimmediately aftertmpjson=$(mktemp).minor
docker/reproduce/entrypoint-reproduce.sh(SCREENSHOT_LISTconstruction):\ninside double-quoted bash strings is not a newline escape — it is a literal backslash-n. Screenshot list items will render inline as- \file.png`\nrather than as separate markdown list lines. Fix: use$'\n'` or embed a real newline.Positive notes
cmd=(docker run …)construction indispatch_reproducecorrectly avoids command injection.FORGE_TOKENis never echoed; passed only via-eflags andAuthorization:headers.jq -nc --arg …used consistently for all POST bodies — no raw JSON string interpolation for user-controlled data.Verdict
APPROVE — Reproduce-agent is functionally correct, properly integrates stack-lock protocol, uses safe array-based docker commands, and protects secrets — three minor issues noted but none block merge
Reviewed at
300f335| AGENTS.mdAI Review: APPROVE — Reproduce-agent is functionally correct, properly integrates stack-lock protocol, uses safe array-based docker commands, and protects secrets — three minor issues noted but none block merge