processone/p1_acme
47.1
Weak · 17 September 2026
1.4k
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is an Erlang library for ACME protocol implementation, now renamed to p1\_acme. It provides core functionality for certificate management and validation, supporting modern Erlang/OTP versions through updated dependencies and compatibility adjustments. The project includes a custom build plugin to enforce specific dependency versions during compilation.
Behavioural changes
Library renamed to p1\_acme with updated dependencies and OTP 28 compatibility
The library has been renamed from 'acme' to 'p1\_acme', affecting the module names (e.g., p1\_acme, p1\_acme\_codec) and the application resource file. The dependency list in the application source has been updated to include 'crypto', 'public\_key', 'idna', and 'jose', while removing 'fast\_yaml'. The code now supports Erlang/OTP 28 by using the 'Attribute' record instead of the removed 'AttributePKCS-10' and defining 'pkcs-9-at-extensionRequest'. Additionally, the application now starts 'inets' and configures HTTP client options for IPv6 fallback, and error formatting has been updated to use UTF-8 charlists for better string handling.
src · high confidence
Plugin now overrides dependency versions via runtime bytecode manipulation
A new plugin file, \plugins/override\_deps\_versions.erl\, has been added to the project. This module implements a mechanism to intercept and override dependency versions during the build process by dynamically modifying the \rebar\_config\ module's bytecode at runtime. It achieves this by renaming the original \rebar\_config\ module to \old\_rebar\_config\ and injecting a new module that delegates calls to the original while applying version overrides defined in the configuration. This allows the build system to enforce specific dependency versions regardless of what is specified in the local project dependencies.
plugins · high confidence
Updated dependencies and build configuration for Erlang/OTP 27 compatibility
The project updates its dependency versions, specifically upgrading yconf to 1.0.23 and idna to 7.1, while removing the jiffy dependency for Erlang/OTP 27 and later in favor of the built-in JSON module. The build system (rebar.config) is adjusted to conditionally include jiffy and specific jose versions based on the OTP release, and a workaround is added to suppress warnings\_as\_errors during jose compilation with rebar3 on OTP 27.
(repo-wide) · 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
Baseline
- First survey — no prior run to compare against. CAI 47.
Lenses
- Code Health 97
- Architecture 69
- Maturity 32
- Readiness 47
- Security 61
- Event Sourcing 100
Changes since last survey
- 133 commits — 125 feature/other, 8 fixes
By area
- (root) — 78 commits
- .github/workflows — 20 commits
- src/p1_acme.app.src — 15 commits
- src/p1_acme.erl — 9 commits
- src/acme.erl — 8 commits
- src/acme_codec.erl — 1 commit
- src/erlang_acme.app.src — 1 commit
- src/p1_acme.app.src.script — 1 commit
Notable commits
- fix: Fix IDNA support
- fix: Fix acme_error() type
- fix: Fix hex-release action
- fix: Fix support for jose 1.11.1 in: rebar2 compilation, rebar3 xref
- fix: Fix: jiffy by default decodes to list, json by default decodes to maps
- fix: Partially revert 24d23610 "Use new json module..."
- fix: Revert "Define pkcs-9-at-extensionRequest to support Erlang/OTP 28 compilation (#3)"
- fix: Revert "Move p1_acme.app.src to script so it can detect OTP version to enable jiffy"
- change: Actions: test default compilation, that is with rebar2
- change: Add .gitignore
- change: Add Github Action to release to hex.pm when tagging
- change: Add base64url to applications so dialyzer succeeds when Erlang >= 26
- change: Add doc to gitignore
- change: Add forgotten name change
- change: Add hex dependency for rebar3 to be able to publish to hex.pm
- change: Add idna jiffy jose, remove fast_yaml in app.src (processone/fast_tls#50)
- change: Add required packages to config files
- change: Add support to send C coverage. Don't cache. Move hex plugin to Action
- change: Add workaround for Jose not supporting OTP 28 ecPrivkeyVer1 (processone/ejabberd#4393)
- change: Added Travis configuration
- …and 113 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
processone/p1_acme 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 17 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 d1ac4998e60f59526602856caf86d51165483ba3 — the exact code this score is about.
- Scored under rubric-2026.09.12 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-f94092f054c1.