pub struct EpicConfiguration {
pub name: String,
pub description: Option<String>,
pub status: Option<String>,
pub owner: Option<String>,
pub start_date: Option<String>,
pub due_date: Option<String>,
pub weight: Option<i64>,
pub parent: Option<String>,
pub projects: Vec<String>,
pub milestone: Option<String>,
pub cycle: Option<String>,
}Expand description
An epic record ([epics.<epic-id>] in tix.toml).
Mission epics-work-items-01M3BYW4 (WP01). The stable EpicId lives as the
map key; name is a mutable display label and is not the identity (C-003),
so a rename leaves every member issue’s reference and every derived figure
intact. The section is omitted entirely when there are no epics, so a legacy
tix.toml is byte-untouched (C-004).
status is epic metadata and is deliberately a free-form string, exactly
like ProjectConfiguration::status: it is not an issue’s board column, and
workflow-category semantics belong to source issue #183, so no global category
model is introduced here. owner is an identity string in the same shape the
existing assignee field tolerates (bare handle or Name <email>); it is not a
user account, a directory entry, or a team membership (C-003).
weight is epic metadata used in epic rollups — a positive relative size. It is
not a size field on issues: Issue.estimate stays the free-form string it is,
and no typed size concept is introduced (research R3). A missing weight
contributes nothing to a weighted figure.
parent is an epic id and projects are project ids, while milestone
and cycle are the name-keyed references the existing registries use. That
asymmetry is deliberate — it matches how Issue.cycles/Issue.milestones
already work — and is recorded in contracts/epic-registry.md so it is not
“corrected” by accident.
References are validated for shape only. Whether a project, milestone, cycle,
or parent epic exists is resolved by the epic service and diagnosed by
tix lint; a dangling reference must stay loadable and repairable, exactly as a
view’s project scope does (C-005).
Fields§
§name: StringDisplay label. Required and unique within the registry, so selection is unambiguous — but never the identity, which is the map key.
description: Option<String>Optional long-form context.
status: Option<String>Optional epic status (free-form; not a board column, not a category).
owner: Option<String>Optional owner identity string; no lookup, no user-identity concept.
start_date: Option<String>Optional start date (YYYY-MM-DD).
due_date: Option<String>Optional due date (YYYY-MM-DD); must be >= start_date.
weight: Option<i64>Optional positive relative size, used in epic rollups. Never an issue size.
parent: Option<String>Optional parent epic id; shape is checked here, existence is not.
projects: Vec<String>Project ids this epic concerns; shape is checked here, existence is not.
milestone: Option<String>Optional milestone name (the existing name-keyed reference).
cycle: Option<String>Optional cycle name (the existing name-keyed reference).
Trait Implementations§
Source§impl Clone for EpicConfiguration
impl Clone for EpicConfiguration
Source§impl Debug for EpicConfiguration
impl Debug for EpicConfiguration
Source§impl Default for EpicConfiguration
impl Default for EpicConfiguration
Source§impl<'de> Deserialize<'de> for EpicConfigurationwhere
EpicConfiguration: Default,
impl<'de> Deserialize<'de> for EpicConfigurationwhere
EpicConfiguration: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for EpicConfiguration
Source§impl PartialEq for EpicConfiguration
impl PartialEq for EpicConfiguration
Source§impl Serialize for EpicConfiguration
impl Serialize for EpicConfiguration
impl StructuralPartialEq for EpicConfiguration
Auto Trait Implementations§
impl Freeze for EpicConfiguration
impl RefUnwindSafe for EpicConfiguration
impl Send for EpicConfiguration
impl Sync for EpicConfiguration
impl Unpin for EpicConfiguration
impl UnsafeUnpin for EpicConfiguration
impl UnwindSafe for EpicConfiguration
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more