1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! Longitudinal finding and trend-tag types.
//!
//! Why: the profile narrative needs to surface which findings are new vs.
//! recurring vs. improving across periods; separating these types keeps each
//! file focused and under the 500-line cap.
//! What: defines `TrendTag` and `LongitudinalFinding`.
//! Test: `trend_tag_serde_roundtrip` and `longitudinal_finding_serde_roundtrip`
//! in the parent `tests` module.
use ;
use crateFinding;
// ─── TrendTag ────────────────────────────────────────────────────────────────
/// Longitudinal trend classification for a finding across periods.
///
/// Why: the profile pass must distinguish findings that appear persistently
/// (recurring), newly, or are improving / worsening so the narrative can
/// offer targeted feedback.
/// What: four-variant enum serialised as `snake_case` strings.
/// Test: see `trend_tag_serde_roundtrip`.
// ─── LongitudinalFinding ─────────────────────────────────────────────────────
/// A code-review finding annotated with its longitudinal trend.
///
/// Why: the profile narrative needs to surface which findings are new vs.
/// recurring vs. improving so the reviewer can give targeted feedback.
/// What: pairs a `Finding` (reused from the MVP review loop) with the period
/// label in which it was observed and an optional trend classification.
/// Test: see `longitudinal_finding_serde_roundtrip`.