fix(stagecraft): Simulate follow-ups: a walk that cannot run keeps Discard, a settling step shows pending, Copy flags the placeholder note (swamp-club #2891) #447

Merged
seth merged 2 commits from cue/2891-gatorwalk-factory-studio into main 2026-10-02 19:44:18 +00:00
Owner

Fixes swamp-club #2891: the follow-ups from #2808's Simulate-mode verification reviews.

  • A walk the engine cannot run keeps its banner with Discard, and the Run tab shows the engine's error. Copy as scenario says why the walk could not run, instead of "Checking the walk on the engine…" forever.
  • While a step plays, the frames it replaces stay, dimmed and inert (Run cards, timeline, transport), and the banner says the walk is playing. That ends the false "The walk could not run" alert, and the previous walk's frames no longer take clicks. goFrame, takeStep and starting playback wait; stopping playback still works.
  • settleWalk runs one settle at a time. A call while one runs joins it and has it play once more, so it still ends on the newest walk and the newest definition.
  • Copy flags the placeholder override note ("one more pass") and asks for the real reason.
  • takeStep says why when the picked scenario did not run.
  • The walk's entry takes a free name: <base>-walk-2 and on when a saved scenario already has <base>-walk, checked against the last good definition.

The studio assets are rebuilt (deno task build:studio), and the Copy as scenario paragraph in DESIGN.md is updated. There is no manifest bump, because stagecraft is unpublished (#2820).

Testing: new tests in simulate_test.ts and state_test.ts cover a walk the engine cannot run, the pending state, coalesced settles, the takeStep flash, free naming (including after a failed read), and a walk left open when the definition goes away. All 914 stagecraft tests pass. The pending state and the placeholder flag were also checked in headless Chromium.

Verified at d475cfb8c5 (attestation c5ae4010): build run b31316c9, reviews run 8f58b753, all passed.

🤖 Generated with Claude Code

Fixes swamp-club #2891: the follow-ups from #2808's Simulate-mode verification reviews. - **A walk the engine cannot run** keeps its banner with Discard, and the Run tab shows the engine's error. Copy as scenario says why the walk could not run, instead of "Checking the walk on the engine…" forever. - **While a step plays**, the frames it replaces stay, dimmed and inert (Run cards, timeline, transport), and the banner says the walk is playing. That ends the false "The walk could not run" alert, and the previous walk's frames no longer take clicks. `goFrame`, `takeStep` and starting playback wait; stopping playback still works. - **`settleWalk` runs one settle at a time.** A call while one runs joins it and has it play once more, so it still ends on the newest walk and the newest definition. - **Copy flags the placeholder override note** ("one more pass") and asks for the real reason. - **`takeStep` says why** when the picked scenario did not run. - **The walk's entry takes a free name**: `<base>-walk-2` and on when a saved scenario already has `<base>-walk`, checked against the last good definition. The studio assets are rebuilt (`deno task build:studio`), and the Copy as scenario paragraph in DESIGN.md is updated. There is no manifest bump, because stagecraft is unpublished (#2820). Testing: new tests in `simulate_test.ts` and `state_test.ts` cover a walk the engine cannot run, the pending state, coalesced settles, the `takeStep` flash, free naming (including after a failed read), and a walk left open when the definition goes away. All 914 stagecraft tests pass. The pending state and the placeholder flag were also checked in headless Chromium. Verified at d475cfb8c558c871b306823f2df45046dc00485e (attestation c5ae4010): build run b31316c9, reviews run 8f58b753, all passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
- A walk the engine cannot run keeps its banner with Discard, and Copy says
  why it could not run instead of checking forever.
- While a step plays, the frames it replaces stay, dimmed and inert, and
  goFrame, takeStep and starting playback wait for it; no false
  could-not-run alert mid-step.
- settleWalk is single-flight: a call while one runs joins it and has it
  play once more, instead of racing it.
- Copy flags an override still carrying the placeholder note.
- takeStep says why when the picked scenario did not run.
- The walk's entry takes a free name, <base>-walk-2 and on, when a saved
  scenario already has <base>-walk.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fix(stagecraft): a walk is not left playing when the definition goes away, and its name avoids the last good definition's scenarios (swamp-club #2891)
All checks were successful
CI / Validate Attestation (pull_request) Successful in 1m53s
CI / Review Integrity (pull_request) Successful in 2m14s
d475cfb8c5
From the verification reviews: walkPending needs a good definition, the
walk's free name reads the last good definition (a failed read keeps it),
the placeholder line reads right for several overrides, and the pending
class is scoped as walk-pending.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit 547a9198d9 into main 2026-10-02 19:44:18 +00:00
seth deleted branch cue/2891-gatorwalk-factory-studio 2026-10-02 19:44:19 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!447
No description provided.