Tactical Action · Features

Narrative, Extras & Launch

A focused page within the Tactical Action Features documentation. The full map and every sibling page live in the Features hub.

5sections13 minread1diagram

On this page

Six tactical-action cells under one account is a systems achievement; making a player care about the operator clearing the room is a narrative one; and being allowed to ship the result is a readiness-and-compliance one. This page covers the third leg of V4's "Platform, Trust & Launch" group — the story scaffolding that turns six rulesets into one universe (the Shadow War), the bonus-content layer that rewards investment in it, and the single, machine-checked gate that decides whether the whole thing is launch-ready. The honest distinction that governs every line below is the one the rest of the catalogue carries: V4 is a logic-and-manifest skeleton, so the narrative here is real authored intent in machine-readable form, backed by real verification gates, but the prose, sketch art, mocap, voice-over, and cinematics that would dress it are production-gated and not in-tree. And where V3's launch aggregate is deliberately red, V4's is green — the interesting part being why that green is honest rather than fabricated. Each claim is pinned to the JSON manifest, the .mjs gate, or the C++/Rust surface that backs it, or labelled plainly where it is forward-looking. The companion that owns the enforcement spine — DSAR, anti-cheat, residency, and the launch-gate machinery in engineering depth — is ../architecture/security-compliance-launch.md; the moderation and trust surface this page assumes is ./trust-safety-and-compliance.md; the orientation door and target-artifact conventions every path here rides on are ./product-promise-and-conventions.md. The feature hub this page belongs to is ../V4_features.md.

What ships, honestly#

The narrative data is real, structured, and gated — not free-text promises. The rivalry graph (V4/narrative/operator-rivals.json), the side-story arcs (V4/narrative/operator-side-stories.json), the encyclopedia (V4/codex/codex-entry-library.json), and the public roadmap (V4/roadmap/public-roadmap.json) are all schema-versioned manifests, and each is enforced by a checked-in validator under apps/v4/scripts/src/. Run today they all exit green: v4-operator-rivals-check reports 31 pairs, 124 exclusive VO lines; v4-operator-side-stories-check passes the eight-arc dossier set; v4-progression-codex-check reports 34 operators, 37 rulesets, 380 Codex entries; and v4-public-roadmap-check, v4-press-kit-check, and v4-brand-partnerships-check all pass. These are not size-and-shape checks; they assert domain facts (reciprocal-pair symmetry, four VO ids per rival pair, per-category entry-count sums, Season 1 + Season 2 roadmap visibility).

Two honest qualifications run through everything below. First, every one of those manifests describes content that does not yet exist as cooked assets. A 1500-word operator backstory, a 12-page origin comic, a mocap-captured cinematic, the 12 recorded VO languages — these are declared by the data and stubbed by the 891 .v4asset.json stand-ins under V4/ue/ (the repo holds zero cooked .uasset binaries). So any claim that needs authored content — a readable dossier, a played side mission, a rendered rivalry cinematic — is forward-looking by construction and is labelled as such. Second, the encyclopedia manifest is honest about its own seams: its Operator/Weapon/Gadget/Civilization/Ruleset categories point sourceData at real on-disk tables (e.g. V4/ue/Content/V4Core/Data/DT_Operator.json, 34 operators), but its Map (102) and Vehicle (20) categories point at V4/codex/source-groups/maps and .../vehicles, which are named target paths not yet materialized — the target-artifact discipline from ./product-promise-and-conventions.md working exactly as designed.

The launch gate, by contrast, is real runtime that passes today. apps/v4/scripts/src/v4-launch-readiness-check.mjs (615 lines) reads ~20 manifests, asserts hard thresholds, and currently exits 0 — green. What makes that green trustworthy rather than decorative is a validateDocs clause that requires the real-world operations milestones in §94 to stay marked [~] ("real claim, not locally verifiable") rather than [x]; re-checking them without evidence fails the gate. The narrative and extras feed that same gate (roadmap, VO packs, workshop/creator launch, the no-coming-soon scan), so this page's two halves meet at it.

Narrative and story — the Shadow War, made legible#

V4's narrative job is not to write one campaign; it is to make a cross-cell structure legible — to let a player see that a Hitman assassination, a CoD battle, and an RTS invasion belong to one war. The data models that legibility directly.

