Member Junction
    Preparing search index...

    Type Alias ResolvablePrincipal

    ResolvablePrincipal: Pick<
        UserInfo,
        "ID"
        | "Name"
        | "Email"
        | "Type"
        | "IsActive",
    >

    The subset of a user this resolver reads. UserInfo satisfies it structurally, so callers pass UserCache.Users directly while tests pass plain objects — no cast, no singleton, no database.