# V3 Autonomous Content Agents Audit — 2026-07-14

Scope: every agent/pipeline that autonomously creates content for V3 (Lilith
Metaverse / Tara Studio / Saraswati Stage). Method: per-library source read,
adversarial stub scan (mandatory grep + silent-stub pattern scan), test-suite
runs, verifier-script runs — main-loop only, no agent fan-out. Companion audits:
`V1_AUTONOMOUS_CONTENT_AGENTS_AUDIT_2026-07-13.md`,
`V2_AUTONOMOUS_CONTENT_AGENTS_AUDIT_2026-07-13.md`. Prior V3 adjudications this
audit builds on: `V3/VERIFICATION_AUDIT_2026-05-31.md` and
`V3/REMEDIATION_2026-06-12.md` (standard: _structural gates are not operational
proof; hand-authored "observed" tables must not masquerade as measurements_).

## Verdict

**The governance/policy cores are real and strong — several genuinely
SOTA-shaped (concert scene quality gating, C2PA signing, pose runtime,
scripted-persona containment). The stack is NOT production-ready as an
end-to-end autonomous content system**, and — to its credit — it says so itself:
`V3/launch/launch-readiness-release-gate.json` is red at 30/41 required commands
and 24/39 named gates, with `gaReady: false`, after the 2026-06-12
de-circularization.

Two axes to the verdict:

1. **Code quality of what exists**: high. Fail-loud validation everywhere,
   domain-specific algorithms, real third-party integrations where they matter
   (MediaPipe/MoveNet, c2pa-rs), 190+ tests green across the audited surface
   (149 TS across 6 libs + 38 Rust + 3 re-run verifiers).
2. **Distance to "autonomously creates top-notch content"**: material. The
   _generation_ moments themselves (music synthesis, lyric LLM calls, TTS,
   motion capture/AI-assist, world assets) are all provider seams or UE-side
   work that is not in this repo. What IS in repo is the governance shell around
   those moments. Several of those seams were fail-silent (fabricating results)
   until this audit — **all locally-actionable fabrication paths are now
   closed** (fixes 1–8 below): every generation-governance library either
   evaluates real supplied inputs or fails loud / labels itself a drill. What
   remains between here and prod-ready is exclusively external: provider
   credentials, real V1 Isis registration, real pose-capture training data,
   UE-side execution, and the operational windows the honest-red launch gates
   are waiting on. None of those can be truthfully closed from this machine.

## Inventory — the autonomous content stack

