docs(ledger,research): note the metric-vocabulary drift guard (#190 close)

The #190 cycle-close audit found two now-stale claims that predate this
cycle's guard test: the ledger's known-debt note listed the metric-roster
triplication as tracked by #190 (the issue that just added the guard, closing
on push), and metric_vocabulary()'s doc comment told a hand-editor to keep the
list in sync by hand without mentioning that a red test now catches a desync.

Reconcile both to the honest state: the triplication remains (still a
hand-list) but drift from the shipped aura-analysis types is now caught by the
cross-crate guard `aura-campaign/tests/metric_vocabulary_e2e.rs`; the
single-source removal that would delete the hand-list is tracked under #147
(where the metric vocabulary's home is decided).

refs #190, #147
This commit is contained in:
2026-07-10 01:10:32 +02:00
parent 682f0abfec
commit 35b996e3bf
2 changed files with 9 additions and 3 deletions
+6 -2
View File
@@ -624,8 +624,12 @@ pub fn content_id_of(canonical: &str) -> String {
/// reference here, unlike the block-schema tables above (:105). Same #160/0105
/// drift class; fails safe in the direction that matters: a metric renamed or
/// removed upstream surfaces as `DocFault::UnknownMetric` at parse/validation
/// time, never a silent accept. Keep this list in sync by hand when the
/// upstream field sets change.
/// time, never a silent accept. A cross-crate guard test
/// (`aura-campaign/tests/metric_vocabulary_e2e.rs`, #190) also enumerates the
/// shipped scalar fields via serde and goes red on any desync, so a stale
/// hand-edit here is test-caught rather than silent. Keep this list in sync by
/// hand when the upstream field sets change (single-sourcing it away waits on
/// #147).
pub fn metric_vocabulary() -> &'static [&'static str] {
&[
"expectancy_r",