<!-- SOLIDABILITY-WORLD · part 20 -->
name":"if","line":11878,"type":"method"},{"name":"reply","line":11904,"type":"arrow"},{"name":"GET /solid-talk","line":11914,"type":"route"},{"name":"sourceRedact","line":12090,"type":"function"},{"name":"shannonEntropy","line":12097,"type":"function"},{"name":"for","line":12101,"type":"method"},{"name":"sourceEntropyNet","line":12113,"type":"function"},{"name":"sourceSafePath","line":12129,"type":"function"},{"name":"sourceTree","line":12139,"type":"function"},{"name":"GET /source","line":12157,"type":"route"},{"name":"GET /api/source/list","line":12245,"type":"route"},{"name":"buildSourceIndex","line":12262,"type":"function"},{"name":"walk","line":12265,"type":"function"},{"name":"for","line":12270,"type":"method"},{"name":"GET /api/source/index","line":12311,"type":"route"},{"name":"if","line":12313,"type":"method"},{"name":"sourcePathParam","line":12328,"type":"function"},{"name":"GET /api/source/p/symbols/*","line":12333,"type":"route"},{"name":"add","line":12349,"type":"function"},{"name":"GET /api/source/p/search/*","line":12367,"type":"route"},{"name":"if","line":12391,"type":"method"},{"name":"GET /api/source/p/file/*","line":12401,"type":"route"},{"name":"GET /api/source/test-chunk","line":12434,"type":"route"},{"name":"GET /api/source/diagnostic","line":12454,"type":"route"},{"name":"GET /api/source/symbols","line":12480,"type":"route"},{"name":"add","line":12495,"type":"function"},{"name":"GET /api/source/search","line":12521,"type":"route"},{"name":"if","line":12540,"type":"method"},{"name":"GET /api/source/file","line":12555,"type":"route"},{"name":"if","line":12576,"type":"method"},{"name":"rebrandLowercase","line":12607,"type":"function"},{"name":"for","line":12627,"type":"method"},{"name":"init","line":12649,"type":"function"},{"name":"if","line":12651,"type":"method"}]}

===== FILE: public/solidability-world/index.html =====
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Solidability World — Phase 1 Prototype</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="app">
  <div id="trust-badge"></div>
  <div id="scene-container"></div>

  <!-- HUD -->
  <div id="hud">
    <div id="hud-top">
      <h1>✦ SOLIDABILITY WORLD</h1>
      <span class="phase-tag">PHASE 1 — INSPECTION ONLY</span>
    </div>
    <div id="hud-controls">
      <input type="text" id="search-box" placeholder="Search components..." />
      <button id="search-btn">Find</button>
      <button id="back-btn">← Back</button>
    </div>
    <div id="hud-help">
      <span>WASD / Arrows to walk</span>
      <span>Walk near a room to inspect</span>
    </div>
  </div>

  <!-- The Glass -->
  <div id="glass-panel"></div>

  <!-- Mobile joystick -->
  <div id="joystick">
    <div id="joystick-knob"></div>
  </div>
</div>

<script src="js/three.min.js"></script>
<script src="js/sw-layout.js"></script>
<script src="js/sw-geometry.js"></script>
<script src="js/sw-map.js"></script>
<script src="js/sw-onboard.js"></script>
<script src="js/sw-engine.js"></script>
<script src="js/sw-world.js"></script>
<script src="js/sw-glass.js"></script>
<script src="js/sw-hyper.js"></script>
<script src="js/sw-intervene.js"></script>
<script src="js/sw-diagnose.js"></script>
<script src="js/sw-trust.js"></script>
<script src="js/sw-investigator.js"></script>
<script src="js/sw-guide.js"></script>
<script>
// Boot: try full architectural map first, fall back to prototype
Promise.all([
  fetch('data/prototype-world.json').then(r => r.json()),
  SWMap.load()
]).then(([worldData, fullMap]) => {
    SWEngine.init('scene-container');

    let layout;
    if (fullMap) {
      console.log('Using FULL architectural map');
      layout = SWMap.toLayout();
      // Store for glass/hyper
      window.SWFullLayout = layout;
      SWWorld.buildFull(layout);
    } else {
      console.log('Using prototype data');
      layout = SWLayout.generateLayout(worldData);
      SWWorld.build(worldData);
    }

    SWGlass.init || SWGlass.show; // ensure loaded
    SWHyper.init();

    // Search
    document.getElementById('search-btn').onclick = () => {
      const q = document.getElementById('search-box').value;
      if (q) {
        const found = SWGlass.search(q);
        if (!found) alert('No component found for: ' + q);
      }
    };
    document.getElementById('search-box').addEventListener('keydown', e => {
      if (e.key === 'Enter') document.getElementById('search-btn').click();
    });

    // Back
    document.getElementById('back-btn').onclick = () => SWGlass.goBack();

    // Trust badge: show read-only status
    if (typeof SWTrust !== 'undefined') {
      SWTrust.setRole('diagnostic'); // default: read-only diagnostic AI
      SWTrust.renderRoleBadge();
    }

    console.log('✦ Solidability World Phase 1 loaded');
  })
  .catch(err => {
    document.getElementById('