You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fm: extract shared keyed-case adoption scaffolding from the saga and certificate engines #11246
The saga and certificate diagnosis engines (nexus/fm/src/diagnosis/saga.rs
and arriving in #11238, certificate.rs) each carry a near line-for-line copy of the same bookkeeping around parent-forwarded cases:
an UninterpretableCase enum (ForeignFact, Disagreeings, NoFacts)
the loop that closes uninterpretable cases with a "cannot interpret case" comment and a "closing uninterpretable case" warning
the BTreeMap Entry::Vacant/Occupied loop that dedups cases by key, keeping the lowest CaseUuid and closing the rest as duplicates
The uninterpretable half also appears a third time in physical_disk.rs.
Per-engine fact modeling (what a parsed case's payload looks like) is, and SHOULD be,
engine-specific as described in RFD 603, but this adoption scaffolding is
engine-agnostic, and a fix to the tiebreak or the close messages today has
to be made in three places.
Proposal: a helper in diagnosis/mod.rs along the lines of
that saga.rs and certificate.rs call, keeping only their own parse_case
bodies. physical_disk.rs could adopt the uninterpretable half in the same
change or a follow-up. Existing tests in all three engines already cover
uninterpretable and duplicate cases.
Activity