Geliştirme

Pack'ler, yayımlama ve güven

Er ya da geç işiniz makinenizden ayrılmak zorunda — bir çalışma arkadaşınızın çalıştıracağı bir iş akışı, yabancıların üzerine inşa edeceği bir blok, gelecekte sizin yeniden üretmeniz gereken bir model. Scellis işi Pack olarak gönderir: bağımlılık grafı kapalı, imzalı, sürümlü bir varlık paketi — içeriğin başvurduğu her şey ya zarfın içinde yolculuk eder ya da tam sürümü ve içerik hash'iyle sabitlenmiştir. Bu sayfa gönderim yolunu adım adım izler: zarf, lockfile, yayım kapısı, imza, güven merdiveni ve bağımlıların asla kırılmamasını sağlayan güvenceler. Baştan bir ayrım: Pack gönderir; Repository derler; Listing satar. Üç ayrı eksen — asla birbirine karıştırılmaz.

siz · commit v3sha256:9f2c…yayım kapısıdenetimler içeriktirRegistrydeğişmezlockfile · uygunluk · yöntem kartıetkiler · profil · lisans · üstveriret, her eksiği adıyla söylerbaşka bir cihazsonraki eşitleme
Şek. 1 — Gönderim yolu: commit'lenmiş bir sürüm yayım kapısından geçer, Registry'ye imzalı iner ve diğer cihazlara bir sonraki eşitlemede ulaşır.

Gönderilen her şey için tek bir zarf#

Her dışa aktarma koca bir Pack değildir. Beş taşınabilir tek-dosya biçimi vardır — .scellis-workflow, .scellis-pack, .scellis-block-pack, .scellis-model, .scellis-dataset — ve beşi de tek bir zarfı paylaşır. İçindeki manifest türü bildirir; baytlar bayt bayt yeniden üretilebilirdir, yani aynı içerik iki kez dışa aktarıldığında birebir aynı dosyayı verir; ve her içe aktarma, kataloğunuza herhangi bir şey inmeden önce içerik hash'ini doğrular. Doğrulamayı geçemeyen dosya reddedilir — yüksek sesle, platformdaki her reddin konuştuğu aynı kanonik tanıyla. Şartlı içe aktarma da yarım iniş de yoktur: ya doğrulanmış baytlar ya hiç.

Kapanış, işle birlikte yolculuk eder#

Bir Pack'in en zorlu sözü eksiksizliktir ve Scellis bunu yazarın hafızasına bırakmayı reddeder. Yazdığınız kod başka katalog varlıklarını çağırdığında — bir op, bir yardımcı fonksiyon, bir tokenizer — bu kullanımların her biri bir lockfile üzerinden çözülür: işin bağımlı olduğu her şeyin otomatik türetilmiş kapanışı; kimlik, tam sürüm ve içerik hash'iyle sabitlenmiş, döngülere karşı denetlenmiş. Kayıtlı bir iş akışını çevrimdışı çalıştıran da aynı kapanıştır: sabitlenen her hash, çalıştırma başlamadan önce cihazda hazırdır — indirme, üretim ve kurulum anında yaşar, asla çalıştırma yolunda değil.

json
{
  "entity": "user/ada/robust-scaler",
  "version": 3,
  "content_hash": "sha256:9f2c41ac…",
  "uses": {
    "tensor/matmul@2": "sha256:41ac88d0…",
    "user/kim/winsorize@1": "sha256:b7e03f5e…",
    "text/tokenizer/bpe@4": "sha256:0d66c2a1…"
  },
  "effects": [],
  "min_engine": "1.4.0",
  "capabilities": ["webgpu.f16"]
}

İki sonuç vurgu ister. Birincisi: etkiler kapanış boyunca geçişlidir. Üç katman derindeki bir bağımlılık ağ çıkışı bildiriyorsa Pack bu bildirimi alnında taşır — “saf” bir sarmalayıcı, bir çağrıyı içe aktarmalarının arasından kaçıramaz (etkilerin nasıl bildirildiği uzantı üretme sayfasında anlatılıyor). İkincisi: kurulum, aynı kapanışı alıcı cihazda yeniden çözer. Bir Pack asla yarım kurulmaz — ya her sabitleme çözülür ve doğrulanır ya da kurulum reddeder ve başarısız olan sabitlemeyi adıyla söyler.

