Skip to content

Links

Typed relationships between entities that are neither containment nor embedding — e.g. a Task depending on another Task, or a Meeting having raised a Risk. Each relevant entity pair has its own dedicated link class rather than sharing one generic Link entity, so each pair's target type and vocabulary of relationship kinds stay precise.

Every link carries a LinkProvenance, orthogonal to its kind: EXPLICIT when a user asserted the relationship directly, IMPLICIT when some other process inferred it (e.g. from a mention in a comment).

Links are embedded fields on the entity that declares the relationship (Task.links, Meeting.task_links, and so on) and are unvalidated soft references: a link's target id is stored as given and is never checked for existence, the same as Task.related_acs. See Domain Model — Links for a conceptual overview and Merging — Link merging for merge semantics.

LinkProvenance

LinkProvenance

Bases: str, Enum

How a link between two entities came to exist.

Attributes:

Name Type Description
EXPLICIT

A user directly asserted the relationship.

IMPLICIT

The relationship was inferred by some other process (e.g. one entity mentioned in another's comments).

TaskLinkKind

TaskLinkKind

Bases: str, Enum

Classifies the nature of a relationship between two Tasks.

Attributes:

Name Type Description
RELATES_TO

A loose, non-directional association.

DEPENDS_ON

The owning Task cannot proceed until the target completes.

DUPLICATES

The owning Task describes the same work as the target.

Bases: BaseModel

A typed relationship from a Task to another Task.

Attributes:

Name Type Description
target_task_id int

The id of the related Task.

kind TaskLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

Bases: BaseModel

A typed relationship from a Task to a Risk it is affected by.

Attributes:

Name Type Description
target_risk_id int

The id of the Risk affecting the owning Task.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

UserStoryLinkKind

UserStoryLinkKind

Bases: str, Enum

Classifies the nature of a relationship between two UserStories.

Attributes:

Name Type Description
RELATES_TO

A loose, non-directional association.

DEPENDS_ON

The owning UserStory cannot be delivered until the target is.

SUPERSEDES

The owning UserStory replaces the target.

Bases: BaseModel

A typed relationship from a UserStory to another UserStory.

Attributes:

Name Type Description
target_story_id int

The id of the related UserStory.

kind UserStoryLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

RiskLinkKind

RiskLinkKind

Bases: str, Enum

Classifies the nature of a relationship between two Risks.

Attributes:

Name Type Description
RELATES_TO

A loose, non-directional association.

COMPOUNDS

The owning Risk worsens the target's impact or probability.

Bases: BaseModel

A typed relationship from a Risk to another Risk.

Attributes:

Name Type Description
target_risk_id int

The id of the related Risk.

kind RiskLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

MeetingLinkKind

MeetingLinkKind

Bases: str, Enum

Classifies the nature of a relationship between two Meetings.

Attributes:

Name Type Description
RELATES_TO

A loose, non-directional association.

FOLLOWS_UP_ON

The owning Meeting is a follow-up to the target.

Bases: BaseModel

A typed relationship from a Meeting to another Meeting.

Attributes:

Name Type Description
target_meeting_id str

The id of the related Meeting.

kind MeetingLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

MeetingTaskLinkKind

MeetingTaskLinkKind

Bases: str, Enum

Classifies how a Meeting relates to a Task.

Attributes:

Name Type Description
PRODUCED

The meeting gave rise to the Task.

DISCUSSED

The Task was discussed during the meeting.

Bases: BaseModel

A typed relationship from a Meeting to a Task.

Attributes:

Name Type Description
target_task_id int

The id of the related Task.

kind MeetingTaskLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

MeetingRiskLinkKind

MeetingRiskLinkKind

Bases: str, Enum

Classifies how a Meeting relates to a Risk.

Attributes:

Name Type Description
RAISED

The meeting is where the risk was first raised.

DISCUSSED

The risk was discussed during the meeting.

Bases: BaseModel

A typed relationship from a Meeting to a Risk.

Attributes:

Name Type Description
target_risk_id int

The id of the related Risk.

kind MeetingRiskLinkKind

The nature of the relationship.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.

Bases: BaseModel

A typed relationship from a Meeting to a UserStory it discussed.

Attributes:

Name Type Description
target_story_id int

The id of the related UserStory.

provenance LinkProvenance

Whether the relationship was explicitly asserted or implicitly inferred.