Skip to content

Collection styles are configuration; the changelog shape is one of them - #17

Merged
dmarx merged 1 commit into
mainfrom
feat/changelog-collection-style
Aug 4, 2026
Merged

Collection styles are configuration; the changelog shape is one of them#17
dmarx merged 1 commit into
mainfrom
feat/changelog-collection-style

Conversation

@dmarx

@dmarx dmarx commented Aug 4, 2026

Copy link
Copy Markdown
Owner

strata-g's phase-two port retires scriv, and what scriv was actually providing there turned out to be one property: a changelog reads newest-first, and the collector only had the narrative shape (bodies oldest-first, inserted before a marker that stays at the end). ADR-028 makes the shape configuration:

[luria.fragments."record/changelog.d"]
file  = "CHANGELOG.md"
style = "changelog"
  • append — unchanged default; a plain string value still means this, so no existing config changes meaning.
  • changelog — one ## <date> batch per collection, inserted right after the marker so batches stack newest-first; fragments newest-first within the batch; a stub-only batch emits nothing — which retires the empty-date-heading caveat strata-g's CLAUDE.md documented under scriv (bare ## <date> someone had to revert by hand).

Deliberately not built: scriv's category merging. A fragment's ### Added/### Fixed sections stay in its body, per-contribution within the batch — merging earns its complexity in versioned-release changelogs, and the un-merged form preserves which contribution claimed what.

collect() stays pure (text + bodies + style + date in, text out). Luria's own changelog switches to the new style as dogfood — its marker was already positioned after the header, where a changelog-style marker belongs.

Version → 0.1.2; strata-g's phase-two PR pins it for luria collect to own its changelog.

242 tests pass (6 new in tests/test_collect.py), luria lint clean.


Generated by Claude Code

…em (ADR-028)

strata-g is retiring scriv, and what scriv was actually providing there
was one property: a changelog reads newest-first, and the collector only
had the narrative shape (bodies oldest-first, marker at the end).

A fragment mapping now declares its style. append is the unchanged
default; changelog inserts one '## <date>' batch right after the marker,
newest batch first, fragments newest-first within it — and a stub-only
batch emits nothing, which retires the empty-date-heading caveat
strata-g's CLAUDE.md documented under scriv. Deliberately not built:
scriv's category merging — a fragment's sections stay per-contribution
within the batch.

String config values still mean append, so nothing existing changes
meaning. Luria's own changelog switches to the new style as dogfood.

Version to 0.1.2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014H7APrKgWA23SVZMNF8H86
@dmarx
dmarx merged commit 16d0de8 into main Aug 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants