Skip to content

Triage the Nov 1 bug bash: name sides on Current Debate, reject blank input, stop false-red explore jobs - #290

Merged
Programcode merged 1 commit into
mainfrom
t3/agentic-bugbash-1101
Nov 2, 2026
Merged

Programcode merged 1 commit into
mainfrom
t3/agentic-bugbash-1101

Conversation

@Programcode

Copy link
Copy Markdown
Owner

Triage of the 2026-11-01 bug bash, run 41303539137 on 8f20171d.

Why all four jobs were red

The run wasn't broken. e2e explore exits 1 whenever it records an issue, and each persona recorded some, so every job went red at the Exploration step. continue-on-error: true then kept the workflow green: gh run list shows run 41303539137 as success. Nothing in the stack, the browser or the model calls failed.

The harness still needed fixing. Because continue-on-error hides any exit code, a crash, a missing model key or a dead stack looked the same as "found bugs". The Exploration step now reads report.json. Exit 1 with at least one issue recorded passes with a warning annotation. Every other non-zero exit fails the job. I tested the jq count against this run's coach report (9 issues, matching the log) and against a missing report (0, so the job fails).

Coach findings: what actually happened

The data was right every time. The action trace and screenshots show:

  • The agent saved 4 cases (In favor 11:51, Against 11:52, In favor 11:52, In favor 11:53) and 2 Brainstorms. Brainstorm defaults to "Explore both sides", so each Brainstorm is listed in both side columns.
  • The counts add up: 6 outputs; 3 cases + 2 Brainstorms = 5 In favor; 1 case + 2 Brainstorms = 3 Against. History held the same 4 cases and 2 Brainstorms.
  • Every Load opened the row the agent tapped. In step 2 it tapped Load (1 of 2), the newest row (Against, 11:52), and then reported that it had clicked the 11:51 row. That is the "Generate case saving" step failure.

The confusion came from the Current Debate page. Every row was titled with the motion and read Case · 1 Nov 2026, 11:52, with no side. Two different cases saved in the same minute therefore looked like one case listed twice, and every Load button had the same accessible name.

Findings by job

coach, desktop. 9 issues, 2 warnings.

  • Case side differs between History and Current debate, case listed twice in Recent work (high): UI ambiguity, fixed. These were two cases, one per side. Rows now show the side.
  • 11:53 case missing from History (high): agent misread. Step 10 tapped Load (1 of 4) in History, so all 4 cases were there.
  • Brainstorm counted under both sides, a Brainstorm "saved as Against" listed under In favor, side counts vs History (medium): by design. These are both-sides Brainstorms and the arithmetic matches. Those rows now read "Both sides".
  • Load showing the wrong entry (medium, two findings): not a bug. The agent's own text says the side and time matched. Load buttons now carry distinct names.
  • Two warnings: the agent's own "not a defect" notes.

edge-input, desktop. 6 issues, 8 warnings.

  • Whitespace-only motion generates a case (high): real bug, fixed. z.string().min(1) accepted spaces.
  • Whitespace-only argument accepted by Attack (medium): real bug, fixed. Same cause.
  • Arabic motion fails with "Could not save the debate." (high): misattributed, same root cause. The Arabic debate was created; the dialog screenshot shows it as the Current Debate. The finding was reported at 11:52:22, two seconds after the agent clicked "Create a new debate" for the five-space motion, which createDebate rejects. The whitespace fix stops this from happening.
  • History > Attacks entries can't be told apart (medium, two findings): mostly fake-provider. The title is the model's summary, and the fake provider always returns the same one. Lead: title attacks by the argument instead.
  • Long mixed-direction source title truncates differently in the row and the dialog (medium): not a bug. The two containers are different widths.
  • Warnings: no length counter on the motion field (lead, the 1200-character cap is enforced). The rest are notes the agent marked as not defects.

hungarian, mobile. 9 issues, 1 warning.

  • {{time}} van hátra on the Sparring timer (medium): real bug, fixed. The progress bar's aria-label didn't pass time.
  • English judge feedback and English Attack text on a Hungarian screen, plus -ban/-ben Second contention (medium, low): fake provider. Its canned output is English. Live mode writes in the chosen output language.
  • AI output language select shows "English" (medium): by design. Language names are shown in their own language, and the persona only changed the interface language.
  • Sparring DOCX/PDF export gives no visible feedback (medium): lead, unconfirmed. The agent can't see browser downloads. Needs a scripted repro.
  • #1Fares… and Előadáscsak írásban run together (low): lead. Seen in the accessibility snapshot, where adjacent elements have no space between them. The screen may be fine. Needs a check.
  • 400-character unbroken string overflows the Crossfire bubble at 393 px (medium): lead, unconfirmed. Needs a repro spec.

