# LEGO studio - validation report

Revision: glossy black hip roof, 7 September 2026. Status: **digitally checked build draft**. No physical build or BrickLink Studio validation is claimed.

## Delivered design

- Building walls: **46 x 76 studs**, **36.8 x 60.8 cm** (14.49 x 23.94 inches).
- Building height, including roof: **27.2 cm** (10.71 inches), excluding the base. This is 1.2% above the 26.88 cm scale target.
- Roof overhang footprint: 48 x 80 studs, 38.4 x 64 cm.
- Landscaped base: **64 x 96 studs**, **51.2 x 76.8 x 0.96 cm** (20.16 x 30.24 inches). Building plus base is 28.16 cm high.
- Real dimensions supplied by the user: 30 x 50 x 22 feet. Scale is approximately 1:25; axis-specific ratios are stored in assembly.json. No absolute measurements were inferred from photographs.
- **5,588 pieces**, **46 part/color combinations**, **201 construction steps**. Eight roof panels contain 343, 343, 287, 287, 287, 287, 343 and 343 pieces respectively.

## Evidence and interpretation

IMG_2131, IMG_2132 and IMG_2133 jointly establish the original facade orientation, light wall finish, large front-left glazing, three small windows above, front entrance/canopy, three divided upper-right windows, lower-right glazing, five narrow windows on the visible long side, eaves and downpipes. Planting, curb and lamp are observed. Nearby buildings and reflected buildings have been excluded.

IMG_2152 is a **different, mirrored unit**, supplied later by the user. It establishes the hip-roof form. Glossy black is an explicit user correction. Only roof evidence was transferred from this photograph. The ridge length, exact pitch and eave dimensions remain estimates; the original studio facade has not been mirrored.

The right side mirrors the five-window left arrangement as requested. Two rear windows are an authorized interpretation. Interior spine, piers and beams are model supports, not an asserted real interior layout.

## LEGO translation and substitutions

The 21-brick wall height allows a roof within the approximate 22-foot overall proportion. Window sizes are rounded to actual 1 x 4 x 6, 1 x 4 x 3 and 1 x 2 x 3 frame modules. Tall side windows have two six-brick panels and a three-brick upper panel. The main glazing has four columns rather than the photographed three. The entry is fixed display glazing, without a functioning door leaf or handle. Canopy hanger rods are omitted; the canopy instead connects directly to its supporting wall.

The roof uses upright **30363 18-degree slopes**, ordinary concealed black bricks, and **3069b tiles**. Six four-stud courses give an average rise of approximately 16.7 degrees across the grid. Narrow tiled steps and plate-built corner terraces replace continuous metal roofing and standing seams. Initial triangular 43708 wedges were removed because they left exposed triangular regions; all final corners are closed with supported 3024 plates and 3070b tiles. There are no scaled or custom roof pieces.

Clear panes are substituted for the photographed dark glazing to favor common, verified combinations. The enclosed model and framing make them appear dark in many views. Roof reflectance comes from the glossy black material; highlights may appear gray or white, as in the roof reference.

Tall planting uses real green 3471 molded trees, with low round-brick shrubs. These simplify cypress planting. BrickLink 3471 may be supplied in different mold variants; LDraw 3471 is the geometry used here, and 52211 is a documented alternate geometry. Curb lines are rectangular, downpipes are thicker than the originals, and the lamp is strengthened to two studs. No decorative render object is listed as a LEGO part. The neutral render ground is explicitly named DISPLAY ONLY.

The 3471 native origin lies one plate above its foot underside. That offset is applied to keep the foot seated on the soil. The tree crown is approximately 35.2 mm wide, slightly wider than its nominal four-stud envelope; planting spacing leaves clearance from the walls and neighboring shrubs.

## Authoritative data and checks performed

`data/assembly.json` records each stable instance ID, design/part ID, LDraw and BrickLink colors, native library origin position, rigid orientation, subassembly, step, connection type and pane/frame relationship. It generates the MPD, inventories, wanted list, placement schedules and instruction diagrams. Blender uses the same positions and official-library meshes, with one editable object per element. Meshes are shared by part and color.

