/-! # Run —— AgentRun 状态机 一次 `@bot` 创建一个 `AgentRun`(ADR-0001),它在终止时释放项目锁(ADR-0002)。 转移关系在任何 ADR 里都未定,这里只刻画状态与终止判定(后者是 Lock 排他不变式的 依赖),不定义转移边。 -/ namespace Spec.System /-- AgentRun 运行状态(状态名 `PINNED`, ADR-0001..0003, ADR-0022;完整性 `OPEN` ——ADR 从未声明"状态就是这些";实现若需新状态(如 pending)须 surface)。终止态 见 `RunState.Terminal`。 -/ inductive RunState where | active | waitingForUser | completed | failed | timedOut | limitExceeded | canceled /-- run 处于**终止态**(`PINNED`, ADR-0002, ADR-0022:锁在 completes/fails/ timesOut/limitExceeded/canceled 时释放)。`active`/`waitingForUser` 非终止——后者仍 占用项目(锁未释放)。 -/ def RunState.Terminal : RunState → Prop | .completed | .failed | .timedOut | .limitExceeded | .canceled => True | .active | .waitingForUser => False end Spec.System