Skip to main content

Spec

Struct Spec 

Source
pub struct Spec {
    pub id: String,
    pub frontmatter: SpecFrontmatter,
    pub title: Option<String>,
    pub body: String,
}

Fields§

§id: String§frontmatter: SpecFrontmatter§title: Option<String>§body: String

Implementations§

Source§

impl Spec

Source

pub fn parse(id: &str, content: &str) -> Result<Self>

Parse a spec from file content.

Source

pub fn load(path: &Path) -> Result<Self>

Load a spec from a file path.

Source

pub fn load_frontmatter_only(path: &Path) -> Result<Self>

Load only the frontmatter from a spec file, without parsing the body. This is more efficient for operations that only need metadata (status, dependencies, etc.) and don’t need the full spec body content.

Source

pub fn load_with_branch_resolution(spec_path: &Path) -> Result<Self>

Load a spec, optionally resolving from its working branch.

If the spec is in_progress and has a branch (frontmatter.branch or chant/{id}), attempt to read the spec content from that branch for live progress.

Source

pub fn save(&self, path: &Path) -> Result<()>

Save the spec to a file.

Source

pub fn count_unchecked_checkboxes(&self) -> usize

Count unchecked checkboxes (- [ ]) in the Acceptance Criteria section only. Returns the count of unchecked items in that section, skipping code fences. Uses the LAST ## Acceptance Criteria heading outside code fences.

Source

pub fn count_total_checkboxes(&self) -> usize

Count total checkboxes (both checked and unchecked) in the Acceptance Criteria section. Used to assess spec complexity.

Source

pub fn add_derived_fields(&mut self, fields: HashMap<String, String>)

Add derived fields to the spec’s frontmatter. Updates the frontmatter with the provided derived fields.

Source

pub fn auto_check_acceptance_criteria(&mut self) -> bool

Auto-check all acceptance criteria checkboxes in the spec body. Replaces all - [ ] with - [x] in the Acceptance Criteria section. Returns true if any checkboxes were checked, false otherwise.

Source

pub fn has_acceptance_criteria(&self) -> bool

Check if this spec has acceptance criteria. Returns true if the spec body contains an “## Acceptance Criteria” section with at least one checkbox item.

Source

pub fn is_blocked(&self, all_specs: &[Spec]) -> bool

Check if this spec has unmet dependencies or approval requirements that would block it.

Source

pub fn is_ready(&self, all_specs: &[Spec]) -> bool

Check if this spec is ready to execute.

Source

pub fn get_blocking_dependencies( &self, all_specs: &[Spec], _specs_dir: &Path, ) -> Vec<BlockingDependency>

Get the list of dependencies that are blocking this spec.

Source

pub fn has_frontmatter_field(&self, field: &str) -> bool

Check if the spec’s frontmatter contains a specific field.

Source

pub fn requires_approval(&self) -> bool

Check if this spec requires approval before work can begin.

Source

pub fn is_approved(&self) -> bool

Check if this spec has been approved.

Source

pub fn is_rejected(&self) -> bool

Check if this spec has been rejected.

Trait Implementations§

Source§

impl Clone for Spec

Source§

fn clone(&self) -> Spec

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Spec

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Spec

§

impl RefUnwindSafe for Spec

§

impl Send for Spec

§

impl Sync for Spec

§

impl Unpin for Spec

§

impl UnwindSafe for Spec

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more