Partner Upload ZIP Naming and README Bullet Map - A Ninety-Minute Standard Before Q3 2026 Cert Intake

Your mock audit tabletop scores seven dimensions—but dimension three still dies when the partner opens PartnerPacket_Final_v3_REAL.zip and the README says “see folder 2b” while the zip root contains 02b_build/ and 02B_BUILD/. That is not a gameplay bug. It is a naming contract failure.
Q3 2026 stacks Gamescom-adjacent reviews, Deck Verified autumn refresh evidence, and early holiday intake inside one quarter. This Process & Workflow guide gives micro-studios a ninety-minute standard for partner upload ZIP naming and a README bullet map that matches your release-evidence taxonomy without re-inventing folders on upload day.
Why this matters now (May 2026)
- Intake reviewers skim README first — If bullets do not mirror zip roots, they stop trusting hashes and screenshots in the same packet.
- Overnight handoffs multiply typos — Asia-EU BUILD_RECEIPT discipline fails when the morning reviewer uploads a zip whose name omits the commit short hash the receipt references.
- Two-storefront teams duplicate packets — The two-storefront rule only works if Steam and secondary SKUs do not share ambiguous zip names like
build.zip. - AI disclosure rows need stable paths — Seven-day disclosure challenges assume annex bullets point at folders that exist on disk, not “we will upload later.”
Who this is for and what you get
| Audience | You will be able to… |
|---|---|
| Solo dev shipping first partner packet | Name zips and README bullets without guessing on upload night |
| 2–4 person team with contractor art | Hand external partners a one-page map they cannot misread |
| Lead preparing publisher diligence | Reuse the same README skeleton for demo vs cert variants |
Time: ninety minutes for the first baseline; fifteen minutes per upload after that.
Prerequisites: A frozen build ID, access to your release-evidence/ root, and permission to rename folders before zipping—not after.
The failure mode partners actually cite
Partners rarely write “your zip confused us” in those words. They write:
- “Please resubmit with consistent folder labels.”
- “README references attachment 4; we only received three top-level directories.”
- “Hash file does not cover the build cited in bullet 2.”
- “Duplicate filenames inside archive.”
Each maps to fixable naming and bullet-map rules—not new features.
Ninety-minute sprint overview
| Block | Minutes | Output |
|---|---|---|
| A — Pick naming schema | 15 | One-line pattern documented in release-evidence/README.md |
| B — Draft bullet map | 20 | Eight bullets max, each maps to one top-level folder |
| C — Dry-run zip | 25 | Zip built from clean export, unpacked on second machine |
| D — Hash sidecar | 15 | SHA256SUMS.txt + MANIFEST.json beside README |
| E — Cold-open drill | 15 | Teammate opens zip cold, follows only README |
Stop when cold-open passes. Do not add bullets “for completeness.”
Block A — Partner upload ZIP naming schema
Use one pattern for every cert-facing upload in 2026:
{studio}_{game}_{channel}_{build_id}_{artifact}_{date_utc}.zip
Field rules:
studio— lowercase slug, no spaces (northlake)game— Steam app slug or internal codename (riftbound)channel—partner,steam,deck,quest,ios(neverfinal)build_id— CI number or{branch}_{short_sha}(rc_9f3a2c1)artifact—full,demo,symbols,annexdate_utc—YYYYMMDDupload date, not build date unless they differ intentionally
Examples:
northlake_riftbound_partner_rc_9f3a2c1_full_20260518.zipnorthlake_riftbound_deck_rc_9f3a2c1_handheld_20260520.zip
Banned tokens: final, latest, test, new, copy, v2 without build_id—partners treat them as unversioned.
Windows and macOS path traps
- Zip on Windows with path length under 180 characters for deepest file.
- No trailing spaces in folder names; macOS zips preserve them and Linux reviewers break scripts.
- Prefer
_over spaces; some portals strip spaces unpredictably.
Block B — README bullet map (the partner-facing index)
The README is not marketing copy. It is an index with eight bullets maximum for cert packets.
Template (copy into PARTNER_README.md at zip root):
# Partner packet — {game} — build {build_id}
Uploaded (UTC): {iso_timestamp}
Contact: {email}
1. **Build identity** — Folder `01_build/` — see BUILD_RECEIPT.md for commit, CI job, and artifact URLs.
2. **Input / handheld** — Folder `02_handheld/` — Deck Verified glyph captures + Steam Input VDF export (autumn 2026 lane).
3. **Store truth** — Folder `03_store/` — capsule PNG paths, short description text file, trailer frame list.
4. **AI disclosure** — Folder `04_ai/` — storefront bullets, in-game labels, API inventory CSV.
5. **Operations** — Folder `05_ops/` — regional pricing worksheet, playtest branch password file.
6. **Known issues** — File `KNOWN_ISSUES.md` — P0/P1 only, repro steps, no roadmap promises.
7. **Hashes** — File `SHA256SUMS.txt` — covers every file in `01_build/` and root manifests.
8. **Contact / escalation** — File `ESCALATION.md` — timezone coverage, response SLA, rollback owner.
Rules:
- Bullet number must equal folder prefix (
01_,02_, …). - One bullet → one path. Never “see also folder 3 and attachments.”
- If a section is empty, remove the bullet—do not point at placeholders.
Align folder numbers with your release-evidence taxonomy so internal and partner views match.
Block C — Zip topology (what goes inside)
Top level only:
PARTNER_README.md
BUILD_RECEIPT.md
KNOWN_ISSUES.md
ESCALATION.md
SHA256SUMS.txt
MANIFEST.json
01_build/
02_handheld/
03_store/
04_ai/
05_ops/
Do not nest another zip inside unless the partner portal requires it—and then bullet 1 must say “inner archive 01_build/game_win64.zip.”
BUILD_RECEIPT minimum fields
Tie to overnight handoff discipline:
commit_fullandcommit_shortci_pipeline_urlor local build command blockartifact_filenameinside01_build/steam_depot_idor partner SKU id if applicablesigned_byhuman name + timezone
If receipt and zip name disagree on build_id, intake stops.
Block D — Hash sidecar and MANIFEST.json
SHA256SUMS.txt format (GNU style):
9f3ae2c1b4... 01_build/Riftbound.exe
a81b02e44c... MANIFEST.json
Generate on the machine that created the zip, after the zip is assembled—then verify by unpacking elsewhere.
MANIFEST.json minimal schema:
{
"game": "riftbound",
"build_id": "rc_9f3a2c1",
"uploaded_utc": "2026-05-18T14:22:00Z",
"readme_version": "2026.05.partner.v1",
"folders": ["01_build", "02_handheld", "03_store", "04_ai", "05_ops"]
}
Partners diff readme_version across resubmissions—bump it when bullets change.
Block E — Cold-open drill (15 minutes)
- Teammate who did not build the zip receives only the file + password.
- They follow README bullets 1–8 in order without Slack.
- Log first confusion as a P0 doc defect—fix naming before fixing code.
- Repeat after any RC freeze carve-out that touches folder names.
This is the same muscle as Friday Block 5 evidence maintenance—short, frequent, before intake.
T-14 vs T-3 packet variants
| Variant | When | Naming difference |
|---|---|---|
| T-14 rehearsal | Two weeks before intake | Suffix _tabletop — may include redacted keys |
| T-3 production | Seventy-two hours before lock | Suffix _prod — must match live depot |
| Hotfix | Emergency only | New build_id; never overwrite zip in portal |
Upload both README and zip for each variant; do not assume partners remember T-14 names.
Pairing with mock audit dimension 3
In the seven-dimension tabletop, dimension 3 is artifact parity—README bullets, zip tree, hashes, and BUILD_RECEIPT agree. Score it binary per upload:
- Green — Cold-open drill passed; hashes verify on second machine
- Yellow — Bullet map correct but hashes missing one auxiliary file
- Red — Any bullet points at missing path
Yellow is not shippable for Q3 production intake—only for internal tabletop.
Tooling that keeps naming honest
| Tool | Use |
|---|---|
7z or zip CLI |
Reproducible archives in CI |
sha256sum / Get-FileHash |
Sidecar generation |
jsonschema (optional) |
Validate MANIFEST.json in CI |
fd / ripgrep |
Prove README paths exist before zip |
| Spreadsheet | Track upload history with zip name column |
For save-edge cases, pair with save fuzz tooling resources when bullet 1 includes save repro attachments.
Common mistakes (and fixes)
| Mistake | Fix |
|---|---|
| README written after zip | Draft bullets first, export folders, then zip |
| Same zip name, different bytes | Bump build_id; never reuse name |
| Case-only folder duplicates | Enforce lowercase slugs in CI script |
| Marketing PDF in root | Move to 05_ops/ and add bullet |
| Loom link instead of capture folder | Export frames to 03_store/; link is supplementary only |
| Contractor used their own tree | Re-export into numbered folders; do not merge ad hoc |
Engine-specific notes (short)
Unity 6.6 LTS — Player build in 01_build/, ScriptableObject dump of Input maps in 02_handheld/ per Input preflight.
Godot 4.5 — Export presets named with build_id; web demos get separate zip channel itch_html5.
Unreal — Chunk folders stay inside 01_build/; do not split pak files across bullets without saying so.
Publisher and platform annex alignment
When diligence packets request “submission index,” paste the same eight bullets—change only channel in the zip name. Publishers compare annex README to prior uploads; drifting bullet order looks like disorganization even when art is fine.
Operating cadence with two timezones
If overnight CI produces the candidate zip:
- Morning owner renames to schema before upload—never upload contractor names.
- Append row to
release-evidence/05-operations/upload_log.csvwith zip name, uploader, portal ticket id. - Post BUILD_RECEIPT excerpt in handoff channel—one screen, not the whole tree.
Security and redaction
- Remove
.env, signing keys, and partner credentials from every folder before zip. - Redact player emails in logs; keep crash hashes.
- If redaction changes file list, regenerate
SHA256SUMS.txt—old hashes are worse than none.
When to escalate vs fix in place
Fix in place — typo in bullet path, missing hash line, wrong date in filename.
Escalate — build inside zip does not match BUILD_RECEIPT commit; AI folder empty while bullet 4 claims disclosure; handheld folder missing after Deck retest.
Escalation template lives in ESCALATION.md—include rollback owner and whether Steam depot rollback is required.
Stretch goals after baseline
- CI job fails if README paths missing
- Portal upload script reads
MANIFEST.jsonfor display title - Auto-attach tabletop score PDF from mock audit export
Do not stretch before first green cold-open.
Worked example — fictional studio, real structure
Imagine Studio Harbor shipping Tidebreak build rc_b7e21a0 to a PC partner in August 2026.
Zip name: harbor_tidebreak_partner_rc_b7e21a0_full_20260812.zip
Bullet 2 handheld folder contains:
deck_glyphs/— PNG set at required sizessteam_input/— exported VDF + default action set screenshotsmoke_log.txt— thirty-minute session, date in filename
Bullet 4 AI folder contains:
storefront_bullets.md— copy-paste from Steam adminin_game_labels/— screenshots of on-screen disclosureapi_inventory.csv— endpoint, model, data retention column
When the partner opens bullet 4, every file exists. When they hash 01_build/Tidebreak.exe, the value matches line 1 of SHA256SUMS.txt. That is the entire game of cert intake for micro-studios—make the map boringly true.
Integrating with CI (without overbuilding)
You do not need a custom portal. A pre-zip job in GitHub Actions or GitLab CI can:
- Assert numbered folders exist.
- Render
PARTNER_README.mdfrom a template with injectedbuild_id. - Run
sha256sumrecursively on01_build/. - Fail if
KNOWN_ISSUES.mdis empty whileP0label exists in issue tracker export.
Keep the job under five minutes. Long CI gates get skipped on upload night—the worst time to skip.
Sample pseudo-step:
test -f PARTNER_README.md
test -d 01_build
rg -q "01_build/" PARTNER_README.md
sha256sum 01_build/* > SHA256SUMS.txt
If your pipeline already emits content hash lockfiles, reference that artifact name in bullet 1 so partners know which Addressables catalog shipped.
Demo vs full build packets
Fest season tempts teams to upload demo and full in one zip. Split them:
| Packet | artifact token |
README difference |
|---|---|---|
| Next Fest demo | demo |
Bullet 1 points at time-limited build; bullet 3 lists demo depot id |
| Partner cert | full |
Bullet 6 lists known issues with cert scope only |
If both ship the same week, filenames must differ on artifact—not only on date. Reviewers archive zips; collisions become “which Tidebreak is this?”
Localization and regional annex bullets
When bullet 5 covers operations, include:
pricing/region_sheet.csv— currency, base price, planned discount windowslegal/age_ratings.pdf— if applicablelocalization/strings_manifest.csv— language code, file path, completion percent
Do not hide regional work in a generic misc/ folder—partners map bullets to compliance owners. Pair with regional pricing second-pass worksheets when Steam is primary.
Trailer and capture integrity
Bullet 3 should list frame numbers or timecodes for claims made in short description:
trailer_frame_claims.md
- 0:12 — co-op feature shown (build must include)
- 0:34 — biome not in demo (labelled preview in store?)
This prevents truth audit failures from reaching partner intake. Screenshots belong in 03_store/frames/, not only on Steam live.
Versioning README without chaos
When bullets change mid-quarter:
- Bump
readme_versioninMANIFEST.json - Add
CHANGELOG_PARTNER.mdwith three lines max per revision - Never edit bullets in place without version bump—partners diff archives
Example changelog entry:
2026.05.partner.v2 — Added 02_handheld after Deck autumn retest; split AI CSV columns.
Handoff email template (paste-ready)
Subject: {game} partner packet {build_id} uploaded
Body bullets:
- Zip name on portal:
{exact_zip_name} - README version:
{readme_version} - BUILD_RECEIPT commit:
{short_sha} - Known P0 count:
{n}(see KNOWN_ISSUES.md) - Escalation contact this week:
{name} ({timezone})
No attachments besides the portal link—everything must live in the zip.
Metrics you can track without inventing case studies
Track internally (do not fabricate public metrics):
- Minutes from zip complete to cold-open pass
- Count of README edits after first drill
- Resubmission count per intake window
Improvement in those three numbers is the ROI of this standard.
Relationship to operating review
Your 30-minute operating review sheet can include one row: Partner packet green? Y/N. If N, block other marketing tasks until naming passes—intake debt compounds faster than wishlist debt.
Deck Verified autumn lane attachment
When bullet 2 includes Deck work, cross-link captures with 16 free Deck testing tools so contractors know which PNG sizes and VDF exports belong in 02_handheld/. Do not dump raw Desktop dumps without labels—label each image with resolution and menu context.
Post-upload verification checklist
After portal upload completes:
- [ ] Download your own upload from portal (if allowed) and re-hash
- [ ] Ticket id recorded in
upload_log.csv - [ ] Partner auto-reply email archived in
05_ops/ - [ ] Calendar reminder for T-3 re-upload if build changes
Skipping self-download is how teams discover portal transcode or strip macOS metadata.
Key takeaways
- Partner intake in Q3 2026 punishes README ↔ zip mismatches more than missing marketing fluff.
- Use one ZIP naming schema with
build_id—banfinalandlatest. - Cap README at eight bullets, each pointing to one real path.
- Always ship BUILD_RECEIPT, SHA256SUMS.txt, and MANIFEST.json beside gameplay folders.
- Run a cold-open drill after every freeze carve-out that touches folders.
- Align numbered folders with your release-evidence taxonomy so internal and partner views match.
- Pair this standard with the seven-dimension mock audit before real upload.
- Log every upload name in
05-operations—future you will not remember portal UI labels.
FAQ
How long should PARTNER_README.md be?
Under one printed page. If you need more words, your folder structure is too deep—flatten before adding bullets.
Can we use Google Drive instead of zip?
Only as a backup link in ESCALATION.md. Primary artifact must be the zip partners archive.
What if our build is over portal size limits?
Split by artifact (_symbols.zip, _demo.zip) with separate README files—never split one logical build across ambiguous names.
Do we need separate zips for Steam and Epic?
Under the two-storefront rule, yes when compliance surfaces differ—change channel in the filename, duplicate bullets that apply to both.
How does this relate to the Q3 mock-audit resource list?
The Q3 submission intake resource roundup supplies templates; this post is the ninety-minute behavior that makes templates true on disk.
Should contractors ever upload directly?
No. They deliver into numbered folders; a single human names and zips so BUILD_RECEIPT stays authoritative.
What if partners request password-protected zips?
Put the password in ESCALATION.md and the upload ticket—never only in email. Rotate passwords per build; do not reuse fest-season passwords in cert packets.
Legal and privacy annex (when bullet 5 expands)
Some partners request GDPR, COPPA, or data processing PDFs in the same upload. Add subfolders only when contractually required:
05_ops/legal/
05_ops/privacy/
Extend bullet 5 text: “Legal and privacy PDFs under 05_ops/legal/ and 05_ops/privacy/.” If you lack counsel-reviewed PDFs, remove the bullet—empty legal folders erode trust faster than missing marketing screenshots.
For AI features, mirror Steam and Play disclosure intake rows inside 04_ai/ so bullet 4 and bullet 5 never contradict.
Resubmission discipline
When intake returns yellow or red on naming:
- Increment
readme_versionandbuild_idif bytes changed. - Write
RESUBMISSION_NOTE.mdat zip root—three lines: what failed, what changed, what to re-check. - Do not delete prior portal uploads from your log—append rows in
upload_log.csv.
Partners compare resubmissions to prior archives. Silent overwrites without version bumps look like hiding churn.
Beginner quick start (first packet ever)
If you have never shipped a partner zip:
- Copy the eight-bullet template into
PARTNER_README.md. - Create empty numbered folders—even before files land.
- Paste your latest green build into
01_build/only. - Write one line in
KNOWN_ISSUES.mdyou are willing to fix or disclose. - Zip, unpack on a laptop you do not develop on, and fix every README lie you find.
Success check: a friend opens the zip and finds 01_build without asking you questions.
Conclusion
Partner upload ZIP naming and a README bullet map are cheap insurance before Q3 2026 windows compress. You already built the hard parts—gameplay, captures, disclosures. This ninety-minute standard makes the packet as legible as the build.
Run it once this week, log the cold-open result in release-evidence/05-operations/, and reuse the same skeleton when October fest traffic arrives. Partners will still find bugs—but they will stop finding your folder three under a name you never meant to ship.