first-timer, desktop. 8 issues, 2 warnings.

  • Brainstorm not saved to History (high): by design. Every run chose "Use once without saving to a debate".
  • Library source gone after reload (medium): by design. "Test source 1" was saved at 11:53:57. The agent started a new debate at 11:54:08, and the Library lists only the Current Debate's sources.
  • {{time}} remaining (medium): real bug, fixed. Same as the Hungarian finding.
  • Turn jumps from 3 to 5, "2 submitted" (medium, warning): by design. The AI opponent's turn follows yours automatically.
  • Identical category scores, "No grounded finding", repeated Crossfire answers (medium, trivial): fake provider.
  • Factoids shows "Saved to history" with 0 factoids (medium): lead. Exa isn't configured in fake mode, so 0 is expected. Whether an empty result should be saved is a product call.
  • Flowchart edits lost on reload without Save (medium): lead / product call. There is no unsaved-changes warning.

What changed

  • src/pages/CurrentDebatePage.tsx: rows read Case · In favor · 1 Nov 2026, 11:52. A side column leaves out its own side, so a both-sides item there reads "Both sides". Load buttons are named "Load , , ".
  • packages/core/src/ai/schemas/{generate,brainstorm,attack}.ts: the motion and argument are trimmed before the required check. These are client form schemas; no Edge Function imports them.
  • src/components/features/sparring/SparringRound.tsx: the timer progress bar label gets time.
  • .github/workflows/agentic-e2e.yml and docs/testing.md: the Exploration step logic described above.
  • Tests: e2e/quality-backlog.spec.ts gains one spec showing that spaces-only input in Generate and Attack shows the required message and sends no AI request. It failed before the fix. The Current Debate recipe and e2e/full-stack/current-debate.spec.ts each gain one assertion that a Recent work row names its side. I updated the skill's features/current-debate.md to match.

No migrations, no Edge Function changes, no production changes.

Verification

  • npx playwright test e2e/quality-backlog.spec.ts on desktop and mobile Chromium: 22 passed. The new spec failed before the schema fix, at "Motion is required" not visible. The existing 360 px Current Debate fit test still passes with the longer rows.
  • verify.sh drive recipes/current-debate on desktop-chromium and mobile-chromium against the local stack (fake provider): 3/3 passed on each.
  • npm run lint, npm run typecheck, npm test (94 guards), npm run docs:check: pass.
  • npm run verify at the final head: all 9 steps passed in 98.9 s (docs, jargon, typecheck, guards, lint, edge, build, smoke, sw-offline). Local pass only; CI runs on this push.
  • Not run: the Agentic E2E workflow. I didn't rerun the bug bash; the next monthly run, or gh workflow run agentic-e2e.yml --ref t3/agentic-bugbash-1101 -f explore="…" -f persona=coach, will exercise the new Exploration step on GitHub.

Merge rule

Not low-risk under AGENTS.md: it touches .github/ and packages/core. It needs Adam's OK to merge.

🤖 Generated with Claude Code

…false-red explore jobs

- Current Debate rows show the side (a side column leaves out its own), so a
  Pro and a Con case saved the same minute no longer read as one case listed
  twice. Load buttons name the kind and side as well as the motion.
- Generate, Brainstorm and Attack treat a motion or argument of only spaces as
  blank instead of spending an AI request on it.
- The Sparring progress bar's accessible name fills in the time instead of
  reading "{{time}} remaining".
- The bug-bash Exploration step passes with a warning when e2e explore exits 1
  with issues recorded, and fails on any other error, in place of
  continue-on-error, which marked every job red and also hid real harness
  failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@Programcode
Programcode marked this pull request as ready for review November 2, 2026 08:26
Copilot AI balanced review requested due to automatic review settings November 2, 2026 08:26
@Programcode
Programcode merged commit f49ad8c into main Nov 2, 2026
3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants