ENGLISH·COURSE API
    Preparing search index...
    LearnerAvatar: ZodDiscriminatedUnion<
        [
            ZodObject<{ kind: ZodLiteral<"initials"> }, $strip>,
            ZodObject<
                {
                    kind: ZodLiteral<"illustration">;
                    id: ZodEnum<
                        {
                            sun: "sun";
                            wave: "wave";
                            leaf: "leaf";
                            plum: "plum";
                            ember: "ember";
                            echo: "echo";
                            night: "night";
                            schwa: "schwa";
                        },
                    >;
                },
                $strip,
            >,
        ],
        "kind",
    > = ...

    What the learner's avatar shows: the initials derived from their name, or one of the shipped illustrations.

    An illustration is stored by id, never by asset path, so moving an asset cannot invalidate a stored profile.