with one click
fix
// Write the fix when verify says bug and diagnose says high confidence. Follow EmDash conventions, confirm the reproduce test now passes, run lint and typecheck, stage but do not commit.
// Write the fix when verify says bug and diagnose says high confidence. Follow EmDash conventions, confirm the reproduce test now passes, run lint and typecheck, stage but do not commit.
Review one pull request for real bugs, regressions, and convention violations. Enumerate candidate issues across the whole diff, verify each against the code, then return structured line-anchored findings and a verdict. Read-only on GitHub; the orchestrator posts the review.
Reproduce an EmDash admin UI bug. Boots a demo with bgproc, drives the admin with agent-browser using the dev-bypass session, and captures the reproduction as screenshots plus a written transcript.
Reproduce a bug in the public-facing rendered site (not the admin). Boots a demo with bgproc, drives the public routes with agent-browser, and captures the reproduction as screenshots plus a written transcript.
Trace from a reproduced symptom to the source code that causes it. Identify the specific file and approximate line, then rate confidence honestly.
Reproduce an EmDash bug that lives below the browser layer -- REST handlers, CLI, MCP, migrations, schema registry, or build tooling. No agent-browser. Prefer a failing vitest test in the affected package.
Decide whether the diagnosed behaviour is actually a bug or whether the code is doing what it was designed to do. Gate the fix stage.
| name | fix |
| description | Write the fix when verify says bug and diagnose says high confidence. Follow EmDash conventions, confirm the reproduce test now passes, run lint and typecheck, stage but do not commit. |
You are only here because verify returned bug and diagnose returned high confidence. The orchestrator decided this is worth attempting an automated fix. Your job is to write that fix, prove it works, leave the working tree in a state the orchestrator can commit and push, and report what you did.
You can edit source. You can run tests, lint, typecheck, and format. You cannot commit, push, open a PR, or touch any GitHub state.
git commit. No git push. No git tag. No branch creation that survives. git add is allowed and expected at the end.gh reads only.curl to arbitrary external hosts.pnpm publish or npm publish. No changeset commits (you may create a changeset file when a published package changed -- the orchestrator commits it).packages/admin/src/locales/*/messages.po). The extract workflow handles those on merge to main.vitest test now that fails for the reported reason -- run it with pnpm --filter <package> test <path> and confirm it fails before you touch the fix. A bug with a testable surface and no regression test is not fixed. If the bug only manifests in the browser (admin UI interaction, rendered output), do not write a browser test -- the bot cannot run one reliably here; instead verify the fix through agent-browser and describe the manual verification in your notes so the maintainer can add a durable test when landing it..js. Type-only imports use import type.export const prerender = false;.sql tagged template; use sql.ref() for identifiers; validate dynamic identifiers with validateIdentifier() before any sql.raw().ApiResult<T>. Errors use apiError, handleError, and SCREAMING_SNAKE_CASE error codes. Never expose error.message to clients.requirePerm / requireOwnerPerm from #api/authorize.js for authorization. Permissions live in packages/auth/src/rbac.ts -- do not invent new permission strings inline.{ items, nextCursor? }. Use encodeCursor / decodeCursor.locale.import.meta.env.DEV, never process.env.NODE_ENV.runner.ts via StaticMigrationProvider.pnpm --filter <package> test. Read the output. Any new failures in tests you did not write are regressions -- investigate and fix, or abandon the entire change. Do not push regressions through.pnpm typecheck for packages, pnpm typecheck:demos if a demo was involved. No new errors.pnpm lint:quick. Snapshot the diagnostic count with pnpm lint:json | jq '.diagnostics | length' if the count looks suspicious -- a clean baseline should remain clean after your edits.pnpm format. The repo uses oxfmt with tabs; do not bypass it.pnpm changeset) non-interactively if possible, or create the file directly under .changeset/. Patch bump for a bug fix unless the diagnosis explicitly says otherwise. The summary should reference the issue number.git add -A. Verify with git status that the staged set is what you expect -- source change, regression test, and changeset if applicable. Nothing else.Return fixed: false with a clear explanation in notes when:
A failed fix attempt is still useful -- the bot will post the diagnose and verify output and explain why the automated attempt was abandoned.
Return:
fix(<scope>): <short description> (#<issue>) for a fix, with the scope matching the package or area (fix(core/menus), fix(admin/seo), fix(migrations)).fixed: false, the specific reason you abandoned.The orchestrator reads this output, decides whether to commit, names the branch, opens the PR, and posts the triage comment that links to it.