From a3f2723626794b3d4d63e341f1f3c4be59a835c2 Mon Sep 17 00:00:00 2001 From: architect-bot Date: Sun, 12 Apr 2026 04:09:56 +0000 Subject: [PATCH] sprint: add bug-report-pipeline.md --- sprints/bug-report-pipeline.md | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 sprints/bug-report-pipeline.md diff --git a/sprints/bug-report-pipeline.md b/sprints/bug-report-pipeline.md new file mode 100644 index 0000000..8e442aa --- /dev/null +++ b/sprints/bug-report-pipeline.md @@ -0,0 +1,54 @@ +# Sprint pitch: bug-report pipeline — inbound classification + auto-close + +## Vision issues +- #388 — end-to-end bug-report management — inbound classification, reproduction routing, and auto-close loop + +## What this enables + +After this sprint, bug-reports flow through a **cheap classification gate** before reaching the expensive reproduce-agent. Inspection-class bugs (stack trace cited, cause obvious from code) go straight to dev-agent — saving the full Playwright/MCP environment spin-up. The auto-close loop fires reliably, and upstream Codeberg reporters get notified when their bug is fixed. + +Today: every bug-report → reproduce-agent (expensive). After: only ambiguous bugs → reproduce-agent; obvious bugs → dev-agent directly. + +## What exists today + +The pipeline is 80% built: + +| Component | Status | Location | +|-----------|--------|----------| +| Gardener bug-report detection + enrichment | Complete | `formulas/run-gardener.toml:79-134` | +| Reproduce-agent (Playwright MCP, exit gates) | Complete | `formulas/reproduce.toml`, `docker/reproduce/` | +| Triage-agent (6-step root cause) | Complete | `formulas/triage.toml` | +| Dev-poll label gating (skips `bug-report`) | Complete | `dev/dev-poll.sh` | +| Auto-close decomposed parents | Complete (not firing) | `formulas/run-gardener.toml:224-269` | +| Issue templates (bug.yaml, feature.yaml) | Complete | `.forgejo/ISSUE_TEMPLATE/` | +| Manifest action system | Complete | `gardener/pending-actions.json` | + +Reusable infrastructure: formula-session.sh, agent-sdk.sh, issue-lifecycle.sh label helpers, parse-deps.sh dependency extraction, manifest-driven mutation pattern. + +## Complexity + +- **5-6 sub-issues** estimated +- **~8 files touched** across formulas, lib, and gardener +- **Mostly gluecode** — extending existing gardener formula, adding a classification step, wiring auto-close reliability, adding upstream notification +- **One new formula step** (inbound classifier in run-gardener.toml or a dedicated pre-check) +- **No new containers or services** — classification runs inside existing gardener session + +## Risks + +- **Classification accuracy** — the cheap pre-check might route ambiguous bugs to dev-agent, wasting dev cycles on bugs it can't fix without reproduction. Mitigation: conservative skip-reproduction criteria (all four pre-check questions must be clean). +- **Gardener formula complexity** — run-gardener.toml is already the most complex formula. Adding classification logic increases cognitive load. Mitigation: classification could be a separate formula step with clear entry/exit gates. +- **Upstream Codeberg notification** — requires Codeberg API token in `.env.vault.enc`. Currently in `.netrc` on host but not in containers. Needs vault action for the actual notification (AD-006 compliance). +- **Auto-close timing** — if gardener runs are infrequent (every 6h), auto-close feedback loop is slow. Not a sprint problem per se, but worth noting. + +## Cost — new infra to maintain + +- **One new gardener formula step** (inbound classification) — maintained alongside existing grooming step +- **Bug taxonomy labels** (bohrbug, heisenbug, mandelbug, schrodinbug or simplified equivalents) — 2-4 new labels +- **No new services, cron jobs, or agent roles** — everything runs within existing gardener cycle +- **Codeberg notification vault action template** — one new TOML in `vault/examples/` + +## Recommendation + +**Worth it.** The infrastructure is 80% built. This sprint fills the two concrete gaps (classification gate + auto-close reliability) with minimal new maintenance burden. The biggest value is avoiding unnecessary reproduce-agent runs — each one costs a full Claude session with Playwright MCP for bugs that could be triaged by reading code. The auto-close fix is nearly free (the logic exists, just needs the gardener to run reliably). Upstream notification is a small vault action addition. + +Defer the statistical reproduction mode (Heisenbug handling) and bulk deduplication to a follow-up sprint — they add complexity without proportional value at current bug volume. -- 2.49.1