Changelog - Generated From Conventional Commits
The machine-generated twin of the hand-written changelog: version headings that are themselves compare links, a leading warning glyph on the breaking-changes section, and every entry ending in a short-hash link back to the commit. The hashes are the same fictional ids used by the log fixtures in this category.
# Changelog
All notable changes to this project will be documented in this file.
See [conventional commits](https://www.conventionalcommits.org) for commit guidelines.
## [5.0.0](https://git.example.invalid/sample-org/ledger-service/compare/v4.3.0...v5.0.0) (2026-03-13)
### ⚠ BREAKING CHANGES
* **rounding:** Round() now returns the nearest even multiple on a tie.
Callers that depended on half-up must pass RoundHalfUp explicitly.
### Features
* **rounding:** round half to even instead of half up ([b06c629](https://git.example.invalid/sample-org/ledger-service/commit/b06c6299e8931725dd967c0724b45431be10adeb))
### Bug Fixes
* **format:** reject amounts with no digits ([232f149](https://git.example.invalid/sample-org/ledger-service/commit/232f14933b1be0ac53767164dba860ff46b3b342)), closes [#418](https://git.example.invalid/sample-org/ledger-service/issues/418)
## [4.3.0](https://git.example.invalid/sample-org/ledger-service/compare/v4.2.0...v4.3.0) (2026-03-04)
### Features
* **ledger:** add banker's rounding helper ([4cea2b8](https://git.example.invalid/sample-org/ledger-service/commit/4cea2b8114b64f5076e1e6b067586c6067c48017))
* **ledger:** treat a zero delta as a no-op ([437e21e](https://git.example.invalid/sample-org/ledger-service/commit/437e21e3ec5b252950b50e724b9522198aa02751))
Specifications
- Seed
- 20260807
- Repository Name
- CHANGELOG.md
- Style
- conventional-changelog
- Releases
- 2
- Commit Links
- 4
- Has Breaking Section
- true
- Generated
- true
- Line Endings
- LF
- Encoding
- UTF-8
Testing contract
Expected to pass- Scenario
- Diff a generated changelog against the hand-maintained twin covering the same releases.
- Expected result
- Both describe releases 5.0.0 and 4.3.0 with the same breaking change and the same feature list; only the presentation and the commit links differ.
What is a .md file?
Markdown (MD) is a lightweight plain-text markup language that uses simple punctuation conventions to denote headings, lists, links, emphasis, and code. It is designed to be readable as-is and to convert cleanly to HTML. It is widely used for documentation, READMEs, and content authoring.
How to use this file
Use an example Markdown file to test parsers and renderers, verify GitHub-Flavored Markdown extensions like tables and fenced code, and exercise HTML-conversion pipelines.
How to use this file for testing
“Changelog - Generated From Conventional Commits” is a deterministic Novus Examples fixture for Config parsing, Visual diff / regression, Data engineering. TOML and INI configuration files with nested sections and typed values — for testing config parsers and loaders.
Documented properties for this file: seed 20260807 · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Diff and patch fixtures name their target paths and the exact edge case they exercise — rename, mode change, binary hunk, CRLF↔LF, or missing trailing newline. Apply or render them against the documented before-state; every author, path, and hash is fictional.
Point your config loader at the file and assert it reads the documented sections and typed values, including any deliberately-tricky nesting or comments.
Code examples
import markdown # pip install markdown
html = markdown.markdown(open("CHANGELOG-conventional.md").read())
print(html[:200])Related files
- txtCommit Message - Breaking Change With ! and a FooterA breaking change announced twice, which the specification allows: a `!` after the scope and a `BREAKING CHANGE:` footer whose value continues onto a second line. Generators that stop a footer at the first newline lose half the sentence, and version bumpers that only look for one of the two markers under-bump the release.

- txtCommit Message - Valid Conventional Commit With TrailersA commit message file exactly as `git commit` hands it to a commit-msg hook: a conventional subject, a wrapped body, two trailers, and git's own comment block that the hook must ignore. The subject is 43 characters, comfortably inside commitlint's default 72-character header limit.

- logGit Log - --numstat With a Binary RowMachine-readable insertion and deletion counts per file. Two rows break naive arithmetic: the binary file reports `-` in both numeric columns rather than 0, and the rename path is brace-compressed into `docs/{README.md => guide.md}` rather than written out twice.

- logGit Shortlog - Commits Grouped by AuthorThe author-grouped summary git generates for release notes: a name, a commit count in parentheses, and the subjects indented by six spaces. The counts here are what the .mailmap fixture in this category produces after coalescing aliases, so the two files can be used together.

- txtCODEOWNERS - Overlapping Globs With Documented WinnersDeliberately overlapping rules so every interesting path matches two or three of them, which is the only way to test that a resolver applies last-match-wins rather than most-specific-wins. One rule has no owners at all, which clears inherited ownership instead of adding any.

- gitattributesGitattributes - LFS Filters, Linguist Hints and export-ignoreThe non-EOL half of the format: LFS filter/diff/merge triples, `linguist-generated` and `linguist-vendored` hints that hide files from language statistics and review, `export-ignore` entries that drop paths from `git archive`, and a `merge=union` driver for an append-only changelog. Attribute values are unquoted and space-separated, so column alignment is whitespace a parser must collapse.

Generated by generation/version_control.py. Free for any use, no attribution required — license.