Comment
Commentable is a mixin that adds stakeholder discussion and rationale to an entity without altering its core fields. Entities that include it gain a comments field holding an immutable set of Comment records that accumulate across scope merges — no comment is ever discarded.
UserStory and Task carry Commentable.
Comment
Comment
Bases: BaseModel
A comment attached to a Commentable entity.
Attributes:
| Name | Type | Description |
|---|---|---|
id |
int
|
Integer identifier used as an external reference handle. Not a merge key; union semantics preserve all comments from both sides. |
body |
str
|
The comment text. Must be non-empty. |
timestamp |
datetime
|
When the comment was recorded (must be timezone-aware). |
author |
str | None
|
Who wrote the comment. Free-text string; defaults to None. |
Commentable
Commentable
Bases: BaseModel
Mixin that adds a set of comments to an entity.
Entities inheriting this mixin carry a comments field holding an
immutable set of :class:~fushinryu_model.comment.Comment records.
Merge semantics: comments accumulate — both sides are unioned. Two comments are equal only when every field matches; identical comments appear once.
Attributes:
| Name | Type | Description |
|---|---|---|
comments |
frozenset[Comment]
|
Attached comments. Defaults to an empty frozenset. |