Wheelhouse
Edit source, review errors, run tests, inspect state, and compare recorded sessions in one workspace.
Interactive examples · sample dataEvery panel below works on sample data. Click, type and step through it; nothing here opens or changes a real project.
vellis not declared; did you meanvel?velis declared here · checked rev 44, 1 of 1 refusalsrev 44 · follows the buffer
18,204 ops · 3.1 MiB
call 812 of 2,400
a/main.tri:17
3 clients · seed 1832
call 311
compare with run 1
15,770 ops
Source, runs, and results stay connected
The workspace keeps the program, its running sessions, and the results you inspect tied to the same source revision.
Text and visual editing tools operate on the same source. A visual view does not create a second program.
An error, selected value, or cost result names the source revision and run it describes. Older results stay labeled.
Programs run in another process. The editor inspects copied observations through the allowed debug connection.
Viewing data, controlling a run, and changing a value are separate actions with separate access checks.
People and authorized agents use the same commands. The activity view keeps the actor and outcome visible.
A 3D view has a table of the same facts, so its meaning remains available to keyboards and screen readers.
Previewing a change and saving it are separate steps. Review the source diff before keeping an edit.
Missing observations and unsupported actions remain visible. The interface does not fill gaps with invented results.
Optional lenses: a summonable typed-command console, or a terminal presentation launched through an existing remote shell such as SSH. Both join the same workbench. No arbitrary shell inside the editor, no second debug protocol, and no automatic graphics-to-text fallback.
Choose how to run the program
Start from an editor revision, run a test, attach to an existing session, or inspect a recording. Each run keeps its own source and settings.
| Kind | What the host starts | What you get |
|---|---|---|
| Embedded | A child runtime running authored source | Its scene drawn inside the editor, input routed to it. Up to the children ceiling side by side, and it can follow the buffer: each clean check hot-swaps the program and keeps its state. |
| Session | An ordinarytrisession in its own windows | The composition the program ships in, paired to the editor's own host for debugging. |
| Attached | Nothing: joins a running session's debug link | Local by the trusted shortcut, remote by endpoint, at the levels the remote plan grants. |
| Source test | An independent testmainselected undera/**/_test/ | Named cases in the leading structured Draft comment supply exact typed arguments. Each case gets fresh ephemeral fixtures and a complete lifecycle. Production assembly excludes test sources. |
| Tape | An embedded run playing a recorded.tape.draft | Examples and session regressions undera/**/_test/. A mismatch opens both documents at the first diverging call. Save preserves Draft; minting.tape.chestis explicit. |
| Replay | An effect-denied child re-running one recorded program call | Land at a recorded configure, start, main, or stop call and use compiler points without rewinding the live run. Host-only provider, prelude, and teardown boundaries expose their typed recorded transition or fault for inspection; rerunning one is explicitly a new test run. |
| Run group | The sessions one launch or one end-to-end test started | A dual run, its extra clients, or a group of connected sessions, each a debug target, under a link profile's latency, loss, and partitions. |
| Import | The application's prelude through stageassetsin its own process | Every asset's phase and the build queue. In the selected storage rebuild the editor's host joins the shared build store separately, serves bounded observations, and lends the renderer a read projection. |
Explore work, memory, connections, and assets
Switch views below and drag to orbit the scene. The table presents the same sample facts as the 3D view.
Lifetime ribbons.Each retained extent is a ribbon from the call that created it to the call that released it. Aliases branch from one ribbon, and a copy is a spark at its source line.
Flame terrain, scene exploder, type blocks.Work by stack depth across calls, a run's own scene pulled apart with each draw labeled by the line that declared it, and a state schema drawn as the bytes each call carries twice.
Review errors and suggested fixes
See the source location, the reason for a problem, and a proposed repair together. Review a change before applying it.
| Feature | Derived from |
|---|---|
| Every refusal in one compile, with extent and notes | The compiler's fault record |
| One-click repairs, and choices for alternatives | Repairs recorded where a planted case proves them |
| Explain: the rule, an accepted example, the nearest invalid one | A table derived from the language lock |
| Runtime faults with the values behind them | Operand and frame witnesses |
| Hover, go to definition, references, rename, completion, semantic color | A semantic model published byt.code, types as canonical spellings |
| Reach lens: which line needs which grant entry | The minimal grantt.code.compilealready derives |
| Static performance evidence, warnings and tips | The compiler's image report and canonical advisory publication, never editor heuristics or runtime measurements relabeled as compile facts |
Compare work and memory between runs
Compare a function or a whole run. Exact work counts, estimates, memory use, and elapsed time keep separate labels.
| Word | Figure |
|---|---|
| counted | Work one call spent, per deterministic ledger |
| attributed | Work per function and line on an armed call |
| sampled | Unavailable. |
| static | The charge of one pass through straight code |
| timed | Wall time on this host; never compared or gated |
a/_test/walk.tape.draft· rev 39vs rev 44A performance audit names the revision, selected test case or one tape segment, composition, baseline, and ceilings. Its report states coverage and completeness, exact counts, attribution remainder, byte maxima, explicit sample unavailability, and timed wall separately. Missing evidence is unavailable, not zero cost or full coverage.
Selected image versus pass-disabled control.Static instruction, copy, slot, frame-byte, array reservation, predicted-use, slack, and transformation facts share one source and compile environment. The control cannot run or ship, and its delta never pretends to be measured speed.
Software floor and hardware providers in named cells.Each cell names its provider, device, artifacts, host, target, workload, and completeness. Absolute measurements sit side by side; an incompatible or cross-host delta reads unavailable.
Inspect values, records, and settings
Select an item to see its type, value, and context. Viewing protected data and changing a value require the appropriate permissions.
compiler relation
unique refderives a nullable scalar inverse. This declaration stores no mirrored key array.Every setting names its layer.Value, the tier that authors it, and the layer that supplied it: compiled default, invocation document, host option, plan, or application config (base, target,on configure). "Open source" jumps to the field that set it. Where the host publishes no layer, the inspector says so instead of guessing.
Imagery comes from declared laws.Thalassa refuses a debug renderer, so object-id, overdraw, and quad-overdraw views are diagnostic laws a scene declares, returned as captures.
Pages carry a cursor and an as-of vector.In the selected rebuild the host reads a bounded page between calls without blocking writers. A hold stops only this runtime's writes; it buys no shared-store snapshot across pages.
Two-way navigation has one authored owner.The inspector joins the compiler's resolved references to the Store catalog, shows the compiler-derived reciprocal page and its costs, and offers only a checked source-edit proposal. Local and remote sessions publish the same facts and never mutate a live catalog to manufacture the inverse.
One new association request.An observe request names a subject, key, and window. The run's host answers with one document built from the owner's own readers, validated as hostile input and paid from the debug ledger.
Work with the interface and its source
Visual tools and text tools use the same application source. A preview keeps its own data, resources, and access rules.
| UI lens | Published facts |
|---|---|
| Surfaces and portals | Surface, product, generation, views, focus, capture, input route, edge verdict and ceilings |
| Layout and paint | Resolved boxes, clips, hit path, paint rows, overflow and source declarations |
| Theme and palette | Resolved color, spacing, stroke, radius and state roles, with the source layer |
| Fonts and text | Requested family, chosen face, fallback, axes, metrics, clusters, glyphs, atlas and missing-glyph cause |
| Accessibility | Roles, names, values, states, reading order, actions and platform projection |
| Glint mode | What stays visible |
|---|---|
| Source | Checked source spans, types, constants, functions and faults |
| Module | Digest, stage, slots, resource bindings, layout and consuming material/effect rows |
| Preview | A declared fixture or selected scene binding on the software floor and named hardware providers |
| Live candidate | New immutable module and scene generation, committed only after check |
| Help | Owner-published faults, facts and advisories; educational narration stays labeled and never edits unasked |
A mosaic is several portal edges.Each region keeps its own child product, surface, view derivation and input route. A portal opens no runtime, grants no authority, and inherits no theme, locale, accessibility, focus or capture.
Trace how a result was produced
Inspect a rendered result, follow a recorded interval, or compare an isolated change. Original observations and recreated results keep separate labels.
| View | What the evidence can establish |
|---|---|
| Pixel explanation | Proven fragment, depth, blend, shader, texture and temporal contributions. Original captures and reconstructed evidence keep separate labels. |
| Temporal scene query | Checked predicates over a named recorded interval, with true, false, unknown and gaps. A match after a gap never claims the first global match. |
| Named experiment | Reproduced baseline versus one isolated state, source, Glint or raster change. Workload divergence ends the aligned comparison; Apply is a separate guarded transaction. |
| Spatial microscope | Typed basis, instance, deformation, normal, world, view, projection and clipping chains. Units and frames remain distinct; an unavailable inverse is never guessed. |
| Difference and impact | Structural and image differences under declared correspondence and comparison policy. Consumer scope distinguishes possible, executed and unknown members. |
| Keep as regression | A reviewed test proposal with admitted dependencies. Reduction preserves only replay-verified candidates and reports incomplete search. |
| Experiment matrix | Finite provider, quality, asset-level and candidate cells. Executed, compile-only, unavailable and refused outcomes stay distinct; device timing has its own host evidence. |
| Pipeline resources | Exact resource versions, producers and consumers; typed tables, raw bytes, texture slices and separate sample planes. Missing layout admits no invented cast. |
Arrange views across windows
Keep code, runs, tables, and previews together in one workspace. A window can show another view without creating another program or granting extra access.
Alignment is explicit and coverage stays visible.Two tape selections name their recordings, runtime tracks, boundaries and comparison policy. Unmatched regions and missing observations stay visible. Replay is an explicit action and never moves the live target.
Save and recovery are explicit.A Draft preference stores logical views and placement intent. Current monitor facts govern restoration; unsupported precise placement stays unavailable. A partial restore lists each opened or deferred view.
A window closes only its readers.Other windows, dirty shared documents and target runs remain. Closing the final window leaves the ordinary zero-surface session. Close workspace settles guarded work and asks once per dirty document.
The whole population has a funded ceiling.Surface, pixel, native-byte, UI-row and presentation-work limits apply across windows. A refused open keeps the existing view in place.
Preview assets as they build
Browse images, textures, models, audio, fonts, and other assets. Each preview shows its build state. An older preview stays labeled while a new version is being prepared.
A crucible shows the finest published level it has. A queued, failed, reserved, or permanently unavailable preview keeps its profile's own silhouette and names the reason; it never uses a generic blank or fabricates content.
| Profile | Preview | Interact | Edit |
|---|---|---|---|
| image, texture | Raster on a quad in its declared color space | Zoom to a texel, isolate channels, step levels | Fill, crop, flip, rotate, resize, blitted strokes |
| palette | Swatches beside every texture that reads it | Pick an entry, see what it colors | Entries, through the source |
| mesh | Mesh under the editor camera, bounds and frame | Orbit, wireframe, normals, level switch | Transform, material slot |
| rigClip | Skeleton posed over the clip | Scrub, play, isolate a joint | Through recipe or importer |
| video | Frame at the scrub position | Step frames | Through recipe or importer |
| audio | Waveform and spectrum | Scrub, select a range | Trim, gain, fade the source |
| font | Glyph grid and a shaped sample line | Type a sample, read metrics | Recipe and importer only: no import table row admits its source |
| heightfield | Terrain with contours and its unknown-data mask | Orbit, level switch, read an elevation in its unit | Recipe and importer only: no import table row admits its source |
| taiUtcHistory, zoneRuleEdition | Rows as a table and a timeline | Select a row | Through the source document |
Edit the source, never the built document.The build key is the source, recipe, importer, and target digests. An asset edit changes one of those three sources: the recipe (Draft), a custom importer (Trident), or the raw source, edited as its Nautilus authoring input and encoded back to its own format.
Loss asks first.JPEG has no encoder, so an edited JPEG saves as a lossless format the recipe admits, under the same asset name, after a question naming both files. An edit the format cannot carry refuses by name.
Importers are programs.A custom importer under_import/runs under the deterministic grant, so a breakpoint stops it on the group it is importing and a replay reproduces it exactly.
Edit, rebuild one, see it.An edit asks the import run to rebuild just the changed names. The preview swaps to the new generation when it publishes, because a root is never edited in place.
Test slow or unreliable connections
Set delay, variation, loss, and temporary disconnections in a repeatable test. Each session records its own run so a problem can be replayed and inspected.
# sketch: the link-profile row fixes the schema duration latency = 80ms duration jitter = 20ms f64 loss = 0.02 u64 seed = 7 chest[] partition = [ { duration at = 5s duration heal = 12s } ]
Each end impairs its own sends.A link profile on a peer member or a store endpoint delays and drops outbound traffic in the plane's send pump, so every real carrier stays under test.
An end-to-end test is a dual run.The client program's result is the verdict, and the runner starts the server and the extra clients.
Each session records its tape.A network arrival is a recorded input, so each tape replays its session exactly.
Every session is a debug target.The run group's constellation shows the sessions, their connections, and the traced messages.