| Layer                           | Package                                                 | What it does                                                                                                                                                                                                                              | Assessment                                                                                                |
| ------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Music generation governance     | `@oshun/isis-music` (9 files, ~3.8k LOC)                | Provider routing (Suno/Udio/Stable Audio/MusicGen/AudioCraft/Mubert), Sophia-grounded lyric factuality, Lilith tone policy, auto-mix/master review gate, provenance bundles, fingerprint pre-release check, V1 Isis workflow registration | Real policy cores; 3 fabrication seams FIXED this audit                                                   |
| Virtual-artist tenant           | `@oshun/saraswati-stage` (36 files, ~21k LOC)           | Persona dossiers, voice-signature consent builds, discography release flow, genre cells, remix rights, Themis adjudication, C2PA manifests, concert authoring pipeline                                                                    | Real except the concert-authoring evidence generator (structural-only; see findings)                      |
| Live performance engine         | `apps/v3/saraswati-service` (Rust, ~5.3k LOC, 38 tests) | Performance-plan → Sequencer compile, per-song execution, between-song speech gates, audience interaction, recording pipeline, royalty settlement, **real C2PA signing (c2pa-rs, PEM signer, Reader-verified)**                           | C2PA path production-grade; module evaluators are structural gates, honest fail-loud validation           |
| Backstory grounding             | `@oshun/sophia-saraswati-grounding` (~1.3k LOC)         | Citation-trail validation for persona backstory; real-culture claims require supporting Sophia sources; fail-closed                                                                                                                       | Real                                                                                                      |
| Instructor-persona content      | `@oshun/tara-studio` (51 files, ~21k LOC, 69 tests)     | **Scripted-only AI personas** (out-of-script asana → sponsor handoff or graceful no-op), invitational-language linter, lineage grounding, TTS voice consent/recording/scope-lock/royalty, practice plans                                  | Real; the containment model (persona can only speak sponsor-approved lines) is the right design           |
| Pose coaching                   | `@oshun/aja-pose` (~3.7k LOC)                           | MediaPipe tasks-vision runtime + MoveNet fallback pipeline, geometric feature extraction, nearest-centroid classifier + confusion-matrix gate, rule-based alignment cues, risk-modification ladder, on-device privacy egress guard        | Runtime/features/rules real; synthetic corpus mislabeled as in-house/licensed — FIXED                     |
| Concert quality gates           | `@oshun/v3-concert-quality` (~1k LOC)                   | Judge-panel scene quality scoring, corpus diversity (cluster coverage + pairwise distance), slop-density caps, composed with C2PA/consent gates into one fail-closed export suite                                                         | Real; genuinely SOTA-shaped content-quality gating                                                        |
| Avatar pipeline                 | `@oshun/avatar-pipeline` (~5.2k LOC)                    | VRM→Oshun retarget, GA personas, likeness-drift metric (normalized landmark distance per canonical angle, fail-closed on missing views), dual authoring, instructor opt-in                                                                | Real metric over synthetic gallery fixtures                                                               |
| Motion / world-asset generation | `@oshun/isis-motion`, `@oshun/isis-world-asset`         | Motion briefs / retarget-pass QA / Sequencer cue export; LOD budgets / cook compliance / asset briefs / provenance                                                                                                                        | Were descriptor-only shells at audit start; REAL implementations added in the second pass (see fixes 6–7) |

## Fixed during this audit

All three mirror the V2 precedent
(`fix(shared): fail-loud v2 translation provider seam`): a governance library
must never return a result it did not receive from a real upstream call.

1. **HIGH — fabricated lyric generation**
   (`libs/v3/isis-music/src/grounded-lyric-generation.ts`).
   `buildSaraswatiGroundedLyricDraft` returned four hardcoded Anaya Veil
   template lines for ANY persona/theme while stamping
   `modelFamily: 'claude-opus' | 'claude-sonnet'` as though a model had
   generated them; the spec pinned the fabrication ("generates … with Claude
   Sonnet"). Fix: `lines` is now a REQUIRED input (the caller passes real model
   output); empty/missing lines throw `SaraswatiGroundedLyricProviderError`. The
   former template is exported as
   `SARASWATI_ANAYA_VEIL_GROUNDED_LYRIC_FIXTURE_LINES`, explicitly labeled a
   validation fixture. Tests now assert the fail-loud path.

2. **HIGH — mastering quality gate that could never fail**
   (`libs/v3/isis-music/src/mix-master-review-gate.ts`).
   `createSaraswatiAutoMixMasterPass` "checked" loudness/true-peak by comparing
   release-target CONSTANTS to themselves and hardcoded
   `reviewPreviewRendered: true`, minting artifact ids for artifacts never
   produced. Fix: new required `SaraswatiMasteredTrackMeasurements` (master +
   preview artifact ids, measured integrated LUFS, measured dBTP, preview
   rendered) — missing/invalid measurements throw
   `SaraswatiAutoMixMasterMeasurementError`; checks now evaluate measurements
   against −14 LUFS ±1 LU and ≤ −1 dBTP. Review queue takes
   `{ track, measurements }` submissions. Tests prove the gate fails on
   out-of-tolerance measurements.

3. **MEDIUM — implicit synthetic rights catalog**
   (`libs/v3/isis-music/src/fingerprint-pre-release-check.ts`).
   `checkSaraswatiPreReleaseFingerprints` defaulted to the 50-track SYNTHETIC
   reference catalog, so a caller omitting `referenceCatalog` got a
   guaranteed-'clear' rights verdict against fake references. Fix: the catalog
   is now a required option (throws otherwise); the synthetic constant is
   documented as validation-only.

