Build the atom KIT "medieval-walls": town walls, gate, terraces, stairs, plot boundaries, square furniture, and the
GROUND shelf for streets. Reference: sheet.jpg here (Riquewihr main street closed by the Dolder gate tower;
Collonges-la-Rouge pepper-pot towers; Mont-Saint-Michel ramparts; Gordes terraces stepping down a hill). Your dir:
/root/fal-author/medieval-walls-v1/ on gex44 (here: ~/forge-build/forge-assets/jobs/medieval-walls-v1/).
Atoms, sizes and origins: SETTLEMENT.md section 1, medieval-walls table: town_wall_4m (joins seamlessly with the next
copy along X and with town_wall_tower; sockets for both ends), town_wall_tower, town_gate, retaining_wall_2m (rows
stack in Y and join in X with no seam), stair_flight, garden_wall_2m, fence_wattle_2m, fence_picket_2m, market_cross,
fountain. Ground shelf materials (tileable, 2 m tiles, Height maps): Cobble_street (worn cobbles with mud in the joints),
Dirt_track (packed earth with wheel ruts and grass tufts... flat texture, no geometry), Grass_meadow, Paving_square
(large worn flagstones). Triangle budget (overrides the contract numbers): whole kit <= 50k; town_gate <= 12k, tower
<= 6k, wall <= 1.5k, retaining row <= 400. The contract's roof-cover and eaves sections do NOT apply.
test_house.png: assemble a wall run (3 walls + tower + gate + 3 walls) and a terraced slope (3 stacked retaining rows,
a stair flight) with the ground materials on a plane, and render it.
DETAIL LEVEL: match ~/forge-build/forge-assets/jobs/medieval-atom-kit-v1/ (read its kit_sheet.png, runtime_*.png and
build_kit.py, read-only): same shelf material NAMES where they apply (Rubble_stone, Rubble_stone_dark, Oak_frame,
Oak_frame_grey, Plaster_ochre/white/pink, Clay_tile, Clay_tile_dark, Dressed_limestone, Wrought_iron, Leaded_glass,
Door_paint, Sign_paint) so one village shares one look; add new materials only when needed (names in CamelCase_words).
The interface (atom names, sizes, origins) is FROZEN in ~/forge-build/forge-assets/omg/kit/building/SETTLEMENT.md
section 1: read it; code is being written against it right now, in parallel. Put every atom's real bounding box and any
sockets (attach points) in kit.json. Low-poly where it does not show, real shapes where it does (arches, mouldings,
tracery read as geometry at 10-30 m). Phone budget matters: no subdivided flat walls; one material per surface type.
