Mawu · Reference & analysis

V7 (Mawu) Autonomous Content-Creation Audit — 2026-07-14

1.

7sections8 minread1table

On this page

Scope: every agent/system in V7 that autonomously creates or verifies top‑tier content — AI‑assisted asset/world/NPC creation, the Crucible balance agent-fleet, the Loom world‑genome generators, and the runtime degradation and governance gates that guard them. Question asked: is it all SOTA and prod‑ready?

Method: confirmatory + adversarial two‑pass read of each surface (every public function and the private functions it delegates to), the mandatory stub‑indicator grep plus a silent‑stub pattern scan, test‑coherence review, and wiring checks. All fixes were applied in this session and their libraries' tests re‑run to green.

Headline verdict: the generation and verification cores are real and SOTA‑shaped (deterministic economy simulation, correct Wilson/Gini/entropy statistics, real greedy pairwise covering arrays, real hydraulic‑erosion terrain, a genuine LLM‑backed co‑creator with an executable trust boundary, and a fail‑loud generation‑policy gate). They are NOT yet prod‑ready end‑to‑end: the neural/RL/vision backends (RL agent training, meta‑discovery match simulation, ML terrain diffusion, reference‑image estimation, live Themis dispatch, the product text‑to‑3D/texture/world/NPC models) are seams, not running systems. Before this audit, several of those seams fabricated their results (claimed trained policies, invented win rates, self‑verified parity, hardcoded quality scores). Those were the real problem, and they are now fixed: 20 fabrication seams closed (4 HIGH, 12 MED, 4 LOW), each replaced with either a fail‑loud refusal, a measured computation, or an explicitly labeled design prior/target.


Per‑surface verdict#

Surface Core Verdict Findings fixed
apps/v7/eunomia-governance-service (Crucible balance agents, Maya Variants, plural voting, Themis routing) real SOTA‑shaped; prod‑ready except live Themis dispatch 1 MED
apps/v7/danu-mesh-cluster (AI cost/fidelity degradation levers) real prod‑ready (honest telemetry, coverage‑flagged) none
libs/isis/three-d-pipelines/mawu-studio-ai-creation.ts (generation‑policy gate + Sophia grounding) real exemplary honest seam; fails loud w/o backend none
libs/maya/forge-assist (AI co‑creator + CapabilityPolicy trust boundary) real SOTA‑shaped, prod‑ready none
libs/maya/forge-ai-assist (deterministic planning primitives) real real after de‑fabricating 3 metric seams 2 MED + 1 LOW
libs/maya/forge-ai (behavior/personality/routine composition) real prod‑ready none
libs/maya/crucible-core (headless economy sim, snapshots, campaigns, profiling) real (strong) real after removing self‑parity + fake profiling + non‑sweeping sweeps 1 HIGH + 3 MED + 4 LOW
libs/maya/crucible-agents (RL / meta / exploit / coordination "agent fleet") mixed the fabricated half now fails loud or is measured 3 HIGH + 2 MED + 1 LOW
libs/maya/crucible-adversarial (static exploit scanners) real (strongest) prod‑ready after de‑fabricating rescan/proof claims 2 MED
libs/maya/crucible-balance (Wilson/Gini/TTK/power‑curve stats) real (strong) real after de‑inventing scorecard + graph metrics 2 MED
libs/maya/crucible-scenarios (pairwise covering arrays) real real after labeling asymmetry priors + real Spearman 1 MED + 1 LOW
libs/maya/crucible-regression (regression stats, gates) real (cleanest) prod‑ready after 1 rename 1 LOW
libs/maya/crucible-live (telemetry, meta patterns, hotfix) real real after de‑fabricating the Rust hotfix validation 1 HIGH
libs/maya/loom-inverse (reference→genome estimation) seam rebuilt: priors + fail‑loud vision/training seams rewrite
libs/maya/loom-terrain-ml (Earthbender/TerraFusion/Mesa ML terrain) procedural stand‑in labeled stand‑ins + real measured seam scores struct/label rework
libs/maya/loom-agent (LLM/RL world‑gen orchestration) rule‑based relabeled: measured/derived fields, checked coherence struct/label rework
libs/maya/loom-diffgen (differentiable pipeline) real 1 derived‑score fix 1 LOW
libs/maya/loom-{core,biomes,evolution,dimensions,multiverse,semantic} real genome/world modeling real; no findings none
libs/maya/engine-core/crates/maya-genesis-{terrain,flora,urban} (procedural generation) real (huge) real hydraulic/thermal erosion, L‑systems; no findings none
libs/maya/genesis-scene-agent, npc-distillation, npc-cloud-fallback, voice-* real rule‑based planners + real distillation math; honest fallbacks none