4. **MEDIUM — synthetic pose corpus masquerading as real datasets**
   (`libs/v3/aja-pose/src/classifier.ts`). The index-harmonic fixture corpus
   carried manifests claiming `sourceKind: 'in-house'` / `'licensed'` with
   invented license refs (`licensed-yoga-pose-validation-v3`), making the
   self-fulfilling ≥ 0.92 accuracy gate look like a measured result. Fix: new
   `'synthetic-fixture'` source kind used by the default corpus, honest dataset
   ids/license ref, and a doc contract that production centroids must be trained
   on real labeled captures.

Verifier needles updated to match
(`verify-saraswati-grounded-lyric-generation.mjs`,
`verify-aja-asana-classifier.mjs`); all three touched verifiers re-run green.
Post-fix: isis-music 23/23, aja-pose 21/21, tsc clean on both.

## Fixed in the second pass (same day)

After the initial report, the remaining locally-actionable gaps were closed:

5. **Concert authoring pipeline evidence seam**
   (`libs/v3/saraswati-stage/src/concert-authoring-pipeline.ts`). The pipeline
   previously self-certified: speech slots built with
   `editorialReviewState: 'approved'`, dress rehearsals with `signedOff: true`
   and 5 phantom operators, choreography `true` literals, GA cadence defaulting
   `?? true` — all 10 gates passed by construction. Now every report carries
   `evidenceMode: 'declared-drill' | 'recorded'`: with no `recordedEvidence`
   input the run is a labeled drill; with records supplied (reviewer ids +
   timestamps, named rehearsal participants, bound-interaction lists, observed
   cadence counts) the artifacts are built FROM the records and honest-zero
   cadence records fail the gate. `publishSaraswatiConcertSequencer` now THROWS
   on drill evidence unless `allowDrillPublish` is explicit, and drill receipts
   are labeled `evidenceMode: 'declared-drill'`. The Web Studio cockpit passes
   the explicit drill flag and exposes `data-evidence-mode`. Verifier failure
   set confirmed byte-identical before/after (the 4 remaining failures are the
   intentional honest-red GA-window signals from the 2026-06-12 remediation).
6. **`@oshun/isis-motion` implemented** (was an ~85-LOC descriptor shell). Real
   domain logic behind all three declared capabilities: motion briefs (metronome
   tempo classes, energy→intensity ladder, contiguous-section and beat-count
   validation), retarget-pass QA (17-bone canonical coverage, goniometric joint
   limits — knee/elbow 0–150°, neck ±70° —, contact-frame foot-slip metric at 2
   cm tolerance), and cue export (beat→frame quantization at the 30 fps
   Sequencer rate with gap-free full-coverage validation). 10 tests assert exact
   computed values (e.g. 16 beats @120 BPM = 240 frames; 6 cm slip fails).
7. **`@oshun/isis-world-asset` implemented** (was an ~86-LOC descriptor shell).
   Tier-scaled LOD budgets (desktop envelopes per asset class; VR ×0.5, mobile
   ×0.25, Tier-2 web ×0.1 triangle scales; per-tier texture ceilings; 40%/15%
   LOD-chain ratios), measured-cook compliance evaluation (fail-loud on
   over-budget triangles/textures, missing LOD levels, material-slot overruns),
   tenant-policy asset briefs (per-tenant allowed classes; Tara may not generate
   architecture), and provenance bundles with a fail-closed inspector that
   blocks publish on failed cook evidence. 8 tests assert exact budget numbers
   (hero-prop mobile LOD0 = 37,500 tris).
8. **`v1-isis-registration.ts` publication evidence derived, not asserted.** The
   five `publicationEvidence` booleans (previously hardcoded `true`) now derive
   from evidence refs; the in-repo seed points validation/dry-run at the real
   local artifacts and leaves the three human sign-off refs EMPTY — their
   booleans are honestly false and `publicationReady: false` until real
   ack/review/rollback records are supplied.

