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
//! Module: traits::atomic
//! Responsibility: semantic indivisibility markers for value types.
//! Does not own: structural merge behavior or schema kind lowering.
//! Boundary: marks values that update as whole replacements at runtime.
///
/// Atomic
///
/// Marker trait for values that are **indivisible** at the semantic layer.
///
/// Types implementing `Atomic` are treated as *full-replacement values* during
/// patch application: any update replaces the entire value rather than
/// performing a structural or field-wise merge.
///
/// This is appropriate for:
/// - primitive scalars
/// - numeric and fixed-point wrappers
/// - timestamps and durations
/// - domain types with no meaningful partial update semantics
///
/// Invariant:
/// Types implementing `Atomic` must correspond to `FieldValueKind::Atomic`.
///
/// This trait has no methods. It exists solely to declare value-level
/// indivisibility for schema/runtime semantics.
///
impl_atomic!;