Parametric geometry
ADR: ADR-0062. World replacement: ADR-0063. Derived clusters: ADR-0064. Exact solids: ADR-0065. Parameters and capabilities: ADR-0066. Operation session: ADR-0067.
A Block is the object. Meshlets, cluster hierarchy, visibility, level of detail, and Einstein detail are derived representations. Einstein is surface discretization. It is not the definition of existence, the collision solid, the transform, or the coordinate system.
Parametric solid
-> canonical surface
-> derived mesh
-> meshlets, hierarchy, visibility, LOD
-> Einstein detail when the existing policy asks for it
-> GPU
The saved component is ParametricBlock. The level writes format version 6 only when a block is present. The file stores full extents in meters, one material slot, and the entity transform. A solid that is not plain also stores per-face inset, one bevel, and a history log. It does not store triangles, meshlets, or Einstein patches. The runtime mesh is rebuilt from that record. Object scale stays (1, 1, 1). Size is not a frame scale.
Collision is the analytic oriented box in the entity frame: half extents are size / 2. Play's free-fly pawn is kept outside that box by a small radius. There is no physics solver. This is not JRV-0090.
An Empty level is World Settings only. File > New Level confirms that, then writes the existing empty document. Replacing the world releases that world's render residency before the next frame: mesh buffers, meshlet records, hierarchy, parent geometry, meshlet debug, and Einstein patches. MeshId starts again at 1, so those objects must not survive. The device, the editor grid, and the project asset library stay. Asset meshlets are not attached to the new world's runtime mesh ids. ADR-0063. The ground grid and the axis triad are editor reference on the existing frame (+X right, +Y up, −Z forward, meters). They are not entities, they are not saved, and they do not draw in Play. Create > Block places the first solid at scene-local (0, 1, −4) with size (2, 2, 2) m. Later blocks step 2.5 m on +X. The derived mesh is uploaded from the block's size. The same generation calls the existing meshlet builder. On a 2 m cube the minimum 8-cell grid splits each face's two triangles, so the measured set is 12 meshlets of one triangle, with missing and duplicate coverage both zero. Those clusters are world residency. They are not a .jarvigmeshlets sidecar and they are not in the level. An imported mesh with no usable sidecar still has zero candidates. ADR-0064.
The evaluated solid is the size, six face insets, and one bevel. Faces are +X, −X, +Y, −Y, +Z, −Z. A plain record has zero insets, zero bevel, and an empty history, and the level still writes only the size and the material. Any other record also writes inset_m, bevel_m, and history in the same component version and the same format 6. History keeps the last 24 edits and drops the oldest. The mesh is rebuilt from the stored numbers. It is not rebuilt by replaying the log, and an entry cannot be muted. A face push grows one axis and moves the center by half the change, so the opposite face stays. An inspector size edit keeps the center. Bevel and inset clamp to 45% of the shortest side and stay inside the analytic box. Collision is still that box of size, so the collider does not shrink to the chamfer. A featured surface is not the 12-triangle audit. It uses the same meshlet builder, and an authored block stays Exact. ADR-0066.
The inspector asks what the selected entity can do. A block advertises Transformable, ParametricSolid, FaceEditable, Patternable, MaterialAssignable, Collidable, and ComponentHost. BooleanOperand is named and stays false until a boolean exists. Dimensions, Features, Selection, and either Object Tools or Face Tools are those capabilities. Pattern and Placement are not section titles. The registry group is still Shape. The panel title is Dimensions. An imported mesh can take a material and does not get the solid tools. A light, a camera, and a player spawn do not either. Duplicate is the existing duplicate command. Mirror writes an independent copy that shares a face with the original. Align drops the lowest corner onto scene Y = 0. Snap rounds local translation to 0.1 m and does not change the Move gizmo. See ../editor/gizmos.md.
Extrude, Inset, and Bevel are one session. The toolbar icon, the Amount field, and one viewport arrow share that amount. A drag snaps its delta to 0.05 m. A typed amount is exact. Preview does not append history. Mouse-up leaves the preview open. Apply writes one log line. Cancel restores the size, the insets, the bevel, and the translation from when the session opened. The permanent Bevel field, the six Inset fields, and the raw history string are not on the panel. Features lists the current size and any nonzero bevel or inset. That list is the current parameters. It is not a stack that can mute a step and rebuild. ADR-0067.
A single click selects the current element. A double-click promotes to the object. Auto, Object, and Face are the modes, and only on a parametric solid. Edge and Vertex wait until the solid has those elements. Select mode drags a marquee on empty space: left to right takes objects fully inside the rectangle, and right to left takes objects the rectangle touches. The whole object outlines its analytic box. A face outlines that face. Clicking a Features row reopens the current amount. Editor undo is a separate stack of 64 transactions. One drag, one sculpt stroke, and one numeric field are each one entry. The feature log stays the log. ADR-0068.
Boolean union, subtract, and intersect stay later. Sketch, then extrude from that sketch, revolve, sweep, and loft, come after booleans. Cylinders, ramps, spheres, and chart-based Einstein detail on curved solids are later. A Graybox level will be an ordinary level file: World Settings, a light, the environment, a Player Start, and a floor Block. It does not need a special engine type.
PROCEDURAL_MICROGEOMETRY_DEFAULT stays false. RFC-0002 stays unstamped. The block stays in the same classifier. Auto still treats it as an opaque solid. A visible cluster of an exact solid is Exact, including when the 2 cm feature projects past 1 px, and no patch is built. Off-screen and occluded clusters keep those reasons. The surface builder is unchanged. Exact solids are not submitted to it. The private surface rule is not in this repository. Imported meshes, including flat walls, still use the 1 px gate. ADR-0065. Micro Off and Auto draw the same mesh. While the solid is plain, that mesh is the 12-triangle box. Changing the size while inset and bevel stay zero preserves eight corners, six planar faces, twelve triangles, consistent winding, coincident boundaries, exact meshlet coverage, and parent spheres that contain their children. Debug views remain visualizations. When the coverage work is finished, ordinary derived meshes are supposed to enter the same geometry system without a user-facing experimental switch.