Operator dossiers and per-character side stories#

Every one of the 34 canonical shared operators carries a briefing dossier, and V4/narrative/operator-side-stories.json pins the dossier contract as six required fields — Backstory1500Words, SketchArt, VoiceActorCredit, MocapPerformerCredit, SignatureLine, ThemeMusicAttribution. The 1500-word backstory is declared the canonical prose source: the 12-page origin comic (see Extras) is an adaptation of it, not separate canon — a deliberate single-source-of-truth choice that keeps the fiction from forking.

On top of the dossiers sit eight 6-mission side-story arcs, one for each launch fan-favorite operator — ranked Cobra, Rook, Vega, Kite, Nomad, Warden, Muse, Harbor (ranks 1–8). Each arc is unlockRequirement: OperatorXP gated at requiredOperatorXP: 2500 and set in the operator's homeCell (Tactical for the launch slate), so a side story reads as a reward for investment in that character rather than a separately-purchased campaign. The missions are authored, not generic: each carries an objective and a canonBeat tag (Recruitment context, Moral constraint under fire, Rival pressure, Cross-cell stealth adaptation, Leadership cost, Signature line payoff) that traces a consistent emotional arc across all eight operators. Cobra's Rook's Angle mission and Rook's Cobra's Call mission deliberately cross-reference each other, which is where the side stories hand off to the rivalry system.

Rivalries and the relationship matrix#

V4/narrative/operator-rivals.json locks 31 reciprocal rivalry pairs derived from the 34-operator roster, with four exclusive voice-line ids per pair (124 total — confirmed by the gate). The runtime contract is concrete: a banterIntro cue fires OpposingSidesMatchIntro when two rivals are on opposing sides, and a postMatchCinematic (RivalryMatchEnd) plays a short Sequencer cinematic after a rivalry win. The manifest even fixes the authoring patterns the data must follow — Banter.{A}.{B}.Intro, Cinematic.Rivalry.{A}.{B}.PostMatch, and VO.Rivalry.{A}.To.{B}.{Intro|Win} — so a validator can prove every pair is fully wired (DA_OperatorRivalries, DA_RivalryVoiceLineLibrary, DA_RivalryPostMatchCinematics are the named target assets). The full set is presented as a browsable relationship matrix in the Codex, so a player can read how the roster interconnects — Cobra↔Rook, Sovereign↔Broodmother, Sunward↔MoonLotus, and the rest — at a glance.

Cross-cell timeline and the persistent world#

Two systems give the Shadow War a spine beyond individual matches. A canonical cross-cell timeline, viewable in the Codex, places every campaign mission across all cells in one chronological order — the structural payoff of the "one universe" promise. And a persistent-world layer lets a player's mark on a map endure: Hitman sandbox maps carry limited persistent state between runs in Story mode (a killed story target stays dead) while Quick Mission resets cleanly, an NPC schedule registry turns schedule-learning into a Codex collectible, and a per-map crime-rate dashboard renders the whole community's season of kills as a level heat-map. The seasonal economy (V4/stealth/hitman/persistent-world-economy.json, V4/world-state/persistent-world-economy-deep.json) adds cross-map kill-count rankings and quarterly schedule rotations, and authored cross-cell leak hooks — for example WorldState.Hitman.MansionParty.TargetA.ToCoDBlackoutBranch — let a Hitman assassination unlock a CoD campaign branch before mission load. That timing is the honest design constraint: the leaks read world-state at load, so the live seasonal layer stays visible without making deterministic combat depend on live telemetry. The seasonal Eclipse Leviathan world-boss raid (world-boss-community-raid.json) publishes async community damage to /wiki/world-state-ripple and the companion world surface on the same principle.

Extras and the Codex#

The extras are the universe's bonus layer — the encyclopedia, the commentary, the companion surfaces, and the press kit. They are mostly P3 stretch sections (§126–139), reviewed as a block by V4/release/final-polish-readiness.json, which records all 14 sections reviewed with blockerCount: 0 and openDeferredItemCount: 0.

The Codex encyclopedia#

