Open Standard

GS-CompInt-2026

Open Standard for Gaming Competitive-Intelligence Outcome Exports. Defines a portable, vendor-neutral format for competitor incidents, studio outcomes, correlation signals, and playbook definitions — with a runnable validator so any third party can independently re-derive statistical significance.

Version
GS-CompInt-2026
Status
Published
Editor
Metriqal
License: Open. Any vendor or studio may produce, consume, or validate conforming exports without permission or fee.
Contents
  1. Purpose
  2. Conformance & normative language
  3. Semantic conventions
  4. Top-level schema
  5. Outcome record
  6. Validation algorithm
  7. Reference validator
  8. Security model
  9. Discovery endpoint
  10. Versioning
  11. Non-goals
  12. Conformance program
  13. Example

1. Purpose

GS-CompInt-2026 is an open standard that lets any game studio independently verify whether competitive-intelligence recommendations actually worked, using a portable JSON export and a runnable statistical validator.

Competitive-intelligence platforms claim their recommendations work. Studios have no way to check.

GS-CompInt-2026 defines a portable JSON format for exporting the causal outcomes of competitive-intelligence recommendations, plus a runnable validator that re-derives statistical significance independently. A studio can export its data from any conforming platform, run the validator on its own machine, and confirm whether recommended actions actually moved the needle — with no trust in the vendor required.

This is the standardisation layer for open causal analysis in the gaming industry: outcomes are verifiable by anyone, not asserted by the platform.

2. Conformance & normative language

An export conforms to GS-CompInt-2026 when it is a single UTF-8 JSON object with schema_version equal to "GS-CompInt-2026", a valid exported_at ISO-8601 timestamp, and cohort-level-only outcome records.

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in IETF BCP 14 (RFC 2119 / RFC 8174) when, and only when, they appear in all-uppercase as shown here.

An export conforms to GS-CompInt-2026 when:

  1. It is a single UTF-8 JSON object.
  2. schema_version MUST equal the exact string "GS-CompInt-2026".
  3. exported_at MUST be a valid ISO-8601 timestamp representing UTC epoch seconds of data generation.
  4. Every element of outcomes (if present) MUST satisfy §5.
  5. Outcome records MUST NOT contain per-player rows or personally identifiable information — only cohort-level aggregates.

A validator conforms when, given any export, it (a) rejects non-conforming inputs with exit code 1, and (b) reproduces the causal verdict in §6 for every outcome. The reference validator is scripts/validate-outcome.ts.

A producer conforms when every export it emits conforms. Producers MAY include additional fields; validators MUST ignore fields they do not recognise.

3. Semantic conventions

Five normative column identifiers — platform_provider, metric_latency_tier, concurrency_count, retention_delta, and vulnerability_score — MUST be used verbatim by all conforming producers to ensure cross-vendor interoperability.

Interoperability across vendors requires a shared, language-agnostic vocabulary for core game telemetry. The following column names and value formats are normative — a producer MUST use these exact identifiers and MUST NOT substitute synonyms or vendor-prefixed variants.

ColumnType / FormatSource mappingDefinition
platform_provider Enum string:
steam · psn · xbox · nintendo · epic
Multi-platform pollers The canonical distribution network that returned this metric payload. A single game row MAY carry multiple platform_provider values in a flat array.
metric_latency_tier Enum string:
realtime · hourly · daily
RSS polling, webhook hooks, cron cycles The processing-frequency category of the ingested event stream. Consumers SHOULD treat realtime as T+5m maximum lag; daily as T+26h maximum.
concurrency_count Unsigned integer (uint64) Steam GetNumberOfCurrentPlayers Active concurrent users (CCU) at the exact payload timestamp. MUST be 0 rather than absent when the platform reports zero players.
retention_delta Float (float32, two decimal places) First-party telemetry; console trophy proxies Calculated shift in Day-7 or Day-30 player retention expressed as a signed percentage-point change. Producers MUST annotate the retention window in a companion retention_window_days field (integer: 7 or 30).
vulnerability_score Decimal 0.00 – 1.00 Deterministic + AI composite logic Composite competitor-health index. A score of 1.00 indicates maximum distress; 0.00 indicates no detectable vulnerability signal. Producers MUST document their scoring methodology in a companion vulnerability_model_version string field.
Unified payload structure. Rather than separate schemas for pre-launch, GTM, and post-launch lifecycle stages, producers SHOULD emit a single, flat row that carries both raw telemetry metrics (CCU, session length) and algorithmically modelled market context (estimated units, regional price deviation) simultaneously. This eliminates consumer-side join complexity and optimises for columnar storage (ClickHouse, BigQuery).

