inaka/zipper
64.8
Adequate · 2 October 2026
357
lines of production code
Erlang
primary language
2
measurements over time
What this system is
This system is a generic zipper library for Erlang designed to facilitate efficient traversal and modification of immutable data structures. It provides a composable API for navigating tree-like structures and includes pre-built support for common data types such as lists, binary trees, and maps. The project has been modernized with a rebar3 build system, comprehensive documentation, and rigorous testing via Common Test suites.
Features
Introduce generic zipper implementation with default data structure support
Adds a new generic zipper library for Erlang that enables efficient traversal and modification of immutable data structures. The core \zipper\ module provides a composable API for navigating tree-like structures (including \up\, \down\, \left\, \right\, \insert\, \replace\, and \remove\ operations) using user-defined functions to identify branches, extract children, and reconstruct nodes. Additionally, the \zipper\_default\ module provides ready-to-use zipper constructors for common Erlang data structures, including lists, binary trees, and maps.
src · high confidence
Behavioural changes
Project modernization and documentation overhaul
The project has migrated its build system from erlang.mk to rebar3, introducing a comprehensive configuration in rebar.config that enforces stricter compiler warnings, sets a minimum OTP version of 24, and integrates modern tooling including Hank for linting, Dialyzer for static analysis, and ExDoc for documentation generation. Alongside this build infrastructure update, the repository received a significant documentation refresh: the README was expanded with detailed usage examples for the generic zipper implementation, a CHANGELOG was added to track version history, and various configuration files (.markdownlint, .yamllint, elvis.config) were introduced to standardize code quality and formatting across the project.
(repo-wide) · high confidence
Test coverage
Added Common Test suites and coverage configuration for the zipper module
Added Common Test suites (\zipper\_SUITE.erl\ and \zipper\_default\_SUITE.erl\) covering the core zipper traversal and editing functions (such as \next\, \up\, \down\, \left\, \right\, \replace\, and \edit\) as well as the default zipper creation functions for lists, binary trees, and map trees. A \cover.spec\ file was also added to configure code coverage analysis for the \zipper\ and \zipper\_default\ modules.
test · high confidence
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 62 → 65 (+2.5)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 45 → 50 (+4.9)
- Readiness 78 → 78 (+0.0)
- Security 95 → 97 (+1.7)
Resolved (2)
- Coverage not measured — no coverage collector is wired up
- Documentation: no installation or build instructions (README.md)
New (2)
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- Orphaned files with no living knowledge
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
inaka/zipper 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 3bab8517b9f7a9c05d66d0d5eb8dd1f47dd26d6a — 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.