Uyumluluk: Pactmark 0.2.x. Sürüm 0.2.0 npm’de herkese açıktır. Registry’nin sunduğu 19 tarball ve package başına SLSA provenance kayıtları donmuş release ile bağımsız olarak eşleştirilmiştir.

Bağımlılıklar

Lockfile yetkilidir

Sabitlenmiş pnpm lockfile’ı tam çözülmüş bağımlılık kaydıdır. Paket manifestleri desteklenen aralıkları beyan eder; gerçekte neyin kurulacağına lockfile karar verir.

Lifecycle script'leri varsayılan olarak reddedilir

İncelenmiş istisnalar sürümlenmiş ve açıktır. Bir lifecycle kanaryası reddin gerçek olduğunu doğrular.

Çevrimdışı advisory ve lisans kapıları

Kritik yolda ağ bağımlılığı olmadan yerelde çalışır.

Bağımlılık sınırları zorlanır

Çekirdek bir sağlayıcı SDK’sını, veritabanı istemcisini veya platform çalışma zamanını içe aktaramaz — CI’da denetlenir.
Çalışma-zamanı bağımlılıkları bilinçli olarak az, değiştirilebilir, izin verici lisanslı ve ihtiyaç duyan pakete izoledir:

Bir aday derlemek

1

Tek kanonik paketleyici

İzin listeli dosyaları hazırlar, tam iç sürümleri somutlaştırır ve lifecycle script’lerini kapatır. Bir aday üretmenin tam olarak tek bir yolu vardır.
2

İki bayt-özdeş tarball

Paketleme iki kez çalışır ve arşivler bayt bayt eşleşmelidir. Determinizm yokluğu bir merak değil, bir derleme hatasıdır.
3

Bağımsız tüketiciler paketlenmiş baytları yer

NodeNext, Bundler, Yarn, Bun ve bir loopback-registry fixture’ı workspace bağlantıları yerine tarball’ları kurar.
4

Yayın dry-run'ı kanıt kümesini üretir

Sağlamalar, bir CycloneDX SBOM, manifestler ve attestation girdileri — imzalamadan veya yayımlamadan.
Yalnızca workspace bağlantıları paket meta verisini, dışa aktarımları, tip beyanlarını veya başlatıcı deneyimini kanıtlayamaz. “Monorepo’da çalışıyor” ile “kurulduğunda çalışıyor” farklı iddialardır ve bir kullanıcı için yalnızca ikincisi önemlidir.

Yayımlama

Korumalı release.yml aday işi:
  • manuel ve yalnızca main’dir;
  • gözden geçiren onaylı release ortamına bağlıdır;
  • deterministik ve canlı tazelik kapılarını yeniden çalıştırır;
  • tam tarball, SBOM ve manifest sağlama konularını dondurur;
  • adayı yalnızca GitHub build-provenance ve SBOM attestation’ları başarılı olduktan sonra yükler.
npm yazması kaynağa bağlı, gözden geçiren onaylı, token’sız trusted publishing’dir. Çalınacak uzun ömürlü bir yayın token’ı yoktur.
İş akışı dağıtım yapamaz, etiket oluşturamaz ve GitHub Release oluşturamaz. Yayımlama yetkisi bilinçli olarak dardır — bkz. tehdit modeli satırları TM-15 ve TM-16.

Yayın geçmişi, tam olarak

Yayın sırasındaki belirsiz yazmalar

Bir registry zaman aşımı, belirsiz bir dış etkiyle aynı problem sınıfındadır ve aynı şekilde ele alınır:
1

Önce anonim tam-sürüm durumunu inceleyin

Başka herhangi bir işlemden önce.
2

Yoksa, bir bakımcı yeni bir deneme yetkilendirebilir

Açıkça, otomatik olarak değil.
3

Varsa, baytlar ve genel görünürlük donmuş manifestle tam eşleşmelidir

Uyuşmazlık yayımlamayı durdurur ve olay incelemesini tetikler.
Korumalı yayıncı asla otomatik yeniden deneme veya dist-tag onarımı yapmaz ve dışa açılmış başarısız sürüm baytları asla yeniden kullanılmaz.

Kurduğunuzu doğrulamak

Yayımlanmış manifest ve attestation’larla karşılaştırın. Kurulum not found dönerse registry yapılandırmanızı ve ağ erişiminizi doğrulayın — doğrulanmamış benzer isimli bir pakete geçmeyin. Yayımlanmış tek isimler @pactmark kapsamı ve create-pactmark’tır.

Bunun tesis etmedikleri

Doğrulanmış registry baytları ve paket başına provenance, kurduğunuz kodun derlenen kod olduğunu tesis eder. Kodun güvenli olduğunu, üzerine kurulan bir dağıtımın güvenli olduğunu veya Pactmark neyi kanıtlamaz sayfasındaki üretim iddialarından herhangi birini tesis etmez.

Tehdit modeli

TM-15 ve TM-16 satırları, sahipleri ve artık riskleriyle.

Güvenlik modeli

Yayın yolunun arkasındaki çalışma-zamanı kontrolleri.