- All **46 combinations** occur in Rebrickable's public **set inventory** dataset, retrieved September 7, 2026. Evidence includes inventory IDs and quantities in `catalog_manufacture.json`. This establishes manufactured combinations, not current regional seller stock.
- All referenced part files and recursive primitive/subpart dependencies resolve in the official LDraw library downloaded on the same date. Original library headers and contributor licenses are preserved.
- Pane seating uses source-specific offsets in LDU: 57895 in 60596 is (0, 4.5, 5), from the official LDraw HELP; 60602 in 60593 is (0, 0, 0), from official shortcut 60593c01; 60603/86210 in 60594 is (0, 8, 5), aligning matching 72-LDU hinge spans in the official LDCad shadow library. The final review corrected the opening panes to this hinge position. Source files and licenses are retained in `validation/ldcad/`.
- Nominal body-envelope occupancy: **zero overlap pairs**, excluding panes intentionally fitted inside compatible frames. Stud spacing is 8 mm; body heights are 3.2 mm per plate and 9.6 mm per brick. These are assembly dimensions, not molded-clearance claims.
- The stud/tube graph has **one connected component of 5,588 pieces**. Each of the eight roof panels independently has one connected component before installation. Tile tops are non-connecting. Frame top-stud masks and the high-edge studs of roof slopes are specifically modeled.
- Chronological support check finds **no unaccounted-for unsupported pieces**. Initial loose plate layers are assembled on a flat table; canopy and roof panels are built off-model before placement. Frame panes are fitted before installation. Downpipes precede roof installation so their top tie plates remain accessible.
- MPD part count, inventory CSV, wanted-list XML and instruction-step quantities reconcile exactly. Native part references and rigid rotation matrices are retained.
- Live Blender read-only connection was verified before editing. The original scene was re-read and preserved. Construction and revisions used short local add-on calls at 127.0.0.1:9876 with viewport redraws. Final Blender object counts, positions, orientations, step metadata and unit scales are reconciled against the authoritative data.
- Final front, side, elevated, rear and three photo-angle render views are inspected. Photo comparisons are approximate camera/elevation comparisons, not calibrated photogrammetry.
- All 490 instruction PDF pages were rendered and visually inspected in 31 contact sheets, with full-size detail checks and rechecks of revised pages. Automated inspection found no text outside page bounds. `pdf_qa.json` records the final page count and review scope; `instruction_manifest.json` links each construction step to its PDF page and quantity.
- A separate offline source rebuild completed successfully. Both saved Blender files were reopened and every part's identity, color, installation step, position, rigid rotation and unit scale reconciled with the assembly. The independent audit also checks every MPD transform and every inventory subassembly total.

## Remaining checks and purchasing limitations

**BrickLink Studio is not installed** in the inspected Applications locations. The `.mpd` is syntactically checked and uses real library references, but import into Studio and its collision, connectivity and stability tools remain unperformed. No `.io` file has been fabricated. Open the MPD in Studio and save a native IO only after a successful import and inspection.

The nominal collision/support checks are not a complete molded-surface intersection solver, clutch-force model or physical load test. Frame/pane seating, roof-panel sag, tiled corner finish, base flex and safe handling should be tested physically. Build one representative window and roof panel first. Support the base from underneath, never by its canopy, eaves, planting or lamp.

A 64 x 96-stud base carrying this many parts is a substantial display model. The laminated base is reinforced by the connected walls, spine and piers, but transport strength has not been physically established. No claim of physical stability certification is made.

Purchasing country, budget, stock condition and shipping preferences were not supplied. No cost estimate, shopping order or purchase was made. Bulk availability, particularly 432 black slopes and matching cap tiles, should be checked in the user's region before ordering. Color substitution of concealed structure requires updating the assembly and regenerating all outputs.

## Sources and privacy

- Official LDraw library and format: https://library.ldraw.org/updates and https://www.ldraw.org/article/218.html
- Rebrickable public catalog datasets: https://rebrickable.com/downloads/ and https://cdn.rebrickable.com/media/downloads/inventory_parts.csv.gz
- BrickLink catalog, frame/pane relations and color IDs: https://www.bricklink.com/v2/catalog/catalogitem.page?P=60596 and https://www.bricklink.com/v2/catalog/catalogitem.page?P=60594
- Official LDCad hinge data: https://github.com/RolandMelkert/LDCadShadowLibrary/blob/main/parts/60594.dat and https://github.com/RolandMelkert/LDCadShadowLibrary/blob/main/parts/s/86210s01.dat (retrieved September 7, 2026).
- Local original photos and JPEG conversions in `references/`. All private-photo processing and Blender operations occurred locally; no photos were uploaded.

## BrickLink import correction — 7 September 2026

The first XML incorrectly used LDraw alternate IDs for four designs across five part/color lots. BrickLink rejected those IDs. Purchasing exports now apply the explicit, source-linked crosswalk in `data/bricklink_part_map.json`: 3062b → 3062, 3068b → 3068, 3069b → 3069, and 3070b → 3070. BrickLink lists the former identifiers as alternate numbers on the corresponding primary catalog pages. The two 3068b lots have different colors and remain separate.

`parts_inventory.csv` now includes `bricklink_part_id` separately from the LDraw `part_id`. Website cart XML and the downloadable full Wanted List use the primary BrickLink IDs. Instruction diagrams and Blender/LDraw geometry retain the original library IDs; no geometry, color, quantity or assembly step changed. The prior count-only checks did not establish BrickLink import validity. Regression checks now verify the primary IDs and their per-color quantities. An actual corrected upload has not been retested on BrickLink.

Catalog sources: [3062](https://www.bricklink.com/v2/catalog/catalogitem.page?P=3062), [3068](https://www.bricklink.com/v2/catalog/catalogitem.page?P=3068), [3069](https://www.bricklink.com/v2/catalog/catalogitem.page?P=3069), [3070](https://www.bricklink.com/v2/catalog/catalogitem.page?P=3070).

### XML paste compatibility

Both the downloadable Wanted List and browser-generated cart XML now start immediately with `<INVENTORY>` and omit the XML declaration and BOM. This avoids a processing-instruction error when BrickLink embeds pasted XML inside its own document. Both standalone parsing and parsing inside an enclosing element pass; 46 lots and 5,588 pieces remain reconciled. This does not claim an actual BrickLink upload retest.