4. Top-level schema

A GS-CompInt-2026 document is a JSON object with two required fields (schema_version and exported_at) and five optional arrays: outcomes, telemetry, jira_events, sentiment_signals, and playbook_executions.

FieldTypeRequiredNotes
schema_versionstringyesMUST be "GS-CompInt-2026".
exported_atstring (ISO-8601)yesGeneration timestamp.
outcomesarray of OutcomenoCausal outcome records (§4). Absent or [] = nothing to validate.
telemetryarraynoRaw player telemetry (opaque to validator).
jira_eventsarraynoInternal velocity events (opaque).
sentiment_signalsarraynoCommunity sentiment windows (opaque).
sales_eventsarraynoConfirmed sales events (opaque).
playbook_executionsarraynoPlaybook fire log (opaque).

Producers MAY include additional fields; validators MUST ignore fields they do not recognise. Opaque arrays carry supporting evidence behind each outcome but are not required to reproduce the verdict.

5. Outcome record

Each outcome record requires four fields: action_type (the recommended action), pre_retention (7-day baseline %), measured_retention_delta (observed change in %), and cohort_size (≥ 2 players). No PII is permitted.

Each outcomes[i] is the minimal pre/post snapshot needed to reproduce a causal test:

FieldTypeRequiredConstraint
action_typestringyesNon-empty. The recommended action (e.g. aggressive_uacq).
pre_retentionnumberyesFinite. Retention % over the 7-day baseline before the action.
measured_retention_deltanumberyesFinite. Observed retention % change over the 7 days after the action.
cohort_sizenumberyes≥ 2. Player count at the time of the recommendation.

Privacy: outcome records carry no PII and no per-player rows — only cohort-level aggregates. This is the unit at which causal claims are made and verified.

6. Validation algorithm (normative)

The normative significance test is a two-proportion z-test (binomial model). A verdict of positive requires p < 0.05 with a positive effect direction and cohort ≥ 30; p ≥ 0.05 yields inconclusive; p < 0.05 with a negative effect yields negative.

Retention is a proportion — the fraction of a cohort still active at day N. The correct significance test for the difference between two proportions is the two-proportion z-test (binomial model):

n          = cohort_size                       # per arm; require n ≥ 30, else inconclusive
p_control  = pre_retention / 100               # baseline proportion in [0,1]
p_treat    = (pre_retention + measured_retention_delta) / 100

se         = sqrt( p_control·(1−p_control)/n + p_treat·(1−p_treat)/n )   # unpooled
z          = (p_treat − p_control) / se        # 0 when se = 0
p_value    = 2 · (1 − Φ(|z|))                 # two-tailed; Φ = standard normal CDF

Φ is evaluated with the Abramowitz & Stegun (1964) §26.2.17 rational approximation (max error < 7.5e-8).

5.1 Why the z-test, not Welch's t-test

Earlier drafts validated retention with Welch's t-test applied to a cohort-scaled revenue proxy. That is incorrect for proportions and is replaced here:

Continuous outcomes (revenue per player, playtime, ARPDAU) are a different metric type and do use Welch's t-test for unequal variances; a producer signals metric type so the validator routes correctly.

Verdict table:

p_value ≥ 0.05
inconclusive
p_value < 0.05 and effect > 0
positive
p_value < 0.05 and effect < 0
negative
p_value < 0.05 and effect = 0
neutral
A studio trusts a positive verdict only because it can re-run this algorithm itself — that is the point of the standard. The verdict is an internal before/after effect-size estimate; it becomes causal evidence when a holdout cohort (geo-split or customer-hash) is used.

7. Reference validator

Run npx tsx scripts/validate-outcome.ts export.json to validate any GS-CompInt-2026 document locally — no Metriqal account required. Exit code 0 = all outcomes positive; 1 = schema violation; 2 = ≥1 outcome inconclusive or negative.

# human-readable
npx tsx scripts/validate-outcome.ts export.json

# machine-readable JSON
npx tsx scripts/validate-outcome.ts export.json --json

# pipe mode
cat export.json | npx tsx scripts/validate-outcome.ts

Exit codes:

8. Security model

Exports are gated by HMAC-SHA256 portal-key auth with strict tenant isolation. Sensitive developer-velocity events are sanitised client-side into anonymised category tokens before leaving the studio's network. No PII may appear in any conforming export.

Your data is yours. Metriqal is the wiring. The standard is designed so a studio never has to surrender raw internal data to gain competitive-intelligence signals. The threat model below follows the guidance of IETF RFC 3552 (Security Considerations) — it documents the assets, the trust boundaries, and the controls explicitly so that an information-security reviewer can evaluate the standard without a sales call.

