# Roadmap

## Done (October 2026)

- **Engine split from house data.** `engine/` draws any house; `houses/<slug>/house.js` is the house.
  1351 re-rendered to within 0.01% of pixels of the original single-file page.
- **General data model.** Wall faces come from a footprint polygon; their outlines follow the roofs and
  the foundation steps. Roofs are a list (gables, cross gables with valleys, sheds, brackets). Finishes are
  a palette. Options are generic. The site is lot + street + terraces + a list of items.
- **Interiors.** Floors with stairwells, partitions with doors, stairs, guards, casework and furniture
  massing, room labels with clear dimensions, vaulted ceilings. Floor-plan views and 3D cutaways per floor.
- **Tools.** `bundle.py` (single file for publishing), `compare_renders.py` (regression check).
- **First house designed from a brief:** the 36 × 30 duplex.

## Done (October 2026, continued)

- **Git.** The project is a repo; a permit set will be a tagged version, a change order a diff.
- **Building model** (`engine/model.js`): wall bands per level and per gable with their openings, floors, roofs, rooms —
  plain data with IDs, independent of the renderer.
- **Framing, first pass** (`engine/framing.js`): generated from the model and shown with "Show framing".

## Next

1. Iterate the framing rules with Ted on Leighton & Dodd (corners, headers, bearing lines, joist directions, trusses vs
   rafters, deck beams).
2. **Merge the design and build viewers** (agreed with Ted, 2026-10-28). Make one page whose layer tree adds a
   Finished-house group (siding, trim, interior, site) to the foundation / framing / roof groups, with Design and Build
   presets. Generate framing lazily, on first use. The design view then shows the build model's real stem and sill where
   the skin stops, instead of its own simplified foundation. Do this before the sheets, so they have one source of truth.
3. Permit sheet set for Blaine from the model: site plan, floor plans, elevations, sections, framing plans, schedules → PDF.
4. Quantities and take-offs; link to the accounting system.

## Later, roughly in order of usefulness for designing houses

- **Hip roofs and dormers.** Gables and sheds only today.
- **Walls that aren't axis-aligned.** Openings locate by world x or z, which assumes square corners.
- **Stairs with landings and turns** (L and U), and stairs along x. Straight flights along z only today.
- **Ceiling lids and soffits** for rooms under a vault (the duplex's powder room and pantry are open-topped).
- **Dimension strings on the floor plans**, and a printable plan sheet (PDF) per floor.
- **Take-offs from the same data:** window/door schedule, siding squares, trim LF, drywall and flooring SF,
  conditioned area per unit.
- **Elevation views that cut the ground**, so nothing below grade shows on a true elevation.
- **Opening trim rules as a table** per house (casing width, head style, apron, muntin pattern) and more
  door styles.
- **Site as species lists and grade contours** rather than hand-placed items.
- **From plan PDFs:** read A-sheets and produce a draft `house.js`, then refine visually.
- **A house index page** listing every house with a thumbnail.
