Auditor: Claude Code (Opus 4.8), adversarial verification per Oshun
CLAUDE.md ("Zero Tolerance for Stubs" + "Adversarial Verification Pass").
Scope: all 75 sections / 519 checked [x] tasks in V3/V3_TODOS.md.
Method: 13 section-cluster sub-audits that read actual source (not file
existence / grep counts), followed delegation chains, ran the real Rust/TS test
suites where possible, and ran the verify:v3 * gates. The single unchecked
[ ] is the convention example on line 49; there are zero [~] waivers.
Final state (after 3 remediation passes)#
V3/V3_TODOS.md now honestly reflects reality: 483 [x] genuinely-complete
tasks (real code/logic, verified — including 8 fixed implementation gaps) and
36 [~] not-locally-actionable tasks (external store cert §69, on-device
FPS + deployed Pixel-Streaming + cook/CDN sizes §66/§67, live Grafana + eval-set
CI measurement §65, real GA-onboarded instructors/artists §74, production
voice-FPR on real audio §41.4, and the §75 items that aggregate them). The
verify:v3 * suite is 249 pass / 20 fail, where every failure maps to a
[~] not-locally-actionable task and reports why; the de-circularized
verify:v3 launch-readiness correctly reports NOT GA-ready while any [~]
remains. No completion was fabricated to force green.
Headline verdict (original audit)#
The premise "all tasks are completely and expertly implemented" is FALSE.
The V3 work has a large, genuinely excellent engineering core — but it is shot
through with a systematic pattern of fabricated metric evidence, synthetic
data that passes its own gate, missing deliverables presented as done, and a
circular top-level gate that reports green while real sub-gates are red. Under
the repo's own [x]-means-done rule, a substantial number of boxes are checked
on work that does not meet its stated Done when: criterion.
Rough split across 519 tasks:
- ~60–65% genuinely complete with real domain logic + value-asserting tests that pass here.
- ~20% "repo-real, device/external-unverifiable" — substantial real C++/config whose final metric needs hardware/stores, but where the evidence is fabricated JSON rather than honestly marked not-locally-actionable.
- ~15–20% WEAK / STUB / FABRICATED-EVIDENCE — the
Done when:is met by hardcoded constants, synthetic-by-construction inputs, missing files, or passthrough code.
The strong core (genuinely real, tested, passing)#
- §2 contracts (28/30): real domain-specific Zod schemas (literal-pinned 60s
windows, sha256 regexes, royalty splits refined to total 10000 bps, V1
ProvenanceBundle.extend); registry-driven round-trip test (63 pass). - §3 multiplayer protocol (4/4): prost + ts-proto with a shared golden-hex wire constant asserted in Rust and TS; snapshot-delta + bandwidth budget; client predictor ≥60 Hz; version negotiation. Compiles, 7/7 + 7/7 pass.
- §4 world server (9/10): axum health/ready/metrics, room registry, 50/20 Hz tick with measured p99, real Rapier physics + anti-cheat, rstar R-tree interest management, consistent-hash sharding, hot-reload, OTel spans, Prometheus metrics. 22 lib tests pass.
- §5 gateway (partial): real quinn QUIC round-trip, real HS256 JWT with token-family rotation + reuse→revoke, priority backpressure scheduler, SFU fan-out with real HRTF azimuth/elevation math.
- §6/§7 voice + spatial audio: real SFU latency model, Opus byte budget, real FIR HRTF convolution, ambisonic B-format decode, inverse-distance attenuation (16.07 dB drop 5→30 m), slab-method ray/AABB occlusion, NTP four-timestamp clock sync. 21/21 + 22/22 pass with number-asserting tests.
- §8/§9 avatar + costume: real VRM 1.0 glTF import + FNV-1a identity hash, 60-bone retargeter, viseme/emotion blendshape mapper, 12-slot costume system with per-realm policy. 23/23 pass.
- §13–§19 (18/19) — SAFETY-CRITICAL, all real: server-validated pickup/place + asana-lock state machines; visibility-band logic; weighted reputation scoring with harassment override; crisis classifier delegating to a real 15-rule taxonomy with phrase lists (100% recall / 0% FP on an 83-case set); minor-protection age-gate with no-bypass proof and background-check expiry math. These are input-driven and tested with specific decisions, not truthiness.
- §20–§23 (16/16): operator-console panels with real reducers + audit
emission + RTL tests; §23.2 C2PA export is a real
c2pa-rs0.57 signer (SHA-256 over media bytes, ECDSA P-256 via rcgen, round-trip Adobe-CAI validation; 38/38 Rust tests pass). - §26–§33 Tara, §53–§56 commerce, §54 royalty waterfall: real integer-cent money math (basis points summing to exactly 10000, remainder reconciliation, exact computed payouts in tests). 149/149 commerce Rust tests pass.
- §37–§40 Saraswati live engine + economy; §42–§43 genre cells + Sophia grounding: real validation logic, 38/38 saraswati-service tests pass.
- §45–§52 Commons: the 8 venues are genuinely distinct, NOT CRUD clones — Nyx ephemeris sky scan, Nisaba 8-person lectio reading-order queue, Veritas deterministic podium turn machine, Metis tiered-seat geometry + slide delivery, Arete journal privacy, Solitary zero-observer cells. 139/139 pass.
- §58/§59 memory-iris + psyche-3d: real 39-phoneme→15-viseme ARPABET map, spectral-centroid envelope fallback, tone-lexicon expression classifier with mismatch-failing tests. 6/6 + 12/12 pass.
- §68 security (6/7): real JWT refresh rotation (22 tests), per-region rules (5 jurisdictions), DSAR V3→V1, voice-transcript rolling buffer.
- §70 stub scanner:
scripts/stub-indicator-scan.shis a real 285-line UE-aware scanner; runs clean (exit 0, zero hits) over V3. - §71/§72/§73 + 73A–73E: substantive runbooks, real marketing landing, real pxstream relay abuse classifier + POP failover (35 tests).
Confirmed defects (the auditor personally re-verified these)#
CRITICAL — fabricated metric evidence (§65, §66, §67)#
No load test, FPS profiler, or CDN probe runs anywhere. The numbers are typed into source/JSON and validated against themselves.
apps/v3/lilith-world-server/src/lib.rs:4275-4276— the 5× fleet-load p99 and voice-loss figures are hardcoded arrays[21.4 … 24.0]/[0.0028 … 0.0036].simulate_five_x_fleet_load_validationgenerates no load.scripts/v3/verify-v3-fleet-load.mjs:45-53duplicates the same literals and string-compares — circular.V3/ue/Build/Performance/*FpsValidation.json— desktop/mobile/VRsustainedFpshand-authored; the box has no RTX 3060 / iPhone / Quest 3.libs/oshun/analytics/src/v3-eval-sets-release-gates.ts:375-382,528-540— 8 eval observations hardcoded;ciStatus:'green'hardcoded.libs/oshun/analytics/src/v3-grafana-dashboards.ts—status:'live',watchedByOncall:true,grafana.oshun.internalURLs for a non-existent host.V3/validation/client-asset-bundle-validation.json+ cook-size JSONs — hand-authored byte sizes and CDN TTFB; no UE cook executed.
CRITICAL — circular top-level launch gate green over RED sub-gates (§75)#
node scripts/v3/verify-v3-launch-readiness.mjs→ exit 0 (green) whileverify-v3-per-region-rules.mjs→ exit 1 andverify-v3-ga-inventory.mjs→ exit 1, both of which it nominally aggregates.- The launch verifier contains 0
child_process/exec/spawn— it cannot run the sub-gates; it only string-matches the manifest + reads self-declaredstatus:"green"JSON. The manifestgate()helper hardcodesstatus:'pass'for all 39 gates, sobuildOshunV3LaunchReadinessReportcan never fail.
CRITICAL — localization ships zero translations (§64)#
apps/v3/lilith-web/locales/does not exist; no.locres,hud.json, or.vttanywhere underapps/v3.libs/v3/lilith-commons/src/index.ts:4515+locale packs are pure metadata; everybundleRef/voiceAssetRef/subtitleTrackRefis a danglingv3://…URI;qaValidated:truehardcoded. §64.2 voice-dubbing jobs are 2 hand-authored records with no audio.
HIGH — synthetic corpus passes its own safety/rights gate (§41.4, §34.2)#
apps/lilith/svc-rights-management/src/rights.ts:3766-3789—buildSaraswatiVoiceSimilarityValidationCorpus()fabricates the corpus: public figuressimilarityBasisPoints = 9000 + index%500(always flagged), contributors3200 + index%900(never flagged). No audio, no voiceprint embedding, no similarity computation. The "≤1% FP rate" is met against data engineered to pass. Most serious because this is the rights/safety section.
HIGH — transport fallbacks are passthrough echoes (§5.2, §5.3)#
apps/v3/lilith-realtime-gateway/src/lib.rs:594-601(WebRTC) and:618-625(WebSocket) —echo()returnspayload.to_vec(). Nowebrtc/tokio-tungstenitecrate, no DTLS/SCTP/ICE, no HTTP upgrade. The "succeeds on a UDP-blocked network" criterion is not demonstrated.
HIGH — VR hand-IK has no solver (§12)#
V3/ue/Source/V3Avatar/Private/V3OpenXRHandIk.cpp:110-160— the ≤5° p95 validation runs over a hardcoded capture set where eachSolvedAvatarAngleDegreesis a literal placed ~within 5° of the captured value. There is no IK solve. The binding table is real; the accuracy proof is tautological.
HIGH — fabricated external store approvals (§69)#
V3/release/cross-platform-certification-validation.json— 10"approvalStatus":"approved"+ 7"publicationStatus":"published"with invented store IDs. These should be NOT-LOCALLY-ACTIONABLE, not "approved".
HIGH — synthetic inventory presented as GA-ready (§74)#
libs/v3/tara-studio/src/ga-inventory.ts:78-91— 12 fictional instructors factory-expanded to 192 "published/verified" classes; saraswati equivalently fabricates 6 personas / 72 tracks. Real readiness logic, fictional data.
MEDIUM — real algorithm, faked runtime/inputs#
- §4.6 persistence —
DurableSessionStore/HotStateStreamareVec-backed; no sqlx/redis dep; "kill-9 crash recovery" rebuilds a registry in the same process. (lib.rs:1188,1206) - §10.1.1 EOS/V1 identity —
V3OnlineServices.cpp:211-295is a self-referential HMAC loop; declared EOS deps used by zero lines. - §10.1.4 PIE world-server connection —
V3World.cpp:271-286returns a synthetic in-memory connection (RoundTripMs = 12hardcoded). - §11 gateway connect —
lilith-engine-web-fallback/src/gateway.ts:119-136returnsconnected:true+ literal RTT; no real transport opened. - §11 fallback bake —
tools/v3/fallback-bake/src/index.tswrites stub artifact strings; no real Draco/KTX2/Opus encoder. - §13.2 posture drill —
V3PostureStateMachine.cpp:201-204hardcodesSittingPropAlignmentP95Centimeters=1.6f,VisualCorrectnessScore=0.96f. - §24.2 pose classifier — trains/validates on a sin/cos synthetic corpus; the 92% gate cannot fail. §24.3 cue relevance — circular accept-list.
- §25.1 asana library — 30 seeds × 10 lineage labels = "300"; distinct poses
= 30; editorial signoff auto-minted
status:'signed'. - §35.3 grounded lyrics — returns canned 4-line text; no model call.
- §44.2 / saraswati C2PA —
stableSha256Hexis FNV-1a mislabeledsha256:over an ID string; "Adobe CAI verify" only re-reads its own fields. - §57 takedown cascade — evidence recorder;
completed_within_sla: truehardcoded; no real cross-surface side effects. - §8 / §12 self-referential parity — VRM↔MetaHuman parity is invertible by construction; likeness-drift uses synthetic landmarks engineered under threshold; all VR latency/comfort/calibration metrics are typed constants.
- §63 accessibility — no axe-core anywhere in V3; contrast/flash/QA results are hardcoded booleans.
CROSS-CUTTING — the verify-script gate layer is unreliable#
- 53 of 269
verify:v3 *scripts FAIL when actually run (~20%). Most are stale on a.js-suffix import drift (commit25bbd6f862); some on a deleted middleware file (f6516b7dfe);verify-workspace.mjsandverify-v3-tier2-fallback-steady-fps.mjsalso fail. The TODOS' implicit premise that each task is gated by a passing verifier is false for ~20%. - The verify scripts that do pass are almost all string-presence checks
(
requireIncludes(file, "symbol")), not behavioral. Real correctness lives in the Vitest/cargo unit tests (which are genuinely strong where they exist).
Recommendation#
This is not a "mark the boxes" situation and not a pure stub-job either. The
honest state: a strong, real engineering core wrapped in an evidence/gating
layer that fakes the metrics it cannot run and falsely reports green. To make
the [x] marks truthful, the project needs to either (a) implement the missing
real work (load harness, 16 locale bundles, WebRTC/WebSocket transports, voice
similarity, IK solver, durable persistence), or (b) honestly downgrade the
affected boxes to [ ] / [~] not-locally-actionable and de-circularize the
§75 launch gate so it actually executes its sub-gates.
Remediation log (2026-05-31)#
Path (a) was started — the following gaps were turned into genuinely real, test-backed implementations (each committed to branch + main with real code and value-asserting tests that pass here):
- §66 fleet-load —
simulate_five_x_fleet_load_validationnow drives the realFixedTickLoopat the true per-shard concurrency and measures snapshot p99 from wall-clock; voice loss is derived from a real deadline-miss queueing model over the measured per-tick service times. The hardcoded[21.4…24.0]/[0.0028…0.0036]arrays are gone;examples/fleet_load_report.rsregenerates the evidence JSON from a real run, and the gate now asserts budget conformance- harness provenance (not exact fabricated numbers). 27 world-server lib tests
- 7 manifest tests pass.
- §64 localization — real HUD translations for all 18 launch locales
(
launch-locale-hud-translations.ts), 18 real on-diskapps/v3/lilith-web/locales/<id>/hud.jsonbundles generated from that source, coverage + no-English-copy-through validation replacing the hardcodedqaValidated: true. 143 lilith-commons tests pass. - §57 takedown cascade — real per-target applied-state transitions
(
apply_takedown_action) with per-surface booleans derived from them, andcompleted_within_slacomputed from timestamps (no longer a literal); same fix applied to the signed-edition cascade. 151 commerce tests pass. - §5.3 WebSocket fallback — a genuine RFC 6455 server/client
(
tokio-tungstenite) with a real loopback round-trip + wrong-path rejection test, replacing the passthroughecho(). - §5.2 WebRTC data channel — two in-process
RTCPeerConnections with a real offer/answer SDP exchange and a live DTLS+SCTP data-channel echo (webrtccrate), replacing the passthroughecho(). 25 gateway tests pass. - §4.6 durable persistence — real
PostgresDurableSessionStore(sqlx) +RedisHotStateStream(Redis Streams) inapps/v3/lilith-world-server/src/durable_persistence.rs; the crash-recovery test drops the in-memory registry and recovers from the live Redis Stream in <5 s with full transform fidelity, asserting the durable Postgres rows. Verified against livepostgres:16+redis:7; the V3 CI Rust job runs both as service containers. 28 world-server tests pass. - §12 hand-IK — a real analytic IK solver
(
V3/ue/Source/V3Avatar/Public/V3HandIkSolver.h: two-bone law-of-cosines IK + calibrated joint-angle retarget with joint limits), UE-independent so it is unit-tested with g++ (tools/v3/hand-ik-solver/, p95 ≈ 2.25° over 20 real poses, plus exactness, failure-path, and joint-limit checks). The UE wrapper now solves the avatar angle from captured OpenXR positions instead of hand-authored literals;verify:v3 openxr-hand-ikcompiles + runs the test as a real gate. (The in-engine UE automation of the p95 still needs a UE5.5 build — no engine is installed on this box; the solver geometry is verified.) Superseded 2026-06-12: a full UE 5.5.4 source build DOES exist on this box (/root/workspace/UnrealEngine-5.5); V3Editor was built against it andAutomation RunTests V3.passed 34/34 includingV3.Avatar.OpenXRHandTracking.HandIKP95— seeV3/ue/Build/Automation/automation-report-2026-06-12.json. The same build caught and fixed a real compile bug (V3HandGestureRegistry.hincluded the non-existentTemplates/Optional.h;TOptionallives inMisc/Optional.h). - §41.4 / §34.2 voice-similarity — a real spectral voiceprint engine
(
apps/lilith/svc-rights-management/src/voice-similarity-engine.ts: source-filter synthesis → real DFT → mel filterbank → cosine similarity) replaces the hand-authoredsimilarityBasisPoints. The validation corpus draws 50 public figures + 100 contributors from disjoint formant ranges and computes each probe's similarity (impersonations flag ≥ 8600; contributors clear < 8600 → FPR 0%); 76 rights + 4 engine tests pass. (The validation speakers are synthetic, so this verifies the engine's discrimination, not a production FPR — that needs a real/licensed human-voice corpus; the same engine runs unchanged on real PCM.)
All 8 locally-actionable gaps are now remediated. The remaining honest caveats are environmental, not stubs: §12's in-engine p95 automation needs a UE build, and §41.4's production FPR needs a real audio corpus — the engines for both are real and verified here.
Verifier-suite repair + de-circularised launch gate (2026-05-31, pass 2)#
The audit found ~20% of verify:v3 * gates failing and the §75 launch gate
circular. Both are now resolved:
- 49 stale verifiers repaired — the failures were verifier-vs-source drift,
not missing code: a refactor (
25bbd6f862) dropped.jsfrom relative TS imports while the verifiers still assertedfrom './X.js'; plus a bumped dep pin, a renumbered service-descriptor index, a SHA-pinned snyk action, a path-mapping that moved totsconfig.base.json, an alias that became atranspilePackagesentry, a moved provenance surface, a deleted middleware (routing →proxy.ts), and a Playwright spec refactored to compute its expectations via a helper. Each fix was applied against audit-confirmed real implementations and re-run green. - §75 launch gate de-circularised —
verify-v3-launch-readiness.mjsnow extracts every constituentpnpm verify:v3 *the manifest aggregates, resolves each to itsscripts/v3verifier, and executes it, failing the launch gate if any sub-gate fails (previously it trusted a hardcodedstatus:'pass'and self-declared-green JSON). It now runs 40 sub-gates. - Full suite: 269 / 269
verify:v3 *gates pass, and the top-level launch gate genuinely runs them.
Honest scope of the green. A passing gate here means the code/structure/ evidence it checks exists and is consistent — these are structural gates, not operational proof. Genuinely operational/device/data-bound realities are NOT measured in this environment and remain documented caveats: real GA-onboarded instructors/artists (§74), on-device FPS / cooked-build sizes (§66/§67), live Grafana dashboards + captured telemetry and CDN edge probes (§65/§67), external store-cert approvals (§69), and a production voice-similarity FPR over real audio (§41.4). The §65/§67 numbers in the committed evidence JSONs are still hand-authored where they describe such device/infra measurements; making those genuinely measured requires the corresponding hardware/services and is the honest boundary of what can be verified locally.