Section index
Deployment guide
Current Cloudflare preview deployment
Site: https://cabinet-of-minor-gods.pages.dev/
Documents: https://cabinet-of-minor-gods.pages.dev/documents/
Cabinet: https://cabinet-of-minor-gods.pages.dev/cabinet
Pages project: cabinet-of-minor-gods
R2 bucket: cabinet-of-minor-gods-media
The full archival master remains 338,321,661 bytes. Wrangler's direct R2 object command currently accepts files up to 300 MiB, so the public preview uses a Cloudflare hosting derivative with the same 713.148-second duration, 1080×1350 frame, H.264 video, AAC stereo, and full timeline alignment:
Local derivative: evidence-regarding-minor-gods-website-slot-edition-cloudflare.mp4
Size: 282,270,484 bytes
Video bitrate: 2,999,744 bits/s
Audio bitrate: 161,120 bits/s
SHA-256: 2b085ef394c1100aaa06400e3bd3425aad06a1e1ffe37ea18baa533af0a939e9
The derivative passed a complete FFmpeg decode. Its R2 object ETag matches the local MD5, and HTTP checks returned Accept-Ranges: bytes plus 206 Partial Content with a correct Content-Range. The original archival master remains unchanged in the full hosting package.
Cloudflare-specific recommendation
Cloudflare Pages currently limits a single site asset to 25 MiB. In this package, 180 of the 181 runtime media files fit that limit; the only exception is:
evidence-regarding-minor-gods-website-slot-edition.mp4
338,321,661 bytes / approximately 323 MiB
Do not upload the complete package directly to Pages and expect that file to succeed. Use:
- Cloudflare Pages for the HTML entry points,
documents/, sourcedocs/, stills, sixty manifestation previews, sixty M4A relics, JSON, and host configuration. - Cloudflare R2 for the evidence-film master.
- Prefer an R2 custom domain such as
media.example.comrather than the development public-bucket URL. - Replace the master
<video src>in bothindex.htmlandevidence-cabinet.htmlwith the final R2 custom-domain URL before deployment. - Verify the R2 object returns
206 Partial Content,Content-Range,Accept-Ranges: bytes, andContent-Type: video/mp4for a ranged request.
All other packaged runtime assets are below 25 MiB and may remain on Pages. Keeping only the master in R2 preserves the existing relative paths for the original Cabinet and all active-tile previews.
Authoritative Cloudflare reference: https://developers.cloudflare.com/pages/platform/limits/ under File size.
Recommended deployment shape
Use static object storage plus a CDN, or any static host that supports:
- A deployment larger than 1 GB
- A single file larger than 339 MB
- HTTP byte-range requests
- Correct MP4/M4A MIME types
- Long-lived cache headers for immutable media
Because hosting limits change, confirm the current plan's per-file and total-deployment limits before uploading. If a page-oriented host rejects the master video, place media in object storage/CDN and update the media base paths in both HTML files.
Upload
Upload the contents of this folder to the host's site root without flattening directories:
index.html
evidence-cabinet.html
cabinet.html
evidence-regarding-minor-gods-website-slot-edition.mp4
assets/
motion/
audio/
film/
docs/
Paths are relative and case-sensitive.
Server checks
1. Entry points
curl -I https://YOUR-HOST/
curl -I https://YOUR-HOST/cabinet.html
Expected: 200 OK and Content-Type: text/html.
2. Byte-range seeking
curl -I \
-H 'Range: bytes=0-1023' \
https://YOUR-HOST/evidence-regarding-minor-gods-website-slot-edition.mp4
Expected:
HTTP/2 206
Content-Range: bytes 0-1023/...
Accept-Ranges: bytes
Content-Type: video/mp4
A 200 response to this range request may indicate that direct god-to-film seeking will fail or require downloading the file from the beginning.
3. MIME types
curl -I https://YOUR-HOST/motion/01-saint-draft.mp4
curl -I https://YOUR-HOST/audio/m4a/01-saint-draft.m4a
Expected:
video/mp4
audio/mp4
4. Cache behavior
Recommended:
- HTML:
Cache-Control: public, max-age=300 - MP4/M4A/images:
Cache-Control: public, max-age=31536000, immutable
If media files are replaced without changing filenames, purge the CDN cache or use a versioned deployment directory. The supplied filenames are stable rather than content-hashed, so immutable caching is appropriate only for a versioned/frozen release.
Bandwidth planning
The complete package is about 892 MiB before documentation. A full Evidence Cabinet viewing may transfer the 323 MiB master plus many or all of the 522 MiB manifestation library because the active grid preview advances through the collection. The original Cabinet can approach roughly 569 MiB if every card is activated. Use CDN/object storage, monitor egress, and avoid hosts optimized only for small page bundles.
Included host helpers
Caddyfile— local or self-hosted Caddy configuration_headers— header declarations understood by some static hosts
These helpers do not override a host's upload-size limits.
Browser QA checklist
Evidence Cabinet
- Film reports a duration around 11:53.
- Click god 35; the film seeks to Cupboard Listener and the URL becomes
#god-35. - Active, entering, and entered grid states update while playing.
- The active tile displays a muted manifestation during the matching film incident.
- Follow/free mode works.
- At desktop sizes, the sticky player never overlaps the grid.
- At widths of 850 px and below, video, metadata, scrubber, and controls use the full viewport width with no horizontal overflow.
Original Cabinet
- Sixty stills load.
- Enable sound once.
- Hover/focus a god; its manifestation and relic begin.
- Leave the tile; both stop and rewind.
- Only one tile sounds at a time.
Autoplay
Browsers block audible autoplay. This is expected:
- Evidence film begins only after a play or timeline gesture.
- Original Cabinet audio begins only after the explicit sound-enable gesture.
Security and privacy
The distribution contains no API keys, TITLES credentials, or temporary signed download URLs. Do not upload the broader production repository: it contains raw production material and provenance records that are unnecessary for the public experience.
Updating the site later
Rebuild the source project, then regenerate this package. Preserve filenames only when the host cache is purged; otherwise use a versioned deployment or hashed media paths.