Skip to content
CAI
Software that uses CAICheck a score

lrascao/rebar3_appup_plugin

65.6

Adequate · 2 October 2026

1.9k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Rebar3 plugin designed to automate the generation of application upgrade and downgrade scripts (.appup files) for Erlang releases. It specifically handles the automatic migration of gen\_server state records between versions, eliminating the need for manual intervention during release updates. The tool also provides infrastructure for managing release notes and includes a comprehensive test suite to verify version matching and instruction merging logic.

Features

Automatic gen\_server state record migration during release upgrades

The plugin now automatically detects changes in gen\_server state records between release versions and injects the necessary migration code into the generated .appup files. This allows applications to upgrade and downgrade without manual intervention when the internal state structure of a gen\_server changes. The feature is implemented via the new \rebar3\_appup\_tar\ provider, which instruments the release to handle these migrations, and updates the \rebar3\_appup\_compile\ and \rebar3\_appup\_generate\ providers to identify and process state record differences.

src · high confidence

Behavioural changes

License changed from MIT to Apache 2.0 and CI migrated to GitHub Actions

The project license has been updated from MIT to Apache 2.0, and the continuous integration system has switched from Travis CI to GitHub Actions. The build configuration now enforces warnings as errors, includes the \string\_compat\ dependency alongside \bbmustache\, and adds a \pr2relnotes.sh\ script to generate release notes from pull requests.

(repo-wide) · high confidence

Refactored state record conversion and appup template generation

The internal template system for generating application upgrade/downgrade scripts has been restructured. New templates in the priv/templates directory now handle state record conversion logic, specifically supporting the migration of state records between versions by mapping old and new field definitions and handling default values for new fields. Additionally, the appup template has been updated to use Mustache-style variable syntax (e.g., {{{new\_vsn}}}) for better escaping and clarity, and the generation process now merges pre- and post-source files into the final generated appup.

priv · medium confidence

Updated remark.js to latest version for EUC 2016 presentation

The \doc/euc-2016/js/remark-latest.min.js\ file has been added, providing the latest version of the remark.js library. This update ensures that the slide deck rendered in the browser uses the most current parsing and rendering capabilities for the EUC 2016 lightning talk materials.

doc/euc-2016 · high confidence

Test coverage

Add comprehensive test suite for appup generation and version matching

Added Common Test (CT) and EUnit test suites to verify the rebar3 appup plugin's behavior. The CT suite (\rebar3\_appup\_plugin\_SUITE\) covers end-to-end release upgrade scenarios, including empty appups, supervisor and gen\_server state changes, dependency management, and \.appup.src\ scripting support. The EUnit tests (\rebar3\_appup\_plugin\_eunit\_tests\) validate the core version matching logic and instruction merging for upgrade/downgrade paths, ensuring correct handling of version patterns and post-condition filtering.

test · high confidence

Housekeeping

Added empty 'include/keepme' file

An empty file named 'include/keepme' was added to the repository. This change appears to be a placeholder or a mechanism to ensure the 'include' directory is tracked by version control, rather than a functional code change.

include · 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 63 → 66 (+2.6)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 96 → 96 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 48 → 45 (-2.3)
  • Readiness 78 → 80 (+1.7)
  • Security 67 → 80 (+13.3)

Resolved (1)

  • Coverage not measured — no coverage collector is wired up

New (4)

  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Orphaned files with no living knowledge
  • Unbounded dependency requirement: string_compat

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

Survey your own repository

lrascao/rebar3_appup_plugin 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 8a75277297ec0a3b80315467e6097899b14de094 — 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.