Scope: every system in V5/ that creates content autonomously — procedural
generators, run generators, AI commentary/recap/highlight pipelines, generated
broadcast media, the adaptive persona, daily challenges, machine translation,
and the automated director/editor pipelines. Method: main-loop sequential audit
(no agent fan-out, per session-limit constraint); confirmatory read of every
public generation function plus the project-mandated adversarial stub-indicator
grep and a silent-stub scan (unseeded RNG, fabricated-success flags, circular
gates). Prior context: V5/docs/audit/v5-verification-2026-05-31.md and
V5/REMEDIATION_2026-06-12.md.
Verdict#
The generation logic itself is real and well-engineered; it was the trust claims around the generated content that were still fabricated. Three seam clusters survived the 2026-06-12 remediation (it fixed the launch manifest, legal artifacts, and service health, but not audit category 2 in code). All are now fixed evidence-gated and fail-closed, with the repo verifiers updated in the same pass and all 75 validator tests green. As an autonomous content platform V5 is not prod-ready end-to-end — the honest blockers are the same class as V3/V4: no cooked assets, provider seams at every actual model-inference moment, and human sign-off gates that now correctly read "pending" instead of pre-approving themselves.
What is genuinely REAL (audited this pass)#
- V5Procgen — seeded deterministic generation throughout (
FRandomStreamover xor-combined seeds73856093/19349663/83492791): 5 side-quest patterns with step placement, 320 weighted frontier encounter templates with honor-biased rescue weighting, 12 monster archetypes → contracts with rank/reward formulas, weighted loot rolls, per-partition city decoration, galaxy detail sets. Tests assert reproducibility (same seed ⇒ identical stable fingerprint) and divergence across seeds. - V5RoguelikeHunterRun — real run generator composing procgen contracts over
24 map templates and 20 rule-stacking modifiers (multiplicative
loot/toxicity/damage, additive score bonus), permadeath lifecycle, and a
fail-closed leaderboard score (only
Completed+ anti-cheat-clean runs are eligible). - AI Director & adaptive difficulty — honestly labeled declared intent
in
features/platform-performance-and-tech.md: no code anywhere, no fabricated claims, launch gate stays red. Not implemented, and says so. - services/replays — real content-addressed SHA-256 chunk store with
refcounted dedup and HMAC-signed 900 s download grants (
ReplaysDomain, live-Postgres path inrealtime.ts); the not-configured path serves the honest 503/contract-echo seam from the 06-12 remediation. The three AI endpoints (TTS commentary, top-10 ranker, recap) return contract descriptors, not fabricated content — the actual inference moments are declared provider seams (CoquiTTS,v5-highlight-ranker-v1,v5-match-recap-summarizer-v1). - V5RadioTV — honest scheduler/selector over authored data (loop-clock
segment selection, format/topic-filtered talk rotation, emergency-override
vehicle mix). The 1200 talk lines are transparent template filler with no
false provenance, and the §28 authoring tasks are honestly
[ ]. - UV5_SciFiPvP_BroadcastDirector — real priority-driven shot selection from live match state (impact replay ▸ missile track ▸ objective ▸ pursuit by distance), rule-driven blend times.
- Kade Roe AI persona (V5SciFiGalacticSquad) — exactly what the docs claim: a deterministic, privacy-bounded trait-vector accumulator (5 traits, 6 authored signals, clamped trust/affinity, ≤0.10 deltas) with a hard cell/locality/no-cross-cell-training guard that returns state unchanged on violation. The honest opposite of a black-box model.
- Mind Palace daily (V5DetectiveMindPalace) — date-indexed rotation over an authored puzzle catalog; solve scoring is fail-closed (solved + anti-cheat + positive time) with par-time bonus and hint penalties.
- VTuber overlay / companion bridge — declared session-config payloads with honest guardian gating; no fabricated moderation claims.
Fabrication seams found and FIXED this audit#
HIGH — voice-chat "translation" that never translated#
UV5_Localization_VoiceChatTranslation::TranslateVoiceChatTranscript returned
"[<target-culture>] " + SourceTranscript as TranslatedTranscript with
bAllowed=true — the source text relabeled as target-language output while the
route named V5RealtimeMT as provider (same class as V2's local_default
seam). Fix: the function now requires a ProviderTranslatedTranscript;
empty ⇒ fail-loud denial (DenialReason="mt_provider_result_missing", no text),
non-empty ⇒ verbatim provider result plus MTProviderUsed recorded on the
packet. Tests cover the provider path, the denial path, and the policy-gate
denial.
HIGH — cross-cell replay editor pre-verified its own clips#
MakeReplaySourceClip hardcoded
bReplayHashVerified / bPrivacyScrubbed / bRightsCleared / bSpliceEligible = true
(struct defaults were also true), and validator + manifest + two test suites
required the fabricated claims — a circular fabricate-then-assert gate (05-31
audit category 2, never fixed in code). Fix: defaults flipped to false;
claims only flip through receipt functions — ApplyReplayHashVerification
(non-empty expected==actual hash), ApplyRightsClearance (clearance ref + named
reviewer), ApplyPrivacyScrubReceipt; bSpliceEligible is now derived from the
three receipts. Splice bContinuityChecked is computed from actual timeline
adjacency; bAudioNormalized requires a measured loudness pass inside −16 LUFS
±1 LU / ≤ −1 dBTP via ApplyAudioNormalizationMeasurement. Validation separates
honesty errors (claim without receipt ⇒ invalid) from publish gating
(bPublishReady=false + named PublishBlockers while receipts are missing — a
valid draft is not a publishable export). The manifest
(fullvision_cross_cell_replay_editor_manifest.json) now carries
evidenceMode: "declared-sample", honest false claims, and a fail-closed
exportPublishBlocked: true gate with reason; the Python validator computes
continuity from rows, requires claims to match receipts, and requires the
publish block to reflect actual receipt coverage.
MED — self-approving director gates#
MakeCameraSetupstampedbDirectorApproved=trueon all 8000 generated camera setups; the validator required it. Now: setups start unapproved,RecordDirectorApproval(Library, DirectorId)applies a named sign-off (no-name approves nothing), validation reportsbDirectorSignOffComplete=false+ blocker until then, and an approval without a named director is an honesty error.MakeCommentaryTrackstampedbCellApproved=trueon director commentary tracks. Now: unapproved by default;RecordCellApproval(Track, ReviewerId)with a named reviewer flips it and recordsApprovedByReviewerId.MakeDirectorCutdeclaredbContinuityChecked=true; now computed from real clip adjacency, and both the C++ validator andvalidate-cinematic-director-mode.pyverify the flag against computed adjacency instead of trusting it.
MED — highlight "top-10" fixture posing as ranked output#
BuildTop10HighlightClips fabricates 10 clips from rank arithmetic (no replay
input), and BuildYear1AIHighlightReel(ReplayId, …) embedded them as TopClips
for a named replay, unlabeled; the declared v5-highlight-ranker-v1 model had
no executable implementation. Fix: clips carry EV5HighlightClipProvenance
— the fixture builder's clips are labeled SampleFixture (and must not claim a
source replay), and a real ranker now exists:
RankTop10HighlightClipsFromEvents implements the manifest's model — per-signal
minimum thresholds (kill-multiplicity 2, others 1), 40/30/20/10 weighted
scoring, objective-impact then earlier-timestamp tie-breaking, 6–18 s clip
windows, top-10 truncation, RankedFromReplayEvents + SourceReplayId
provenance. ValidateYear1AIHighlightReel enforces provenance honesty both
ways; tests assert exact scores (3·40+2·30+1·20+1·10=210), threshold gating,
tie-breaks, window clamping, and that a ranked claim without a source replay
fails.
Cleanup — three validators still codified reverted checkboxes#
validate-period-documentary.py, validate-companion-ar-mode.py, and
validate-companion-mind-palace-editor.py still required [x] marks that
the 05-31/06-12 remediations honestly reverted to [ ] (documentary cinematic
binary asset; companion §123/§142 with no buildable app) — so they failed red
against the honest state. They are now evidence-gated both ways: the item must
stay [ ] while the backing deliverable (cooked documentary assets; a buildable
companion project) is absent, and must be [x] once it exists.
Honest remaining gaps (not locally closable)#
- Every real model-inference moment is a provider seam: CoquiTTS synthesis, the
recap summarizer, Whisper STT /
V5RealtimeMTtranslation providers. The routing/policy/validation layers around them are real and fail-loud. - The AI Director is design intent with no code (disclosed as such).
- Zero cooked binary assets exist anywhere in V5 (known since 05-31), so
generated content references (
/Game/...map/sequence paths) point at authored paths, not assets; content-volume tasks remain honestly[ ]. - Human gates now read honestly pending: director sign-off, cell approval, rights clearance, replay-hash receipts, measured loudness passes.
- No UE toolchain on this Mac: the C++ changes are verified by the repo's needle
validators and idiom-careful review, not a compile. A
V5Editor Linux Developmentbuild +Automation RunTests V5.on the UE box is the next hardening step (the 05-31 pass proved that pipeline works).
Verification record (2026-07-14)#
python3 -m pytest V5/tools— 75/75 passed (was 72/75 before this pass; the 3 reds were the stale-needle validators above).- All 15 generator-related validators run individually: PASS, including cross-cell-replay-editor, cinematic-director-mode, realtime-voice-chat-translation, broadcast, cinematics, period-documentary, companion-ar-mode, companion-mind-palace-editor, mind-palace-daily, scifi-ai-persona-companion, vtuber-companion-stream, hunter-run-modifiers, replay-modes, validate-v5-docs, validate-cells.
- Adversarial grep over all audited generator directories: zero actionable hits (remaining matches are anti-cheat domain vocabulary and a comment documenting a previously fixed seam).
- Unseeded-RNG scan over generation paths: zero hits (all generation uses seeded
FRandomStream).