8.1 Export API authorisation

The Metriqal export endpoint (/api/export) enforces HMAC-SHA256 portal-key authentication. Each request MUST include a Bearer token signed with the tenant's secret; the server validates the token and asserts strict tenant isolation before returning any data. Cross-tenant reads return HTTP 403 Forbidden regardless of token validity. Unauthenticated requests return HTTP 401 Unauthorized.

This architecture is documented publicly so that information-security evaluators at prospective studios can verify the threat model without a sales call. The security controls are not assertions — they are auditable code.

8.2 Selective disclosure for developer-velocity events

Studios are not required to transmit raw internal data. The GS-CompInt-2026 standard natively supports a selective-disclosure pattern for sensitive events such as Git commits, Jira sprint closures, and Stripe transaction streams:

Example — a commit message "Fixed critical matchmaking crash in build 412" is parsed locally and transmitted as:

{
  "event_type": "developer_velocity",
  "modification_scope": "stability_patch",
  "impact_area": "multiplayer_matchmaking",
  "timestamp": 1781076844
}

The raw message never leaves the studio's firewall. The category token is sufficient for the platform to compute developer-velocity signals without accessing proprietary code or project details.

8.3 PII boundary

Outcome records MUST contain only cohort-level aggregates. No per-player rows, device identifiers, account IDs, or IP addresses MAY appear in a conforming export. This constraint is enforced by the reference validator — any outcome record containing a player_id or similar field MUST be rejected with exit code 1.

9. Discovery endpoint

Third-party tools discover the current schema at https://metriqal.se/.well-known/gs-compint-2026.json — a machine-readable JSON document containing the full schema description, validator invocation, and exit code definitions.

GET https://metriqal.se/.well-known/gs-compint-2026.json
Returns: application/json · Header: X-GS-CompInt-Version: GS-CompInt-2026

The discovery document is machine-readable and includes the full schema description, validator invocation, and exit code definitions. Any third-party tool can resolve this endpoint to detect conformance requirements without consulting this specification.

10. Versioning

The version string is the contract: breaking changes increment the year (e.g. GS-CompInt-2027); non-breaking additions do not. The -draft suffix MUST NOT appear in a published export.

The version string is the contract. Breaking changes increment the year or suffix (e.g. GS-CompInt-2027). The -draft suffix is reserved for pre-publication and MUST NOT appear in a published export.

Non-breaking additions (new opaque array fields, new optional outcome fields) do not increment the version.

11. Non-goals

GS-CompInt-2026 does not standardise proprietary predictive models, real-time streaming protocols, studio-internal metrics, or data-collection rights. It governs only how competitive-intelligence outcomes are formatted and exchanged.

The scope of GS-CompInt-2026 is intentionally narrow. The following are explicitly outside the specification:

12. Conformance program

Any producer or validator may self-certify as GS-CompInt Certified Conformant by running the reference validator and submitting the JSON output via the discovery endpoint — free, self-attested, and Metriqal-approval-free.

Any producer or validator implementation may self-certify as GS-CompInt Certified Conformant by:

  1. Running the reference validator against a conforming export: npx tsx scripts/validate-outcome.ts export.json --json
  2. Confirming exit code 0 and a validator report with zero schema violations.
  3. Submitting the validator output (JSON) and a link to the producer implementation via the discovery endpoint.

Certified implementations MAY display the GS-CompInt Certified Conformant badge in their repository README. Certification is self-attested, free, and does not require Metriqal approval — the validator is the arbiter, not the platform.

13. Example

A minimal conforming document has two fields (schema_version and exported_at) plus an outcomes array. The reference validator produces a verdict per outcome: a 12,000-player cohort with +6.5pp retention delta resolves as positive; a 5-player cohort resolves as inconclusive.

{
  "schema_version": "GS-CompInt-2026",
  "exported_at": "2026-06-13T12:00:00.000Z",
  "outcomes": [
    {
      "action_type": "aggressive_uacq",
      "pre_retention": 38.0,
      "measured_retention_delta": 6.5,
      "cohort_size": 12000
    },
    {
      "action_type": "review_bomb_containment",
      "pre_retention": 41.2,
      "measured_retention_delta": 0.3,
      "cohort_size": 5
    }
  ]
}

Running the reference validator reports the first action as positive (large cohort, significant effect) and the second as inconclusive (cohort too small to reject the null at α=0.05). Any third party reproduces the same verdicts with no dependency on Metriqal's infrastructure.