pub struct InitiativeConfiguration {
pub name: String,
pub outcome: Option<String>,
pub owner: Option<String>,
pub status: Option<String>,
pub priority: Option<Priority>,
pub labels: Vec<String>,
pub target_date: Option<String>,
pub projects: Vec<String>,
pub epics: Vec<String>,
pub milestones: Vec<String>,
pub extensions: InitiativeExtensions,
}Expand description
An initiative record ([initiatives.<initiative-id>] in tix.toml).
Mission roadmap-initiatives-01M3C8SX (WP01). The third stable-ID record, after
ProjectConfiguration and EpicConfiguration: the InitiativeId is the
map key and name is a mutable display label, so a rename leaves every
association and derived figure intact (C-002). The section is omitted entirely
when there are no initiatives, so a legacy tix.toml is byte-untouched (C-001).
§Preserved extensions — deliberately unlike its siblings
This record does not set deny_unknown_fields. The data model lists
extensions as preserved unknown data, so an unknown key is carried through
InitiativeExtensions and
round-trips unchanged rather than making tix.toml unreadable. The trade-off:
a typo’d key is preserved rather than refused here, which is the cost of the
forward-compatibility guarantee — the siblings that deny unknown fields pay the
opposite cost.
§Metadata is not issue state
status and priority are initiative metadata, not an issue’s board column
or priority: status is free-form exactly like ProjectConfiguration::status,
and priority reuses crate::model::Priority because its serde shape is a
plain string that round-trips an unknown value verbatim (a known spelling is
normalized to lowercase, the same rule issues already use). owner is an
identity string with no lookup, never inferred from anything.
§Associations are explicit, shape-checked, and never resolved here
projects are project ids, epics are epic ids, and milestones are
the names the existing milestone registry uses — the same id/name asymmetry
the epic contract records. Every entry is validated for shape only: whether
its target exists is resolved by the service (WP03) and diagnosed by tix lint,
so a dangling reference stays loadable and repairable (C-005). A repeated entry
is idempotent (see crate::roadmap::registry).
Fields§
§name: StringDisplay label. Required and unique within the registry (case-folded), so selection is unambiguous — but never the identity, which is the map key.
outcome: Option<String>Optional strategic outcome.
owner: Option<String>Optional owner identity string; no lookup, never inferred from anything.
status: Option<String>Optional initiative status (free-form; not a board column, not a category).
priority: Option<Priority>Optional initiative priority (see crate::model::Priority).
labels: Vec<String>Filterable labels; a repeat collapses to one on the write path.
target_date: Option<String>Optional calendar target (YYYY-MM-DD).
projects: Vec<String>Project ids this initiative concerns; shape checked here, existence not.
epics: Vec<String>Epic ids this initiative concerns; shape checked here, existence not.
milestones: Vec<String>Milestone names this initiative concerns (the name-keyed reference).
extensions: InitiativeExtensionsUnknown metadata, preserved verbatim (see the type-level note).
Trait Implementations§
Source§impl Clone for InitiativeConfiguration
impl Clone for InitiativeConfiguration
Source§impl Debug for InitiativeConfiguration
impl Debug for InitiativeConfiguration
Source§impl Default for InitiativeConfiguration
impl Default for InitiativeConfiguration
Source§impl<'de> Deserialize<'de> for InitiativeConfigurationwhere
InitiativeConfiguration: Default,
impl<'de> Deserialize<'de> for InitiativeConfigurationwhere
InitiativeConfiguration: 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>,
Source§impl PartialEq for InitiativeConfiguration
impl PartialEq for InitiativeConfiguration
Source§impl Serialize for InitiativeConfiguration
impl Serialize for InitiativeConfiguration
impl StructuralPartialEq for InitiativeConfiguration
Auto Trait Implementations§
impl Freeze for InitiativeConfiguration
impl RefUnwindSafe for InitiativeConfiguration
impl Send for InitiativeConfiguration
impl Sync for InitiativeConfiguration
impl Unpin for InitiativeConfiguration
impl UnsafeUnpin for InitiativeConfiguration
impl UnwindSafe for InitiativeConfiguration
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<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