audit: cycle metric-vocabulary tidy — ledger records the retired #147 deferral
Cycle-close audit (architect: drift_found, design core clean). What holds, architect-confirmed: C18 bit-identity for RunMetrics (prose derived byte-identically, rng order preserved, registry suite unchanged); the C10 wall (monomorphic R-gates, r_based in the R vocabulary, cross-vocabulary refusal tested both ways — no leak); C28 direction (trait in aura-analysis, vocabulary supplied from the outer rungs, zero Cargo edge changes); C1 determinism pinned through the generic path. Drift items, all resolved as fixes in this commit: - design ledger: the C28 #147 disposition now records item 2 SHIPPED (the A1 cut) with A2 still deliberately deferred; the #136 one-implementor clause carries a supersession note (the IC is the second implementor). - seven stale doc comments describing the pre-#147 or mid-cycle state (analysis trait + estimator docs, registry check_r_metric C9 claim, engine re-export note, campaign PER_MEMBER_METRICS roster note, member-seam guard comment, research vocabulary note) updated to the shipped state. - R_BASED_METRICS is now oracle-pinned against RunMetricKey::r_based() in the vocabulary test (it feeds the NonRMetric refusal prose; a divergence would have misreported the R-gate silently). Noted, not amended (history stays): commit 6744f67's body says 'three syntax-only edits' where the test module actually took five. No regression scripts are configured (the bench is report-only); the architect review is the gate. Verification: extended vocabulary test, campaign suites, analysis/research suites green; clippy --workspace -D warnings clean. refs #147
This commit is contained in:
@@ -1389,6 +1389,22 @@ mod tests {
|
||||
assert_eq!(<RunMetrics as MetricVocabulary>::known(), RANKABLE_METRICS);
|
||||
assert!(RunMetricKey::Sqn.r_based());
|
||||
assert!(!RunMetricKey::TotalPips.r_based());
|
||||
// Oracle-pin R_BASED_METRICS against the classification itself: the
|
||||
// const feeds the NonRMetric refusal prose, so a divergence would
|
||||
// misreport the R-gate silently rather than fail a lookup.
|
||||
let derived: Vec<&str> = RANKABLE_METRICS
|
||||
.iter()
|
||||
.copied()
|
||||
.filter(|n| {
|
||||
<RunMetrics as MetricVocabulary>::resolve(n)
|
||||
.expect("roster names resolve")
|
||||
.r_based()
|
||||
})
|
||||
.collect();
|
||||
assert_eq!(
|
||||
derived, R_BASED_METRICS,
|
||||
"R_BASED_METRICS must be exactly the r_based slice of the roster"
|
||||
);
|
||||
}
|
||||
|
||||
/// Property: an R-based key on a member with no `r` block ranks worst for
|
||||
|
||||
Reference in New Issue
Block a user