Public changelog exists
Why it matters
No changelog means users have no reliable way to know what changed between versions, whether a bug they hit is fixed, or whether upgrading is safe. A changelog that stops at v1.2.0 when the project is now on v2.1.0 is a signal that the project is poorly maintained — the same signal that drives dependency abandonment decisions. iso-25010:2011 analysability covers this: a project where change history is opaque requires source-level investigation to understand its evolution. Following Keep a Changelog format provides a predictable structure that users can parse quickly for the entries that matter to them.
Severity rationale
Medium because the absence of a changelog doesn't block initial use but degrades confidence in the project's maintenance posture and makes upgrade decisions opaque, compounding over time.
Remediation
Create CHANGELOG.md at the project root following Keep a Changelog format. The latest entry must match the version in package.json:
# Changelog
## [2.1.0] - 2026-03-15
### Added
- New `query()` method replacing `fetchData()`
- TypeScript type exports for all public types
### Fixed
- Connection timeout now throws instead of hanging indefinitely
## [2.0.0] - 2026-02-01
### Changed
- BREAKING: Renamed `fetchData()` to `query()`
- Minimum Node.js version bumped to 18
### Removed
- CommonJS import support dropped
A changelog without dates, version numbers, or change categorization fails this check. An outdated changelog (not updated for the current version) also fails.
Detection
-
ID:
changelog -
Severity:
medium -
What to look for: Check for CHANGELOG.md at the project root, a "Releases" page on GitHub/GitLab, or a changelog section in the documentation. Verify it lists changes per version with dates, categorized by type (added, changed, fixed, removed). Check that it is current -- the latest version in the changelog should match the current project version. Count all instances found and enumerate each.
-
Pass criteria: A changelog exists, is current (includes the latest version), and categorizes changes by type. Each entry has a version number and date. The format follows Keep a Changelog or similar convention. At least 1 implementation must be confirmed.
-
Fail criteria: No changelog exists, or it exists but is outdated (missing recent versions), or changes are listed without version numbers or dates.
-
Skip (N/A) when: The project is pre-release (0.x) with fewer than 3 published versions.
-
Detail on fail: Example:
"No CHANGELOG.md exists and no GitHub Releases page is configured"or"CHANGELOG.md last entry is v1.2.0 from 2024-06-01 but current version is v2.1.0" -
Remediation: Create a changelog following Keep a Changelog format:
# Changelog ## [2.1.0] - 2026-03-15 ### Added - New `query()` method for flexible data fetching - TypeScript type exports for all public types ### Fixed - Connection timeout now properly throws instead of hanging ## [2.0.0] - 2026-02-01 ### Changed - BREAKING: Renamed `fetchData()` to `query()` - Minimum Node.js version bumped to 18 ### Removed - Dropped support for CommonJS imports
External references
- iso-25010:2011 · maintainability.analysability
Taxons
History
- 2026-04-18·v1.0.0·Initial import from developer-documentation·automated