Menu

D6. Free objects: vanilla three.js r186, vendored, sandboxed, deterministic

  • three.js r186 (0.186.0) is vendored as one IIFE (vendor/three-r186.js) with two addons; React Three Fiber is not used (the manifest gives most of the editability without migrating the stack).
  • Each object runs in <iframe sandbox="allow-scripts"> without allow-same-origin, with a CSP that forbids any network access. Finding: an opaque-origin frame cannot load ES module scripts from the LMS server without CORS headers, which LMSs do not send; the build therefore compiles each object (authored as an ES module, import * as THREE from 'three') into a classic script.
  • Time, randomness and frames come from the host (host.onFrame, host.random, host.now), so tests replay objects frame by frame and snapshots are stable in headless Chrome (SwiftShader).
  • Gates 2–6 are automated (elabora object test); gates 7–8 stay human and are listed in the proof dossier.