You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Specsmith-governed projects and the specsmith CLI itself use bare sleep/Start-Sleep delays in shell scripts and agent-generated scripts without a guaranteed exit path. This creates an unbounded blocking risk — if the awaited condition never arrives, the script hangs forever.
Proposed Rule
Add a governance rule to docs/governance/RULES.md (and optionally enforce via specsmith validate) that applies to all scripts (shell, bash, PowerShell, zsh, batch — not source code):
RULE: No bare sleep delays in scripts.
Scripts MUST NOT use sleep, Start-Sleep, time.sleep, asyncio.sleep, or equivalent blocking waits as a standalone timing mechanism.
Every wait that depends on an external condition MUST use a polling loop with:
During ctt-neural development, Start-Sleep -Seconds N; gh run list ... blocked terminal sessions when the sleep ran but subsequent commands failed to return
specsmith's own specsmith watch had no timeout, hanging indefinitely — related to the same class of problem
Scope
Applies to: .sh, .bash, .zsh, .ps1, .bat, .cmd, CI workflow YAML run: blocks, Makefile recipes
Does NOT apply to: production source code (Python time.sleep, Rust thread::sleep, etc.) — only scripts that are directly executed by humans or CI runners
Detection: specsmith validate could flag ^\s*sleep \d+ patterns in script files without adjacent loop/retry constructs
Implementation suggestions
Add to the default RULES.md scaffold template
Add a specsmith validate check for bare-sleep in script files (similar to the existing unbounded-loop check)
Emit a warning (not error) on first occurrence to allow gradual adoption
Summary
Specsmith-governed projects and the specsmith CLI itself use bare
sleep/Start-Sleepdelays in shell scripts and agent-generated scripts without a guaranteed exit path. This creates an unbounded blocking risk — if the awaited condition never arrives, the script hangs forever.Proposed Rule
Add a governance rule to
docs/governance/RULES.md(and optionally enforce viaspecsmith validate) that applies to all scripts (shell, bash, PowerShell, zsh, batch — not source code):Preferred pattern (bash)
Preferred pattern (PowerShell)
Why
sleep N; commandis the root cause of hung CI pipelines, stuck terminal sessions, and zombie processesoz environment listhang (oz environment list hangs indefinitely on Windows and cannot be killed with Ctrl+C warpdotdev/warp#11419) was caused by this exact patternStart-Sleep -Seconds N; gh run list ...blocked terminal sessions when the sleep ran but subsequent commands failed to returnspecsmith watchhad no timeout, hanging indefinitely — related to the same class of problemScope
.sh,.bash,.zsh,.ps1,.bat,.cmd, CI workflow YAMLrun:blocks, Makefile recipestime.sleep, Rustthread::sleep, etc.) — only scripts that are directly executed by humans or CI runnersspecsmith validatecould flag^\s*sleep \d+patterns in script files without adjacent loop/retry constructsImplementation suggestions
RULES.mdscaffold templatespecsmith validatecheck for bare-sleep in script files (similar to the existing unbounded-loop check)