Yayım bir ön kontroldür, yükleme düğmesi değil#

Yayımladığınız şey commit'lenmiş bir sürümdür, asla canlı bir taslak değil. Taslaklar şeylerin değiştiği yerdir; commit ise adınızı koymaya değer, değişmez, içerik adresli yapıttır — yeniden üretilebilirlik boyunca işleyen aynı taslak-commit disiplini. Commit'in üzerinde, bir şey çıkmadan önce paketi denetleyen bir kapı oturur — ve denetimlerin kendisi de içerik olarak teslim edilir; çıta, uygulamaya sürüm gerekmeden yükselebilir. Kapının istedikleri:

  • Çözülebilir bir lockfile: her bağımlılık sabitlenmiş, her sabitleme çözülebilir.
  • Uygunluk kanıtı: hesaplayan her şey, referans implementasyonuyla uyuştuğunun kaydını taşır — bir GPU çekirdeği için, güvenilir etkinleştirmesini zaten şart koşan hash'e bağlı ConformanceReceipt.
  • Bir yöntem kartı: bunun ne olduğunun ve nasıl davrandığının insanın okuyabileceği anlatımı. Modeller model kartı, veri kümeleri veri sayfası ekler.
  • Bildirilmiş etkiler: içeriğin saf hesaplamanın ötesinde dokunduğu her şey — kapanış dahil.
  • Profil uyumluluğu: bildirilmiş; böylece bir cihaz kurmadan önce bunu çalıştırıp çalıştıramayacağını bilir.
  • Eksiksiz üstveri ve bir lisans: katalog girdisi olması gereken yerde boş alan yok — ve açık bir SPDX lisansı olmadan hiçbir şey herkese açık olmaz.

Bir parça eksikse yayım reddedilir; eksik olan her madde adıyla sayılır — asla sessizce, asla genel bir hatayla değil. Kapının listelediğini düzeltir, yeniden yayımlarsınız; tahmine yer yoktur.

Cihazınızda imzalanır, kanıtla güvenilir#

İmza, işinizin yaşadığı yerde atılır: tarayıcıda. İmza anahtarı da bir katalog varlığıdır; özel yarısı yerelde üretilir ve cihazdan asla ayrılmaz — eşitlenmez, yüklenmez, Scellis tarafından kurtarılamaz. Yayımlama içerik hash'ini imzalar; her kurulum imzayla hash'i birlikte doğrular — başka bir makineye varan şey, kanıtlanabilir biçimde sizin yayımladığınızdır.

Güven; yazarlıktan da popülerlikten de ayrı bir eksendir. Yayımlanmış bir sürüm kazanılmış bir düzey taşır — doğrulanmamış, topluluk, doğrulanmış, resmî — ve kullanıcı işi, platform ekibinin gönderdiği her şeyle aynı kanıt çıtasından geçerek doğrulanmış düzeyine tırmanır; çünkü kullanıcı içeriği yapısal olarak yerleşiklerle özdeştir. Resmî yalnızca bakımını Scellis'in üstlendiği içeriği işaretler; geri kalan her şeyi yukarı taşıyan kayırma değil, kanıttır.

Yayımlanmış sürümler ayağınızın altından kaymaz#

Yayımlanmış bir sürüm değişmezdir — onu “yerinde düzeltmek” yapısal olarak yasaktır. Anlam değiştiğinde sürüm yükselir ve eski sürüm sonsuza dek çalışabilir kalır; çünkü bağımlılar lockfile'larında tam sürüm sabitler. Güncellemek böylece sizin verdiğiniz bir karardır, başınıza gelen bir şey değil: yeni sürüme bilerek geçer, kendi denetimlerinizi çalıştırır, öyle ilerlersiniz. Aynı kural içeriği ticarete kadar izler: v3 çıktığında, v2'yi alan v2'sini korur.