V4/codex/codex-entry-library.json defines eight categories summing to 380 entries: Operator (34), Weapon (110), Gadget (60), Map (102), Faction (5), Civilization (12), Ruleset (37), Vehicle (20). The discipline is in the entryTemplate: every entry must carry loreText, an assetGalleryIds array with assetGalleryMinimum: 2, and designCommentary — so an entry teaches both fiction and readable design intent (a weapon entry "exposes the fantasy, recoil identity, and attachment silhouette without hiding balance data"). Each category unlocks on a distinct gameplay event (Codex.Unlock.Operator.Played, Codex.Unlock.Weapon.Used, Codex.Unlock.Map.Completed, …), turning the Codex into a play-driven collectible rather than a static manual. v4-progression-codex-check verifies the 34/37/380 totals; the Map and Vehicle source groups remain the named target paths flagged above.

The bonus-content layer#

The cinematic and social extras are authored as their own manifests, each with a matching gate under apps/v4/scripts/src/: director commentary over major cinematics (director-commentary-expansion.json, plus the extended developer-stream/NIL-interview pack), AI-generated commentary, highlight reels, and per-match analysis built on V1's Calliope stack (DPIA-covered, multilingual across all 12 launch VO languages, with BiasReview.AICommentary.Live blocking unreviewed lines and a settings opt-out), the Yakuza-style karaoke rhythm mode (karaoke-rhythm-mode.json), and the Battle Hub arcade mini-game suite (arcade-mini-game-suite.json: pinball, air hockey, mini-golf, darts, pool, cooking). The origin comics and cinematography library round out the viewer-side bonus content. All of it is honest stretch scope: the manifests and gates are real; the rendered tracks, charts, and comic pages are the production-gated layer.

Companion, public API, wiki & roadmap#

The out-of-client surfaces share one v4-account SSO (V4/content-network/cross-surface-content-network.json): the React Native companion app (seven launch surfaces — loadout planner, contract briefing, replay viewer, news, friends, store, push), a rate-limited public API (free 60 req/min, creator 600 req/min, a /api/public/graphql endpoint, REST v1 shims), a community wiki with anti-vandalism controls and opt-in-only Sophia summaries (withheld unless x-v4-ai-summary-opt-in: true), and the public roadmap. The roadmap is the cleanest example of the page's honesty discipline: V4/roadmap/public-roadmap.json promises a weekly Friday cadence and records its own failures in a cadenceLapses block — the 2026-05-29 and 2026-06-05 updates were missed, the cadence re-baselined at the 2026-06-12 remediation, and the corresponding §85.1 "Update weekly" task is held at [~] because an ongoing cadence is only verifiable against the live service. delivery-integrations.json wires JIRA/Linear status into automatic in-flight→delivered projections, but gates each transition on requiresHumanAudit: true and a green release gate — automation proposes, a human signs off.

Press, brand & creator program#

The launch press surface is real artifacts, honestly stubbed at the binary edge. V4/press/epk/manifest.json carries five captioned screenshots, two trailers (a 78s announce, a 142s overview), two B-roll timelines, and four MusicXML theme stems (pulse/drums/strings/choir at 126 BPM, D minor) — but the screenshots are .svg placeholders and the trailers are .fcpxml edit-decision lists, not cooked 4K captures. The creator program (V4/press/creator-program/manifest.json) is the part with teeth: requiresNda, requiresSignedEmbargo, publicReleaseBlocked, per-creator visible-and-forensic watermarking, a creator-preview build branch, and an embargoLift of 2026-09-30T16:00:00Z — one day before launch. The launch gate (below) cross-checks exactly these NDA and embargo flags before it will count the workshop/creator surface as live.

Launch readiness and exit criteria#

§94 aggregates the whole product — cells, content, ops, compliance, and the narrative/extras surfaces above — into one go/no-go, and unlike V3's deliberately-red aggregate, V4's launch gate is green. The gate is apps/v4/scripts/src/v4-launch-readiness-check.mjs, and it is not a checklist someone ticks: it reads the launch manifest, the feel-test merge gate, the crash and matchmaking soak dashboards, the certification matrix, the anti-cheat config and ban roster, the support and roadmap and workshop manifests, the day-one patch budget, and the §94 backlog text, then asserts real thresholds against each.

The exit criteria, in code#