9. **Registration proven against the real V1 Isis registry** (third pass, same
   day). New integration spec
   `apps/isis/workflow-registry/src/routes/saraswati-v3-workflow-registration.spec.ts`
   registers the Saraswati track-generation workflow through the ACTUAL
   workflow-registry service — real Hono routes, real zod schema validation
   (engine `custom`, category `audio-generation` accepted), real service layer +
   security audit log; only the storage backend is swapped in-memory (the same
   dependency-boundary double the service's own route specs use). Create →
   publish → fetch round-trip verified; the payload is derived from the
   `@oshun/isis-music` catalog entry, so drift between the module and the real
   registry schema now fails a test. The evidence seed's `validationRunRef`
   points at this spec. Side fix: the workflow-registry app's vitest OOM'd on 16
   GB machines (workspace-wide tsconfig scan) — a minimal-alias
   `vitest.integration.config.ts` now runs its specs locally (auth spec 11/11,
   previously OOM).

## Findings noted, not fixed (adjudicated or not locally actionable)

- **Production registry deployment.** The registration path is now
  integration-proven end-to-end against the real service code; executing it
  against the deployed production registry (real Postgres, real API keys) is a
  deploy-time step, plus the three human sign-off refs (owner ack, governance
  review, rollback plan) which stay honestly false until recorded.
- **aja-pose "human review" relevance gate** builds its accepted-rule sets
  procedurally under `reviewerPanel: 'tara-senior-teachers'` — expected-decision
  fixtures, fine as harness, but `passesHumanReviewGate` should not be quoted as
  evidence of human approval.
- **Rust module evaluators are structural.** e.g. `evaluate_between_song_speech`
  verifies id shapes/prefixes and emits `triggered: true` receipts for
  transitions that never ran. Validation is real and fail-loud; the reports are
  drill artifacts, not showtime telemetry.

## Deploy boundary (what "prod-ready" additionally requires)

- Provider credentials + real generation calls behind every seam: music
  providers (Suno/Udio/…), lyric LLM (via V1 Isis / `@oshun/ai`), TTS
  (Cartesia/ElevenLabs), fingerprint vendors (Audible Magic/Pex live catalogs).
- Real V1 Isis registry registration for `saraswati-stage-track-generation`.
- Real pose-capture training data for the aja-pose centroids (the runtime is
  ready; the shipped default model is fixture-trained).
- UE-side execution (Sequencer assets, MetaSounds, motion libraries) — not
  auditable on this Mac (source-read only; no UE here).
- The 11 currently-red launch sub-gates, GA-cadence window actually elapsing,
  real drills replacing self-attested ones (per `V3/LAUNCH_READINESS.md` and the
  remediation log).

## Test evidence (all run 2026-07-14 on this machine)

| Suite                                                                                     | Result                                                                                                                                 |
| ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `libs/v3/isis-music` (post-fix)                                                           | 23/23 ✓, tsc clean                                                                                                                     |
| `libs/v3/isis-motion` (post-implementation)                                               | 10/10 ✓, tsc clean                                                                                                                     |
| `libs/v3/isis-world-asset` (post-implementation)                                          | 8/8 ✓, tsc clean                                                                                                                       |
| `libs/v3/aja-pose` (post-fix)                                                             | 21/21 ✓, tsc clean                                                                                                                     |
| `libs/v3/saraswati-stage` (post-evidence-seam)                                            | 57/57 ✓, tsc clean                                                                                                                     |
| `libs/v3/sophia-saraswati-grounding`                                                      | 8/8 ✓                                                                                                                                  |
| `libs/v3/tara-studio`                                                                     | 69/69 ✓                                                                                                                                |
| `libs/v3/avatar-pipeline`                                                                 | 23/23 ✓                                                                                                                                |
| `libs/v3/concert-quality`                                                                 | 14/14 ✓                                                                                                                                |
| `apps/oshun/web` SaraswatiConcertAuthoringPipeline component                              | 3/3 ✓                                                                                                                                  |
| `apps/v3/saraswati-service` (cargo)                                                       | 38/38 ✓                                                                                                                                |
| verifiers: grounded-lyric, auto-mix-master, fingerprint, aja-classifier, v1-isis-workflow | all pass post-fix; concert-authoring verifier failure set byte-identical to pre-change (intentional honest-red GA-window signals only) |
