{"schema_version":"GS-CompInt-2026","title":"Open Standard for Gaming Competitive-Intelligence Outcome Exports","status":"published","license":"Open. Any vendor or studio may produce, consume, or validate conforming exports without permission or fee.","spec":"https://metriqal.se/spec/gs-compint-2026","validator":{"reference":"scripts/validate-outcome.ts","run":"npx tsx scripts/validate-outcome.ts <export.json> [--json]","exit_codes":{"0":"conforms and all outcomes resolved lift","1":"schema violation or malformed input","2":"conforms but one or more outcomes insufficient_signal/regress"}},"top_level_fields":{"schema_version":{"type":"string","required":true,"note":"MUST equal \"GS-CompInt-2026\""},"exported_at":{"type":"string","required":true,"note":"ISO-8601 timestamp"},"outcomes":{"type":"array","required":false,"note":"Causal outcome records; absent or [] means nothing to validate"}},"outcome_record":{"action_type":{"type":"string","required":true,"constraint":"non-empty"},"pre_retention":{"type":"number","required":true,"constraint":"finite; 7-day baseline retention % before action"},"measured_retention_delta":{"type":"number","required":true,"constraint":"finite; observed retention % change after action"},"cohort_size":{"type":"number","required":true,"constraint":">= 2; player count at recommendation time"}},"semantic_conventions":{"platform_provider":{"type":"string","permitted":["steam","psn","xbox","nintendo","epic"],"normative":"MUST use one of the permitted values; vendors MUST NOT substitute synonyms or prefixed variants"},"metric_latency_tier":{"type":"string","permitted":["realtime","hourly","daily"],"normative":"realtime = T+5m max lag; daily = T+26h max"},"concurrency_count":{"type":"uint64","normative":"MUST be 0 rather than absent when the platform reports zero players"},"retention_delta":{"type":"float32","format":"signed percentage-point change, two decimal places","normative":"Producers MUST annotate retention_window_days (7 or 30)"},"vulnerability_score":{"type":"decimal","range":"0.00–1.00","normative":"Producers MUST include vulnerability_model_version string"}},"security":{"auth":"HMAC-SHA256 portal-key; strict tenant isolation; 401 on missing token, 403 on cross-tenant attempt","selective_disclosure":"developer_velocity events SHOULD be locally parsed and category-tokenised before export; raw commit messages MUST NOT appear in conforming exports","pii":"outcome records MUST contain only cohort-level aggregates; per-player rows MUST NOT appear; any player_id field causes exit code 1"},"conformance_program":{"badge":"GS-CompInt Certified Conformant","self_attest":true,"steps":["Run validator: npx tsx scripts/validate-outcome.ts export.json --json","Confirm exit 0 and zero schema violations","Submit report + producer link via discovery endpoint"]},"validation":{"test":"Two-proportion z-test (binomial)","applies_to":"Retention is a proportion (retained ÷ cohort). Continuous metrics (revenue/player, playtime) use Welch's t-test instead.","why":"A proportion's variance is structurally p(1−p)/n. Applying Welch's t-test to retention (e.g. via a cohort-scaled revenue proxy) makes the statistic grow with √cohort, manufacturing significance for trivial effects at large cohorts. The two-proportion z-test uses the binomial variance and stays calibrated.","min_cohort_per_arm":30,"alpha":0.05,"note":"observed_effect is an internal before/after effect-size estimate — directional, not causal proof unless a holdout/geo-split was run.","observed_effect":{"insufficient_signal":"p_value >= 0.05 (or cohort below the minimum)","lift":"p_value < 0.05 and effect > 0","regress":"p_value < 0.05 and effect < 0","neutral":"p_value < 0.05 and effect = 0"}}}