# RC.4 V5 period daily-simulation integration audit

Date: 2026-07-22

## Decision

V5 has real period rules, schedules, case closure, radio-program descriptors,
and authored live-event contracts. It does not currently produce one
authoritative per-day world event log from which a procedurally true newspaper
can be compiled. The daily newspaper, derived radio bulletin, Rail channel, and
their downstream pacing tests must stay unregistered until that source exists.
The separately declared world-window gate remains unchanged.

This is a source-integration gate, not a claim that the V5 systems are empty.

## What the period simulation actually produces

### Time and NPC schedules

`V5Open` advances a 48-minute game-day clock and exposes density, weather,
traffic, and pedestrian calculations. `V5Schedules` loads era-specific NPC
schedule rows and can resolve an NPC's activity/location at a supplied time. It
also evaluates a named-NPC route crossing and suppresses a repeat when the
caller says it already triggered that day.

These are deterministic query systems. They do not own a persistent scheduler
that advances every period NPC, records completed activities, or appends a
day-stamped event stream. The `bAlreadyTriggeredToday` state is supplied by the
caller; the schedule evaluator does not persist it.

### Period cases

`V5PeriodViceSquad` contains real case, desk, evidence, interrogation, and
closure rules. `CloseCase` returns a closure record, including a generated
`NewspaperHeadline`. The headline is a short deterministic string derived from
the case title, rating, and solved flag; the poor/failure path intentionally
still closes the case and prints a city-edition headline.

That result is a valid newspaper input event. It is not a newspaper issue or a
daily event log, and no inspected path persists the closure into an editorial
queue with event time, district, public-safety impact, source corroboration, or
story body.

### Persistent world events

`V5OnlineServices` authors twelve Year-1 world-event scripts. Two are
period-specific (union strike and vice sweep), and their declared settlement
rules mention civic tension, checkpoint density, informant availability,
security, and newspaper headlines. The client builds a request for
`/v5/live-service-calendar/world-events/year1` and validates script metadata,
ETag requirements, and settled-snapshot intent.

These records are scheduled content definitions and request contracts. They do
not contain observed objective progress, a chosen settlement, applied world
state, or a persisted day-level outcome. They therefore cannot evidence what
actually happened in a player's simulation day.

### Personas

V5 has companion/persona state and learning-signal structures in individual
cells, plus partner/witness memory in the period case systems. None of the
inspected period paths composes those states into an authoritative daily
public-event record. Persona flavor can inform future editorial voice only after
the underlying event is real; it cannot supply the missing event.

## Newspaper gap

A fail-loud newspaper compiler needs a versioned source envelope containing at
least:

- world/save identity, in-game date, era, city, and monotonically ordered event
  sequence;
- committed case closures and world-event settlements;
- material schedule/encounter, faction, economy, crime, civic, and weather
  outcomes rather than queries or planned scripts;
- stable subject/location identifiers, public-safe facts, and provenance; and
- a state hash or cursor tying the issue to the persisted simulation state.

No such envelope, event store, or read endpoint exists in the inspected V5 UE
and service surfaces. Creating article prose from the catalog's case titles or
twelve planned event scripts would be canned copy. Per RC.4, an empty source
must mean no paper, not fallback stories.

## Radio gap

`V5RadioTV` has a real station/segment catalog, deterministic segment selection,
MetaSound/bus descriptors, talk-rotation selection, and a news-bulletin
injection record. `V5Audio` also defines period AM/FM routing. The catalog's
segments reference cue IDs and the period music manifest references an Unreal
runtime path.

There are no checked-in `.wav`, `.ogg`, or `.mp3` media files under
`V5/ue/Content`, and `V5/V5_TODOS.md` still leaves authoring the 18 roughly
90-minute radio loops open. The current bulletin API takes caller-supplied
headline text and schedules it; it does not render that text through a TTS
authority or return playable audio. Consequently RC.4 cannot yet publish a valid
audio-lane holder from period assets plus sim-derived interstitials.

## Mind Palace and world windows

The independent Mind Palace seam is now implemented in the existing RA.5
`@oshun/v10-case-files-cook` job. A strict `v10.case-files.v5-period-source.v1`
boundary requires a versioned V5 snapshot, era, themes, at least six cast
records, and one to four setting locations. The adapter converts those records
into the V8 `CanonContext` and existing `CaseSpec.castConstraints`; Clew now
enforces required cast/location existence and uses required locations in the
actual ground truth rather than treating them as descriptive metadata.

`cookPeriodSlowDripCase` traverses the same Minos, direct DPLL, finite-domain
CSP, G4–G8, Daedalus, provenance, Ed25519 receipt, and immutable artifact path
as the RA.5 daily cook. Its schedule releases evidence and witnesses across 3–14
whole local days before the accusation window. The end-to-end fixture uses six
named V5 cast members and four V5 locations, proves all of them reach the
public/realized case, crosses the 2026 America/New_York daylight-saving
transition without moving the 20:00 local accusation, verifies all eight gates,
and verifies the signed receipt. The file-backed CLI path is covered as well.

The V5 world runtime/media source required for streets, harbor, or trains is
still the explicit world-window gate. RC.1 and RB.3 are ready to consume real
media when that source exists; they are not evidence of V5 render bytes.

## Verification performed

The source audit covered V5's open-world clock and population systems, NPC
schedules, period Vice Squad case/closure path, persistent Year-1 world-event
contracts, RadioTV catalog and bulletin injection, period audio routing, content
manifests, and the V5 implementation ledger. The checked-in media catalog and
period radio manifest parse as descriptors, while the content tree contains no
source audio files.

Focused TypeScript/Vitest verification also covers the V5 period-source schema,
required engine geography, missing-source fail-loud behavior, a real slow-drip
cook, multi-day pacing, DST wall-clock preservation, CLI persistence, and
receipt verification.

A focused Unreal automation run for `V5.PeriodViceSquad` was attempted with the
required local UE 5.5 editor as `ueagent`. The editor found `V5Editor.target`
but failed before automation discovery because its installed PCG plugin could
not load the `PCGCompute` module; shutdown then hit the engine's queued-thread
pool assertion. This is a local engine/plugin build-compatibility blocker, not
evidence of a daily event source or playable radio content.

## Reopen criteria

The newspaper and channel work can begin when V5 provides:

1. a persisted, versioned, per-save daily event stream with committed outcomes
   and a stable cursor/state hash;
2. a production read boundary that returns a complete in-game day or fails
   loudly when the day is incomplete;
3. editorial eligibility and public-safety metadata for each event class;
4. period radio media whose cue IDs resolve to playable, rights-cleared assets;
5. a production TTS/audio-render receipt for sim-derived bulletins; and
6. an integration fixture that advances a known period day and proves exact
   events, issue selection, bulletin order, and issue-to-state provenance.

The Mind Palace case no longer depends on these reopen criteria. World windows
additionally require the declared V5 render/runtime source.
