Phase 0 — Foundations
Everything in this phase exists so that every hour collected afterward is sellable. Nothing gathered under a weak posture can be retroactively cleaned — a buyer's counsel (or a regulator) audits the state at capture time. The Risk & Compliance non-negotiables are the checklist; this page sequences and expands them. Steps 0.1–0.7 can run in parallel; 0.8 depends on 0.4.
Revised 2026-07-08 against built reality (alignment review + vault): each step below now states what exists today vs what is new work. Two corpus-wide caveats inherited from the review: recordings from the bug-16 window (consents edge functions failed silently, 3.0.3/3.0.4 era) cannot be assumed consented — exclude or re-consent; and the existing corpus's game-audio track may contain incoming voice chat (bug-14 / EC-113) — quarantine pending counsel.
0.1 Lock the capture spec
Why. Buyers price alignment precision, not fidelity (Market & Buyers): WHAM shipped on 300×180 @ 10 Hz; VPT on 360p @ 20 Hz. Meanwhile consistency is what makes data trainable — VPT locked contractor settings for exactly this reason. Every spec change fragments the corpus.
What exists today (per pure-v2
and the recording-requirements runbook — verify, don't re-derive): WGC window
capture (non-injecting) → NVENC H.264 → MP4 with WASAPI loopback game audio;
raw K/M/controller events already logged to _input.csv (scancodes/VK,
deltas, controller state — "store raw events" is already true); input
timestamps are wall-clock (system_clock), the frame anchor is the
encoded-frame counter, and sync is logical (shared session anchors,
validated only at a 5s/15% duration tolerance); "60 fps" muxed is
wall-clock-anchored CFR with duplicate padding — _meta.json's
fps_breakdown (real_avg, cfr_ratio) is the honest quality signal;
resolution is per-lane (quest lane enforces ≥1080p 16:9/16:10; free-play
records native 640×360–32:9).
The spec (new work is the delta, not the capture):
- Video: 1080p60 masters (quest-lane enforcement already provides this; 720p30 derived working copies for training — downsampling is cheap, upsampling impossible; the 3D-reconstruction leg needs the masters). Spec binds the quest/sale lane; free-play remains native-resolution and is tiered accordingly in curation.
- Inputs: the raw event stream as-is, plus clock discipline as new
client work: monotonic-at-source stamping (note: interacts with the
validator's block-on-decreasing-timestamps rule — coordinate), pressure-
dropped input rows surfaced as a per-clip metric, and
INPUT_UNAVAILABLEpromoted from warn-and-proceed to a hard block for sale-tier capture. - Sync verification per session: a synthetic-input marker through the
existing CSV path (the overlay-rendered flash is infeasible — WGC records
the game window only; the overlay never appears in frames). Measured sync
error lands in the already-reserved
eval.metricsnull slot (multi_pov_clock_skew_msprecedent) — measure current alignment before committing the ≤5 ms vs ≤10 ms target. - Audio: mic-only, incoming voice never captured (wiretap/CIPA —
Risk & Compliance #4). Reality check: the
loopback game-audio track currently contains game-mixed voice chat
(EC-113, open) and on default endpoints can capture Discord/system audio
(bug-14, unfixed) — and
Legal/EC Data Strategy.mdalready ordered loopback "disabled entirely pending redesign." Per-process audio isolation or track-drop is therefore Phase-0 engineering, not a policy line. The shipped mic tier uploads transcripts only (EC-263/356, published promise) — the voice product leans transcripts-as-intent accordingly; mic tier is NVIDIA-gated (supply constraint). - Metadata: game, lane, hardware tier, quest/lobby attribution (all
existing spine fields) + new:
capture_spec_version, consent-version reference, measured sync metric. - Governance: versioned spec; changes require an ADR;
capture_spec_versionrecorded per clip.
Done when the quest lane enforces the spec, the synthetic-input sync check runs per session with its metric recorded, audio isolation (or track-drop) ships, and a sample data card renders spec + measured alignment.
Pitfalls. Controller/KBM remapping software breaking event capture; variable-refresh capture producing non-uniform frame timing; game audio bleeding into the mic channel on speaker setups (push-to-talk or headset detection for the voice tier); NTP wall-clock steps killing sessions under the current validator rule.
0.2 18+ KYC-grade age verification
Why. The contributor demographic skews under-18; COPPA now, COPPA 2.0 (Senate-passed, pending House) imminently; contracts with minors are voidable; "paying kids for data" is the kill-shot headline (Risk & Compliance #3 — one of the two most plausible deal-breakers).
What exists today: self-attestation only — age_confirmation is a
checkbox with best-effort (nullable) country, and the contributor portal's
data-minimization boundary currently prohibits collecting DOB/identity
documents pre-recorder (compliance-boundaries.md). The portal already has
the escape hatch this plan needs ("collect that data in a later
purpose-specific flow and record why") and an own-name SEPA-IBAN rail with
mod-97 validation.
How. Age assurance at payout eligibility, not signup friction —
anchored in the portal's purpose-specific-flow clause: payment-rail KYC
carries most of the load; add a document/liveness vendor check where the rail
is weak. Amend compliance-boundaries.md in the same change — otherwise
this step violates standing policy. Record assurance method + date in the
contributor record. Existing under-verified accounts: grandfather for play,
block for payout and data sale until verified.
Done when no payout can reach an unverified contributor and no unverified contributor's data can enter a sellable dataset.
Pitfalls. A checkbox is not a mitigation. Account sharing (verified adult, minor plays) — mitigate with session-level heuristics (input cadence, schedule patterns) and contributor attestation in the consent flow; document the program so it reads as diligence, not willful blindness.
0.3 Consent v-next
Why. Lehrman v. Lovo: paid contributors + vague downstream-AI disclosure = surviving state-law claims. Consent scope must cover what we actually sell, and re-consent must be possible when use classes change (Risk & Compliance #7).
What exists today: six consent types — age_confirmation, tos,
privacy, eula, edc_gameplay, edc_voice (optional, withdrawable) —
with versioning, material/cosmetic rotation, an append-only audit log, and a
shipped non-dismissible re-consent overlay
(consent-versioning). Missing:
AI-training, sale/resale, and model-class scopes; and a per-clip consent
reference (recording_sessions has no consent_version column — new
schema, not just flow). The change path is known: new consent_type values →
CHECK-constraint migration plus updates to both consents edge functions
(the edc_voice backfill's atomic-batch rejection is the documented pitfall) →
material rotation triggers the overlay.
How. Add the missing scopes as separately-toggled grants: AI-training use; sale/resale to third parties; model classes (world models / agents / robotics); voice remains the shipped double-opt-in (EC Data Strategy: "opt-in within opt-in… never processed for speaker identification"). Contractual ban on buyer voiceprint derivation travels with the data. SAG-AFTRA 2025 IMA as the drafting benchmark. Withdrawal: prospective always; retroactive redaction honored for not-yet-delivered data, with delivered-data handling disclosed truthfully. Longitudinal linkage is its own scope (cross-game history is a distinct product dimension).
Done when counsel has reviewed; the new scopes are live through both edge
functions; consent_version is recorded per session; the re-consent flow has
been exercised end-to-end in staging; and the bug-16-era exclusion list is
implemented in the ledger.
Pitfalls. Bundled consent (one big checkbox) — courts and journalists both unbundle it for you, unfavorably. Consent drift: quests that elicit new data types (e.g. narration) silently expanding scope — the quest compiler must check quest requirements against the contributor's consent version.
0.4 Title whitelist + EULA audit
Why. Frontier-style EULA clauses ban ML/AI use outright; Valve's video policy bans selling videos; Nintendo enforces. Capturing first and checking later poisons the corpus (Risk & Compliance #1–2).
How. Per enabled title (start from the live catalogue,
res/games.json):
- Snapshot the EULA/ToS + creator/content policy with a date and archive copy.
- Classify: green (silent or permissive on recording + no AI clause), amber (permissive for streaming, silent on data sale — usable for internal R&D and service work, not footage sale), red (AI/ML clause, anti-harvesting clause, Nintendo, kernel-anti-cheat conflicts) — hard blacklist.
- Record the classification, reviewer, and date; re-audit on a 6-month timer and on publisher EULA-change announcements.
- Note per title: ML-license availability (Blizzard SC2 precedent), anti-cheat stack (feeds 0.7), structured-state access (feeds benchmark design).
Done when every enabled title has a dated clearance record and risk tier, and the capture client refuses sale-tier capture on non-green titles.
Pitfalls. Treating "publisher hasn't enforced" as "green" — the enforcement equilibrium can flip once publishers sell their own data. Storefront-level policies (Valve) applying across otherwise-green titles for sale purposes.
0.5 Provenance ledger v1
Why. EU AI Act Art. 53 makes buyers publish training-content summaries — whatever we sell must survive public disclosure. Provenance is a paid feature, not overhead (Market & Buyers); it is also the withdrawal/redaction mechanism (Ego4D-grade hygiene).
What exists today — extend, don't rebuild: the recording spine already
gives per-session identity (session_id 1:1 disk↔telemetry↔S3), lane and
quest/lobby attribution, hardware snapshots, and client versions; pipeline
lineage lives in pipeline_runs; and the data_product.json envelope is
the manifest (source_refs, pipeline_version, dataset_id, eval metrics with
reserved null slots — the sync metric has a slot waiting). See
pipeline outputs.
How (the genuinely new fields): consent-version reference +
age-assurance flag; whitelist tier at capture time (enum + dated
per-title clearance table from the B-01 audit); capture_spec_version +
measured sync value; contributor pseudonymization for exports (products
currently trace to user_id); withdrawal propagation. Delivery records
(which dataset/buyer) go in a separate delivery ledger keyed by
dataset_id — pipeline-outputs' invariant is that no commercial state
lives on the product envelope, and that rule is right. Bug-16-era sessions
carry an unverified_consent flag excluding them from sellable tiers.
Done when a sample export carries a manifest an auditor can walk from any clip back to a consenting, verified adult on a cleared title.
Pitfalls. Building it as a reporting afterthought instead of the pipeline spine — retrofitting provenance is the single most expensive compliance mistake available to us.
0.6 PII pipeline v1
Why. Buyers want PII-stripped data, not raw (Quests as a Data Product §0); on-screen usernames, chat panes, and friend lists are personal data under GDPR.
How. Detection + blur/strip stages for: player usernames (own + others), chat windows, friend/party lists, on-screen personal comms; quest-authoring rule enforced by the compiler: never elicit on-screen PII (no "open your profile" quests). Spot-check QA at a defined sampling rate with error budget; voice tier additionally screened for spoken PII.
Done when the pass runs in the processing pipeline with measured precision/recall on a labeled sample, and QA sampling is scheduled.
Pitfalls. In-game text variety across 20 titles — per-title detection templates; start with the Phase-1 set only. Mic audio capturing the contributor's own full name habitually (streamer behavior) — flag, don't assume.
0.7 Anti-cheat posture review
Why. Kernel anti-cheats treat input-hooking capture as keylogger-shaped; contributor bans destroy trust and supply; a publisher can blacklist the client silently (Risk & Compliance #6).
Status: dossiers RETURNED 2026-07-08
(research/world-model-data-flywheel/0.7-anticheat-dossiers-2026-07-07.md):
all four Phase-1 titles clear for our non-injecting architecture (documented
in pure-v2 — "non-injecting,
anti-cheat-safe" WGC + raw-input listeners); Elden Ring online last, after
the burner protocol; a reusable 14-item vetting checklist now exists.
Cross-check against the vault's prior per-engine work
(deep-researches-ale/capture_engine_ui_suppression_playbook.md — its
anti-cheat matrix reached the same Valorant-not-viable verdict independently).
Remaining how: send the drafted EOS Help ticket for written EAC
acknowledgment (human-unblockers-2026-07-08.md — passive input listening is
undocumented-safe, not documented-safe); add the overlay mechanism to the
dossier scope (Electron external window vs legacy D2D — the one surface the
security docs don't yet cover); publish the contributor ban-indemnity policy.
Done when the EOS ticket is filed, the overlay is documented in the security boundary docs, and the burner protocol has passed on Elden Ring before any ER online capture.
Pitfalls. Vanguard-class titles (Valorant, LoL) — likely permanent exclusions from client-side capture; don't burn goodwill trying.
0.8 Pick the Phase-1 title set
Why. The Founding Experiment and IDM track need a frozen, defensible substrate. Selection criteria encode the strategy: KBM precision and voice-intent are the assets reconstruction can't touch (Competition & Moat); first-person, physics-heavy, continuous control keeps Leg-B optionality free.
Post-B-01 reality (supersedes the original "green-tier" framing): the audit returned zero green titles — the FPS/driving domains the data-domain table prized (CS2, GTA V, Valorant) are RED and are now partnership targets, not capture targets. The workable set is the AMBER titles under an internal-R&D/services posture: Minecraft Java (POC testbed — note it needs recorder/detector enablement, being outside every supported launcher lane), Minecraft Bedrock, Baldur's Gate 3, Elden Ring (offline first). This set also collides with the live catalog (Valorant/Overwatch/CS enabled today, all RED) — the catalog needs an EULA-tier column and one of the two "Phase 1"s needs renaming (team decision, alignment review §2).
How. Freeze the AMBER set for the experiment's duration; per-title rationale records the EULA tier, anti-cheat verdict, and which probes/eval slices the title serves. Quest authoring proceeds against it. Every eventual RED-title ambition routes through Products & Publishers.
Done when the set is documented with per-title rationale and clearance tier, the catalog carries the EULA-tier column, and quest authoring begins.
Pitfalls. Letting fleet popularity pick the set (that optimizes engagement, not evidence); adding titles mid-experiment (breaks the arms); naming capture titles on any public surface (activity-not-title rule, Risk & Compliance #11).
Phase 0 gate
An auditor — or a buyer's counsel — could trace any clip to a consenting, age-verified adult, on a cleared title, under a stated consent and capture version, with withdrawal honored. Until that sentence is true, Phase 1 collection is R&D-only and nothing is represented as sellable.