avelino / avelino/dotagent

Per-schedule `timeout_seconds` override

Open
#27 0 comments 0 reactions 0 assignees View on GitHub
area: manifest area: runner good first issue type: feature
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.