Reconstrói o grafo no boot (e, no modo :horde, em cada realocação) via a MFA
on_ready do Config, e expõe o estado de prontidão (ready?/1).
Por que existe: a lib não conhece a fonte da verdade (Postgres, etc.). O
on_ready: {mod, fun, args} é o gancho que o app fornece para repovoar a ETS.
Como em :horde a árvore da instância só existe no nó dono e é recriada no
failover, o Bootstrapper roda só no dono, no boot e a cada realocação — a
ETS está sempre fresca (vazia) nesse momento, então o replay é correto. Em
:local roda 1× no boot, dando paridade dev/single-node.
Não-bloqueante: init/1 apenas agenda :run e retorna na hora. Um load
lento de Postgres não pode segurar o init — em :horde isso estouraria o
timeout do start_child do Horde.DynamicSupervisor e o Horde acharia que a
árvore não subiu.
Falha de rebuild: a MFA roda numa Task linkada. Se ela levanta, o
Bootstrapper cai junto (não fazemos trap_exit); como é o último filho de
um supervisor :rest_for_one, restarts repetidos escalam para o restart da
árvore inteira (ETS volta vazia) → retry limpo. Contrato do loader: assuma
grafo vazio (o insert_edge da v0.2.x soma pesos no re-insert, então não é
idempotente sobre ETS já populada).
Summary
Functions
true quando a MFA on_ready terminou (ou quando on_ready é nil).
Functions
@spec ready?(MeliGraph.Config.t()) :: boolean()
true quando a MFA on_ready terminou (ou quando on_ready é nil).