IFClite TypeScript API
    Preparing search index...

    Interface ClashRevisionSide

    One side of a revision comparison: a completed run plus the durable identity of every model it drew elements from.

    ClashElementRef.model (carried on Clash.a/Clash.b) is the federation's per-LOAD id — crypto.randomUUID() in the viewer — so it is deliberately useless for asking "is this model still part of the comparison". modelNames is the caller-supplied bridge: a map from that ephemeral id, AS IT APPEARS ON THIS RESULT'S OWN CLASHES, to a durable identity (the model's display name / filename in the viewer). Two different model ids that map to the same name are treated as the same model reloaded; a name present in previous but absent from next is treated as a model the comparison lost entirely.

    This is a heuristic, not a proof: renaming a model between runs makes it look "missing" (its old name has no counterpart), and two distinctly loaded files that happen to share a display name look like one. Both failure modes point the same way — toward unretested rather than a wrongly-confident resolved — which is the direction this module exists to be safe in.

    interface ClashRevisionSide {
        modelNames: Readonly<Record<string, string>>;
        result: ClashResult;
    }
    Index
    modelNames: Readonly<Record<string, string>>

    Ephemeral ClashElementRef.model id → durable display identity.

    result: ClashResult