|
12 | 12 | * system-tests assert exact parity, so any divergence (signed varint, wrong |
13 | 13 | * sort, `[object Object]` defaults, bare-vs-JSON tag shape) breaks the chain. |
14 | 14 | * |
15 | | - * Lifecycle: one instance per root span, request-scoped. The DataDogProvider |
16 | | - * constructs it lazily only when the span-enrichment gate is on (DG-005), and |
17 | | - * the native close-span path flushes + clears it on root-span finish. |
| 15 | + * Lifecycle: one instance per root span. SpanEnrichmentRegistry::record() |
| 16 | + * lazily attaches it to the root span (via ObjectKVStore) on first evaluation |
| 17 | + * and encodes its state onto the root span's meta; it is released with the span. |
18 | 18 | */ |
19 | 19 | final class SpanEnrichmentAccumulator |
20 | 20 | { |
@@ -55,8 +55,8 @@ public function addSerialId($id) |
55 | 55 |
|
56 | 56 | /** |
57 | 57 | * Associate a serial id with a (hashed) subject. The targeting key is |
58 | | - * SHA256-hashed before storage (privacy contract DG-003) and is only ever |
59 | | - * called by the provider when `do_log` authorizes it. |
| 58 | + * SHA256-hashed before storage (privacy: raw targeting keys are never |
| 59 | + * emitted) and is only recorded when `do_log` authorizes it. |
60 | 60 | */ |
61 | 61 | public function addSubject($targetingKey, $id) |
62 | 62 | { |
@@ -114,7 +114,7 @@ public function hasData() |
114 | 114 | /** |
115 | 115 | * Encode the accumulated state into the frozen `ffe_*` span tag set. |
116 | 116 | * |
117 | | - * Output-shape contract (Pattern F): |
| 117 | + * Output-shape contract (frozen): |
118 | 118 | * - ffe_flags_enc => BARE base64 string |
119 | 119 | * - ffe_subjects_enc => JSON-stringified object {sha256hex: base64} |
120 | 120 | * - ffe_runtime_defaults => JSON-stringified object {flagKey: valueStr} |
|
0 commit comments