Kebijakan rekayasa rilis
Lima kebijakan kanonik untuk versioning, penandaan rilis, siklus penghentian, perubahan yang tidak kompatibel, dan prosedur rollback.
Lima kebijakan mengatur cara apothem dirilis.
1. Versioning semantik
Proyek ini didistribusikan di bawah Semantic Versioning 2.0.
Nomor versi mengambil bentuk MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD].
| Kenaikan | Pemicu |
|---|---|
| MAJOR | Perubahan yang tidak kompatibel pada skema artefak, pengidentifikasi mandat (CM-N / TM-N / CP-N), atau kontrak hook |
| MINOR | Aturan baru, pekerja yang didelegasikan, perintah, keterampilan, peristiwa hook, atau perluasan skema yang tetap kompatibel |
| PATCH | Klarifikasi, penambahan antipola, perbaikan dokumentasi, dan suntingan yang tidak mengubah perilaku |
Tag kandidat menggunakan format vX.Y.Z-rc.N (kandidat rilis)
atau vX.Y.Z-alpha.N / vX.Y.Z-beta.N (akses awal).
2. Tag rilis
Setiap rilis menempatkan tag git bertanda tangan dalam bentuk vMAJOR.MINOR.PATCH
di main. Tag tersebut memicu .github/workflows/release.yml yang
membangun, menandatangani, menghasilkan SBOM dan provenance SLSA-3, serta
menerbitkan halaman GitHub Release.
Konvensi tag:
- Format — tepatnya
vMAJOR.MINOR.PATCH. Tanpa awalanrelease-, tanpa akhiran-final. - Anotasi — setiap tag adalah tag beranotasi (
git tag -a -s) yang membawa ringkasan catatan rilis dalam pesan tag. - Tanda tangan — setiap tag ditandatangani dengan GPG. Alur kerja rilis juga menghasilkan tanda tangan cosign tanpa kunci Sigstore pada setiap artefak dan bukti provenance rilis SLSA-3, keduanya dilampirkan ke halaman GitHub Release.
3. Kebijakan penghentian
Lini dukungan publik saat ini adalah versi minor terbaru yang dirilis. Ketika proyek memiliki beberapa versi minor publik, matriks versi yang didukung pada SECURITY.md adalah sumber kebenaran untuk jendela dukungan tambahan apa pun yang hanya untuk perbaikan kritis.
Irama penghentian:
- Pengumuman — simbol atau perilaku yang dihentikan
diumumkan di bagian
### DeprecatedpadaCHANGELOG.mddari rilis tempat penghentian itu mendarat. Catatan rilis mencerminkan pengumuman penghentian tersebut. - Jendela tenggang — simbol yang dihentikan tetap tersedia selama minimal satu siklus minor penuh sebelum dihapus.
- Penghapusan — penghapusan dilakukan pada kenaikan
MAJOR. Setiap simbol yang dihapus membawa baris### RemovedpadaCHANGELOG.mddan entri panduan migrasi di bawah Panduan praktis.
4. Kebijakan perubahan yang tidak kompatibel
Perubahan yang tidak kompatibel mensyaratkan:
- Sebuah isu RFC — dibuka dengan label isu
rfcsyang menjelaskan perubahan tidak kompatibel, jalur migrasi, dan strategi rollback. - Jendela komentar 30 hari — RFC tetap terbuka selama setidaknya 30 hari sebelum penggabungan. Pemelihara dapat memperpanjang jendela ketika umpan balik memerlukannya.
- Sebuah kenaikan MAJOR — rilis yang memuat perubahan tidak kompatibel menaikkan komponen MAJOR.
- Sebuah panduan migrasi — perubahan dikirim dengan entri Panduan praktis yang memandu operator melalui migrasi.
5. Kebijakan rollback
Jika sebuah rilis menunjukkan regresi yang menghambat adopsi:
- Revert — commit yang bermasalah di-revert pada
main. - Penandaan ulang rilis-plus-satu — rilis lanjutan mendarat sebagai
vMAJOR.MINOR.PATCH+1yang membawa revert ditambah perbaikan inkremental apa pun. Rilis cacat sebelumnya tidak dihapus dari GitHub Releases — anotasi### YankedpadaCHANGELOG.mdmendokumentasikan situasi tersebut agar build yang dapat direproduksi tetap terjangkar. - Komunikasi — pemberitahuan security-advisories (ketika relevan dengan keamanan) atau kiriman Discussions (ketika relevan dengan keandalan) menyertai rollback.
Lihat juga
- CHANGELOG.md — buku besar rilis kanonik.
- SECURITY.md — matriks versi yang didukung dan saluran pelaporan.
- cicd-pipeline.md — kelas pemeriksaan CI yang menggerbang setiap rilis.
- deployment-checklist.md — sapuan kesiapan produksi per rilis.
Registri Konformitas Eksternal — Saat Beroperasi pada Proyek Inang
Registri lima belas mandat (M1–M15) yang menetapkan persyaratan konformitas untuk semua artefak yang dihasilkan di proyek inang, dipetakan-silang dengan mandat internal-ekosistem.
Kebijakan lencana
Menentukan sumber lencana dinamis dan statis untuk README, mencakup status alur kerja native GitHub, JSON endpoint shields.io, dan bentuk lencana statis.