Bağımlılar yapısal olarak da savunulur. Yayımlanmış bir varlığı kalıcı silmek, herhangi bir bağımlının lockfile'ı onu sabitlediği sürece reddedilir. Bir hesabın silinmesi, yayımlanmış varlıkları mezar taşına çevirir — yazar anonimleştirilir, sabitlenen baytlar çözülebilir kalır — böylece kimsenin işi, bir başkası ayrıldı diye kırılmaz. Ve bağımlı olduğunuz parça izlemek istemediğiniz bir yöne evrildiğinde, fork etmek birinci sınıftır: okuyabildiğiniz her şeyi fork edin, size ait tam bir kopya alın — düzenlenebilir, yayımlanabilir, diğer her şey gibi denetlenen. Bu türden kalıcılık bir platform taahhüdüdür, nezaket değil.

yayımlanmış sürümler — değişmezv1v2v3size bağımlı olan biriv2'ye sabitli · 41ac…duyuru: sabitleyenler uyarılıryeni kurulumlar engellenebilirgüncellemek sizin verdiğiniz bir karardır — başınıza gelen bir şey değil
Şek. 2 — Sabitlemeler tutar: bağımlılar tam sürümü sabitler ve çalışmayı sürdürür; bir duyuru sabitlenen her bağımlıyı uyarır ve yeni kurulumları durdurabilir.

Kurulumda onay; politika Workspace'ten#

Kurulum, güvenliğin karara bağlandığı andır — ve karar bildirimlere dayanır. Bir Pack, kapanışının ihtiyaç duyduğu etkileri bildirir; onay bu beyandan hesaplanır:

Bildirilen etkiKurulumda
Saf hesaplamaOtomatik izinli — onaylanacak bir şey yok
Ağ veya dosya sistemiYalnızca açık onayınızla kurulur
Bildirilmemiş etkilerVarsayılan olarak reddedilir — sandbox'ın verecek bir şeyi yoktur

Bir Workspace, çizgiyi içindeki herkes için daha da sıkılaştırabilir: yalnızca imzalı Pack'lere izin vermek, ağ etkilerini yasaklamak ya da deterministik yürütme şart koşmak. Hiçbir yerel ayar Workspace politikasının üzerinde değildir — arayüz, Workspace'in koyduğu bir kuralın yanından geçirilemez.

Eşitleme hızında teslimat — son kilometreye kadar dürüst#

Yayımlayın; teslimat artık sizin sorununuz değildir. Sürüm treni yoktur, çünkü sürümlenecek bir şey yoktur: derlenmiş uygulama yalnızca motoru taşır, her yetenek veritabanından gelir — yeni yayımlanan bir Pack, diğer istemciler için bir sonraki eşitlemelerinden saniyeler sonra canlıdır. Uygulama yeniden derlemesi yok, yeniden kurulum yok, sürüm penceresi bekleme yok.

Hızlı göndermek hataları da gönderir; bu yüzden yayımlanmış her hash'in bir duyuru kanalı vardır. Bir duyuru, sabitlenmiş her bağımlıyı uyarır — bir bildirim, işaretlenen sürümün üzerinde bir katalog rozeti ve ondan tek adımda uzaklaşmak için bir yeniden çözümleme — ve işaretlenmiş sürümün yeni kurulumları, her kurulumun geçtiği tek bayt-sunum noktasında engellenebilir.

Not

Dürüst sınır: cihazlara zaten eşitlenmiş baytlar zorla geri çağrılamaz. Bir duyuru her bağımlıyı uyarır ve yeni kurulumları durdurabilir; makinelerin içine uzanıp silmez. Scellis bu sınırı saklamak yerine açıkça söyler.

Cihazınızdan herkesin cihazına giden yolun tamamı bu: tek bir zarf, işle yolculuk eden bir kapanış, isteklerini adıyla söyleyen bir kapı, yerelde üretilmiş bir imza, asla kımıldamayan sürümler, bildirimlerden hesaplanan onay — ve bir eşitleme hızında teslimat.