Erlang/OTP 28
Last reviewed Sep 5, 2026
Prompt Details
Prompt Composition
1prompt
- Erlang/OTP 28124 lines · 4.9K tokens
CWE Coverage
- 20
- 22
- 59
- 78
- 95
- 208
- 209
- 214
- 250
- 287
- 295
- 297
- 306
- 307
- 312
- 319
- 338
- 362
- 367
- 379
- 407
- 444
- 494
- 502
- 522
- 532
- 611
- 639
- 674
- 732
- 770
- 789
- 799
- 862
- 863
- 918
- 1395
Prompt Preview
Apply these rules to Erlang/OTP 28 applications, releases, distributed nodes, network services, ports, and native extensions.
Version and artifact integrity
- Build release images from the newest OTP 28 release, and rebuild and redeploy when a later one ships. OTP patches only the latest minor of each supported release, which for OTP 28 is 28.5, and supports only its three newest major releases, so OTP 28 leaves that window when OTP 31 ships. The 28 in this prompt's title names the release line these rules cover, and 28.5.0.6 is the release they were checked against, not a build to install. The same goes for the version in the title of every BEAM prompt built on this one.
- Prefer a base image tag that follows the OTP 28 line, such as
erlang:28rebuilt withdocker build --pull, or a digest an update bot keeps current. When a Dockerfile,.tool-versions,mise.toml, or CI matrix needs an exact OTP version, take it from the erlang/otp releases page; if you can't reach it, leave a placeholder that fails the build, such as anARG OTP_VERSIONwith no default, rather than a version you remember, which is likely older than the releases these rules name as carrying fixes. - In CI, read the full OTP version the build uses from
filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"]), sinceerlang:system_info(otp_release)returns only the major release, and fail the build when the erlang/otp releases page lists a newer OTP 28 release, because audits ofrebar.lockormix.locknever see the runtime. - Add a Hex dependency with a