Steam Content Descriptors and Demo Hour-One Parity - Next Fest 2026 Checklist for Micro-Studios
Your store page says Strong Language and Online Interactions. Your fest demo has neither voice chat nor profanity in hour one. Parents and partners do not debate whether you "intend" full-game features—they read descriptor rows as promises about what installs today. Under intake compression, descriptor mismatches sit beside store-demo mismatch screenshots faster than performance lies.
This Process & Workflow checklist maps every Steam content descriptor and feature flag you enable to Next Fest demo hour-one proof. It extends the short About bullet descriptor note into a full audit. Pair with FAQ line parity for player-facing Q&A. Anchor policy fields to Steamworks mature content documentation. No invented studios or metrics.
Time to read: ~35 minutes. Time to run first descriptor audit: ~2 hours with cold install and capture notes.
Why this matters now (May–October 2026)
- Descriptors are pre-install trust — Players filter by mature content before download size.
- Fest demos skew young traffic — Next Fest browsing spikes family accounts; over-labeling and under-labeling both hurt.
- Full-game flags on demo SKUs — Teams copy main-game descriptor sets onto fest builds without hour-one verification.
- About and FAQ cite themes — Metadata sprint fails if descriptors contradict bullets.
- May is the correction window — October locks policy rows; hotfixes under fest traffic draw partner attention.
Direct answer: Export live descriptor configuration, build descriptor-proof.md (one row per enabled flag), mark pass/fail against cold-install hour one on current build_id, remove or relabel failures, and diff weekly with Wednesday store ritual.
Who this is for
| Audience | Outcome |
|---|---|
| Producer | Policy rows match live demo |
| Engineer | Sign hour-one captures per flag |
| Writer | About/FAQ themes align with descriptors |
| Solo dev | Smaller table—still required |
Prerequisites
| Prerequisite | Why |
|---|---|
Fest demo build_id in BUILD_RECEIPT |
Anchors proof |
| Cold install on floor hardware | Hour-one surface |
| Screenshot or short clip capture ability | Evidence for partners |
release-evidence/03-store/descriptors/ folder |
One audit home |
| About + FAQ drafts in git | Triangle diff |
Descriptor proof table (core artifact)
release-evidence/03-store/descriptors/descriptor-proof.md:
| Descriptor / feature flag | Enabled on store | Hour-one observation | Pass/Fail | Action |
|---|---|---|---|---|
| Strong Language | Yes | No voiced dialogue in demo | Fail | Disable until VO ships |
| Online Interactions | Yes | Solo only, no chat UI | Fail | Disable for fest demo |
| Frequent Violence | Yes | Combat in hour one | Pass | Keep |
| Sexual Content | No | N/A | Pass | Keep off |
| Uses AI-generated content | Yes | Disclosure row matches runtime | Pass | Link AI disclosure |
Pass rule: If flag is enabled, engineer observes the described behavior in fest demo hour one without debug cheats—or captures explicit "not in demo" labeling on store copy that matches disabled state.
Fail rule: Disable flag for fest period, or narrow demo content, or rewrite About/FAQ to stop claiming the theme—never leave enabled flag with absent behavior.
Descriptor categories to audit (complete pass)
Mature content descriptors
Violence intensity, language, sexual content, nudity, drugs. Each enabled row needs combat/dialogue capture notes or timestamp in captures/.
Feature / interaction flags
Online interactions, user-generated content, in-app purchases (if applicable to demo), competitive multiplayer. Cross-check tag coherence—Online Co-Op tag with disabled online interaction flag is a triangle fail.
Accessibility and safety
Photosensitive seizure warning, mature themes listed in About. If About mentions photosensitivity, demo must show warning screen in hour one or About must say warning ships in full game only (FULL GAME labeled).
AI and generative claims
Steam Play/App Store AI disclosure checklist plus descriptor row Uses AI-generated content must match runtime. Prompt registry freeze if gameplay AI changed same month.
Triangle diff (descriptor leg)
| Vertex | Descriptor check |
|---|---|
| About bullets | No mature theme bullet without matching enabled flag |
| FAQ rows | No "online community" FAQ if online interactions disabled |
| Tags | No social tags without interaction flags |
| Trailer | No mature beat without descriptor or cut frame |
Add descriptor column to metadata sprint Day 7 integration.
Ninety-minute first audit
| Step | Minutes | Output |
|---|---|---|
| Export descriptor config screenshot | 10 | PNG dated |
| List enabled flags in proof table | 15 | Skeleton |
| Cold install + hour-one play | 35 | Capture notes |
| Engineer pass/fail | 15 | Complete table |
| Writer sync About/FAQ | 10 | Git diff |
| Producer sign-off | 5 | signoff.txt |
BUILD_RECEIPT extension
"content_descriptors_locked": false,
"descriptor_proof_path": "release-evidence/03-store/descriptors/descriptor-proof.md",
"descriptor_last_audit_utc": "2026-05-20T16:00:00Z"
Lock only when table green and captures archived.
High-risk mismatch patterns
| Pattern | Risk |
|---|---|
| Full-game descriptor set on demo | Parents see violence not in zip |
| Disabled flag but About says "mature narrative" | Policy question |
| Online interactions for solo demo | Refund + partner flag |
| Missing photosensitivity warning in demo | Accessibility liability |
| AI flag off but FAQ claims generative voices | AI review fail |
Pairing with store metadata cluster
| Checklist | Link |
|---|---|
| Short description | No mature adjectives without flags |
| Trailer audit | Mature frames need descriptors |
| Event posts | Event art tone matches flags |
| Branch naming | Demo branch promotes audited build |
Wednesday ritual row
Add Descriptors to Wednesday diff: screenshot Steamworks descriptor page vs git descriptors-approved.json (or your export file)—five minutes after FAQ export.
Publisher diligence
Content descriptor audit
<date>— all enabled flags verified in fest demo hour one; captures inrelease-evidence/03-store/descriptors/captures/;build_id<id>.
Supports publisher diligence packets.
Red-team questions
- "Why does the store warn about online interactions when I cannot chat?"
- "Is the violence in the trailer in the demo?"
- "You claim AI content—where is the disclosure?"
- "Photosensitive—where is the warning screen?"
- "Descriptor says drugs—where in hour one?"
Common mistakes (ten)
- Copying main-game descriptors at demo launch.
- Treating descriptors as legal-only—not player-facing.
- No engineer sign-off.
- About theme bullets without flags.
- Enabling flags "for full game later."
- Skipping captures.
- Ignoring trailer mature frames.
- No Wednesday diff for policy rows.
- October enable without re-audit.
- AI disclosure drift after descriptor lock.
Worked example (anonymous)
Before: Online Interactions + Strong Language enabled; demo solo with text-only UI.
Audit: Both rows fail hour one.
Fix: Disabled flags; About bullet rewritten; FAQ row 3 updated; trailer cut for language sting.
Result: Mock audit dimension 7 green; ads unpaused.
Engineer ~2h; writer ~2h; producer ~30m.
Post-fest maintenance
Wednesday descriptor screenshot; Friday Block 5 row; re-audit after any content patch that adds combat, dialogue, or social UI.
Evidence folder layout
release-evidence/03-store/descriptors/
README.md
descriptor-proof.md
descriptors-approved.json
steamworks-descriptors-YYYY-MM-DD.png
captures/
hour-one-violence-clip-notes.md
hour-one-dialogue-notes.md
photosensitivity-screen.png
engineer-signoff.txt
producer-signoff.txt
Store under release-evidence taxonomy beside FAQ and About exports so partners open one folder.
Sample proof rows (copy structure)
Row — Online Interactions:
| Field | Value |
|---|---|
| Flag | Online Interactions (User Generated Content) |
| Enabled | Yes |
| Hour-one observation | No chat UI, no lobby, solo progression only |
| Pass/Fail | Fail |
| Action | Disable flag before fest; add FAQ row "DEMO: no online features" |
Row — Frequent Violence:
| Field | Value |
|---|---|
| Flag | Frequent Violence |
| Enabled | Yes |
| Hour-one observation | Combat encounters with blood VFX in first 20 minutes |
| Pass/Fail | Pass |
| Action | Keep; ensure trailer frames with higher gore also flagged |
Row — Uses AI-generated content:
| Field | Value |
|---|---|
| Flag | Uses AI-generated content |
| Enabled | Yes |
| Hour-one observation | Procedural voice lines labeled in credits; disclosure bullet on store |
| Pass/Fail | Pass |
| Action | Attach AI disclosure challenge annex |
Under-labeling vs over-labeling
| Mistake | Player impact | Partner impact |
|---|---|---|
| Over-label | Scares away wishlists | Looks careless, not malicious |
| Under-label | Refunds, family anger | Fast policy questions |
| Drift after patch | Surprise mature content | Yellow on mismatch |
Fest demos should neither scare with full-game flags nor hide combat you ship in hour one. Target tight alignment, not maximum or minimum checkbox count.
Engine and content pipeline notes
| Engine | Descriptor risk |
|---|---|
| Unity | Addressables load mature scenes not in demo path but flags copied from main |
| Godot | Export includes unused social scenes in project metadata reviews |
| Shared | VO banks from main game referenced in demo by mistake |
Run demo build identity pass the same week—wrong depot can ship main-game assets while descriptors still describe full game.
Trailer and screenshot coupling
Mature frames in trailer audit must map to enabled descriptors. If trailer shows drug use but flag off, either enable with demo proof or cut frame. Screenshot safe zones gate five beat sheet should not show gore-heavy stills when violence descriptor disabled.
Specs and support macros
Spec honesty FAQ sometimes mentions parental controls—ensure macros do not promise account-level filters your demo does not implement. Link crash-log challenge tickets with build_id when players report "unexpected mature content."
validate-packet optional guards
Extend validate-packet:
descriptor-proof.mdexists- Zero
Failrows (case-sensitive) descriptors-approved.jsonmatches exported screenshot hash- If
Online Interactionsenabled in JSON, proof table must show pass row
Exit non-zero before partner ZIP upload.
Team RACI
| Task | Producer | Engineer | Writer |
|---|---|---|---|
| Export descriptor config | R | C | I |
| Hour-one captures | C | R | I |
| Proof table | C | R | C |
| About/FAQ sync | A | I | R |
| Promotion lock | A | C | I |
R = responsible, A = approves, C = consulted, I = informed.
Comparison to reactive recovery
| Mode | Cost |
|---|---|
| This checklist | ~2 hours seasonal |
| Store-demo mismatch 48h | Weekend |
| Policy escalation | Unbounded |
Descriptor lies often appear in refund text verbatim—fix before ads per fest marketing cap.
Mock audit dimension 7 hook
Tabletop seven dimensions should open descriptor-proof.md and ask: "Show me hour-one evidence for the most severe enabled flag." Fail tabletop if captures missing.
Two-storefront and itch HTML5
Two-storefront rule requires separate descriptor review for browser demos—itch pages rarely expose Steam descriptor UI but may show unfiltered GIFs. Align itch embed maturity with Steam flags or label itch as developer preview not fest demo.
Regional and platform annex
Console and mobile SKUs may use different rating boards. Steam descriptor audit does not replace ESRB/PEGI submissions—add annex rows in descriptor-proof.md referencing external ratings IDs when partners ask cross-platform questions.
Integration with 5-day metadata freeze
Assign descriptors to Day 4 or 5 in 5-day metadata freeze so policy rows freeze before October creative lock.
Beginner path
- Screenshot current Steamworks descriptor page.
- Cold install fest demo on non-dev account.
- Play 60 minutes noting violence, language, social UI, warnings.
- Fill proof table honestly.
- Disable fails or cut content.
- Update About/FAQ same day.
- Archive captures; update BUILD_RECEIPT.
First pass ~3 hours; ~30 minutes after content-only patches.
Ads and UTM freeze
Do not run new UTM experiments highlighting "online multiplayer" while online interaction flags are disabled for demo—landing copy and descriptors must match.
Asia–EU handoff
Asia–EU handoff must not toggle descriptor flags without updating descriptor-proof.md—morning EU review starts with descriptor screenshot diff.
Operating review cadence
Four Friday five-block review Block 3 (store): monthly descriptor screenshot even if no promotion—flags can change in Steamworks without a new build.
Glossary
| Term | Meaning |
|---|---|
| Content descriptor | Steamworks mature/feature flag shown on store |
| Hour one | First 60 minutes cold install |
| Capture | Screenshot, clip note, or log proving observation |
| Triangle diff | Cross-check vs About, FAQ, tags, trailer |
| Lock | content_descriptors_locked true in receipt |
When to re-audit descriptors only
| Trigger | Action |
|---|---|
| New combat or dialogue systems | Full table |
| Social UI added to demo | Online interaction rows |
| VO pass lands | Language rows |
| Trailer re-cut | Violence + frame table |
| Yellow on store-demo mismatch | Descriptors + FAQ + About |
| Tag drift sprint | Verify social tags vs flags |
Localization of mature themes
Localization QA tools apply to translated About bullets mentioning horror or romance—German copy may imply mature themes English omits. Each locale row in proof table gets an annex line: translator confirms theme words match enabled flags.
DLC and cosmetic anchors
DLC anchor pages sometimes show separate descriptor sets—fest demo audit covers primary app players install from fest funnel. If DLC page is linked from demo menu, add proof rows for that SKU too.
Press and curator keys
Reviewers install under same descriptor stack as public demo. Press README should list enabled flags and attach capture folder—prevents review quotes claiming "unexpected gore" when flags were accurate but reviewer skipped hour one.
Hash and binary promotion coupling
After cold-hash week, re-run descriptor audit if promotion changed gameplay assets—even when store copy unchanged. Binary swaps can add combat without writer noticing.
Intake compression talking points
Partners under 72-hour windows ask "does the demo match the store page?" Open descriptor-proof.md + one capture—answer in minutes.
Privacy and data descriptors
If demo collects analytics or account tokens, separate from mature content but still belongs in compliance folder—cross-link privacy policy templates when FAQ mentions data collection. Do not conflate GDPR docs with violence flags—same folder, separate proof files.
October freeze rules
September: lock enabled descriptor set. October: no new flags unless demo content ships same week with captures. Typos in About that imply new mature themes still require writer fix even if flags frozen.
Additional common mistakes (five)
- Assuming ESRB letter replaces Steam descriptor audit.
- Letting community moderators promise features descriptors disallow.
- Ignoring branch naming when promoting main build with different mature content.
- Skipping operating review monthly screenshot.
- Treating photosensitivity as "only if epileptic players complain."
Schedule descriptor audit the week after first fest demo promotion—policy rows copied from main game are the most common silent fail in May audits.
Snippet-friendly answers (search intent)
Do Steam content descriptors apply to demos?
Yes. Players read the store page descriptor list before installing the fest demo build. Enabled flags are promises about what the installed zip can show in the first session.
How long does a first descriptor audit take?
About two hours with cold install, capture notes, and syncing About and FAQ. Weekly Wednesday screenshot diffs take roughly five minutes once the proof table exists.
What is the fastest fix when a flag fails hour one?
Disable the flag in Steamworks for the fest period, or remove the gameplay/content that justified the flag, then update FAQ and About the same day so textual copy matches policy rows.
Key takeaways
- Content descriptors are install-time promises—audit like FAQ rows.
descriptor-proof.mdwith hour-one captures is the core artifact.- Disable flags not observable in fest demo hour one.
- Triangle-diff descriptors against About, FAQ, tags, trailer.
- Extend BUILD_RECEIPT with lock field.
- May audits beat October policy emergencies.
- Pair with AI disclosure and accessibility bullets.
- Cheaper than 48-hour mismatch recovery.
- Re-audit affected rows after gameplay patches—not only copy patches.
- Press kits must list enabled flags with capture paths.
- Separate privacy proof files from mature-content captures.
- Monthly operating-review screenshot even without promotions.
- Descriptor rows deserve the same promotion discipline as
build_id.
FAQ
Do descriptors apply to demo depots only?
Players experience your store page descriptor set for the app—they expect the installed demo to match.
Can we enable flags for full game while demo is mild?
Disable for fest period or label store copy FULL GAME vs DEMO consistently.
What about regional ratings?
Add annex rows per territory if you maintain separate compliance docs.
LLM-generated About mentioning violence?
Run FAQ LLM Gate E then descriptor table.
October policy?
Freeze enabled set; changes require full re-audit.
How does this relate to wishlist truth audit?
Truth audit week should include a descriptor day—do not skip as "legal only."
What if our demo is intentionally mild but full game is mature?
Disable mature flags for fest marketing period; use About FULL GAME section for future themes with clear DEMO boundary in first paragraph.
Conclusion
Descriptors look like compliance checkboxes—they behave like marketing claims parents and partners treat as fact. A fest demo that installs under a false mature-content or online-interaction stack burns trust faster than a blurry capsule.
Run the proof table in May. Capture hour one. Disable what the demo cannot show. Your metadata sprint finishes stronger when policy rows tell the same truth as bullets, FAQ, and tags.
When demo patch notes mention new combat or voice lines, re-open only the affected descriptor rows—partial re-audit beats assuming policy metadata still matches after gameplay patches.
Open Steamworks descriptors tonight. Cold install tomorrow. One honest row at a time. Archive the capture that proves your most severe enabled flag—partners should never ask twice. Treat descriptor rows with the same promotion discipline you give build_id strings.