pub struct LoopSpec {
pub name: String,
pub intent: String,
pub level: LoopLevel,
pub cadence: String,
pub budget: TokenBudget,
pub maker_prompt: String,
pub checker_prompt: String,
pub action_kind: String,
}Expand description
Declarative definition of a single loop.
Fields§
§name: StringStable identifier — used in logs, memory keys, and scheduler jobs.
intent: StringIntent. One sentence stating what this loop is supposed to do.
This is the antidote to intent debt — the drift between what a loop was meant to do and what it actually does. Writing it down, surfacing it in every report, and reviewing it keeps the gap visible. It is also injected into the maker’s task so the agent shares the framing.
level: LoopLevelMaturity level — governs write-capability and gate policy.
cadence: StringCadence string parsed by harness_daemon::Schedule
(e.g. "every 15m", "daily 08:00", "weekly mon 09:30").
budget: TokenBudgetSpend ceiling enforced per round.
maker_prompt: StringWhat the maker sub-agent is asked to do this round (triage + implement, or — at L1 — just investigate and report).
checker_prompt: StringWhat the checker sub-agent is asked to verify (run tests, check gates, look for regressions). The maker/checker split is loop engineering’s verification discipline made structural.
action_kind: StringThe kind of the action this loop proposes when its work verifies,
e.g. "open-pr", "commit", "comment", "report". The gate
matches its allowlist against this.
Implementations§
Source§impl LoopSpec
impl LoopSpec
Sourcepub fn new(
name: impl Into<String>,
intent: impl Into<String>,
level: LoopLevel,
) -> Self
pub fn new( name: impl Into<String>, intent: impl Into<String>, level: LoopLevel, ) -> Self
Minimal constructor; fill the rest with the builder methods.