Context World
Context World is the no-code way into a project. It shows the same engine facts as the Context Lab as an explorable 3D world, arranged by SEIF's escalation of options. A support lead, a teacher or a game designer can see what an agent knows, why, and what it can reach by itself, then guard, prove and ship it without opening an editor. Builders open the very same files in the Lab.

Open it from the home screen (Enter the demo world or any Create your own agent card), from the Lab's activity rail (globe icon), from Recent worlds, or with --world <folder>.
Reading the world
The agent stands at the centre. Its memory budget is the arc around it.
Each knowledge area (a layer) owns a coloured sector of the floor, in project order. Each piece of material (a file or a ## section) is a crystal in its area. Bigger crystals carry more estimated tokens.
The four rings are SEIF's escalation of options. Each ring is computed by the engine, not by the view:
| Ring | Name | Engine fact |
|---|---|---|
| 0 | In hand | resolution.materials: rendered for this question. Beams connect them to the agent. |
| 1 | Within reach | resolution.expandable: doors the model may open by itself — an on-demand frontier (context.expand) or a section an in-hand piece explicitly points at (a cross-topic REFERENCED door). Drawn with a pulsing ring and a dashed tether. |
| 2 | Out of view | Exists, but not for this agent, task, person or question, or it is past the area's short list. ? marks pieces that need to know who is asking. |
| 3 | Sealed | Excluded by a rule, too old under a freshness rule, or internal. Drawn dark with a lock. |
What it sees opens the model's actual menu: the pieces in hand and the doors it may open, each with its reason. The agent never sees out-of-view or sealed pieces, so it cannot wander into them. This is the property SEIF's bounded navigation relies on.
Perspective and coordinates
The selectors in the top bar are the SEIF perspective: agent (consumer), task (objective), mode (profile) and place (environment). Changing one re-resolves the world, and pieces glide between rings to their new places. The line under the top bar is the current coordinate, agent › task › mode › place › area › piece, followed by the selected piece's ring.
Who is asking? offers the inputs that bring more material into view (for example customerId), with values observed in the project's own data. Choosing one is the coordinate's subject. Personal pieces move from out of view into hand.
Why, in plain words
Clicking a crystal opens the inspector:
- the reason in plain language (for example "Too old to trust: 122 days old; rule allows 45" or "Did not match the question, but the agent can still open it");
- tokens;
- how many checks guard or expect it;
- its file.
Engine codes without a translation are shown as words, never hidden.
Actions are precise and reviewed:
- Open this door previews what the agent would add if it opened the door itself, with the token cost against the budget. Read-only; nothing is written.
- Expect it drafts a test that fails if the agent stops receiving this piece for this question (
expect.includeItems). - Add a guard drafts a test that fails if this piece is ever given for this question (
expect.excludeItems). On a piece that is in hand, the inspector says plainly that the guard will fail until a rule keeps it out. - Edit in Lab opens the file in the Lab.
Drafts are shown in plain language with the technical diff folded away. Nothing changes until Accept. A legacy context-project.json project is converted to files only when the first check is added. The conversion preserves the design digest and keeps the JSON.
A real answer, with the doors it opened

The rings show what the agent would work from. ✦ Answer with AI, next to the question, asks the brain chosen in Data & go live for a real answer:
- the reply appears in a card over the world, with a line saying what it had in hand, the doors it opened and the lookups it ran;
- each door the model actually opened lights up with a golden pulsing ring labelled 🚪 opened.
The answer is written to the conversation log as a try (channel try), like Try it in Data & go live. × closes the card and clears the light.
Quests and levels
Seven quests teach the workflow:
- Ask something.
- Find out why.
- Open a door.
- Say who is asking.
- Guard a secret.
- Prove it: run the checks, all pass, nothing unknown.
- Ship version 1: an immutable Build.
Completion comes from real facts or this session's actions. For example, Guard a secret is done when a forbid check exists, and Ship is done when a Build exists. Quests that cannot apply (no doors, no subject input) are marked unavailable. XP and levels measure progress through the workflow, not quality.
Controls and accessibility
- Mouse: drag to orbit, scroll to zoom, click a crystal.
- Keyboard: arrows rotate,
+/−zoom,Homeresets the camera,Esccloses overlays and clears the selection. - Motion: Motion: on toggles reduced motion (beams, bobbing, auto-orbit).
- Interface zoom: ⌘+ / ⌘− / ⌘0 scales the whole world screen, HUD and panels included (see Lab: Zoom and text size).
- Small windows: below 1500 px wide, quests collapse to the current one and the help card hides. The camera re-centres the world in the space left between the panels.
The scene is a software perspective projection drawn with Avalonia, so it renders identically on every platform and in headless tests.
Honesty
The world calls no model, except when you press ✦ Answer with AI, and invents nothing:
- Memory is the engine's estimate (
ceil(chars/4)). - Consumption stays UNKNOWN.
- Doors are previews.
- Every ring, reason, input value and quest state comes from
labSnapshotthroughruntime/engine/world.mjs(context-world.v1).
The engine commands are:
labWorld:{ projectDir, options, progress }→{ world }.labDoor:{ projectDir, node: { source, locator } }→{ door }.
Proof
bash scripts/prove-context-lab.sh runs:
- the world engine tests (rings mirror the resolution, subject suggestions, quests from facts, precise drafts that tests enforce);
- the headless native journey through all seven quests.
It writes evidence/context-world/context-world-1280x720.png, context-world-1920x1200.png and context-world-agent-view.png.