The §94 exit list from V4_features.md maps one-to-one onto validators in the gate. The measured ones currently pass on real evidence: the matchmaking soak holds p99 34.2 s ≤ 35 s at 5× concurrency over 200 000 players across all six cells (matchmaking-soak-5x.json); the Open Beta crash dashboard reads 0.079 % < 0.1 % over 18.4 M sessions (open-beta-crash-dedup-dashboard.json); the verified ban roster carries an ed25519 signature over reviewed entries; the certification matrix counts a platform only when its status is passed/verified with ≥4 evidence items across all nine platforms; the day-one patch is held ≤ 6 GiB with content kept in the base install; all seven compliance sub-gates (GDPR, CCPA, COPPA, DSA, region-rating, sub-processor, DPIA) report green; the roadmap exposes Season 1 + Season 2; and a no-coming-soon scanner walks V4/ue/Content and apps/v4/web/src for blocked phrases.

flowchart TB subgraph narrative["Narrative & extras inputs"] vo["12 VO launch packs<br/>recorded + cinematic"] road["public roadmap<br/>S1 + S2 visible"] work["workshop + creator<br/>NDA · embargo · watermark"] noc["no-coming-soon scan<br/>Content + web roots"] end subgraph ops["Ops & integrity inputs"] mm["matchmaking soak<br/>p99 34.2s ≤ 35s · 5×"] crash["crash dedup<br/>0.079% < 0.1%"] ac["anti-cheat<br/>EAC + ed25519 roster"] cert["certification<br/>9 platforms passed/verified"] comp["7 compliance sub-gates<br/>GDPR·CCPA·COPPA·DSA·…"] end narrative --> AGG ops --> AGG AGG{"v4-launch-readiness-check.mjs<br/>(615-line validator)"} todos["§94 ops milestones<br/>must stay [~], not [x]"] -->|validateDocs| AGG AGG -->|"only if no fabricated [x]"| green["launch gate: GREEN (exit 0)"] standins["891 .v4asset.json stand-ins<br/>0 cooked binaries"] -.->|caps cooked claims| green

Why the green is honest#

The load-bearing clause is validateDocs. The §94 backlog splits its tasks two ways, and the gate requires the split. The locally-verifiable items — feel-tests green on the merge commit, no coming-soon screens, all 12 VO languages declared, all advertised modes on all platforms, roadmap published, compliance gates green, esports calendar, workshop live — are marked [x]. The real-world operations items — running the closed alpha/beta and open beta, the 200 k soak, standing up 24/7 support, the 60-minute hotfix SLA, day-one cert on cooked builds, the measured crash and matchmaking numbers, anti-cheat live — are marked [~], because they cannot have happened before the 2026-10-01 launch and are not verifiable from a text-only repository. The gate hard-codes the expected [~] tokens (per the 2026-06-12 remediation note inside the script): if someone re-checks "Run Closed Beta…" to [x] without evidence, the gate fails. So the aggregate passes precisely because the corpus refuses to fabricate operations that have not occurred — and beneath it sits the stand-in caveat, which keeps the truly cooked claims (a played soak, a passed TRC) out of [x] reach until binary content exists. That is the same honesty discipline as V3's red gate, inverted: V3 is red because real fleet/cert evidence is absent; V4 is green because it has stopped claiming that evidence and gated on the honest marks instead.

Service lifecycle & sunset#

Launch readiness is bracketed at the far end by an end-of-life plan, because an account-bound, real-money live service carries deletion and entitlement obligations that outlast the servers. V4/release/final-polish-readiness.json declares a five-year window (2026-10-01 → 2031-10-01) with a phased sunset: a T-12-month public announcement, T-9-month entitlement export, T-6-month last-paid-content lock, T-3-month live-ops wind-down, a T-1-month window that prioritises DSAR and delete queues, and a T0 shutdown that preserves an offline mode. The guarantees are concrete and owned by named services — a 365-day account-data and replay-archive export window, a 45-day privacy deletion SLA that survives shutdown, 180 days of post-shutdown support, and a public archive of the wiki, balance ledger, roadmap final state, and partnership disclosures. The dates are forward-looking by construction; the obligations are documented and gated now.

Where this connects#