Generated from config/dimensions.json + the live board
geometry by planning/build_plan.py. Verified by
verify.py (all 12 dimensional gates PASS, incl. the
Govee-downlight fit). The loft + railing cut lists are derived
from the 3D boards — the drawings, cut list, and model cannot
drift apart.
Design: STAINED wood loft, deck 55” · queen platform 4” (32” top / 38” lower headroom over the sleeping area) · loft 56.5” x 104.25” · DECK = a 3.0” TORSION BOX (stressed-skin panel): 3/4” 1x6 top boards + 1.5” 2x2 webs + 3/4” 1x6 T&G bottom skin, dropped onto a perimeter ledge, top flush at the deck. The bottom skin sits at 52” and houses 2 recessed GOVEE 4” DOWNLIGHTS over the queen. Two skins held 3” apart = ~6x a 1” slat’s strength / ~21x its stiffness, sized as a BUNK (holds well past 500 lb). · flush SINGLE-2x6 beam, head BED-BOLTED to the corner post (furniture joint, no hanger) · NO knee wall — a floor-to-rail 4x4 GRAB POST at the 24” opening, tied to the drawer cabinet · foot rim lagged to the front wall · crib-style railing panels 22” (flat 2x4 rail over the post tops) · B-2 ladder on a French cleat · 10” hollow bookshelf headboard. Both mattresses spring.
ORDER quantity = boards the cuts consume (kerf-aware nesting — matches the cut diagram) + 1 spare 2x6 and 1 spare 2x4 (insurance, confirmed 2026-06-13). A miscut/split comes out of the spares, not a mid-build store run.
| Nominal | Total cut length | Cut diagram | ORDER |
|---|---|---|---|
| 1x4 | 693” | 9 x 8 ft | 9 x 8 ft |
| 1x6 | 742.5” | 10 x 8 ft | 10 x 8 ft |
| 2x2 | 1403.2” | 17 x 8 ft | 17 x 8 ft |
| 2x4 | 681.2” | 8 x 10 ft | 9 x 10 ft (incl. 1 spare) |
| 2x6 | 369.5” | 4 x 10 ft | 5 x 10 ft (incl. 1 spare) |
| 2x8 | 114” | 1 x 10 ft | 1 x 10 ft |
| 4x4 | 261” | 3 x 10 ft | 3 x 10 ft |
STAINED finish: hand-pick clear/select boards at the store for the VISIBLE faces — the TOP-SKIN deck boards (most-seen surface), the beam, flat top rails, grab + corner posts, ladder. Same dimensions, just prettier pieces; knots/dents hide on the hidden side.
| Item | Thickness | Sheets | Note |
|---|---|---|---|
| Plywood — headboard bookshelf | 3/4” | 3 | 10” deep x ~77” x 52.0” tall; sides + top/bottom + 3 mid-shelves (one per book column) + column dividers + the bedside-niche returns + cutout FACE (full cut set: sheet 9c). TWO EQUAL 13” book rows over the queen (was 11/9 — reclaims the dead top band) + ONE big bedside display niche (no mid-shelf) over the nightstand. Top-back corner of the sides/top notched 1.5” x 2.5” to clear the wall ledger (the face meets the faux ceiling). NOTE: the 52.0”-tall FACE is taller than a 48” sheet — cut it in TWO pieces, seam on the 35-37” mid-shelf band (hidden behind the shelf). JOINERY: POCKET SCREWS + glue (sides/shelves/dividers); the 1/8” back is GLUED + BRAD-NAILED on to square it. NO dados / NO router. |
| Hardboard — headboard BACK panel | 1/8” | 1 | 77.25 x ~50 against the wall (decided 2026-06-12; carries the LED-strip wiring behind it). Also taller than a 48” sheet — 2 pieces, seam on the 35-37” mid-shelf line |
| Plywood — ladder drawer cabinet | 1/2” SANDED (good 1 side) | 3 | carcass + 4 drawer boxes (uniform inset; heater-side filler panel). Buy GOOD-ONE-SIDE, good face OUT on the drawer-front side; wall/landing-hidden faces can be the rough side. JOINERY: POCKET SCREWS + glue (carcass); drawer boxes BUTT-jointed (glue + brads or pocket screws). NO dados / NO router |
| Plywood — drawer faces + queen skirt + landing deck | 3/4” | 1 | 4 drawer faces + the queen’s skirt (with a TOE-KICK reveal on the 2 visible sides for the under-bed LED) + the 19.5x27 inset landing — all from ONE sheet (stain-grade veneer ply; the hidden landing uses the offcut) |
| Plywood — bedside table | 3/4” | 1 | 14w x 13d x 20h TWO-CUBBY split-level nightstand — the two openings on ADJACENT faces (Task 2 fix, 2026-06-29): the BIG bottom cubby opens to the +x WALKWAY (the room side you stand at — no longer blocked against the drawer cabinet); the shallow TOP SLOT opens to the BED (+y, slide-in at mattress height). Closed on the 2 blocked faces (x=10 headboard + the cabinet side). FREE-STANDING — slid 1.5” toward the bed so the proud overlay door clears the grab post (a ~1.5” gap to the drawer cabinet). 8 pieces (2026-07-01: NO face frames, NO cleat): 7 carcass panels (~1/2 sheet, share the faces-sheet offcut) + 1 OVERLAY DOOR (3/4 ply — sits PROUD of the cabinet front, spans the opening). Door hinged on the cabinet side with EURO / CONCEALED hinges (like a kitchen door — cup bored in the door’s BACK, plate on the cabinet SIDE panel’s inner face, so the hinge is in line with the side and needs no cleat; door sized a touch narrow for clearance), knob toward the bed (reach from bed); 2 euro hinges + 1 knob. FREE-STANDING — slide the table toward the bed if the door fouls the grab post. The TOP SLOT is a plain open niche. NO corner post (the plywood panels ARE the structure; the open corner is formed by the two closure panels). (cut list: SHEET 8d; staged assembly: SHEET 8e). NO drawer/slides. JOINERY: POCKET SCREWS + glue. NO dados / NO router |
| Beaded white MDF panel 4x8 (3/16”, 2” o.c.) — WALL treatment | 3/16” | 1 | decorative paneling on the wall BESIDE the queen under the loft (x10..53, baseboard up to the loft underside z49.5), beads run HORIZONTALLY — balances the 1x6 T&G faux ceiling. Glue + brad-nail to the wall, finished with a WOOD 1x4 vertical END TRIM (stained to match the frame; its outer edge lines up with the loft face at x56.5). NOT structural, NOT the ceiling |
| 1x6 T&G pine — torsion-box BOTTOM skin (the faux ceiling) | 3/4” pref | 10 | ~53 x 74” structural bottom flange = the visible faux ceiling over the queen; the 2 GOVEE 4” DOWNLIGHTS recess into it (4” cutouts in clear web bays). 1x6 T&G (Home Hardware stocks it in several species), 3/4” actual preferred for the best flange. ~10 boards of 1x6x8 cut to ~74”; glue+screw to the webs (this IS the structural bottom flange). NO beadboard |
| Item | Qty | Use |
|---|---|---|
| Lag/structural screws — 1/2” x 4” lag screw (or 1/4” x 4” structural screw, GRK/Simpson SDWS) | 20 | 12 needed (ledger: one per stud, ~8 over 104” @16 o.c.; foot rim: ~4 front-wall studs) + 8 spares — lags are cheap, OVERBUY vs a mid-build store run; the exact count is field-set by your actual stud spacing (often more than 16” o.c. in old framing), so carry extras |
| Post bases | 4 | 2 wall posts + corner post + opening GRAB POST (Simpson or equiv) — V2 frame, no knee wall |
| Bed-bolt sets — 5/16”-18 bolt + 1/2” O.D. cross-dowel + washer (closest available at HD/HH; the “canonical” 3/8”/1” size from a Lee Valley kit isn’t stocked at either store) | 5 | FURNITURE joinery — 5 bolts: 2 GRAB POST + 1 WALL POST (head-rim ends) + 2 LANDING rails, each BED-BOLTED into the post face (counterbore + a wood plug = concealed, demountable). The CORNER POST is NOT bed-bolted (see the next two rows — notch + hanger instead). The packaged cross-dowel’s bolt is short (2-4”, made for thin flat-pack panels) — buy a separate 5/16”-18 hex bolt long enough to clear the post (~3.5”) plus reach ~2” into the rail to the dowel; ask the loose-fastener bin, it won’t come as a matched kit. |
| Corner-post FRONT (beam) connection — notch the beam 1.5” into the post, ONE direction only (post stays full 3.5” width the other way) + 3/8” carriage bolts x 4 + washers/nuts | 1 joint | half-lap instead of a bed bolt at this one post — a full-post bed bolt isn’t available in the right size locally (see above), and a two-direction notch would leave only ~19% of the post’s bending section here; one direction leaves ~33% in the beam’s direction and ~57% in the head-rim’s direction (below), with the full 3.5” width free to space the 4 carriage bolts across |
| Corner-post SIDE (head-rim) connection — Simpson APLH26 concealed-flange BLACK joist hanger (HD #1001400202, HH out of stock) + matching Outdoor Accents connector screws | 1 hanger + screws | replaces a bed bolt at this one post-end — published capacity ~1,040+ lb download / ~900 lb uplift (Simpson ICC-ES data), far past the ~150-300 lb demand here, so this connection isn’t in question. MUST use Simpson’s own Outdoor Accents screws, not generic deck screws, or the rating doesn’t apply |
| Carriage bolts 3/8” x 4-5” + washers/nuts | 2 | grab post -> drawer-cabinet climb edge (nuts inside the cabinet) |
| Structural wood screws 2-1/2” + 3-1/8” | 2-3 boxes | framing + the TORSION BOX skins->webs every ~6” + the perimeter ledge; the beam FOOT into the foot rim; railing-panel rail ends into the posts |
| Wood screws 2-1/2” + 1-1/4” | 2 boxes | slats, cleats, rails (incl. the 21 railing SPINDLES — 2 screws each, prefab the panel flat), cabinets, nailers |
| Pocket-hole screws (Kreg 1-1/4” COARSE for 3/4” ply + 1” for the 1/2” cabinet + 2-1/2” coarse for the queen frame) | 1-2 boxes | the casework POCKET joinery — headboard + drawer cabinet + bedside — plus the queen frame. COARSE thread for plywood/softwood; set the jig + screw length to the panel thickness (3/4” casework → 1-1/4” coarse; the 1/2” cabinet → the 1/2” jig setting + 1” screws so the tip doesn’t blow through). With GLUE the screws act as built-in clamps — the glue line carries the long-term load |
| Construction adhesive / PVA wood glue (white or yellow) | 4 tubes + 2 bottles | the TORSION-BOX skin-to-web bonds (CRITICAL — the glue is what makes the two skins act as one deep section) PLUS every pocket-screw joint (headboard, cabinet, bedside, ladder dados, queen frame) — 2 bottles so a big glue-up day doesn’t run you dry |
| Drawer slides — BUY HARDWARE: 22” full-extension ball-bearing side-mount (~$10-15/pr) | 4 pairs | real sliding hardware, NOT wood-on-wood; uniform inset clears the heater |
| French-cleat latch (drop-pin or gravity latch) | 1 | locks the ladder onto the cleat; lift-off for drawer access |
| Drawer pulls / handles | 4 | one per drawer face — the 4 cabinet drawers (the bedside cubby DOOR has its own knob — next row) |
| Bedside door hinges + knob | 2 + 1 | the big lower-cubby OVERLAY DOOR: 2 EURO / CONCEALED cabinet hinges (like a kitchen door — cup bored in the door BACK with a 35mm Forstner bit, plate screws to the cabinet SIDE panel’s inner face; full-overlay, frameless) + 1 knob on the BED side (reach it sitting in bed). FREE-STANDING table — slide it toward the bed if the door fouls the grab post |
| Brad nails 18ga (1”-2”) + panel/construction adhesive | 2-3 boxes | EVERYWHERE a brad is used: square the casework BACKS on (headboard 1/8” + bedside), tack the cove / screen-bead / 1x4 TRIM, and glue + brad the beaded WALL panel + its 1x4 end trim. Cheap — don’t run short |
| LED strip + driver — UNDER-BED toe-kick | 1 run | low-voltage strip recessed in the queen-skirt TOE-KICK reveal (set back ~1.5”, just off the floor) on the two visible sides — washes the floor for the ‘floating bed’ glow. The SAFE alternative to recessed cans sealed inside the platform. Plug-in driver, dimmable over HA |
| LED strip + aluminium channel (shelf lighting) + driver | ~3 m + 7 channels | warm-white in slim channels on the front underside lip of each opening: 6 over the bed (2 levels x 3 columns) + 1 in the bedside niche. Low-voltage; wiring runs behind the 1/8” back panel down to the outlet behind the nightstand |
| Smart light switches + boxes (Home Assistant) | 4 (a 3-gang at the bedside + 1 at the top bunk) | BEDSIDE 3-GANG on the solid panel at the BOTTOM of the niche — shelf LEDs · queen downlights · under-bed glow — ~24” up, a sit-up reach by the nightstand (standard 3-gang plate, LEFT + BOTTOM flush with the shelf grid; the 2.75” mullion fit only one). TOP BUNK: 1 on the long wall beside the loft pillow, ~12” above the deck. Smart switches (Ryan runs the loads over HA); the build just sets the boxes/plates |
| Govee 4” recessed downlights | 2 | over the queen — recess into the TORSION-BOX bottom skin: 1.4” body in the ~2.25” cavity (0.85” spare, verify.py gate #12), 4” cutouts CENTERED in clear web bays (~8” o.c.), 4.7” trim flush below. Dimmable over HA; CENTERED on the bed centerline + evenly spread (~275 lux at full). MEASURE before cutting the box. |
| Panel-mount USB-A/C charger + 5V supply | 1 | let into the headboard near the pillow (cord drop to the wall outlet) |
| Pre-stain wood conditioner (1 qt) | 1 | pine + fir-larch blotch control — apply first on EVERY visible solid-wood face (spindles, rails, beam, treads, posts) and the ACX-pine casework ply; skip it and the stain goes blotchy |
| Stain (1 qt) + water-based poly (1 gal) | 1 + 1 | STAINED finish (decided — preferred over paint/trim); 2-3 poly coats on caps, treads, deck edges |
| Stain brushes + foam applicators (assorted 1”-3”) | 1 set | natural-bristle (or a rag/pad) for stain, SEPARATE foam brushes/pads for the poly topcoats — don’t cross-contaminate the two |
| Tack cloth + shop rags + disposable gloves + stir sticks | 1 pack each | tack cloth wipes off sanding dust right before staining; rags wipe excess stain; gloves + stir sticks are cheap, don’t skip |
| Stainable wood filler | 1 | filler matched under stain; sand visible faces to 150-180 before staining (sandpaper itemized in SHOPPING_LIST’s Tools & consumables) |
| Paintable caulk | 1 tube | ledger/foot-rim cut lines only (hidden zones) |
| Mattresses | buy 1 spring QUEEN | loft reuses Ryan’s existing double (moved up) |
| Item | Qty | Use |
|---|---|---|
| 3/4” cove OR quarter-round x 8 ft | ~4 | INSIDE perimeter of the bottom-bunk faux ceiling — 38” of headroom over the queen, so the profile is a LOOK choice: 3/4”-2” reads best; up to ~3-4” is structurally fine but starts to close the bunk in. Clears the downlight trim rings (inset, only ~0.3” proud). Confirm run length on site |
| 1x4 x 8 ft (stain-grade) — wall-panel END trim | 1 | vertical wood cap on the beaded panel’s open edge (already in the design — build_wall_trim); outer edge lines up with the loft face at x=56.5. Stain to match the frame |
| thin screen-bead / parting stop x 8 ft | ~5 | OPTIONAL — trim around the 6 bookshelf cubby openings + the niche to MASK ply edge-grain / imperfect cuts; brad + glue. ~35 lin ft |
| Component | Member | Cut length | Qty | Notes |
|---|---|---|---|---|
| Loft | 2x6 | 75.75” | 1 | room-edge BEAM: a SINGLE 2x6 (a bunk edge, not a floor joist), FLUSH; head end BED-BOLTED to the corner-post face (furniture joint — no hanger, no notch); foot end pocket-screwed to the foot rim |
| Loft | 2x6 | 27” | 2 | landing edge rails (climb-edge rail backs the French cleat) |
| Loft | 2x6 | 104.25” | 1 | LEDGER lag-bolted to bare studs (1/2” lag per stud, drywall strip removed) |
| Loft | 4x4 | 55” | 2 | the 2 WALL posts (floor->deck) — NOTCH 1.5x5.5 at the top so the full-length 2x6 ledger passes THROUGH and bears on the shoulder |
| Loft | 4x4 | 75.5” | 2 | the 4x4 CORNER post + the OPENING GRAB POST (floor->rail underside) — stay FULL, NO notch; the grab post ties the drawer cabinet |
| Loft | 2x6 | 20.5” | 1 | head rim = TWO segments, each end BED-BOLTED to the post faces (furniture joint — no hanger); foot rim LAGS to the front-wall studs (2nd ledger) |
| Loft | 2x6 | 25.5” | 1 | head rim = TWO segments, each end BED-BOLTED to the post faces (furniture joint — no hanger); foot rim LAGS to the front-wall studs (2nd ledger) |
| Loft | 2x6 | 51.5” | 1 | head rim = TWO segments, each end BED-BOLTED to the post faces (furniture joint — no hanger); foot rim LAGS to the front-wall studs (2nd ledger) |
| Railing | 2x4 | 29” | 1 | 2x4 FLAT top rails, post-width — run continuously OVER the post tops; ends lag into the posts |
| Railing | 2x4 | 79.25” | 1 | 2x4 FLAT top rails, post-width — run continuously OVER the post tops; ends lag into the posts |
| Railing | 2x2 | 19” | 21 | 2x2 spindles, gaps ~3.2” (<3.3”) |
| Railing | 2x2 | 25.5” | 1 | V2 panel BOTTOM STRIP 2x2 — spindles screw to it, then it screws to the frame top |
| Railing | 2x2 | 75.75” | 1 | V2 panel BOTTOM STRIP 2x2 — spindles screw to it, then it screws to the frame top |
| Torsion box | 1x6 | 74.25” | 10 | TOP SKIN 3/4” 1x6 boards (KILN-DRIED clear/select pine — INDOOR stock, NOT wet PT/cedar deck boards) — the stand/sleep surface, flush at the deck; glue+screw DOWN onto the webs |
| Torsion box | 2x2 | 50.5” | 10 | 2x2 WEBS (‘slats in the middle’), 1.5” tall — 2 lengthwise edges + ~8” rungs; glue+screw to BOTH skins so the box acts as one piece |
| Torsion box | 2x2 | 74.25” | 2 | 2x2 WEBS (‘slats in the middle’), 1.5” tall — 2 lengthwise edges + ~8” rungs; glue+screw to BOTH skins so the box acts as one piece |
| Torsion box | 2x2 | 50.5” | 2 | perimeter LEDGE 2x2 around the inside of the frame — the box drops onto it (top at the box bottom, 52”) |
| Torsion box | 2x2 | 74.25” | 2 | perimeter LEDGE 2x2 around the inside of the frame — the box drops onto it (top at the box bottom, 52”) |
| Ladder | 2x4 | 64” | 2 | ladder stiles (~59° pitch); DADO the inner face 3/4” deep x 1.5” tall at each tread line, plus a plumb/seat cut at the foot (lands flush under the loft edge) + the deck-end seat cut |
| Ladder | 2x8 | 19” | 6 | 6 treads, EVEN spacing -> 7.9” risers for the 55” rise (7.25” deep, 19” wide); HOUSED in the stile dadoes, glue + 2 screws from OUTSIDE per end |
| Ladder | 2x6 | 19” | 2 | FRENCH CLEAT pair (one 45-deg bevel rip): one on the climb-edge landing rail, one on the ladder back |
| Queen frame | 2x4 | 80” | 2 | side rails on edge (60x80 OUTER frame — mattress sits on top FLUSH, no overhang) |
| Queen frame | 2x4 | 57” | 2 | end rails between the sides |
| Queen frame | 2x4 | 57” | 3 | CROSS MEMBERS on edge between the sides (~19” bays) — they sit on the floor, screwed through the side rails |
| Queen slats | 1x4 | 77” | 9 | LENGTHWISE slats @ ~2.8” gaps (spring mattress) — same pattern as the loft deck |
See output/cut_diagram.* for the visual cut sheets
(pieces nested on stock boards). Plywood cuts are derived per cabinet at
build time; sheet counts in section 2.
Build-order answer: do NOT pre-assemble the loft frame and lift it — and there is no mid-air balancing either. The ledger, posts, and front-wall pocket go up first as fixed supports; every later member rests on hardware while you screw it. The only heavy-ish solo lift is the single 2x6 beam (~15 lb), one end at a time onto supports that already exist. The ONE genuine two-person step is dropping the ~100 lb prefab torsion box onto the ledge — line up a helper for that (or split it on a web seam).
⚠️ Informal review (not a stamped calc) — full writeup in
planning/STRUCTURAL.md. Sized as a BUNK, not a floor (you can’t stand on it at 32” headroom; lying loads, ~2 people). The proven reference is Ryan’s existing sturdy bunk; the box adds a big margin on top.
Ballpark at Home Depot / Home Hardware, SPF/spruce paint-grade. Not a quote — lumber and sheet prices move; treat as order-of-magnitude. Loft mattress is reused (Ryan’s existing).
| Group | Est. cost |
|---|---|
| Dimensional lumber | $450 |
| Sheet goods + panelling | $622 |
| Hardware, lighting & finish | $897 |
| Trim & moulding | $46 |
| Subtotal | $2,016 |
| HST (13%) | $262 |
| Build total (±15%) | $1,936 – $2,620 |
| + new spring queen mattress | $300 – $700 |
All-in (build + queen mattress): ~$2,236 – $3,320 CAD.
Re-run python3 planning/build_plan.py after any
change; python3 verify.py must stay green.