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

# Submission Checklist

> All constraints to verify before uploading your game bundle

# Submission Checklist

Use this checklist to verify your game bundle meets all platform requirements before uploading. Addressing these items upfront avoids failed submissions and pipeline rejections.

## Pre-Upload Checklist

<Steps>
  <Step title="ZIP format">
    Your game is packaged as a single `.zip` archive. No other formats (`.tar`, `.rar`, `.7z`) are accepted.

    See: [Bundle Format](/submission/bundle-format)
  </Step>

  <Step title="File size under 1 GB">
    Your `.zip` archive does not exceed 1 GB (1,073,741,824 bytes) in total size.

    See: [Bundle Format](/submission/bundle-format#size-limits)
  </Step>

  <Step title="File count under 10,000">
    When extracted, your archive contains no more than 10,000 files across all directories.

    See: [Bundle Format](/submission/bundle-format#file-count-limit)
  </Step>

  <Step title="index.html at the root">
    Your ZIP contains an `index.html` file at the root level. If the ZIP root contains exactly one directory and no other files, the system treats that directory's contents as the effective root — `index.html` must be inside it.

    See: [Folder Structure](/submission/folder-structure)
  </Step>

  <Step title="No blocked JavaScript APIs">
    Your game does not use any blocked APIs: `localStorage`, `sessionStorage`, `document.cookie`, `indexedDB`, `navigator.sendBeacon`, `eval`, or the `Function` constructor.

    See: [Blocked APIs](/security/blocked-apis)
  </Step>

  <Step title="Allowed file types only">
    All files in your bundle use recognized extensions: `.html`, `.htm`, `.js`, `.mjs`, `.css`, `.json`, `.wasm`, `.data`, `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, `.mp3`, `.wav`, `.ogg`, `.m4a`, `.mp4`, `.webm`, `.ttf`, `.woff`, `.woff2`. Files with unrecognized extensions are flagged for manual review.

    See: [Allowed Asset Types](/assets/allowed-types)
  </Step>

  <Step title="No external network requests">
    Your game does not make network requests to domains outside the allowed list. All assets are bundled locally. Allowed domains: `greenhousegames.io`, `cdn.cloudflare.com`.

    See: [Blocked Domains](/security/blocked-domains)
  </Step>

  <Step title="CSP compliance">
    Your game works within the platform's Content Security Policy. All scripts, styles, and assets load from same-origin or blob URLs. Test locally by adding the CSP meta tag to your HTML.

    See: [Local Testing](/csp/local-testing)
  </Step>
</Steps>

## Quick Reference

| # | Constraint           | Limit / Rule                                                                                               |
| - | -------------------- | ---------------------------------------------------------------------------------------------------------- |
| 1 | Archive format       | `.zip` only                                                                                                |
| 2 | Maximum archive size | 1 GB (1,073,741,824 bytes)                                                                                 |
| 3 | Maximum file count   | 10,000 files                                                                                               |
| 4 | Entry point          | `index.html` at ZIP root                                                                                   |
| 5 | Blocked APIs         | localStorage, sessionStorage, document.cookie, indexedDB, navigator.sendBeacon, eval, Function constructor |
| 6 | File types           | Only recognized extensions (see Allowed Asset Types)                                                       |
| 7 | Network requests     | Same-origin only; external domains blocked by CSP                                                          |
| 8 | CSP compliance       | All assets bundled locally; inline scripts/styles allowed                                                  |

## Rate Limit Reminder

You can submit up to **10 uploads per 15-minute window** per IP address. Make each submission count by verifying all constraints above before uploading.

See: [File Limits](/submission/file-limits)

<Warning>
  Submissions with **CRITICAL** security findings are automatically rejected. Verify your bundle against the [blocked APIs](/security/blocked-apis) and [blocked domains](/security/blocked-domains) lists before uploading.
</Warning>
