Skip to content

fix(orchestration): validate idle-timeout wizard input, warn on inert idle_timeout_secs#6313

Merged
bug-ops merged 1 commit into
mainfrom
feat/issue-6303/timeout-validation-hint
Jul 16, 2026
Merged

fix(orchestration): validate idle-timeout wizard input, warn on inert idle_timeout_secs#6313
bug-ops merged 1 commit into
mainfrom
feat/issue-6303/timeout-validation-hint

Conversation

@bug-ops

@bug-ops bug-ops commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Summary

  • --init wizard no longer silently drops invalid idle-timeout input to None; it now reuses a shared parse_optional_nonzero validator (extracted from worktree.rs) so invalid input re-prompts, consistent with other numeric fields in the wizard.
  • Config loader rejects default_idle_timeout_secs == Some(0) for consistency with the worktree fields.
  • Scheduler emits a one-time tracing::warn! when idle_timeout_secs is set anywhere (config-level or per-task) but not enforced, since the field remains a documented no-op in this release per spec-075.

Both issues were flagged by impl-critic during review of #6243 (orchestration node control parity, spec-075) and deliberately deferred to keep that PR scoped.

Closes #6303
Closes #6302

Test plan

  • cargo +nightly fmt --check
  • cargo clippy --profile ci --workspace --all-targets --features "desktop,ide,server,chat,pdf,scheduler,testing" -- -D warnings
  • cargo nextest run --config-file .github/nextest.toml --workspace --features "desktop,ide,server,chat,pdf,scheduler" --lib --bins (13800 passed / 0 failed)
  • rustdoc gate (RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc --no-deps --workspace ...)
  • gitleaks protect --staged (0 leaks)
  • New unit tests: wizard validator boundary cases (blank/positive/zero/non-numeric/negative), loader Some(0) rejection, scheduler warn-once behavior for both Scheduler::new() and resume_from()
  • Existing tests confirmed unchanged: zeph-config experiment::tests::orchestration_config_default_idle_timeout_secs_is_none, zeph-orchestration scheduler::tick::tests::test_idle_timeout_secs_is_a_no_op
  • .local/testing/playbooks/orchestration.md and .local/testing/coverage-status.md updated (main repo path)
  • Live agent session test for the wizard re-prompt (not yet run — noted as a remaining gap in coverage-status.md)

@github-actions github-actions Bot added documentation Improvements or additions to documentation rust Rust code changes dependencies Dependency updates bug Something isn't working size/L Large PR (201-500 lines) labels Jul 16, 2026
@bug-ops
bug-ops force-pushed the feat/issue-6303/timeout-validation-hint branch from 180ba85 to 3d1eccf Compare July 16, 2026 16:40
@bug-ops
bug-ops enabled auto-merge (squash) July 16, 2026 17:05
@bug-ops
bug-ops force-pushed the feat/issue-6303/timeout-validation-hint branch 2 times, most recently from 626c46a to 3bad48c Compare July 16, 2026 17:16
… idle_timeout_secs

The --init wizard silently dropped invalid idle-timeout input to None
instead of re-prompting; the wizard now reuses the shared
parse_optional_nonzero validator (extracted from worktree.rs) so
invalid input triggers a re-prompt like other numeric fields.

The config loader now rejects default_idle_timeout_secs == Some(0)
for consistency with the worktree fields, and the scheduler emits a
one-time warning when idle_timeout_secs is set anywhere (config or
task-level) since the field is not yet enforced per spec-075.

Closes #6303
Closes #6302
@bug-ops
bug-ops force-pushed the feat/issue-6303/timeout-validation-hint branch from 3bad48c to 0669bdf Compare July 16, 2026 17:26
@bug-ops
bug-ops merged commit 9d0e3b8 into main Jul 16, 2026
43 checks passed
@bug-ops
bug-ops deleted the feat/issue-6303/timeout-validation-hint branch July 16, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working dependencies Dependency updates documentation Improvements or additions to documentation rust Rust code changes size/L Large PR (201-500 lines)

Projects

None yet

1 participant