g-andrade/locus
69.6
Weak · 2 October 2026
8.3k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
This system is a database lookup service, likely for geolocation data, that supports loading from local files and HTTP sources. It provides extensibility through custom fetcher implementations and event subscribers, allowing consumers to integrate their own logic and monitor loader activities. The system includes robust error handling for invalid or corrupt data and is designed for use within Erlang/Elixir applications.
Features
Introduce custom fetcher and event subscriber APIs
Added \locus\_custom\_fetcher\ to allow consumers to provide their own database fetcher implementation via callbacks, and \locus\_event\_subscriber\ to enable subscribing to database loader events using either module-based or process-based subscribers.
src · high confidence
Removals
Removed legacy documentation and versioning scripts
The repository has removed the \hackish\_make\_docs.sh\, \version\_from\_git.py\, and \version\_from\_git.sh\ scripts. These files previously handled the generation of documentation via rebar3/edoc and the extraction of version numbers from Git tags. Their removal aligns with the project's preparation to migrate documentation hosting from GitHub to Hexdocs, indicating that the previous local build and versioning workflows are no longer used.
scripts · high confidence
Behavioural changes
Major API overhaul and documentation modernization for version 2.x
This release introduces breaking changes to the public API, requiring users to update their code: \wait\_for\_loader\ functions are replaced by \await\_loader\ (which now returns a list of failures instead of a single error), \get\_version/1\ is replaced by \get\_info/1-2\, and \analyze/1\ is replaced by \check/1\. Additionally, successful lookups in IPv4-less databases now return \not\_found\ directly instead of \{error, not\_found}\, and metadata keys in \get\_info\ results are now atoms instead of binaries. The project has also migrated its documentation from EDoc to ExDoc (using EEP-48 attributes), adopted the \erlfmt\ code formatter, and updated its build tooling to use \rebar3\ plugins like \rebar3\_hank\ and \rebar3\_lint\ with conditional support for older OTP versions.
(repo-wide) · high confidence
Test coverage
Added test fixtures for GeoLite2 database formats; Expanded test coverage for database loading, custom fetchers, and error handling.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 73 → 70 (-3.7)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 97 → 97 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 63 → 63 (+0.0)
- Readiness 76 → 59 (-17.2)
- Security 80 → 92 (+12.2)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (2)
- No ADRs found
- Outdated: tls_certificate_check
Changes since last survey
- 2 commits — 1 feature/other, 1 fixes
By area
- (root) — 2 commits
Notable commits
- fix: Fix return value of IPv4 lookup in an IPv4-less database
- change: Bump ExDoc to be compatible with OTP 29
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
g-andrade/locus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4cbbf8678f235a1be9847b3cb7dd572cc322d6b8 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.