The
libs/v3/area: eighteen Nx libraries that make up V3, the embodied / 3D-metaverse generation of the Oshun platform — the Lilith Commons social-3D shell plus its Tara (yoga) and Saraswati (music) tenants, and the embodiment, generation, networking, audio, identity, memory, and safety packages they compose.
What this area is#
"V3" is Oshun's embodied tier: a real-time 3D world (the Lilith Commons) in
which members appear as avatars, attend live yoga classes in the Tara Studio
tenant, and watch AI-persona concerts on the Saraswati Stage tenant. The
libs/v3/ directory is not one package but eighteen separate Nx libraries,
each tagged scope:v3 and slotted into a named architectural layer (avatar,
embodiment, generation, network, audio, identity, memory,
grounding, safety, web, tenant, domain). Together they describe how an
avatar is imported and rigged, how it moves and lip-syncs, how it hears spatial
audio and talks to other clients, how its identity links back to a V1 account,
and how its embodied behaviour is kept safe.
The unifying spine across all eighteen is a single convention: every package's
src/index.ts exports a V3PackageDescriptor — a typed capability manifest of
{ key, summary, operationalMetric } entries plus …CapabilityKeys(),
…ReadinessScore(), and …RequireCapability() helpers. The operationalMetric
strings encode each capability's acceptance target (e.g.
lip-sync:60hz-8ms-budget, music-stream-sync:<=25ms-p99-256pax-60m,
crisis-transcript-classifier:recall>=0.95-fpr<=0.02). This makes the area
self-describing: a release gate can read a package's descriptor, check which
capability keys are active, and compute a readiness fraction. The descriptor is
the contract; what varies between packages is how much real domain logic sits
behind it.
That depth varies honestly. Most packages back their descriptor with substantial
domain implementations — @oshun/avatar-pipeline (a ~2,700-line VRM-1.0
importer/retargeter/blendshape/costume/provenance engine),
@oshun/spatial-audio (real HRTF convolution, ambisonic decoding, distance
attenuation, occlusion, Resonance-Audio runtime, and NTP-style music sync),
@oshun/psyche-3d (60 Hz voice-to-viseme lip-sync, chat-tone-to-expression,
gesture parsing), @oshun/lilith-body-policy (voice-transcript tone, crisis
classification, and impersonation safety), and the three tenant packages. A few
are still manifest-stage — @oshun/isis-motion and @oshun/isis-world-asset
are presently descriptor-only, declaring capability budgets with no
implementation modules behind them yet. Each block below states which it is.
How it fits the wider system#
V3 packages sit above the cross-cutting Oshun libraries and compose them at the
seams: @oshun/lilith-body-policy imports @oshun/persona-policy-lilith and
@oshun/avatar-pipeline; @oshun/memory-iris-spatial adapts
@oshun/memory-iris and @oshun/contracts/iris; @oshun/v3-concert-quality
plugs into the V1 @oshun/content-quality-judge and
@oshun/content-release-gates suites; the tenant packages
(@oshun/tenant-lilith-commons, @oshun/tenant-saraswati-stage,
@oshun/tenant-tara-studio) carry Prisma-generated clients over V3* data
models. implicitDependencies in each project.json record the upstream edges
(an avatar package depends on @oshun/embodiment-aja, a generation package on
@oshun/generation-control-isis, and so on). The clients of this area are the
V3 world server, the web/Pixel-Streaming fallback runtime, and the tenant
studios; walk the "used by" edges on any node below to see exactly who depends
on it.
Entity catalog (19)#
The 19 tracked Nx projects in v3, each a code-linked entity node — package, type, source path, declared targets, and its internal dependency graph (depends-on / used-by, resolved from the package manifests, §6/§8), read from the project graph. Grouped by architectural layer; walk the dependency links to travel the system. 18 of these carry an authored deep-dive (what / why / how it fits); the rest are generated scaffolds awaiting one.
audio (1)#
The audio-layer DSP package (libs/v3/spatial-audio/src/index.ts, ~1,680
lines). Genuinely implemented audio engineering: an Opus 24 kbps mono
web-receiver plan with a real SNR bench (measureVoiceSignalToNoiseDb),
listener-position HRTF panner derivation, FIR HRTF convolution with a validation
impulse response, first-order ambisonic-to-stereo decoding, a device-aware
HRTF-vs-ambisonic renderer selector, inverse-distance attenuation and AABB
scene-occlusion raycasts, a per-user mix-bus runtime with HUD control latency,
an accessibility audio-description bed, a flat-stereo spatial-audio-off mode
with QA gating, a Resonance-Audio Tier-2 fallback runtime, and an NTP-style
music-stream clock-sync simulator targeting <=25ms p99 drift across 256
attendees over a 60-minute concert. One of the most algorithm-dense nodes in the
area.
V3PackageLayer4V3Capability6V3PackageDescriptor12OPUS_24K_MONO_CODEC20OPUS_WEB_RECEIVER_BENCH_TARGET_SNR_DB29Opus24KMonoCodecConfig31AudioWorkletReceiverPlan40OpusWebReceiverPlan49VoiceSignalBenchReport60WorldServerPositionMm66ListenerPositionVoicePacket72HrtfPannerState81HrtfImpulseResponse93HrtfConvolutionPlan101 +95 moreavatar (1)#
The avatar-layer import-and-rig engine
(libs/v3/avatar-pipeline/src/index.ts, ~2,700 lines, plus retarget/ and
premium/ submodules). It parses VRM-1.0 glTF documents (importVrm1Document,
parseVrm1Json), verifies identity-preserving round trips, builds the canonical
60-bone oshun-60 retarget table and runs reference-animation regression, maps
visemes/emotions/gaze/brow blendshapes and scores reference-phrase lip-sync,
binds 12 costume material slots with realm-scoped Lilith safety checks,
publishes the Tara/Saraswati/Commons costume packs and the Oshun base-avatar
gallery, bridges Ready Player Me avatars, and attaches provenance bundles. One
of the largest and most heavily-composed nodes in the area (consumed by
@oshun/lilith-body-policy, among others).
V3PackageLayer1V3Capability3V3PackageDescriptor9Vrm1GltfDocument17Vrm1Extension31Vrm1HumanBoneBinding49Vrm1ExpressionBinding54Vrm1Node67Vrm1Mesh73Vrm1Primitive82Vrm1Skin89Vrm1Material95ImportedVrm1Mesh105ImportedVrm1Bone114 +119 moredomain (2)#
V3 Saraswati concert scene/speech quality + diversity gates (ledger §9.4): judge-panel scoring + corpus diversity as required gates in the concert export suite, alongside the existing C2PA + consent gates, so a low-quality or homogeneous scene draft fails before export signing
The domain-layer concert quality + diversity gates
(libs/v3/concert-quality/src). Its index.ts re-exports
concert-scene-quality-gate.ts, v3-concert-export.ts, and
concert-track-signer.ts. As the source header documents, the Saraswati concert
authoring pipeline already enforces readiness and the export flow enforces
provenance + consent; these gates add the missing quality signal — each
scene/speech draft is scored by the real V1 @oshun/content-quality-judge panel
(assessArtifactQuality, computeSlop, corpusDiversity) and surfaced as
GateDefinitions in the same @oshun/content-release-gates export suite,
failing loud when a concert has no scene drafts rather than waving an empty
corpus through. Implemented, and cross-composed with the V1 content stack.
assessConcertSceneQuality13buildV3ConcertExportSuite13createConcertSceneDiversityGate13createConcertSceneQualityGate13createConcertSceneQualityGates13xtractScenes13ConcertSceneQualityConfig13ConcertSceneQualityReport13SaraswatiSceneDraft13SceneQualityScore13V3ConcertExportSuiteConfig13V3_CONCERT_EXPORT_SUITE_ID27valuateV3ConcertExport27V3ConcertExportInput27 +4 moreGoverned V3 Lecture Hall admission bridge for released Metis lesson and assessment evidence packages.
embodiment (2)#
The Tara embodiment pose package (libs/v3/aja-pose/src). Beyond the
v3AjaPoseDescriptor (11 capabilities covering on-device MediaPipe/MoveNet pose
estimation, the canonical-asana classifier, alignment-cue generation, Psyche TTS
voice cues, and the on-device privacy/Iris-aggregate boundary), it ships real
implementation modules re-exported from index.ts: classifier.ts (an
18-feature asana classifier over ~30 canonical asana ids with a >=0.92
per-asana accuracy target), cue-generator.ts, voice-cue.ts,
risk-flagger.ts, privacy.ts, and runtime.ts. This is a thick, implemented
package, not a manifest.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3AjaPoseDescriptor17v3AjaPoseCapabilityKeys81v3AjaPoseReadinessScore85v3AjaPoseRequireCapability93The Psyche embodiment package (libs/v3/psyche-3d/src/index.ts, depends on
@oshun/embodiment-psyche). It implements real-time 60 Hz voice-to-viseme
lip-sync across web/mobile/VR surfaces (classifyPsyche3dVoiceFrame,
buildPsyche3dLipsyncTracks with a phoneme→viseme table, envelope fallback, and
per-surface look-ahead/release smoothing), a lexicon-based chat-tone classifier
mapped to emotion blendshapes (classifyPsyche3dChatTone →
resolvePsyche3dExpressionStateFromChatTone) with a 10-case coherence
validation set targeting >=0.95 accuracy, and a gesture-command parser over
named mudra/ applause/snap presets with a cross-client consistency check
targeting 1.0. A thick, real signal-processing package.
V3PackageLayer1PSYCHE_3D_LIPSYNC_TARGET_HZ3PSYCHE_3D_LIPSYNC_FRAME_MS4PSYCHE_3D_CLIENT_SURFACES6Psyche3dClientSurface7PSYCHE_3D_VISEME_NAMES9Psyche3dVisemeName26PSYCHE_3D_EMOTION_BLENDSHAPES28Psyche3dEmotionBlendshapeName38PSYCHE_3D_CHAT_TONE_LABELS40Psyche3dChatToneLabel53PSYCHE_3D_GESTURE_IDS55Psyche3dGestureId64Psyche3dPhonemeHint66 +40 moregeneration (3)#
A generation-layer package that is currently descriptor-only
(libs/v3/isis-motion/src/index.ts is the entire source). It exports
v3IsisMotionDescriptor with three capabilities (motion-brief,
retarget-pass, cue-export, all declared as *ms-budget targets) plus the
standard readiness helpers, but ships no implementation modules behind them —
unlike its sibling @oshun/isis-music. Honestly a reserved manifest slot for
Isis-driven motion generation, not yet an implemented engine.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3IsisMotionDescriptor17v3IsisMotionCapabilityKeys41v3IsisMotionReadinessScore45v3IsisMotionRequireCapability53SARASWATI_MOTION_BPM_MAX61SARASWATI_MOTION_BPM_MIN61SARASWATI_MOTION_INTENSITY_LADDER61SARASWATI_MOTION_TEMPO_CLASS_BOUNDS61buildSaraswatiMotionBrief61classifySaraswatiMotionIntensity61classifySaraswatiMotionTempo61 +10 moreA generation-layer package whose descriptor (v3IsisMusicDescriptor) mixes a
few placeholder budget capabilities (music-brief, rights-check:16ms-budget,
stem-export:24ms-budget) with real, implemented ones. index.ts re-exports
seven substantive Saraswati modules: fingerprint-pre-release-check.ts (Audible
Magic / Pex pre-release matching over a 50-track reference catalog),
grounded-lyric-generation.ts (Sophia-grounded lyric drafting with a factuality
validation set), lyric-tone-policy.ts (Lilith persona-policy tone review),
mix-master-review-gate.ts, track-provenance-bundle.ts, provider-routing.ts
(multi-provider cost/quality/failover routing), and v1-isis-registration.ts
(workflow registration + submit-job route). Substantially implemented; only a
handful of descriptor entries are forward-looking budgets.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3IsisMusicDescriptor17v3IsisMusicCapabilityKeys76v3IsisMusicReadinessScore80v3IsisMusicRequireCapability88SARASWATI_FINGERPRINT_EDITORIAL_REVIEW_QUEUE_ID96SARASWATI_FINGERPRINT_MATCH_THRESHOLD96SARASWATI_FINGERPRINT_REFERENCE_CATALOG96SARASWATI_FINGERPRINT_REQUIRED_PROVIDERS96SARASWATI_PRE_RELEASE_FINGERPRINT_VALIDATION_INPUTS96checkSaraswatiPreReleaseFingerprints96valuateSaraswatiPreReleaseFingerprintChecks96 +55 moreA generation-layer package that, like @oshun/isis-motion, is currently
descriptor-only (libs/v3/isis-world-asset/src/index.ts is the whole
source). It declares v3IsisWorldAssetDescriptor with three budget capabilities
(asset-brief, lod-budget, provenance) and the readiness helpers, but has
no implementation modules. A reserved manifest slot for Isis world-asset
generation, shown as such rather than overclaimed.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3IsisWorldAssetDescriptor17v3IsisWorldAssetCapabilityKeys41v3IsisWorldAssetReadinessScore45v3IsisWorldAssetRequireCapability53V3_WORLD_ASSET_BRIEF_MIN_PROMPT_WORDS63V3_WORLD_ASSET_TENANT_ALLOWED_CLASSES63buildV3WorldAssetBrief63V3_WORLD_ASSET_DESKTOP_LOD0_BUDGETS70V3_WORLD_ASSET_TIER_TEXTURE_CEILING_PX70V3_WORLD_ASSET_TIER_TRIANGLE_SCALE70computeV3WorldAssetLodBudget70 +3 moregrounding (1)#
The grounding-layer adapter (libs/v3/sophia-saraswati-grounding/src, depends
on @oshun/evidence-sophia). Its descriptor's first three capabilities are
*ms-budget labels, but index.ts re-exports a real backstory-grounding.ts
module: a Sophia adapter for Saraswati artist-backstory grounding
(runSaraswatiBackstoryGroundingAdapter,
adaptSaraswatiBackstoryClaimsWithSophia), a required-GA-persona-count review
(reviewSaraswatiBackstoryGrounding), a source registry and dossier builder,
and an audience-facing citation-surface audit for web/mobile/VR hover surfaces.
Implemented grounding adapter, not a stub.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3SophiaSaraswatiGroundingDescriptor17v3SophiaSaraswatiGroundingCapabilityKeys51v3SophiaSaraswatiGroundingReadinessScore55v3SophiaSaraswatiGroundingRequireCapability65SARASWATI_BACKSTORY_GROUNDING_ADAPTER_REVIEW_ID75SARASWATI_BACKSTORY_GROUNDING_REQUIRED_GA_PERSONA_COUNT75SARASWATI_BACKSTORY_GROUNDING_SCHEMA75SARASWATI_AUDIENCE_CITATION_SURFACES75SARASWATI_GA_BACKSTORY_GROUNDING_DOSSIERS75SARASWATI_GA_BACKSTORY_PERSONA_SEEDS75SARASWATI_SOPHIA_BACKSTORY_SOURCE_REGISTRY75 +6 moreidentity (1)#
The identity-layer bridge between V3 avatars and V1 accounts
(libs/v3/lilith-identity-bridge/src/index.ts, plus per-region-rules and
recording-consent modules, depends on @oshun/auth-primitives). It implements
external-OAuth account linking for Quest / Vision Pro / PSVR2
(bindV3AvatarToV1Account with per-platform issuer verification), realm
display-name override with V1 audit-log rows, a comprehensive V3-session DSAR
exporter covering eight data categories (avatar history, transcripts,
attendance, signed-edition holdings, recordings, Pixel-Streaming sessions,
consent decisions, ticket/refund/credit ledger) that flows into the V1
admin-dsar-review pipeline, and a reputation-band model
(deriveV3ReputationSummary) with operator-escalation ranking. A thick, real
package with genuine domain scoring formulas.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3LilithIdentityBridgeDescriptor17v3LilithIdentityBridgeCapabilityKeys54v3LilithIdentityBridgeReadinessScore58v3LilithIdentityBridgeRequireCapability68V3OAuthBridgePlatform78V3_SUPPORTED_OAUTH_BRIDGE_PLATFORMS80V3ExternalOAuthAccount86V3LinkedExternalAccount95V3AccountAvatarBinding106V3V1AccountAvatarProfile118V3AccountAvatarBindingAuditEvent127 +46 morememory (1)#
The memory-layer adapter that scopes Iris memory to 3D space
(libs/v3/memory-iris-spatial/src/index.ts, depends on @oshun/memory-iris).
It narrows Iris memory scopes to the spatial subset (scene and pose),
validates scope bindings against MemoryScopeKeySchema from
@oshun/contracts/iris, and provides round-trip encode/decode plus
buildV3IrisSpatialWritePlan, which wraps buildIrisMemoryWritePlan to mark
pose memories as biometric-sensitive and attach the spatial scope contract as
metadata. A thin but genuinely-implemented boundary adapter over the V1 Iris
memory engine, not a stub.
V3PackageLayer10V3IrisSpatialMemoryScope11V3Capability13V3PackageDescriptor19V3IrisSpatialScopeBinding27V3IrisSpatialWritePlanInput37v3MemoryIrisSpatialDescriptor45v3MemoryIrisSpatialCapabilityKeys69v3MemoryIrisSpatialReadinessScore73v3MemoryIrisSpatialRequireCapability81v3IrisSpatialScopeToMemoryScopeKey91v3IrisSpatialScopeFromMemoryScopeKey120roundTripV3IrisSpatialScopeBinding146buildV3IrisSpatialWritePlan152network (1)#
The network-layer wire protocol (libs/v3/multiplayer-protocol/src/index.ts,
with a proto:gen target generating src/generated from proto/ via Buf).
Real implementation: it re-exports the generated protobuf codecs and implements
snapshot-delta encode/decode and application (applySnapshotDelta),
dead-reckoning prediction (predictSnapshot/predictTransform),
protocol-version negotiation (negotiateProtocolVersion, pinned to v3.0.0),
capacity tiers (class 32 kbps / stadium 256 kbps), and a decoder benchmark
harness over synthetic 256-participant traffic. The descriptor's three
*ms-budget capability labels are manifest-level, but the codec/netcode behind
them is genuinely implemented.
V3PackageLayer15V3Capability17V3PackageDescriptor23v3MultiplayerProtocolDescriptor31v3MultiplayerProtocolCapabilityKeys55v3MultiplayerProtocolReadinessScore59v3MultiplayerProtocolRequireCapability69CLASS_TIER_MAX_BPS79STADIUM_TIER_MAX_BPS80PROTOCOL_V3_0_082DEFAULT_SUPPORTED_PROTOCOL_VERSIONS89ProtocolNegotiationAccepted91ProtocolNegotiationRejected97ProtocolNegotiationResult104 +11 moresafety (1)#
The safety-layer embodied-behaviour policy engine
(libs/v3/lilith-body-policy/src/index.ts, ~1,980 lines). Built with a tsup
ESM build (it externalises its @oshun/avatar-pipeline and
@oshun/persona-policy-lilith dependencies), it implements rolling 5-second
voice-transcript tone scoring against the V1 Lilith tone policy
(evaluateV3VoiceTranscriptTonePolicy), a crisis-language classifier with a
recall>=0.95 / fpr<=0.02 release gate and an embodied crisis-routing handoff
(in-world soft prompt → V1 crisis pipeline → operator pager), realm-scoped
costume rule checks, protected-persona avatar-swap impersonation blocking, and a
Saraswati AI-persona enforcement suite with an adversarial prompt battery. A
thick, real safety package that composes the V1 Lilith persona-policy
primitives.
V3BodyPolicyLayer33V3Capability35V3PackageDescriptor41v3LilithBodyPolicyDescriptor49v3LilithBodyPolicyCapabilityKeys89v3LilithBodyPolicyReadinessScore93v3LilithBodyPolicyRequireCapability101V3_VOICE_TRANSCRIPT_WINDOW_MS111V3_TONE_OPERATOR_ROUTE_REPEAT_THRESHOLD112V3_DEFAULT_TONE_POLICY_ID113V3_CRISIS_CLASSIFIER_MIN_RECALL114V3_CRISIS_CLASSIFIER_MAX_FALSE_POSITIVE_RATE115V3_CRISIS_ROUTING_DRILL_MIN_RECALL116V3VoiceTranscriptSegment118 +50 moretenant (3)#
The shared tenant package for the Lilith Commons
(libs/v3/lilith-commons/src; Nx project @oshun/tenant-lilith-commons). It
carries a Prisma-generated client under src/generated/client over the Commons'
V3* data models (V3Room, V3Venue, V3Presence, V3LilithSession,
V3DebateSession, V3SpatialTranscript, V3EmbodiedConsent,
V3ProvenanceBundle3D, V3JournalEntry3D, and more) plus the
launch-locale-hud-translations.ts localization module. It depends on
@oshun/design-tokens and @oshun/navigation. The shared substrate the two
flagship studio tenants build on.
V3_LAUNCH_LOCALIZATION_HUD_TRANSLATIONS3V3PackageLayer5V3Capability7V3PackageDescriptor13v3LilithCommonsDescriptor21v3LilithCommonsCapabilityKeys128v3LilithCommonsReadinessScore132v3LilithCommonsRequireCapability140V3_LILITH_COMMONS_LAUNCH_VENUE_IDS150V3_LILITH_COMMONS_GA_START_MS161V3_TARA_RITUAL_GA_WEEK_MS162V3_TARA_SUNSET_GRATITUDE_GA_WEEK_COUNT163V3_TARA_LUNAR_RITUAL_PARTICIPANT_COUNT164V3_TARA_GROUP_BREATHWORK_GA_WEEK_COUNT165 +561 moreThe Saraswati concert-stage tenant (libs/v3/saraswati-stage/src; Nx project
@oshun/tenant-saraswati-stage, depends on @oshun/design-tokens and
@oshun/generation-control-isis). Behind v3SaraswatiStageDescriptor it ships
a Prisma client over V3* models (V3ArtistPersona, V3Concert, V3Setlist,
V3Track, V3SignedEdition, V3RemixRights, V3FanInteraction, V3Catalog)
and many real modules: persona-dossier-editor.ts, persona-policy-lock.ts,
voice-signature-build.ts, concert-authoring-pipeline.ts,
discography-release-flow.ts, genre-cell-registry.ts/genre-cell-binding.ts,
cross-persona-collaboration.ts, remix-rights-catalog.ts,
themis-rights-adjudication.ts, track-c2pa-manifests.ts,
off-platform-distribution.ts, and ga-inventory.ts. Thick, implemented
tenant.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3SaraswatiStageDescriptor18v3SaraswatiStageCapabilityKeys103v3SaraswatiStageReadinessScore107v3SaraswatiStageRequireCapability115SARASWATI_CONCERT_AUTHORING_CONCERTS_PER_ARTIST_PER_MONTH125SARASWATI_CONCERT_AUTHORING_DEBUT_CATALOG_MAX_WORKING_WEEKS125SARASWATI_CONCERT_AUTHORING_DEBUT_TRACK_COUNT125SARASWATI_CONCERT_AUTHORING_GA_ARTIST_COUNT125SARASWATI_CONCERT_AUTHORING_GA_ARTIST_IDS125SARASWATI_CONCERT_AUTHORING_GA_SUSTAINED_DAYS125SARASWATI_CONCERT_AUTHORING_LIGHTING_NIAGARA_MAX_WORKING_DAYS125 +110 moreThe Tara yoga-studio tenant (libs/v3/tara-studio/src; Nx project
@oshun/tenant-tara-studio, depends on @oshun/design-tokens and
@oshun/embodiment-aja). Behind v3TaraStudioDescriptor it ships a Prisma
client over V3* models (V3Asana, V3AsanaSequence, V3InstructorProfile,
V3InstructorCredential, V3PracticePlan, V3LiveClassSession,
V3OnDemandClassRecording, V3AjaCueEvent) and many real modules: the
canonical asana-library.ts, practice-plan.ts/practice-plan-adjustment.ts,
lineage-grounding.ts (Sophia-grounded lineage editor that blocks unsourced
claims), invitational-language-linter.ts, eyes-open-policy.ts,
physical-adjustment-consent.ts, class-style-mode.ts, and the AI-persona
governance suite (ai-persona-sponsor, -sequence-script, -nameplate,
-region-cap) plus the TTS-voice consent/contract/recording/scope-lock/royalty
modules. Thick, implemented tenant.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3TaraStudioDescriptor17v3TaraStudioCapabilityKeys132v3TaraStudioReadinessScore136v3TaraStudioRequireCapability144web (2)#
The web-layer non-native runtime (libs/v3/lilith-engine-web-fallback/src) —
the WebGPU/WebGL2 fallback for clients that cannot run the native engine. Its
descriptor enumerates 18 capabilities and index.ts re-exports eleven real
modules: physics.ts (Rapier prop-pickup prediction), steadyFps.ts (Tier-2
sustained-FPS profiles), gateway.ts (browser/network transport plan
selection), renderer.ts (a Three.js fallback renderer host + reference scene),
parity.ts (tenant parity envelopes), ajaCueValidation.ts, the Tara recording
suite (taraInstructorHud, taraRecordingTimeline, taraRecordingPractice,
taraRecordingEngagement). The descriptor's accessibility capabilities
(reduced-motion, color-vision palettes, photosensitive-safe, spatial-audio-off,
launch-localization) tie into the matching @oshun/spatial-audio and
pixel-stream controls. Thick and implemented.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3LilithEngineWebFallbackDescriptor17v3LilithEngineWebFallbackCapabilityKeys116v3LilithEngineWebFallbackReadinessScore120v3LilithEngineWebFallbackRequireCapability130lilithRapierPropPickupScenarioDefaults140simulateRapierPropPickupPrediction140lilithTier2SteadyFpsProfiles150selectLilithTier2SteadyFpsProfile150validateLilithTier2SteadyFpsSample150connectLilithGatewayWithFallback162detectLilithGatewayBrowserProfile162 +47 moreThe web-layer Pixel-Streaming client package
(libs/v3/lilith-web-pxstream/src). Its v3LilithWebPxstreamDescriptor
declares 12 capabilities (session match, WebRTC offer, input channel, plus the
same accessibility family as the web fallback — live captions, reduced-motion,
color-vision palettes, one-handed mobile, photosensitive-safe,
spatial-audio-off, cognitive-load reduction, keyboard/single-switch nav, launch
localization). index.ts re-exports a real player.ts module (with a companion
player.spec.ts). Implemented, focused on the streamed-client control/overlay
surface.
V3PackageLayer1V3Capability3V3PackageDescriptor9v3LilithWebPxstreamDescriptor17v3LilithWebPxstreamCapabilityKeys86v3LilithWebPxstreamReadinessScore90v3LilithWebPxstreamRequireCapability98