Summary
Bootstrap a standalone fast-forward/changelog package to own the Fast Forward changelog domain and expose reusable CLI commands for changelog automation.
Problem
Changelog parsing, mutation, rendering, and release-version inference currently live inside fast-forward/dev-tools, while fast-forward/github-actions also needs part of that behavior for workflow automation. Keeping the changelog domain inside dev-tools makes reuse awkward, increases coupling between packages, and blocks the longer-term goal of turning dev-tools into an aggregator of smaller CLI-focused packages.
Goal
Create a standalone fast-forward/changelog package that:
- owns the changelog document model, parser, renderer, and release-oriented domain services;
- provides commands that can run standalone through its own application;
- allows
fast-forward/dev-tools and fast-forward/github-actions to register or proxy those commands locally without reimplementing the domain.
Scope
- Create the new
fast-forward/changelog package repository and bootstrap it as an installable Composer package.
- Move the generic changelog domain from
fast-forward/dev-tools into this package.
- Provide dedicated services for changelog loading, release-note rendering, version inference, promotion, and entry management.
- Provide a standalone Symfony Console application for the package.
- Provide changelog commands that are reusable from other applications.
- Prepare
fast-forward/dev-tools and fast-forward/github-actions to depend on this package instead of owning changelog domain logic directly.
Proposed Commands
changelog:resolve-version
changelog:render-release-notes
changelog:entry
changelog:promote
changelog:show or an equivalent command name if we consolidate output behavior
Acceptance Criteria
- A new public Composer package named
fast-forward/changelog exists under the php-fast-forward organization.
- The package is installable standalone and exposes its own console entrypoint and application class.
- The package does not depend on
fast-forward/dev-tools.
- Generic changelog document, parser, renderer, and mutation logic live in the new package.
- The package exposes reusable Symfony Console commands for changelog automation.
- The initial command set covers release-version resolution and release-note rendering at minimum.
- The package structure supports later migration of entry-management and promotion commands without API churn.
fast-forward/dev-tools can depend on the package and register its commands instead of owning the changelog domain.
fast-forward/github-actions can depend on the package and inject or proxy the commands it needs.
- README and package metadata describe the standalone CLI use case and the embeddable-command use case.
Non-Goals
- Completing the full migration of every changelog-related command in the same first PR.
- Reworking unrelated GitHub Actions commands or PHP version resolution logic.
- Turning
dev-tools into a pure aggregator in this first step beyond the changelog extraction seam.
Notes
- Prefer a package structure that keeps command orchestration thin and pushes changelog behavior into focused services.
- Prefer names and namespaces that make the standalone package readable both when used directly and when embedded into larger console applications.
- Keep output deterministic for workflow and CI usage.
Summary
Bootstrap a standalone
fast-forward/changelogpackage to own the Fast Forward changelog domain and expose reusable CLI commands for changelog automation.Problem
Changelog parsing, mutation, rendering, and release-version inference currently live inside
fast-forward/dev-tools, whilefast-forward/github-actionsalso needs part of that behavior for workflow automation. Keeping the changelog domain insidedev-toolsmakes reuse awkward, increases coupling between packages, and blocks the longer-term goal of turningdev-toolsinto an aggregator of smaller CLI-focused packages.Goal
Create a standalone
fast-forward/changelogpackage that:fast-forward/dev-toolsandfast-forward/github-actionsto register or proxy those commands locally without reimplementing the domain.Scope
fast-forward/changelogpackage repository and bootstrap it as an installable Composer package.fast-forward/dev-toolsinto this package.fast-forward/dev-toolsandfast-forward/github-actionsto depend on this package instead of owning changelog domain logic directly.Proposed Commands
changelog:resolve-versionchangelog:render-release-noteschangelog:entrychangelog:promotechangelog:showor an equivalent command name if we consolidate output behaviorAcceptance Criteria
fast-forward/changelogexists under thephp-fast-forwardorganization.fast-forward/dev-tools.fast-forward/dev-toolscan depend on the package and register its commands instead of owning the changelog domain.fast-forward/github-actionscan depend on the package and inject or proxy the commands it needs.Non-Goals
dev-toolsinto a pure aggregator in this first step beyond the changelog extraction seam.Notes