# W-HOUSES round 4

## Built
- Deterministic 48-entry catalogue, six archetypes, measured main-footprint width and depth.
- Wealth-controlled shutters/glass, dormers, chimney stacks, stone arches, tower oriels, trade signs and thatch.
- Stone or plain-timber poor houses, varied floor heights, palettes, roof pitches and jetties.
- No braces, corner K braces or generated full X braces. Flat plaster cells keep rich houses affordable.
- Back doors at ground level, cellar doors on falling ground, no doors on intermediate/rising back grades.
- `browse/houses.html`: eight variants per archetype, three slope examples, camera buttons, labels and public probe hooks.

## Evidence
- `node --test omg/kit/building/test/`: 147 passed, 0 failed, 0 skipped.
- Ten new house tests include 960 catalogue builds, all archetypes across house/shop/bakery/tavern/smithy,
  deterministic output, measured dimensions, grounded doors, no-back-door plots, missing kits and roof budgets.
- Legacy full/lite layouts remain byte-identical in their existing pinned test.
- Pure triangle accounting: current 3-bay, two-floor house 108,518 triangles; worst tested catalogue patrician 148,564,
  ratio 1.369, below 1.6. Rich add-ons use frozen upper bounds. Thatch uses authored counts: panel 112, ridge 60.
- GPU probe: `FAL_PORT=8982 tools/gpu/run.sh tools/gpu/houses_probe.py /tmp/w-houses-shots-accepted`.
- Viewed catalogue, patrician, cottage, tower, hill and phone screenshots. Real town atoms have no grey-box fallbacks
  or check errors. The explicit missing-town-kit view has grey boxes plus warnings, not a crash.
- The local disposable page answered HTTP 200 at `http://127.0.0.1:8981/houses.html`.
- Screenshots and machine-readable results: `/tmp/w-houses-shots-accepted/`. The final test log is alongside them.

## Interfaces and integration
- Only optional fields were added. The complete list is in `omg/kit/building/TYPES.md`, round 4 overrides.
- The catalogue returns `{ archetype, type, o, w, d }`. Rebuild with the catalogue seed and `o`.
- `kitInfo.kitAtoms` maps kit names to atom-name arrays. Pass the town array to enable actual thatch; absence means tile
  fallback. Add-ons always retain their kit name and grey-box dimensions, whether the kit exists or not.
- New archetypes and explicit back-grade houses start at street grade. Legacy defaults keep their 15 cm threshold.
- Rich catalogue profiles are narrow gable fronts or wider three-floor eaves fronts. Arbitrarily enlarged caller
  overrides still win and are not covered by the catalogue's triangle ceiling.

## Scope and rollback
- Did not edit settlement planning/rendering, style JSON or any authored kit assets. Did not push or deploy.
- Actual new atoms were tested through a temporary local symlink to Astra's jobs folder; that link is not committed.
- Planner integration and real-device frame-rate measurements are not done by this worker.
- A bad house rule could misplace doors or change silhouettes. Revert the worker's three implementation commits and
  re-run `tools/sync_building.sh`. No live service needs a rollback.
