DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path investigations/loomworks-gaussian-splat-investigation-v0_1.html

Loomworks — Gaussian Splat Ingest and Render Investigation — v0.1

Version: v0.1
Date: 2026-06-13
Status: Investigation note. Speculative. Nothing queued, nothing committed. Produced so the position exists in the record if asked.
Author surface: Claude.ai, against confirmed ground truth (seed v0.12, manifest v0.51, queued-directions v0.26).

Plain-language summary

What this document does. Records a considered position on whether and how Loomworks would handle Gaussian Splat data — taking it in (ingest) and producing something a reader can view (render). It is an opinion held in reserve, not a plan.

What a Gaussian Splat is. A capture format for 3D scenes. A real place or object is photographed from many angles, and the result is a dense field of millions of small 3D "Gaussians" — each one a point in space carrying position, shape, colour, and transparency. Played back in a viewer, the field reconstructs the scene so you can move a camera around inside it. It is how photorealistic 3D capture is increasingly done — closer to a recorded hologram than to a hand-built 3D model.

What changed. Nothing. First document on the topic.

Decision needed. None now. The note exists so that if someone asks "could Loomworks do this," there is a worked answer rather than an improvised one.

In scope. How splat data would sit in Memory; how it would leave through Rendering; where it conflicts with current commitments; a recommendation.

Out of scope. Building anything. No change request, no phase, no spec.

The bottom line first

Worth doing, scoped narrowly, deferred until a real engagement needs it.

  • Ingest: a splat is an opaque captured artifact referenced from Memory — not a field of millions of assertions. Memory carries the assertion that this engagement holds a splat capture of subject X, at time T, from source S. The geometry is stored behind that reference, not decomposed.
  • Render: a splat viewer is the first Mode B render-type Loomworks would declare. Rendering produces the specification — which capture, which opening camera, which scene settings — and a downstream viewer surface does the actual graphics work. The engine does not draw splats.
  • Why defer: building splat support speculatively earns nothing and pulls a heavy real-time-graphics surface into the product to maintain. Wait for an engagement that needs it.

Ground truth this rests on

Confirmed from the canonical record, not assumed:

Ingest — how a splat would sit in Memory

The rule it must not break

Memory accumulates knowledge as assertions, each carrying provenance. The seed's standing discipline — the same one that keeps the engagement seed from being decomposed into Memory assertions — applies here directly: a splat is an opaque artifact, not a million assertions.

Decomposing a splat into per-Gaussian rows would be the same category error as decomposing the seed. Millions of geometry points are not knowledge the recall question operates on. Nobody asks Memory "what is the opacity of Gaussian number 4,812,003." They ask "do we have a capture of the north field, when was it taken, what does it link to, has the subject changed since."

How it fits cleanly

A splat enters as capture-origin material, referenced. Memory holds:

This fits the provenance model with no strain. The origin thread is sensor/capture, marked like any other origin. The trust axis is tie-to-source, exactly as for a document or an image.

The connection to existing direction

The queued-directions Category 1 entry already contemplates a 3D model file as an extraction input — running it through orthographic projection to a vision-based text description. A splat fits the same family from the opposite end: the splat itself stays an opaque referenced artifact, and a text description of what it captures (derived the same way, if useful) can become an ordinary Memory assertion alongside the reference. The ingest half does not need a new pathway invented for it — it extends the capture/extraction thinking already in the record.

What is new at ingest

One thing only: a content kind for opaque captured artifacts — a blob reference with capture provenance, distinct from the four existing contribution kinds (typed, spoken, document-extracted, image-described). This is the seed-touching part of the ingest story and would need the Operator's sign-off before it landed, because it adds to the declared contribution kinds the seed names.

Render — how a splat would leave through Rendering

Where the real caution is

Splat playback is a live GPU viewer: WebGL or WebGPU, interactive, continuous, camera-driven. That is fundamentally unlike every render-type declared today, all of which produce a settled artifact a reader receives once (a document, a page, a conversation turn).

Reading it against the seed's two modes

The seed defines Rendering in two modes, and calls the boundary load-bearing:

A splat viewer is not Mode A. Forcing the Loomworks Rendering room to rasterise splats would pull a heavy real-time graphics engine inside the product for one content kind. Don't.

It is Mode B, cleanly. Rendering produces the specification — which splat reference to load, the opening camera position, scene and lighting parameters, any annotations to overlay. A downstream viewer surface (a render-specialist, per the seed's own term) consumes that specification and does the GPU work. This matches Mode B's existing shape exactly: Loomworks specifies, an external production environment realises.

The significance

There are zero Mode B render-types declared today. A splat viewer would be the first. That is not a small footnote — the seed says a Mode B addition requires defining the specification grammar (where a Mode A addition only requires registering a specialist). So the render half is not "add a render-type"; it is "exercise Mode B for the first time, and define its specification grammar." That is real methodology surface, and it is the reason this is worth recording rather than improvising later.

What this respects

Alternatives considered and set aside

Recommendation

If the day comes that an engagement needs it:

  1. Ingest — declare one new Memory content kind: opaque captured artifact (blob reference + capture provenance). Splat stored behind a reference; an optional vision-derived text description can ride alongside as an ordinary assertion.
  2. Render — declare the first Mode B render-type: a splat-viewer specification. Define its specification grammar (capture reference, opening camera, scene parameters, overlays). A downstream viewer surface consumes it.
  3. Until then — hold this note. Do not build. Speculative splat support earns nothing and adds a graphics surface to maintain.

Both the new content kind and the first Mode B render-type touch the seed and require Operator sign-off before they land. Nothing here proposes that sign-off now.

Conflicts surfaced (per standing rule — raised, not resolved)

Neither is a defect. Both are decisions the Operator would own if and when this moves.