HIGH findings (fabricated results presented as real) — all fixed#

  1. crucible-agents::train_rl_agent fabricated a trained policy. win_rate_milli was arithmetic on config fields, frames_trained claimed frames that never ran, entropy was a constant 250. No training happened. The test asserted win_rate_milli > 900, enshrining the fabrication. Fix: train_rl_agent now returns Err(RlTrainingBackendNotConfigured); real checkpoints from an external run enter through a validating ingest_policy_checkpoint. Same fix mirrored in the Python run_training/resume_training (RlTrainingUnavailableError + ingest_checkpoint).

  2. crucible-agents::run_meta_discovery invented win rates. win_rate_milli = 500 + rng() % 220 + index*5 — random numbers presented as measured loadout win rates; generations/matches_per_genome were ignored. Fix: split into plan_meta_discovery (enumerates the genome population, carries no win rates) and rank_dominant_loadouts (ranks from measured LoadoutMatchObservations, Wilson‑interval lower bound gating the overpowered flag).

  3. crucible-agents::run_exploit_hunter echoed its own input. discovered: planted_exploit — the "discovery" was the caller's boolean parroted back; the episode number was hardcoded. This is V7's flagship "fleets of AI agents discover exploits" capability, and it discovered nothing. Fix: now takes measured ExploitEpisode telemetry and detects the first episode whose reward crosses the objective threshold (or reports no breakthrough).

  4. crucible-core::verify_headless_full_engine_parity self‑verified. It ran the same HeadlessSimulation twice and labeled run #2 full_engine_hash; within_one_percent was true by construction. There is no full engine here. Fix: replaced with verify_headless_parity_against_reference, which requires a supplied FullEngineReference (a real full‑engine run's hash + margin), refuses an empty reference, and reports divergence honestly.

  5. crucible-live::recommend_hotfix (Rust) claimed sim validation. Returned validated_by_simulation: true, no_new_regressions: true, and evidence "accelerated simulation passed" as literals — no simulation ran. Fix: now takes a HotfixValidationResults input (run id + pass/regression‑free booleans) and reports failures as failures. (The TS packageHotfixProposal already did this correctly.)

MED findings (misleading labels / invented sub‑scores / self‑approving) — all fixed#

  • crucible-core: parameter sweeps that renamed the scenario but changed no simulation input → expand_campaign now applies each sweep value (seed, skill, rule:<name>), rejects unknown sweep params, and re‑derives the mod‑loadout hash; test asserts low‑ vs high‑skill runs produce different state hashes. Fabricated per‑system profiling nanos → now measured Instant::elapsed() per dispatch. Fake Lz4/CRUCIBLE-LZ4 label over an RLE codec → renamed to Rle. run_campaign hardcoded failed: 0 → derived from expanded‑vs‑completed counts. Fabricated per‑kill TTK stamps → kill_ticks/ death_ticks now read from real "kill" events emitted at the kill site.
  • crucible-agents: build_observation hardcoded resources:100, own_health:100_000 → now takes real ObserverOwnState. test_coordination premade/solo win rates were a hand‑tuned formula → now computed from measured MatchRecords. training_dashboard invented the first two baseline points → takes the measured win‑rate history.
  • crucible-adversarial: every mitigation hardcoded validated_by_rescan: true (Rust + Python) → now false, with a real validate_mitigation_by_rescan that flips it only when a supplied rescan no longer reproduces the finding. ExploitProof documented as a reproduction package, not an executed verification.
  • crucible-balance: scorecard invented EndgameDepth: 850 and an inflation‑keyed ExploitRisk → those categories moved to a not_computed list (absence ≠ passing grade). matchup_graph.strongly_connected (actually matrix completeness) mislabeled + broad_cycles/degenerate_rps claimed cycles never detected → renamed matrix_complete and added real intransitive beat‑cycle counting. Sensitivity safe‑band was a flat ±5% → now derived from the measured derivative.
  • crucible-scenarios: generated asymmetry win probabilities were unlabeled model constants → tagged probability_source: DesignModelPrior vs Measured. spearman_rho computed Pearson of raw scores → now rank‑transforms both sides (true Spearman with tie averaging).
  • forge-ai-assist: hardcoded consistency_score_bps: 8_400 → derived style_anchoring_bps from supplied style‑ref count; themis_originality_… (a caller input echoed as if scored here) → renamed input_originality_…; impact_score_bps (a text‑length proxy) → renamed length_proxy_bps. Both Rust and TS mirrors.
  • eunomia-governance-service: routeProposalAppealToThemis returned routed_to_themis while dispatching nothing → added deliveryStatus: 'pending-dispatch' so route construction is never mistaken for delivery (the case id/appealRef were already documented honest seams).

