amont-agent 2.30.0

A guard that inspects a shell command before Claude Code runs it
//! `plan-phases-open`: a turn ended while the plan its branch carries still
//! has an open phase (ADR-0022, `work.commits-follow-phases`).
//!
//! It fires on `Stop`, not on a shell command, so `examine` never matches a
//! command; the judgement is `crate::plan_phases`, called from the hook's
//! `Stop` arm. The rule is declared here so its stance resolves, graduates
//! and reports like every other rule's.
//!
//! Default `deny`, the person's choice: the turn is kept going, with the
//! phase named, until the phase is ticked, a `WAITING:` line says why it
//! cannot be, or three continuations have passed.

use crate::rules::{Evidence, Examine, Finding, Rule, Stance, Trend};
use crate::shell::Parsed;

pub const RULE: Rule = Rule {
    id: "plan-phases-open",
    default_stance: Stance::Deny,
    max_stance: Stance::Deny,
    evidence: Evidence {
        per_1000: 0.0,
        measured: "2026-10-07",
        trend: Trend::Rare,
    },
    examine: Examine::Legacy(examine),
    confirm: None,
};

fn examine(_: &Parsed) -> Option<Finding> {
    None
}