# The Floor

"The floor" is the single most important architectural principle in ChainRender. Understand it and you understand
why the system can promise both rich, dynamic, GPU-accelerated experiences *and* absolute trustlessness — without
compromise.

## The principle

**Every ChainRender app has an on-chain floor: a complete, verifiable, fully on-chain rendering that requires
nothing but the chain itself.** Anything beyond that floor — a GPU effect, a client-side animation, an off-chain
fetch — is an **enhancement** layered on top, and every enhancement **fails closed to the floor.**

```
on-chain floor   = the guaranteed, trustless, always-works rendering (Grade A)
enhancement      = an optional improvement (GPU, motion, fetch) that IMPROVES the floor
                   but can NEVER be required for the app to work or be trustworthy
```

If an enhancement is unavailable — no WebGL2, a failed fetch, a dead gateway — the app doesn't break, doesn't
degrade to garbage, and doesn't show a lie. It renders its floor: complete, correct, on-chain.

## Why this matters

Most "on-chain" systems force a false choice: either be fully on-chain and *limited* (static, ugly, simple), or be
rich and *depend on off-chain infrastructure* (a server, a GPU, a CDN) that reintroduces trust. The floor principle
refuses that choice:

- The **floor** is always fully on-chain, complete, and Grade A. It is what the app *is*.
- The **enhancement** makes it richer when conditions allow. It is a bonus, never a dependency.

A 3D SDF scene renders a GPU ray-march *if the client has WebGL2* — and a bit-exact, fully on-chain **poster** if it
doesn't. Either way you see the scene; the GPU version is just sharper. The poster is the floor; the ray-march is
the enhancement. The app never *needs* your GPU to be trustworthy or to work.

## How the floor keeps the grade honest

This is why an enhancement doesn't drop an app's trust grade. A GPU effect over a complete on-chain poster **stays
Grade A**, because the trustless floor is fully intact — the enhancement can vanish and nothing is lost. The grade
measures the *floor's* trust properties; a fail-closed enhancement is free. Only an enhancement the output
*actually depends on* (a live fetch with no on-chain fallback) drops the grade — because then there's no floor
beneath it.

## The floor-vs-enhancement rule, stated plainly

> **On-chain is the floor; the client (GPU, fetch, animation) is an enhancement that fails closed.**

Every capability in ChainRender is designed against this rule:
- **GPU rendering** → floor is the on-chain poster; GPU is the enhancement.
- **Off-chain fetch** → floor is complete on-chain data; the fetch only *enriches* (and must be declared).
- **Client animation** → floor is the static on-chain frame; motion is the enhancement.
- **Live resolver data** → the read itself is on-chain (part of the floor); it fails closed to "unavailable."

## Why it's built this way

Because trust cannot be conditional. "This app is trustless *if* your GPU works / *if* the CDN is up / *if* the
gateway responds" is not trustlessness — it's a dependency wearing a trustless costume. By making the floor
mandatory and complete, and every enhancement optional and fail-closed, ChainRender can be honestly trustless
*and* genuinely rich. The floor is the promise; the enhancement is the delight.

## Related
- **[The Trust Grade](./trust-grade.md)** — why a fail-closed enhancement stays Grade A.
- **[The Render Pipeline](./render-pipeline.md)** — how fail-closed rendering works in practice.
- **[Principles & Ethos](../resources/ethos.md)** — the floor as a founding value.
