Operations
MarkdownReleasing & versions
How maintainers ship Externa Core versions: semver, CHANGELOG, bump checklist, and GitHub Releases.
Version source of truth
| File | Role |
|---|---|
composer.json → version | Canonical package version |
package.json → version | Must match Composer |
| README badge / version line | Update when bumping |
| Docs site | No separate product version unless noted |
Git tags: v + semver (examples: v1.0.0, v1.0.0-beta.4).
Semver (Externa)
Aligned with API & GraphQL 1.x compatibility:
| Bump | When |
|---|---|
| Major | Breaking Public API / GraphQL / documented operator contracts after deprecation (or security-driven breaks called out in notes) |
| Minor | Additive features; deprecations may be announced |
| Patch | Bug fixes, docs, non-contract hardening |
Pre-release (-beta.N, -rc.N) | Milestone cuts before GA; same CHANGELOG discipline |
Admin UI / Inertia props are not a public API, but call out operator-visible breaks in Upgrade notes.
CHANGELOG
Keep Keep a Changelog sections under ## [Unreleased] while working on develop. At release:
- Move Unreleased items under
## [X.Y.Z] - YYYY-MM-DD - Refresh compare links at the bottom of
CHANGELOG.md - Leave a fresh empty Unreleased section
Cut a release (checklist)
Who ships
Maintainers merge the release PR, create the git tag, and publish the GitHub Release. Agents may open the develop → main release PR (full body + assignee) and stop there — they must not merge to main, tag, or run gh release create unless explicitly asked.
- Milestone issues Done; CI green on
develop - Bump
composer.json+package.json(+ README version line) - Finalize
CHANGELOG.mdfor this version - Open PR
develop→main(release PR); assignee + milestone labels — do not auto-merge - Maintainer merges; then tags
vX.Y.Zonmain - Maintainer publishes GitHub Release from tag — paste from
.github/RELEASE_TEMPLATE.md(Added / Fixed / Breaking / Upgrade) - Board: set Status to the matching Released … option when applicable
- Packagist auto-update should pick up the new tag — verify on packagist.org (submit runbook) · docs deploy as usual
Shipped: externa-core v1.0.0-beta.4 (2026-09-17) on Packagist. GA: externa-core v1.0.0 — human merges the release PR, tags, and confirms Packagist. Docs site for this cut: 1.1.1. See Packagist status.
GitHub Release notes
Use the repo template sections:
- Highlights
- Added / Changed / Fixed / Deprecated / Removed · Breaking / Security
- Upgrade notes
- Links (CHANGELOG, docs, full diff)