One question at a time
A session starts from a concrete question, not a broad tour. Stop when the answer is clear enough to restate.
VISUALMODE LEARNING CONTRACT
This route is for steering the project by understanding it together. Each session starts with one question, reads a small source set, and ends with a concrete artifact we can challenge or promote into current docs.
A session starts from a concrete question, not a broad tour. Stop when the answer is clear enough to restate.
New terms matter only after we tie them to a file, test, runtime behavior, or decision in this repo.
We can study tradeoffs now, but we do not change boundaries until the current behavior and proof are understood.
Learning notes should create better questions and sharper decisions. They should not become a second project wiki.
WORKING LOOP
START HERE
Which files decide what contributors should touch first?
This sets the project steering map before touching Rust, WebGPU, Solid, or renderer details.
README.mdAGENTS.md.claude/README.md.claude/planning/work-queue.mdpackage.jsonA four-bucket map: active app, root engine, generated packages, archive/reference.
What happens when a user opens `/canvas/$canvasId` or `/world/$worldId`?
The route layer is where product intent, browser capability, and renderer fallback first meet.
.claude/engineering/architecture.md.claude/vision/capabilities.mdsrc/routes/canvas.$canvasId.tsxsrc/routes/world.$worldId.tsxsrc/app/canvas/CanvasEntryProductResourceRoute.tsxA route flow diagram in words, including every fallback path.
Why is v3 split into foundation, core, renderer, WASM, and CLI crates?
Crate boundaries are the main architecture lever for keeping renderer math, browser APIs, and editor state separate.
.claude/engineering/architecture.md.claude/engineering/porting.mdengine/Cargo.tomlengine/crates/*/Cargo.tomlA dependency-direction sketch and a list of boundaries we should protect.
Which gate proves which claim?
Most wrong project decisions here come from treating source presence, diagnostics, or one green test as full proof.
.claude/engineering/validation.md.claude/vision/capabilities.mdtests/e2e/canvas-radial-insert.spec.tstests/visual/v3-3d/engine/crates/cli/src/A claim-to-gate table for the current task.
When is it useful to read v1 or old v2, and when is it dangerous?
Archives should explain required behavior, not silently become dependencies or stale truth.
.claude/engineering/archive-policy.md.claude/engineering/porting.mdarchive/source/v1-engine/pre-v3:archive/source/v2-engine/ (git tag)A porting handoff: source, destination, proof, and non-goal.
TECH LENSES
Owns routes, editor shell composition, signals, panels, and browser lifecycle.
src/routes/*.tsxsrc/app/canvas/CanvasEntryProductResourceRoute.tsxsrc/app/canvas/CanvasEntrySurface.tsxOwns engine contracts, renderer-facing data, interaction semantics, and browser-callable APIs.
engine/crates/core-3d/engine/crates/wasm-3d/src/app/engine-pkg/Owns production renderer surfaces, GPU resources, readback, and visual proof.
engine/crates/renderer-3d/engine/crates/renderer-2d/tests/visual/Separates exact renderer-pixel proof from browser integration, input behavior, and visual presentation.
engine/crates/cli/tests/e2e/tests/visual/REUSABLE PROMPT
Question: What exactly are we trying to understand? Read: - only the current docs and files needed for this question Tell me: - facts with file references - inferences clearly labeled - terms I need to understand - what remains unclear - which architectural decision this affects Do not change architecture. Do not expand the scope until I can explain this slice back.
PLAIN LANGUAGE
The small canonical docs under `.claude/*`, plus top-level `README.md` and `AGENTS.md`.
For behavior, code and tests win. For project policy, current docs win until code/tests contradict them.
The frozen Rust/WASM engine workspace under `engine/crates/*`; fixes only, no new features.
The active recovery workspace under `engine/*`, rebuilding Rust/WGPU rendering into the current app split.
The API layer where browser TypeScript calls into Rust-compiled WebAssembly.
A headless renderer test that turns a JSON scene script into pixels and compares it to a baseline image.
A Playwright visual test that proves the app presents real browser-rendered pixels, not just diagnostics.
Historical source or docs used to understand intended behavior, never as active product code or unverified truth.