> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evox.wraithesports.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Yayınlama

> Paketinizi CLI ile hazırlayın, doğrulayın ve Market moderasyonuna gönderin; sunucu tarafı güvenlik pipeline'ını öğrenin.

Bu sayfa paketinizi evoX Market'e yayınlamanın uçtan uca akışını anlatır: hangi paket türleri bugün yayınlanabilir, CLI ile nasıl hazırlanır ve sunucu paketinizi hangi güvenlik kapılarından geçirir.

## Bugün ne yayınlanabilir

<Columns cols={2}>
  <Card title="Veri-only paketler — açık">
    Hazır profil, aksiyon paketi, ikon paketi ve ses paketi gerçek moderasyon akışını kullanır ve yayınlanabilir.
  </Card>

  <Card title="Executable plugin — kapalı">
    Public executable plugin yükleme şu anda `503 PLUGIN_UPLOAD_NOT_READY` durumundadır. Ayrıntı için <a href="/sdk/distribution-status">Dağıtım durumu</a>.
  </Card>
</Columns>

<Info>Yayın için **onaylı yayıncı (Publisher) hesabı** gerekir. Askıya alınmış veya iptal edilmiş hesap yükleme yapamaz. Paketi yalnız paket sahibi moderasyona gönderebilir.</Info>

## Ön koşullar

| Koşul                     | Açıklama                                                       |
| ------------------------- | -------------------------------------------------------------- |
| evoX hesabı               | Google/JWT ile oturum açılmış olmalı                           |
| Onaylı Publisher          | Yükleme ve gönderim onaylı yayıncı durumu ister                |
| Doğrulanmış paket dosyası | `.evoxpack` dosyası, geçerli `manifest.json` ile               |
| Geçen tarama              | Sürüm `scanStatus: passed` ve `scanDigest === fileHash` olmalı |

## Adım 1 — Paketi CLI ile hazırlayın

`@evox/plugin-cli` (`evox-plugin`) projeyi doğrular, bundle üretir ve `evox-archive-v1` politikasıyla `.evoxpack` paketler.

```bash theme={null}
evox-plugin validate ./my-plugin
evox-plugin build ./my-plugin
evox-plugin pack ./my-plugin
evox-plugin publish-check ./my-plugin
```

<Warning>`publish-check` bir local parity kontrolüdür; moderation, production scanner, signing veya revocation yerine geçmez. Geçmesi paketin public-ready olduğunu kanıtlamaz.</Warning>

Ayrıntılı komut tablosu için <a href="/sdk/cli">Developer CLI</a> sayfasına bakın.

## Adım 2 — Yükleyin

Doğrulanmış `.evoxpack` dosyası `POST /packages/upload` uçtan noktasına multipart olarak yüklenir. Yükleme yalnız onaylı Publisher oturumu ile kabul edilir.

Yükleme anında sunucu paketi **hemen** işleme almaz; önce güvenli karantinaya yazar ve tarar. Bu yüzden yükleme cevabı taslak (`draft`) döner — henüz yayında değildir.

## Adım 3 — Sunucu güvenlik pipeline'ı

Yüklenen her paket aşağıdaki kapılardan geçer. Bu akış server-authoritative'dir; hiçbir client alanı sonucu değiştiremez.

<Steps>
  <Step title="Karantina">
    Dosya SHA-256'lanır ve immutable private karantina alanına yazılır. Storage yazımı başarısızsa taslak **oluşmaz** (fail-closed).
  </Step>

  <Step title="Statik tarama">
    Arşiv politikası (zip bomb / path traversal / boyut), magic-byte uyumu, SVG aktif içerik, secret sızıntısı, yasak uzantı ve legacy identifier kontrolü yapılır.
  </Step>

  <Step title="Taslak kaydı">
    Tarama geçerse paket, tarama kanıtına (`policyVersion`, `scanDigest`, `findings`) atomik olarak bağlı bir taslak sürüm olarak kaydedilir.
  </Step>

  <Step title="Moderasyon gönderimi">
    Paket sahibi `POST /submissions` ile sürümü moderasyona gönderir. Sunucu tekrar `scanStatus: passed` ve `scanDigest === fileHash` doğrular.
  </Step>

  <Step title="Onay">
    Moderatör tarama kanıtını inceler ve onaylar/reddeder. Onay, paketi Market'te yayınlar.
  </Step>
</Steps>

## Taramanın reddettiği başlıca içerikler

* **Secret sızıntısı:** private key, API token, JWT veya config içindeki gerçek kimlik değerleri.
* **Magic-byte uyumsuzluğu:** uzantısı gerçek içerik türüyle eşleşmeyen dosyalar.
* **Aktif SVG:** script, event handler veya harici referans içeren SVG.
* **Yasak uzantı (veri-only):** `.exe`, `.dll`, `.js`, `.bat` ve benzeri çalıştırılabilir/aktif dosyalar.
* **Legacy identifier:** eski StreamDock UUID kullanımı.
* **Yerel yol sızıntısı:** manifest veya profil içinde mutlak dosya yolu.

## Yükleme hata kodları

| Kod                                      | Anlam                                            |
| ---------------------------------------- | ------------------------------------------------ |
| `PACKAGE_FILE_REQUIRED`                  | Paket dosyası eksik                              |
| `PACKAGE_STORAGE_FAILED`                 | Karantina yazımı başarısız (503, fail-closed)    |
| `PACKAGE_SCAN_FAILED`                    | Paket güvenlik politikasını geçemedi             |
| `PLUGIN_UPLOAD_NOT_READY`                | Executable plugin hattı kapalı (503)             |
| `EXECUTABLE_PUBLISHER_APPROVAL_REQUIRED` | Executable için ek yayıncı onayı gerekli         |
| `PLUGIN_ID_ALREADY_CLAIMED`              | Plugin kimliği başka yayıncıya ait               |
| `PACKAGE_SCAN_NOT_PASSED`                | Taramayı geçmeyen sürüm moderasyona gönderilemez |

<Warning>Static scan, local sandbox smoke veya çalışan bir T1 örneği tek başına public-ready değildir. `503` kapısı client fallbackı, metadata-only upload veya generic "passed" sonucuyla aşılamaz.</Warning>
