Per-schedule `timeout_seconds` override
- Dominant language
- Rust
- Stars
- 3
- Forks
- 1
- Avg merge
- 4h 50m
- Merged PRs (30d)
- 1
Description
`agent.toml` has a single `timeout_seconds` at the `[agent]` level. But many agents have multiple schedules with very different durations — `morning` might run a quick health check (10s) and `nightly` might run a full backup (30 min). Forcing both into the same timeout means either the quick one waits too long to fail or the slow one gets killed unfairly.
## Proposal
Allow `timeout_seconds` to be set per `[[schedules]]` entry, overriding the agent-level default:
```toml
[agent]
timeout_seconds = 60 # default for all schedules
[[schedules]]
id = "morning"
type = "cron"
weekday = "mon-fri"
at = "10:15"
# inherits 60s
[[schedules]]
id = "nightly"
type = "cron"
weekday = "mon-sun"
at = "02:00"
timeout_seconds = 1800 # override: 30 min for the heavy backup
```
## Acceptance criteria
- [ ] Schedule-level `timeout_seconds` parses and overrides the agent-level value at runtime.
- [ ] When absent, behavior is identical to today.
- [ ] `dotagent doctor` reports both values in `inspect`.
- [ ] [`agent-spec.md`](docs/reference/agent-spec.md) updated.
## Where to start
- `crates/dotagent-core/src/manifest.rs` — `Schedule` struct.
- `crates/dotagent-runner/src/lib.rs::run` — timeout resolution.
## Non-goals
- Dynamic timeouts (e.g. "10× the rolling average duration"). Static config only.
Contributor guide
Research direction
Start with the Schedule struct in crates/dotagent-core/src/manifest.rs, then follow timeout resolution from crates/dotagent-runner/src/lib.rs::run. Check the existing doctor inspect path and agent-spec.md. Done means schedule-level values override the agent default, omitted values preserve current behavior, inspect reports both values, and the reference documentation is updated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100