The Rail · Reference & analysis

RC.5 V4 Match channel integration audit

still record the open beta for August 2026, the 200k-player soak for 2026-09-24, and platform certification, beta crash rate, launch-load matchmaking, live anti-cheat roster, and launch-window support staffing as incomplete or not yet

4sections5 minread

On this page

Date: 2026-07-22

This note records the current source authority for RC.5 and the independently actionable pre-launch integration completed by this pass. It does not treat authored JSON, .v4asset.json stand-ins, test fixtures, future schedules, or policy declarations as proof that V4 has launched or that a public broadcast is operating.

Findings#

Launch and operations remain gated#

V4/V4_TODOS.md fixes launch at 2026-10-01. Its §94 launch-readiness items still record the open beta for August 2026, the 200k-player soak for 2026-09-24, and platform certification, beta crash rate, launch-load matchmaking, live anti-cheat roster, and launch-window support staffing as incomplete or not yet measurable. Those are future events on this audit date. No repository source can substitute for their receipts.

The new V4MatchLaunchEvidenceSchema therefore accepts only status: "launched" and requires a build digest plus platform-certification, live-ops, online-service, commentary-readiness, and v4-match tenant receipt identities. A scheduled target cannot parse as launch evidence. Missing or failing launch authority prevents manifest creation.

Commentary has useful real enforcement, but two distinct implementations#

libs/calliope/match-commentary is executable TypeScript. It deterministically scores match moments, pins generated lines and analysis to those moments, screens gender/region/playstyle findings, fails closed when the review provider fails, and ANDs bias clearance with a deterministic/panel commentary-quality gate before returning airable.

The V4 spectator plugin has a separate C++ policy surface in V4Mode_Spectator. UV4LiveAICommentaryBroadcastService respects a player opt-out, creates two host records, refuses incomplete bias-review records, and requires both review and watermark state before a line is broadcast-ready. However, GenerateLiveCommentaryLines currently formats two fixed template sentences from a supplied event marker; it does not call the TypeScript Calliope generator or a model/provider. The repository checker proves tokens, assets, and policy fields exist, not that this boundary is deployed against a live match feed.

The new Rail gate chain consequently uses the executable Calliope broadcast decision and a separately injected consent authority. Neither dependency has a permissive default. Removing either configuration, throwing from either authority, returning stale/partial participant review, recording any opt-out, or returning contradictory gate fields holds the package off air. Personal voice-clone mode additionally requires current receipts for the owner and each contributing friend.

The checked-in spectator portal is not a live source#

apps/v4/spectator/src/lib/matchData.ts is a fixed match/camera/stat fixture. realtime.ts selects browser API names but advances locally synthesized packet, objective, latency, and bitrate values on an interval; its fallback is named ReplaySimulation. It does not negotiate a remote WebTransport session and creates a local WebRTC data channel without signaling. The recorded HLS playlist contains headers and #EXT-X-ENDLIST but no media segments.

There is no registered v4-match tenant in the shared live-media substrate. The activation boundary therefore accepts only an exact future projection with tenant v4-match, lifecycle live, publication ready, and HTTPS HLS/DASH. Cross-tenant, ready-only, publishing, VOD-fixture, or pre-launch projections are invalid. The 24/7 adapter remains unchecked until that projection comes from a real RB.3 composition and passes an ingest-to-Rail runtime gate.

Campaign persistence is save-and-resume, not between-session simulation#

UV4SaveGameSubsystem stores only schema, slot, active cell, and save time. UV4SaveGameBase stores caller-supplied JSON slots and determines when a PvE autosave is due. UV4ConquestCampaignProgression unlocks and completes missions only when CompleteMission is called, then exports/imports that state as JSON. None of these services advances a squad, simulates missions while the player is away, persists an authoritative elapsed-offline cursor, or emits between-session campaign results. The V4 player face therefore remains gated; fabricating a ticker from save timestamps would violate the ledger's real-simulation rule.

Implemented pre-launch boundary#

libs/v10/rail-channel-v4-match now provides:

  • strict launch, live-program, consent-request, and consent-decision schemas;
  • V4MatchCommentaryGateChain, which fails closed on absent/failed consent or broadcast gates and validates exact participant/revocation coverage;
  • production composition with Calliope's real bias + quality decision;
  • V4MatchDirectorProfileController, directly driven by the real R0.3 DaypartEngine and the owning RC.1 Uzume profile engine; and
  • V4MatchChannelActivator, which creates a games-ring spectator manifest only after launch, media, consent, bias, and quality all clear.

The manifest deliberately has no player face, no watch surface, no fabricated campaign drip, and no claimed watch-party implementation. It declares the scheduled esports live-moment class, while concrete events and RD.2 watch parties remain owned by their future runtime sources.

Automated evidence#

The focused suite covers ten cases:

  • either required gate removed from configuration;
  • consent authority failure, partial/stale participant coverage, and opt-out;
  • incomplete and complete personal voice-clone consent sets;
  • real Calliope bias and repetition blocks;
  • contradictory/dishonest broadcast decisions;
  • real R0.3 deep-work-to-lunch profile switching plus user authority;
  • absent and scheduled launch evidence;
  • cross-tenant, non-live, pre-verification, and match-mismatched programs; and
  • absent RB.3 first-party-live playback authority; and
  • successful all-gates-cleared games-ring manifest activation.

Focused test, typecheck, lint, and lockfile consistency are the release gates for this increment. V4 UE policy automation and the existing Calliope suite are also rerun to ensure the composed owners retain their behavior.

Reopen criteria#

The 24/7 channel may be registered only when all of these exist:

  1. post-launch build/certification/live-ops/online/commentary receipts from an authoritative release source;
  2. a real v4-match RB.3 tenant with a supervised live ingest-to-Rail playback proof and durable live/ready projections;
  3. a deployed V4 telemetry-to-Calliope path rather than template lines or fixture match data;
  4. production participant opt-out and, when applicable, voice-clone consent authority wired into the adapter; and
  5. scheduled-event publication from the esports authority.

The player face additionally requires an authoritative, persistent campaign simulation whose squad state demonstrably advances between sessions and emits durable deltas suitable for tiles and drips.