Applications explicitly supervise each Tursox.Procedures service and choose
its Tursox pool, source, policy, limits, cache capacity, duplicate-column policy,
and transaction mode. There is no global default service and no dynamic atom is
created from procedure or tenant names.
metadata/1 returns only active call count, finite limits, transaction mode,
and cache counters. refresh/1 drops compiled chunks without changing source
versions. Normal calls fetch the active immutable identity, so database/memory
source updates become visible without unsafe in-place cache replacement.
Telemetry events use the [:tursox_procedures, ...] prefix:
[:call, :start | :stop][:procedure, :stop][:database, :stop][:cache, :stop]
Metadata includes names, versions/hashes where applicable, depth, operation, and outcome classes. It excludes source, SQL parameters, rows, results, and caller data.
A graceful supervisor shutdown stops the service and its cache. Active worker processes are terminated; DBConnection owns checkout cleanup and rollback.