Skip to content
CAI
Software that uses CAICheck a score

sasa1977/con_cache

63.7

Adequate · 23 September 2026

1.2k

lines of production code

Elixir

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

ConCache is an in-memory caching library for Elixir that provides concurrent access to ETS-based data stores. It manages cache instances and their associated lock processes to ensure reliable, non-blocking operations. The system focuses on modernizing the internal architecture by replacing legacy lock modules with dedicated GenServers and supervisors, while maintaining comprehensive test coverage for all cache operations.

Behavioural changes

Introduce Elixir 1.16 and OTP 26 tooling and formatter configuration

The project now specifies Erlang/OTP 26.2 and Elixir 1.16 in .tool-versions, updating the development environment to the latest supported versions. Additionally, a .formatter.exs file has been added to configure the Mix formatter, standardizing code formatting for the project.

(repo-wide) · high confidence

Introduce new lock resource and monitor structures

The lock subsystem now uses new internal data structures: ConCache.Lock.Monitors tracks process references and lock instances using Maps and MapSets, while ConCache.Lock.Resource manages lock state, ownership, and pending queues. This refactors the underlying implementation to use modern Elixir collections (Map/MapSet) instead of older HashDict/HashSet, improving consistency and performance.

_lib/con\cache/lock · high confidence

Refactor cache internals to use structs and remove legacy lock modules

The cache implementation has been refactored to use Elixir structs instead of records, including a new \ConCache.Item\ struct for storing values and TTLs. The legacy \BalancedLock\, \KeyBalancer\, \Lock\, and \TtlManager\ modules have been removed, simplifying the internal architecture and aligning with modern Elixir conventions.

lib · high confidence

Refactored ConCache architecture with dedicated lock and owner processes

The internal architecture of ConCache has been restructured to improve concurrency and reliability. The library now uses a dedicated GenServer for lock management (lib/con\_cache/lock.ex) and a separate supervisor for lock processes (lib/con\_cache/lock\_supervisor.ex), which helps avoid mutual blocking of caches. The owner process (lib/con\_cache/owner.ex) has been converted to a plain GenServer and is now started under a separate supervisor, ensuring that all cache processes terminate correctly upon registry termination. Additionally, the application entry point (lib/con\_cache/application.ex) now starts a Registry to manage cache instances, replacing the previous custom registry implementation.

_lib/con\cache · high confidence

Test coverage

Expanded test coverage for ConCache and Lock modules

Added comprehensive tests for ConCache operations including put, insert\_new, delete, update, update\_existing, and get\_or\_store, with specific coverage for bag and duplicate\_bag ETS options. Added tests for TTL validation errors and child\_spec generation. Updated lock tests to use ConCache.Lock namespace and added monitoring/timeout tests for the lock mechanism. Refactored test helper to use ExUnit.start() with parentheses.

test · high confidence

Dependencies

Upgrade to Elixir 1.7+ and modernize project configuration

The project now requires Elixir 1.7 or higher, reflecting a significant jump from earlier versions (previously 1.4/1.5/1.6). The \mix.exs\ file has been updated to include a \package\ section with metadata (description, maintainers, licenses, links) and a \docs\ configuration for \ex\_doc\. Dependencies have been modernized: \exactor\ has been removed entirely, while \dialyxir\ and \ex\_doc\ are now specified with version constraints for development. A new runtime dependency on \:telemetry\ has been added, and the application configuration now explicitly lists \:logger\ and \:telemetry\ as extra applications, with a dedicated application module \ConCache.Application\ defined.

(dependencies) · 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 62 → 64 (+1.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 96 → 98 (+1.7)
  • Architecture 69 → 69 (+0.0)
  • Maturity 53 → 47 (-5.3)
  • Readiness 64 → 80 (+15.6)
  • Security 78 → 98 (+19.1)

Resolved (11)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included

New (13)

  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No dependency advisory monitoring
  • Outdated: dialyxir
  • Outdated: ex_doc
  • Outdated: telemetry
  • Workflow token permissions not restricted

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

sasa1977/con_cache 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 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 6cb17c945d0c12964df85531e9f30a5964c7c01f — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.