# CONTEMPORARY-PROPS: THE CATALOGUE 339 candidates in, 306 unique after merging cross-domain repeats. 100 in the core, 150 in the follow-on, 56 cut outright, 33 merged into another candidate's generator. --- ## 1. THE CORE 100 Read top to bottom as the build order. Rows 1 to 32 exist to establish and prove the shared vocabulary (revolve profiles, extrusions and chamfers, linear and radial arrays, perforation), and each is cheap enough that a mistake in the helper is cheap to fix. Rows 33 to 69 compose that vocabulary into frames, carcasses and mechanisms, and are where the shared parts library (castor, hinge, drawer, door, louvre, slat) gets settled. Rows 70 to 100 are the expensive objects that should only be attempted once everything below them exists. | # | id | name | domain | complexity | action | why it earns a place | |---|---|---|---|---|---|---| | 1 | ceramic-vase | Ceramic Vase | decor | simple | | The revolve profile itself: one waist, shoulder and lip curve proves the lathe helper and the whole vessel family follows from it | | 2 | coffee-mug | Coffee Mug | kitchen | simple | | Adds the swept handle attached to a lathed body, the second most reused join in the kit | | 3 | wine-glass | Stemmed Wine Glass | kitchen | simple | | Proves wall thickness on a revolve and the glass slot before anything expensive depends on either | | 4 | pepper-mill | Pepper Mill | kitchen | simple | cap twists on the body | Longest profile curve in the kit at the lowest cost; the flute grip is the first radial cut | | 5 | stockpot | Lidded Stockpot | kitchen | simple | lid lifts off | Rolled rim, riveted lug and a separable lid, three details every metal vessel afterwards reuses | | 6 | traffic-cone | Traffic Cone | street | simple | | The clearest outline in the whole set, and it is where vertex-colour banding on a revolve gets defined | | 7 | street-bollard | Street Bollard | street | simple | | Same generator as the cone with a different profile, which is the cheapest possible proof that profiles are data | | 8 | gas-cylinder | Gas Cylinder | tools | simple | valve handwheel turns | Shoulder taper plus foot ring plus caged guard: the first time a lathe carries an array | | 9 | fire-extinguisher | Fire Extinguisher | tools | simple | lever squeezes against the guard | The valve head assembly is the first small-part cluster and the first squeeze lever | | 10 | pedestal-basin | Pedestal Basin | living | simple | | Two lathes making an hourglass, and the first object where the ceramic slot has to look like ceramic | | 11 | jersey-barrier | Concrete Traffic Barrier | street | simple | | One extruded polyline with end connectors; this is the extrusion helper's reference implementation | | 12 | picnic-table | Picnic Table | street | simple | | Plank runs on a mirrored A-frame, the cheapest object that is entirely plank array plus mirrored frame | | 13 | park-bench | Park Bench | street | medium | | Slat array between two cast side frames; establishes the slat-with-gap rule everything else copies | | 14 | pavement-sign-board | A-frame Pavement Sign | retail | simple | folds flat about the top hinge | The first hinge with a real origin, on the simplest possible body | | 15 | lectern | Lectern | office | simple | | Angled cap on a panelled shaft: the chamfer helper on a tall thin mass, and it absorbs the school lectern | | 16 | bookcase | Open Bookcase | office | simple | | The shelf-in-carcass generator, needed before every cabinet in the list | | 17 | pedestal-dining-table | Pedestal Dining Table | kitchen | medium | | Lathed column plus radial feet plus edge-chamfered top; the round-table family and the bistro table both live here | | 18 | sit-stand-desk | Sit-Stand Desk | office | medium | setHeight drives the telescoping stages | The telescope helper, defined once on the object where it is most visible | | 19 | wall-bars | Gym Wall Bars | school | simple | | Pure rung ladder, the reference for arrayLinear with end caps into a stile | | 20 | heated-towel-rail | Heated Towel Rail | living | simple | | Same ladder, bowed rungs, different material and pitch; proves the array is genuinely reusable | | 21 | bike-rack | Cycle Stand Rack | street | simple | | One swept hoop instanced along a rail, the reference for sweep-then-instance | | 22 | clothes-hanger | Clothes Hanger | living | simple | | Bent profile sweep with a coiled hook, the smallest object with a helix in it | | 23 | wine-rack | Wine Rack | kitchen | medium | | A lattice of cells in two axes, the first genuine grid rather than a row | | 24 | venetian-blind | Venetian Blind | living | medium | tilt the slats, raise the stack | Dozens of identical curved slats on ladder cords, and a tilt that swings the whole read from solid to striped | | 25 | wall-clock | Wall Clock | office | simple | setTime sweeps the hands | Tick ring plus hands, legible with no numerals; absorbs the classroom and decor clocks | | 26 | cable-drum | Cable Drum | street | simple | rolls about its axle | Spoked flanges, battens and a helical winding, three repetitions in one small cheap object | | 27 | panel-radiator | Panel Radiator | living | medium | thermostat head turns | The zigzag convector fin rank behind a pressed panel, and the first object that is only interesting from its top edge | | 28 | mesh-waste-bin | Mesh Waste Bin | office | medium | | The perforation helper on a tapered drum, defined here so every bin, grille and louvre after it is free | | 29 | colander | Perforated Colander | kitchen | medium | | Perforation mapped onto a curved shell rather than a straight one, which is the harder case | | 30 | litter-bin | Litter Bin | street | medium | hood hinges up | Perforated drum under an overhanging hood, and the first object where a hinge carries real mass | | 31 | temporary-fence-panel | Temporary Fence Panel | street | medium | panels hinge at the coupler | Welded mesh in a tube frame; thousands of identical bars is exactly the work generation should absorb | | 32 | wheeled-waste-bin | Wheeled Waste Bin | street | medium | lid swings on the rear hinge, wheels spin | Tapered ribbed moulding, hinged lid and an axle; the first appearance of the wheel part | | 33 | stacking-chair | Stacking Chair | office | medium | | The cantilever bent-tube frame, and the first object built to stack with copies of itself | | 34 | dining-chair | Dining Chair | kitchen | medium | | Spindle back on tapered legs, the turned-leg seating archetype; absorbs the living-room chair | | 35 | bar-stool | Bar Stool | kitchen | medium | seat swivels and rises on the column | Tall column with a foot ring; absorbs the lab stool, retail stool and living stool as parameter sets | | 36 | dish-drying-rack | Dish Drying Rack | kitchen | medium | | Wire tine array over a drip tray, the reference for many-identical-rods with a formed frame | | 37 | sack-truck | Sack Truck | tools | medium | | Tubular L with cross rungs and inboard wheels, the first frame whose whole read is a right angle | | 38 | wheelbarrow | Wheelbarrow | tools | medium | tips forward on the wheel | The dished-sheet helper, needed for every tray, pan, bowl and shell after it | | 39 | utility-trolley | Utility Trolley | office | medium | castors roll and swivel | The castor part with its own swivel origin, plus the tiered tray frame; absorbs the kitchen, clinical and tray trolleys | | 40 | garment-rack | Garment Rack | living | medium | rolls, rail telescopes | Almost all negative space, so it tests whether the tube frame reads without mass; absorbs the retail rail trolley | | 41 | mobile-whiteboard | Mobile Whiteboard | school | medium | flip the board in its yoke | A blank panel that stays legible because the H frame, pen tray and pivot carry it; absorbs the office version | | 42 | shopping-trolley | Shopping Trolley | retail | involved | castors swivel, child-seat flap folds | Tapered mesh basket over a raked chassis, the hardest wire object and the payoff for rows 28 to 39 | | 43 | filing-cabinet | Filing Cabinet | office | medium | openDrawer(index) | The drawer generator: carcass, runner, face, shadow gap, handle rail; nine later objects depend on it | | 44 | locker-bank | Locker Bank | office | medium | openDoor(bay, tier) | The door grid plus the louvre slot; absorbs the school and gym locker banks | | 45 | wardrobe | Wardrobe | living | medium | doors swing, revealing the rail | Cornice, plinth and a vertical split, and the first tall carcass whose open state changes the silhouette | | 46 | shelving-rack | Steel Shelving Rack | office | medium | | Slotted angle uprights with punched slots and diagonal braces; absorbs the wire and domestic shelving units | | 47 | gondola-shelving | Gondola Shelving Run | retail | involved | | Stepped shelf depths down a run of bays, the most recognisable retail outline and the best use of the bay loop | | 48 | base-cabinet-run | Base Cabinet Run | kitchen | involved | any door opens, any drawer slides | The bay-pattern generator: door, drawer stack or open, under one continuous worktop and plinth | | 49 | utility-cabinet | Pavement Utility Cabinet | street | medium | doors swing open | Louvre banks on a plinth with a rain-shed roof; absorbs the street telecom cabinet | | 50 | parcel-locker-bank | Parcel Locker Bank | street | medium | individual doors swing open | A door grid with a mixed size distribution, which is the locker generator's harder case | | 51 | upright-fridge | Upright Fridge Freezer | kitchen | involved | doors swing, freezer drawer slides | The monolith that survives on its door gap, recessed handle rail and toe plinth alone | | 52 | microwave-oven | Countertop Microwave | kitchen | medium | door swings, turntable spins | Inset glazed door, perforated vent band and a recessed control column; the small-appliance carcass template | | 53 | pedal-bin | Pedal Bin | kitchen | medium | pedal press raises the lid on its linkage | The four-bar linkage, defined on the object where it is most visible; absorbs the living and retail bins | | 54 | stapler | Desktop Stapler | office | medium | press closes the lever onto the anvil | Sprung hinge with a travel limit, and an outline nameable at thumbnail size | | 55 | scissors | Office Scissors | office | medium | setOpen rotates both halves | Two parts sharing one pivot in opposite directions, which no earlier object has needed | | 56 | folding-step-stool | Folding Step Stool | office | medium | fold and unfold | The first object with two completely different silhouettes from one angle parameter | | 57 | step-ladder | Step Ladder | tools | medium | folds flat about the top hinge | The A-frame with treads and a spreader, one of the most legible workshop outlines there is | | 58 | bench-vice | Bench Vice | tools | medium | jaws close along the screw | The screw-and-slide prismatic joint plus jaw serration; absorbs the school vice | | 59 | boom-barrier | Boom Barrier | street | medium | boom raises from horizontal to vertical | A single lever over a box, and the cleanest test that a 90 degree action changes the read entirely | | 60 | folding-room-divider | Folding Room Divider | living | medium | fold the panels to any concertina angle | Alternating hinges on repeated panels, a plan-view silhouette nothing else has | | 61 | patio-parasol | Patio Parasol | decor | medium | canopy opens and closes on the rib linkage | A radial mechanism where every rib and stretcher is driven by one parameter | | 62 | fire-hydrant | Fire Hydrant | street | medium | outlet caps unscrew and swing on chains | Bonnet, bolted flanges and radial outlets: a stepped lathe stack that names itself at 50 metres | | 63 | claw-hammer | Claw Hammer | tools | simple | | The most nameable outline in the domain and the reference for a lofted head on a waisted grip | | 64 | hand-saw | Hand Saw | tools | medium | | The tooth-row helper, needed later by the tape dispenser, ratchets and the chainsaw | | 65 | cordless-drill | Cordless Drill | tools | medium | chuck spins, jaws open | The pistol-plus-battery T, plus the three-jaw chuck as a small radial mechanism | | 66 | drill-press | Bench Drill Press | tools | medium | feed lever turns, quill drops | A strictly vertical lathe stack with a swinging table; absorbs the school drill press | | 67 | shop-vacuum | Shop Vacuum | tools | medium | latches release, head lifts off | Ribbed drum, domed head, side latches and a coiled ribbed hose, three loops in one body | | 68 | workbench | Workbench | tools | medium | drawers slide out | Thick top, apron, braced legs, lower shelf and a pegboard back; absorbs the school pegboard bench | | 69 | tripod-work-light | Tripod Work Light | tools | medium | mast telescopes, heads tilt on the yoke | Top-heavy on thin legs, and the first object combining telescope, tripod and a tilting yoke | | 70 | mechanical-keyboard | Mechanical Keyboard | computing | involved | depress a key, flip the tilt feet | The key-grid generator built from a row and column table with per-row cap profiles; four later objects reuse it | | 71 | scientific-calculator | Scientific Calculator | school | medium | pressKey depresses one cap | The key grid at a second scale with a sunken display, proving the generator is not keyboard-specific | | 72 | widescreen-monitor | Widescreen Monitor | computing | medium | tilt and swivel the panel | Panel, neck and foot make a T that reads with a dead screen, which is the whole test | | 73 | laptop-computer | Laptop Computer | computing | involved | open and close the lid | Two chamfered slabs on a hinge reusing the key grid, and the open wedge is unmistakable | | 74 | wireless-router | Wireless Router | computing | simple | rotate each antenna | Three to six pivoting rods on a wedge, the highest silhouette return for the lowest geometry in the kit | | 75 | case-fan | Case Fan | computing | simple | spin the rotor | The swept-blade helper on a radiused square frame, needed by four later objects | | 76 | cpu-tower-cooler | CPU Tower Cooler | computing | medium | spin the clip-on fan | Dozens of thin fins pierced by heat pipes, the geometry hand modelling hates most | | 77 | tower-pc-case | Tower PC Case | computing | involved | slide the side panel off, spin the intakes | A tall box saved by a perforated mesh front, a tinted window and visible fan mounts | | 78 | server-rack-cabinet | Server Rack Cabinet | computing | involved | swing the front and rear doors | Two metres of punched rail repetition behind a mesh door, and the anchor for a whole scene type | | 79 | desktop-printer | Desktop Printer | computing | involved | raise the scanner lid, slide the tray | A stepped tiered stack with two independent moving parts and a paper stack that uses the paper slot | | 80 | vending-machine | Vending Machine | retail | involved | a coil rotates one turn, delivery flap swings | An interior grid of helical coils behind glass, the single best generated-geometry showcase in the set | | 81 | task-lamp | Articulated Task Lamp | office | involved | setPose on three joints, setLit | The most pose-dependent silhouette in the kit, plus the coil spring; absorbs the living-room swing arm | | 82 | tripod-floor-lamp | Tripod Floor Lamp | living | medium | switch the shade lining | A drum on three splayed legs, and where the emissive slot gets defined; absorbs the table lamp at low height | | 83 | pendant-lamp | Pendant Lamp | living | simple | switch the bulb emissive | Occupies the upper air where nothing else in the kit sits, with an optional wire cage for repetition | | 84 | ceiling-fan | Ceiling Fan | living | medium | spin the blades and coast to a stop | Radial blades on a downrod, a shape defined entirely by its array count | | 85 | street-lamp | Street Lamp Column | street | medium | | Tapered column, swan-neck sweep and a shallow head, the skyline shape a street scene needs | | 86 | electric-kettle | Electric Kettle | kitchen | medium | lid flips open, switch rocks | Lathed body with a spout, strap handle and a separate base, legible at any scale | | 87 | pop-up-toaster | Pop Up Toaster | kitchen | medium | lever slides down and springs back | Slots cut through a rounded deck plus a lever in a track, a small body with real structure | | 88 | sink-with-drainer | Sink Unit With Drainer | kitchen | medium | strainer plug lifts out | A pressed basin beside a fluted drainer board, a deck shape nothing else shares | | 89 | mixer-tap | Kitchen Mixer Tap | kitchen | medium | lever tilts and swings, spout rotates | Pure lathe and sweep, and the chrome slot's reference object; absorbs the basin mixer | | 90 | extractor-hood | Chimney Extractor Hood | kitchen | medium | | A lofted tapered canopy meeting a straight flue, readable even from behind | | 91 | range-cooker | Freestanding Range Cooker | kitchen | involved | oven door drops open, knobs rotate | Grate bars, a knob row and a glazed door make the busiest legible front in the domain | | 92 | close-coupled-toilet | Close Coupled Toilet | living | involved | lid and seat raise separately, flush lever | Everyone names it instantly, and the pan-to-rim sweep is the hardest blend the kit will attempt | | 93 | task-chair | Swivel Task Chair | office | involved | swivel, setHeight, castors roll | The five-star base is the most recognisable office outline and it is pure radial repetition over the castor part | | 94 | modular-sofa | Modular Sofa | living | involved | | The seat-count family, and the only place the kit learns to make a cushion mass read as soft while staying rigid | | 95 | slatted-bed-frame | Slatted Bed Frame | living | medium | | The low rectangle plus headboard that every domestic scene needs, with the slat run doing the work | | 96 | potted-snake-plant | Potted Snake Plant | decor | simple | | The only greenery in the core, and stiff twisted blades are the one plant form code genuinely builds well | | 97 | espresso-machine | Espresso Machine | retail | involved | portafilter twists in, steam wands swing | Dense asymmetric cluster of small lathed parts; absorbs the kitchen version as a single-group preset | | 98 | acoustic-guitar | Acoustic Guitar | decor | involved | tuning pegs turn | Three separate clean repetitions on one axis (frets, strings, tuners) under a top-tier outline | | 99 | bus-shelter | Bus Shelter | street | involved | | A cantilevered roof over glazed bays, the largest thing in the kit that is still a thing rather than a building | | 100 | traffic-signal | Traffic Signal | street | involved | cycle the lit aspect, swing the head | Hooded visors on stacked aspects with a mast arm, and the emissive slot's most demanding user | --- ## 2. THE NEXT 150 **computing (19)** `monitor-arm`, `laptop-riser-stand`, `graphics-card`, `motherboard`, `hard-disk-drive`, `single-board-computer`, `solderless-breadboard`, `open-frame-gpu-rig`, `rack-server-chassis`, `network-switch`, `rack-console-drawer`, `cable-ladder-tray`, `power-distribution-strip`, `cable-coil`, `desk-voip-phone`, `headset-stand`, `boom-arm-microphone`, `video-projector`, `desktop-3d-printer` **office (14)** `meeting-table`, `drafting-table`, `desk-partition-screen`, `coat-stand`, `tambour-cabinet`, `pigeonhole-sorter`, `literature-rack`, `water-cooler`, `desk-globe`, `tripod-projector-screen`, `hole-punch`, `tape-dispenser`, `pen-pot`, `paper-shredder` **school (17)** `lift-lid-school-desk`, `tiered-lecture-bench`, `library-book-trolley`, `lab-bench`, `fume-hood`, `bunsen-burner`, `retort-stand`, `compound-microscope`, `test-tube-rack`, `bench-centrifuge`, `eyewash-station`, `ball-and-stick-molecule`, `sewing-machine`, `artist-easel`, `basketball-goal`, `retractable-bleachers`, `abacus` **kitchen (15)** `glazed-dresser`, `spice-rack`, `roll-top-bread-bin`, `utensil-rail`, `paper-towel-holder`, `knife-block`, `stand-mixer`, `blender`, `moka-pot`, `french-press`, `frying-pan`, `box-grater`, `balloon-whisk`, `cutlery-set`, `teapot` **living (14)** `folding-chair`, `rocking-chair`, `tufted-ottoman`, `hanging-egg-chair`, `bunk-bed`, `baby-cot`, `chest-of-drawers`, `laundry-hamper`, `lava-lamp`, `clothes-airer`, `ironing-board`, `freestanding-bathtub`, `shower-cubicle`, `shower-riser-rail` **street (16)** `road-sign-post`, `work-zone-barricade`, `utility-pole`, `bottle-bank`, `skip-container`, `ev-charging-post`, `parking-ticket-machine`, `mail-drop-box`, `drinking-fountain`, `tree-guard`, `street-clock`, `portable-toilet`, `mobile-light-tower`, `pop-up-canopy`, `sign-gantry`, `street-planter` **tools (17)** `rolling-tool-chest`, `cantilever-toolbox`, `parts-bin-rack`, `socket-set-case`, `extension-ladder`, `sawhorse`, `rolling-scaffold-tower`, `adjustable-wrench`, `bolt-cutters`, `circular-saw`, `chainsaw`, `mitre-saw`, `bench-grinder`, `air-compressor`, `floor-jack`, `engine-hoist`, `jerry-can` **retail (19)** `wire-shopping-basket`, `rotating-display-spinner`, `counter-display-case`, `upright-drinks-cooler`, `checkout-counter`, `self-checkout-kiosk`, `capsule-vending-globe`, `queue-barrier-post`, `coffee-grinder`, `serve-over-counter`, `power-rack`, `dumbbell-rack`, `loaded-barbell`, `adjustable-weight-bench`, `treadmill`, `exercise-bike`, `cable-weight-stack`, `examination-couch`, `wheelchair` **decor (19)** `columnar-cactus`, `bonsai-tree`, `watering-can`, `tiered-plant-stand`, `geodesic-terrarium`, `sunburst-wall-mirror`, `branched-candlestick`, `wind-chime`, `hanging-birdcage`, `wheeled-suitcase`, `equipment-flight-case`, `skateboard`, `tennis-racket`, `chess-set`, `upright-piano`, `drum-kit`, `trumpet`, `xylophone`, `music-stand` --- ## 3. CUT, AND WHY ### Merged into another candidate's generator (33) These are not losses. Each becomes a parameter set or a preset on the surviving id. | dropped | into | clause | |---|---|---| | `bar-stool` (living), `bar-stool` (retail), `lab-stool` | `bar-stool` | one column, one foot ring, three seat and base presets | | `bistro-pedestal-table` | `pedestal-dining-table` | the same lathe column at a taller height and smaller top | | `dining-chair` (living) | `dining-chair` | identical spindle-back generator with a different back rake | | `stacking-classroom-chair` | `stacking-chair` | a moulded shell option on the cantilever tube frame | | `locker-bank` (school), `locker-bank` (retail) | `locker-bank` | one door grid, three tier and vent presets | | `coat-stand` (living) | `coat-stand` | the same pole and polar hook array | | `drafting-table` (school) | `drafting-table` | same tilting board, different leg frame preset | | `teacher-lectern` | `lectern` | a panel-style flag on the same angled cap | | `classroom-wall-clock`, `wall-clock` (decor) | `wall-clock` | one tick ring, one hand set, three bezel depths | | `globe-on-stand`, `desk-globe` (decor) | `desk-globe` | one tilted sphere in a meridian arc | | `tripod-projection-screen` | `tripod-projector-screen` | same mast, case and drop | | `bench-vice` (school), `drill-press` (school) | tools versions | the same machine at a school scale | | `pegboard-workbench` | `workbench` | the pegboard back is a flag on the bench | | `desktop-3d-printer` (school) | computing version | identical extrusion cube and gantry | | `whiteboard-stand` | `mobile-whiteboard` | one pivoting panel in an H frame | | `pedal-bin` (living), `pedal-bin` (retail) | `pedal-bin` | one linkage, three body profiles | | `water-cooler` (retail) | `water-cooler` | same inverted bottle on a slimmer cabinet | | `espresso-machine` (kitchen) | `espresso-machine` | the domestic one is the single-group preset | | `music-stand` (school) | decor version | the same lattice desk and telescopic column | | `basketball-hoop` (decor) | `basketball-goal` | same pole, board, rim and net | | `basin-mixer-tap` | `mixer-tap` | one spout family, shorter reach | | `swing-arm-lamp` | `task-lamp` | the same jointed arm with springs | | `shelving-unit` (living), `wire-shelving-unit` | `shelving-rack` | one upright and deck generator, three deck styles | | `kitchen-trolley`, `supply-trolley`, `tray-rack-trolley` | `utility-trolley` | one castor frame, tier count and deck type do the rest | | `garment-rail-trolley` | `garment-rack` | the same rail on a Z frame | | `folding-privacy-screen` | `folding-room-divider` | identical concertina at a clinical height | | `street-telecom-cabinet` | `utility-cabinet` | the same louvred cabinet on a plinth | ### Duplicate silhouette (17) `desktop-nas-enclosure` reads as the rack chassis face at any distance; `information-kiosk-terminal` is the parking machine and self-checkout pedestal again; `channelizer-drum` is the traffic cone's banded family with a blunter top; `bike-storage-locker` is the skip and the cabinet with an arched lid; `food-vending-cart` is the pop-up canopy plus a counter plus wheels, all three already built; `tiered-produce-stand` is the gondola's stepped shelf profile; `tray-rack-trolley` and `iv-drip-stand` are the trolley frame and the five-star gas column with nothing added; `beam-seating` is the stacking chair shell repeated along a rail; `weight-plate-tree` is the barbell plate stack stood on a post; `dumbbell` (decor) is the loaded barbell short; `cable-reel` is the cable drum in a frame; `axle-stand` and `scissor-jack` are subsumed by the floor jack's job in a garage scene; `drum-fan` is the case fan cage scaled up on a yoke; `track-hurdle` is the work-zone barricade with fewer rails; `glockenspiel` and `djembe-drum` are the xylophone bar ramp and the drum kit shell; `trophy-cup` is the vase lathe family with handles; `cool-box` is the flight case as a tub; `shoe-rack` is a tilted version of the wall bar array; `rotary-card-file` is the cable drum at desk scale; `letter-tray-stack` is a shelf tier without a carcass. ### Needs a texture or a lit display to read (3) `gym-scoreboard` is a blank wall panel until segments are lit and read as numbers, which is a display rather than geometry; `webcam` is a lump whose only distinguishing feature at any distance is the lens ring; `conference-speakerphone` is a perforated disc, and a perforated disc says nothing from more than two metres. ### Organic form code builds badly (8) `artists-lay-figure` is a human figure however it is jointed; `vr-headset-stand` needs a sculpted head form to hold the visor; `macrame-hanging-planter` is a knotted cord net; `hiking-backpack`, `duffel-bag` and `golf-bag` are soft goods whose whole read is slump; `dome-tent` is a tensioned fabric skin over poles and will build as a lump; `pleated-curtain-rail` is cloth, and regular sine pleats look like corrugated metal rather than fabric. ### Not a thing, or a box with nothing to say (13) `floor-cable-ramp` is closer to a floor covering than an object; `archive-box`, `vaulting-box` and `lever-arch-file` are boxes whose added structure does not survive at distance; `paper-trimmer` is a flat plate with an arm on it; `pencil-sharpener` is a small lump with a crank; `drawing-compass` is two sticks on a hinge; `wheel-brace` is an X of four bars; `bar-clamp` is a notched bar; `panelled-football` is a sphere, and seams do not change a sphere's outline; `metronome` is a blank truncated wedge; `hourglass` and `kettlebell` each have exactly one correct form with only a scale parameter, which fails the family test; `kayak` is one correct hull that would require a section-series loft used nowhere else; `citrus-press` and `tiered-cake-stand` are stacked plates and a lever, both already covered; `pottery-wheel` is a pan and a disc, carried entirely by the stool and pedal beside it; `filament-spool` ships as part of the 3D printer rather than as a prop; `alloy-road-wheel` belongs to a vehicle kit and on its own is a disc against a wall. ### Brand shaped (0 cut, 4 kept under condition) Nothing was cut for this outright, because every candidate here is an archetype rather than a product. Four need an explicit rule at build time: `stand-mixer` must not take the tilting-head-plus-plinth proportions of the one famous example, `espresso-machine` must not reproduce a specific eagle-topped body, `single-board-computer` must not copy a named board's port stack and mounting-hole positions, and `capsule-vending-globe` must keep a plain pedestal. Generate the proportions from the parameter ranges, never from a photograph of one product. --- ## 4. THE SHARED VOCABULARY ### Geometry helpers the core module must provide Ordered by how many of the core 100 depend on each. 1. **`box(size, chamfer)`** with per-edge chamfer radius and per-face inset. Used by roughly 80 of the core. The chamfer is not cosmetic; it is what stops the fridge, the microwave and the locker bank reading as untextured cubes. 2. **`lathe(profile, segments, sweep, wall)`** where `profile` is a polyline with per-vertex tangency and an optional wall thickness for open vessels. Rows 1 to 10 exist to prove it. Consumers: every vessel, every column, every bollard, cone, cylinder, tap, knob, foot and finial. 3. **`extrude(polyline, length, taper, endCaps)`**. The jersey barrier, every aluminium and steel profile, every slat, every rail, the gondola upright, the shelving angle. 4. **`sweep(profile, path, twist)`** with path from arcs and lines. Handles, spouts, bent tube frames, hoses, the swan-neck lamp arm, the trolley chassis. 5. **`tubeFrame(points, radius, bendRadius)`** as a specialisation of sweep that keeps a constant bend radius at every corner. The stacking chair, sack truck, garment rack, bike rack, step ladder, tripod legs. Without this the tube objects will have visibly different corner treatments from each other. 6. **`loft(sections, spine)`**. The extractor hood, the sofa arm, the guitar body, the wheelbarrow tray, the trolley basket taper. 7. **`dish(outline, depth, rim)`** for pressed sheet: the sink basin, the wheelbarrow tray, the seat pan, the bench seat shell, the litter bin hood. 8. **`helix(radius, pitch, turns, profile)`**. Springs on the task lamp, the cable drum winding, the vending machine coil, the shower hose, coiled cable. 9. **`arrayLinear(count, pitch, jitter, transformFn)`**, **`arrayPolar(count, radius, phase)`**, **`arrayGrid(rows, cols, pitch)`**. The three most-called functions in the kit. `transformFn` is what makes the size-ramp objects (gondola shelf depths, drawer heights, dumbbell racks) work without special cases. 10. **`perforate(target, pattern, holeShape, margin)`** supporting grid, staggered, radial-ring and slot patterns, with an inset rim so holes read at low angles. Mesh bin, colander, litter bin, locker louvre, radiator grille, PC front, speaker face, breadboard. 11. **`louvre(count, angle, depth)`** built on perforate, because slats-in-an-opening appears on six core objects with the same failure mode if hand-rolled each time. 12. **`toothRow(count, profile, set)`**. Saw, tape dispenser, ratchet, vice jaw, chain link, worm wheel. 13. **`lattice(bays, pattern)`** for truss and cross-brace. Scaffold, sign gantry, light tower mast, wall bars. 14. **`profileLibrary`**: rolled rim, ogee, plinth, waist, cove, quirk bead, chamfer stop. Named curves shared across the lathe and extrude callers so a rolled rim on a stockpot and on a litter bin are the same curve. 15. **`seededRng`** feeding jitter on pen splay, hanger spacing, slat gap, wear bevels, and colour variation. Determinism is the contract, so every consumer takes the rng explicitly rather than reading a global. ### Mechanism parts (shared, each owning its origin) `hinge(axis, range)`, `slider(axis, travel, detents)`, `telescope(stages, collapse)`, `fourBar(links)`, `scissorLink(pairs)`, `ratchet(teeth, pawl)`, `screwJoint(pitch, travel)`, `castor(diameter, offset, swivel)`, `gasColumn(range)`, `spin(axis, decay)`. Thirty-three of the core hundred declare an action, and all of them decompose into these ten. Settle them before object 1. ### Material slots The medieval kit's slots do not cover this kit, and the mismatch is specific rather than general. **Carry over unchanged (5):** `wood` (workbench top, dining chair, bookcase, drafting board, piano case, guitar body), `steel-painted` (from `iron`: lockers, filing cabinet, shelving rack, barriers, tool bodies), `fabric` (from `cloth`: sofa, partition infill, canopy, whiteboard felt), `ceramic-glazed` (from `clay`: basin, toilet, mug, vase), `brass` (from `bronze`: trumpet, bunsen barrel, candlestick, valve trim). **Carry over with a changed meaning (2):** `cord` narrows from `rope` to nylon and PVC (blind ladder cord, chime cord, pull cords, hose); `glass-clear` becomes a first-class slot rather than an occasional one, because 11 core objects (wine glass, bus shelter, microwave door, oven door, display case, cooler, shower cubicle, terrarium, vending machine, monitor, PC window) fail without it. **Dropped (5):** `leather`, `thatch`, `bone`, `gold`, `wax` have no consumer in 250 objects. **New, each argued from at least three core objects (11):** | slot | argued from | |---|---| | `plastic-matte` | keyboard caps, wheeled waste bin, portable toilet, trolley shell, router body, tool housings; the single most common material in the kit and it must not look like painted steel | | `plastic-gloss` | kettle body, toaster shell, laptop lid, appliance fascia; the specular difference from matte is the only thing separating a kettle from a bin at a glance | | `rubber` | castor tyres, chair glides, tool grips, hose, cable jacket, wheelbarrow tyre, door seals; needed on 20+ objects and it is what makes the castor part read as a castor | | `steel-galvanised` | fence mesh, cable tray, dish rack, shopping trolley, wire basket, wheelbarrow frame; the spangled zinc read is different enough from painted steel that sharing one slot flattens every wire object | | `stainless-satin` | sink, stockpot, extractor hood, fridge front, espresso body, range trim; the kitchen collapses without it | | `chrome-polished` | mixer tap, scissors, towel rail, stool column, cutlery, whisk, bar frames; a mirror slot, distinct from satin in its reflection behaviour rather than its colour | | `aluminium-brushed` | 3D printer extrusions, monitor stand, laptop chassis, heatsink fins, rack rails, ladder stiles; extruded profile is the signature modern material and it is neither steel nor chrome | | `concrete` | jersey barrier, planter, bollard base, cabinet plinth, barrier feet, worktop; grey and matte with an aggregate speckle, and it anchors every street scene | | `glass-tinted` | PC side panel, shower screen, sunglasses of the display case, projector lens, cooler door in the dark; a separate slot because transmission is the parameter, and reusing clear glass with an alpha loses the surface | | `paper` | printer paper stack, till roll, paper towel roll, book block edges, filter, literature rack contents; matte, near-white, zero specular, and it looks wrong rendered as plastic | | `emissive` | lamp shade lining, traffic signal aspect, bulb, status pole, lava lamp, screen-on state; the medieval kit had firelight but not a switchable emitter with a colour parameter | **One special case:** `retroreflective` for the traffic cone collars, barricade stripes and sign plates. It is arguably a vertex-colour treatment rather than a material, but it must not tone-map like paint, so give it its own slot and let it be a no-op in renderers that do not care. That is 23 slots. Every object in the core 100 is coverable with at most 5 of them, and the median is 3. --- ## 5. WHAT WORRIES ME ### The three most likely to look wrong when built **`modular-sofa` (94).** It is the only core object whose entire read depends on looking soft. Chamfered box cushions with piping ridges is the honest description of what the code will produce, and the honest prediction is a stack of rounded blocks on legs. The medieval kit has no vocabulary for a compressed mass, and none of the 93 objects before it develop one. Either build a `cushion(outline, loft, seam, compression)` helper deliberately, with a real crown on the top face and a slump at the front edge, or accept that the sofa is the one object where the kit looks like a kit. I would build the helper, because the ottoman, the mattress, the exam couch, the weight bench and the chair pads in the next 150 all need it too, so the cost is amortised across six objects rather than charged to one. **`close-coupled-toilet` (92).** The pan is not a lathe and not an extrusion. It is a compound blend from a rectangular footprint through a swept bowl to a rolled rim, and every generated toilet fails at exactly the same place: the trap bulge on the side. Nothing else in the core needs a blend of that kind, so it will be a bespoke object dressed as a parametric one. It is worth keeping because a bathroom without one is not a bathroom, but I would build it late, build it from a section series rather than pretending it is a revolve, and give it exactly two shape presets rather than a continuous family. **`potted-snake-plant` (96).** It is in the core because a kit of 100 objects with no living thing in it produces scenes that look sterile, and the snake plant is the plant whose leaves are genuinely stiff twisted tapered strips. The risk is that the twist plus the edge band plus the seeded lean produces green knives standing in a pot. The fix is per-blade curvature that varies along the blade length rather than a single twist parameter, and a blade cross-section that is a flattened lens rather than a rectangle. If the first build looks wrong, move it to the next 150 and ship the core with no greenery rather than shipping something that undermines every scene it appears in. ### The structural decision I would push back on **Spreading the first hundred across all nine domains.** The core 100 above covers 21 kitchen objects, 17 street, 15 office, 14 living, 13 tools, 9 computing, 4 retail, 4 decor, 3 school. That distribution came from asking which objects best establish the shared vocabulary, which is the right question for the code and the wrong question for the user. Nobody can build a shop with 4 retail objects. Nobody can build a classroom with 3. What they can build is nine partial rooms, each of which announces what is missing. The alternative I would argue for: pick three domains, ship them complete, and let the vocabulary fall out of that rather than driving it. Kitchen, office and street would be my three, because between them they exercise every helper in section 4 (lathe, perforation, carcass, drawer, tube frame, louvre, extrusion, emissive, concrete, glass) and each produces a scene somebody can actually assemble on day one. That is roughly 35 kitchen, 33 office and 32 street objects, which is a hundred, and the follow-on 150 becomes three more complete domains rather than a thinning-out of nine. The counter-argument, which is why I built the catalogue the way I did, is that vocabulary discovered inside one domain calcifies around that domain's needs, and the fourth domain then fights the helpers. Building `perforate` for the mesh bin, the colander and the fence panel in the same week is what keeps it general. Both positions are defensible. The one I would not defend is the middle, which is what happens by default: nine domains at 30 percent completion each, with the helper set shaped by whichever domain happened to get built first.