LOW findings — fixed#

  • crucible-core SimulationSpeed multiplier fed nothing → removed. Campaign retry path swallowed errors into empty results → now surfaces diagnostics.
  • crucible-regression run_ab_simulation (analyzes supplied observations, runs no sim) → renamed analyze_ab_observations.
  • loom‑diffgen content_preservation_score: 0.84 / preserves_content: true → derived from the measured gram_matrix_loss.
  • forge‑ai‑assist quest objective/dialogue fixed lists (mitigated by the documented planning‑primitive framing) — left as documented design content.

Loom generator relabeling (stand‑ins, not fabrications, now labeled)#

loom-inverse, loom-terrain-ml, and loom-agent modeled neural/LLM/RL approaches with deterministic code and dressed the outputs in fabricated quality scores (sketch_match_score: 0.78, copernicus_prior_score: 0.83, parameter_r2, benchmark winner: MlDiffusion, agent "reward" constants). Reworked so each:

  • fails loud where a real model/vision/training backend is required (estimate_*_from_reference, train_neural_parameter_predictor*NotConfigured);
  • tags stand‑ins (procedural_stand_in: true, TERRAIN_ML_IMPLEMENTATION = "deterministic-procedural-stand-in", rule‑based orchestration header);
  • measures what it can from real data (inpainting seam‑continuity and context‑match computed from the actual heightmaps; world‑grow genome consistency computed over generated blocks; audit‑trail provenance hashing the full decision content; multi‑agent dependency ordering checked);
  • exposes targets, not results (InverseQualityTargets, TerrainQualityTargets, MlTerrainQualityBenchmarkPlan replace the fabricated benchmark that declared a winner without running).

What remains for prod‑readiness (honest seam inventory)#

These are external‑backend integrations, correctly represented in code as fail‑loud seams or labeled stand‑ins — not stubs that fake success:

  • Product text‑to‑3D / texture / world / NPC generation backends (Isis gate is ready and fails loud with backend-not-configured).
  • The RL training runtime + match simulator behind the Crucible "agent fleet" (planning + measured‑ingest paths are ready).
  • ML terrain diffusion + reference‑image (vision/CNN) estimation backends.
  • Live Themis arbitration dispatch (route construction is ready).
  • The full engine that Crucible parity is measured against.

None of these can be completed on this box (no GPU, no vendor models, no live Themis bus); each is now a loud refusal the moment it is called without its backend, which is the correct production posture.


Verification#

Every modified library's tests were re‑run to green in this session: crucible‑core 10, crucible‑agents 10 (+4 Python), crucible‑adversarial 13 (+4 Python), crucible‑balance 11, crucible‑scenarios 7, crucible‑regression 9, crucible‑live 6, loom‑inverse 5, loom‑terrain‑ml 5, loom‑agent 5, loom‑diffgen 5, forge‑ai‑assist 4 (Rust) + 6 (TS); eunomia‑governance‑service 12, isis three‑d‑pipelines 22, forge‑assist 15, danu‑mesh‑cluster 22 (Rust). The rewritten tests assert the honest semantics — fail‑loud refusals, measured values against known‑correct answers, and different‑input‑different‑output — so they would fail against the fabricated versions they replaced.