Skip to content

Fix Workbench Play stall after the first live step - #4

Merged
cursor[bot] merged 1 commit into
2.1.9from
cursor/workbench-playback-stall-6cb6
Aug 24, 2026
Merged

Fix Workbench Play stall after the first live step#4
cursor[bot] merged 1 commit into
2.1.9from
cursor/workbench-playback-stall-6cb6

Conversation

@ds-code-t

@ds-code-t ds-code-t commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Summary

Workbench UI Play ran the first live demo step (Given navigate to: URL.home) and then looked paused because the playhead was advanced twice:

  1. WorkbenchController.executeStep followed the RUNNING playhead via maybeAdvancePlayhead.
  2. WorkbenchFrame.schedulePlaybackStep then called markCurrentStepExecuted on the captured first-step id. After step 1 that id was no longer current, so requireCurrentStep threw. The throw happened after playbackBusy = false and before schedulePlaybackStep() for the next line, so automatic playback died.

This change keeps executeStep as the single playhead owner (needed for attached-agent/MCP spectator follow). The Swing Play loop refreshes and continues while RUNNING without remaking that mark. Leftover markCurrentStepExecuted / markCurrentStepFailed calls on an already-consumed id are no-ops, so they cannot abort playback. Isolated Step still pauses first. At end the player still stays WAITING_FOR_STEP.

Functionality-change coverage

  • I reviewed AGENTS.md and the relevant feature-map entry.
  • Framework implementation is complete.
  • Focused framework tests were added or updated.
  • Maven consumer scenarios and supporting resources were added or updated when applicable. (not applicable: headless Workbench player/controller contract; no consumer Gherkin change)
  • README or canonical documentation was updated when behavior changed.
  • docs/agent/feature-map.md remains accurate.
  • docs/agent/repository-index.md is current.
  • Backward compatibility was preserved, or the breaking change is documented.

Validation

  • python3 scripts/verify_agent_contract.py
  • python3 scripts/refresh_agent_index.py --check
  • python3 scripts/sync_consumer_guidance.py --check
  • ./gradlew :pickleball-workbench:test (BUILD SUCCESSFUL)
  • ./gradlew test (full root suite not requested)
  • ./gradlew publishToMavenLocal
  • ./maven-consumer-project/mvnw -f maven-consumer-project/pom.xml -U test -Dpkb_browser=CHROME_HEADLESS

Not running @all Cucumber, full root test, or Maven consumer @all, per the Workbench playback-stall request.

Open in Web Open in Cursor 

executeStep already advances the RUNNING playhead; the Swing Play loop
was marking the same captured step again, which threw after playbackBusy
was cleared and skipped the next schedulePlaybackStep. Keep executeStep
as the single playhead owner, make leftover marks no-ops, and continue
automatic playback while RUNNING.

Co-authored-by: ds-code-t <ds-code-t@users.noreply.github.com>
@ds-code-t
ds-code-t marked this pull request as ready for review August 24, 2026 18:42
@cursor
cursor Bot merged commit 3b8921f into 2.1.9 Aug 24, 2026
1 check passed
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