# How the IDE hologram works
**Status: measured 2026-08-25T21:35:58Z — existing lattice frame. No protein-dock hologram.**
**Walks:** [Low-friction user flows](Low-Friction-User-Flows.md) · [Study 11 Ehrhart](Study-11-Ehrhart-Volume-Shear.md)
Researchers and claimants see a **receipt + the frame that already paints**. Affine does not invent a pdb occupancy hologram. `ProteinManifold.evaluateDocking` is not stubbed.
Meaning = **integer seal + lattice raster**. Not a training deck. Not a molecule dock. Not a stellar surface.
---
## Validated capture this hour
`GET https://affine.earth/language-invariant/game/proteins/frame?w=512&h=512&t=800`
| Field | Measured 2026-08-25T21:35:58Z · hel-00 |
|---|---|
| HTTP | **200** |
| `content-type` | `application/octet-stream` |
| Byte length | **1048576** (512 × 512 × 4 RGBA) |
| sha256 | `97f1bd07ae7d77e867c9708d601ff92edefab20a4aba628084ca37ddb20ec266` |
| `x-affine-game` | `proteins` |
| `x-gop-width` / `x-gop-height` | 512 / 512 |
| `x-affine-game-step` | 800 |
| `x-gop-order` | RGBA |
Same sha after pdb 4HHB WIN. `t=800` did not change. Prior hour `a3f6f2bb6f73078c10b411fbcf1e4bfcc694d591e27c8c06a0f7342fe414235e` was the previous raster at this same URL. Earlier still `c4dae839391998605fa264d7622aa688f3f4e463432febe88e44e7872756ddd4`.
The HUD paints this frame in two places only: after a Look catalog/contracts GET (no Claim), and after a Claim WIN (HTTP 2xx). Refuse leaves the figure hidden.
This is the **same URL** the court HUD `
` loads after a Look catalog GET and after every WIN. Home Look `#researcher` loads the same URL into `
`. It is not a hologram of 4HHB or 2HYY. It is the live LatticeRender protein-fold raster.
A second existing raster (not what the HUD loads after WIN):
`GET /language-invariant/game/materials/frame?w=512&h=512&t=600` — HTTP 200, octet-stream, 1048576 bytes. Chemistry / materials WIN still load **proteins/frame**. The HUD caption says so.
Evidence: `evidence/docs-drift-20260825/`
`backdrop-filter` on the IDE chrome is CSS blur. It is not a hologram `filter:` law and was not changed.
---
## When the frame appears
| Surface | When `img.src` is set | Requires Claim POST? |
|---|---|---|
| `#researcher` (home Look) | After GET catalog.json HTTP 200 `index_n=258616` | **no** |
| `#protein-material-look` | After GET catalog.json HTTP 200 `index_n=258616` | **no** |
| `#manufacture-look` | After GET manufacture-contracts.json HTTP 200 (n=6) | **no** |
| `#disease-icd` · `#pdb-holdings` · `#chemistry-inchi` · `#material-std` · `#complex-pair` · `#rife-frequency` · `#stellar-dynamo` | After ingest HTTP 2xx (WIN / CALORIE) — door-open sample POST or **POST selected** | **yes** for Claim doors |
| Refuse (`REFUSED_NO_STD` / `REFUSED_FLOAT` / `REFUSED_UNATTRIBUTED`) | frame stays hidden | — |
Process:
1. Court HUD or Look GETs/POSTs.
2. `court-play.js` `showExistingHologram` (and `ide-controller.js` `paintWin` after the filled-sample POST) writes the JSON receipt on the same page.
3. If HTTP 2xx (or Look catalog/contracts 200), sets `img.src` to `/language-invariant/game/proteins/frame?w=512&h=512&t=800` and unhides `#courtPlayHologram`.
---
## Hashes that exist (do not invent routes)
| Hash / URL | What GET/POST does | What pixels come from |
|---|---|---|
| [`ide.html#chooser`](https://affine.earth/language-game/ide.html#chooser) | First screen. **Open this door** | none until a court mounts |
| [`#researcher`](https://affine.earth/language-game/#researcher) | GET catalog + games. credentials omit | proteins/frame after catalog 200 |
| [`#protein-material-look`](https://affine.earth/language-game/ide.html#protein-material-look) | GET catalog 258616 + aggregates 125302 | same proteins/frame |
| [`#manufacture-look`](https://affine.earth/language-game/ide.html#manufacture-look) | GET contracts n=6. Zero steps | same proteins/frame after GET |
| [`#ehrhart-volume`](https://affine.earth/language-game/ide.html#ehrhart-volume) | Template POSTs Study 11 geometry | Court receipt. No dedicated png on this hash. |
| [`#gym`](https://affine.earth/language-game/ide.html#gym) | Gym view. Franklin hologram card | `hologram-manifold.js` + `franklin-law-plot.js` |
| [`/language-game/`](https://affine.earth/language-game/) | Main UI stage | Same hologram scripts. `#capture` records the canvas |
| `#disease-icd` · `#pdb-holdings` · `#chemistry-inchi` · `#material-std` · `#complex-pair` · `#rife-frequency` · `#stellar-dynamo` | POST industry key + source+role | After WIN: proteins/frame |
---
## After a WIN
The court HUD:
1. POSTs `/language-invariant/game/{domain}/ingest` with `source`+`role` (door-open fills and POSTs the sample; or tap a sample chip / **POST selected**)
2. Writes the JSON receipt on the same page
3. If HTTP 2xx, sets `img.src` to `/language-invariant/game/proteins/frame?w=512&h=512&t=800`
Meaning = seal + frame. No training paragraph required. Dynamo WIN uses this same proteins/frame — integer step seal + frame, not a stellar-surface hologram.
---
## What this page does not do
- Does not invent a `#protein-dock` hash
- Does not stub `ProteinManifold.evaluateDocking`
- Does not claim the proteins frame is the presented PDB
- Does not add an MCP tool
- Does not change hologram `filter:` / `backdrop-filter`