Skip to content

Add the Axiom Relay street wave: axiom-street-kit and 10 streets-infrastructure props - #8

Open
reposlayer wants to merge 3 commits into
vibe-stack:mainfrom
reposlayer:feat/street-district-wave
Open

Add the Axiom Relay street wave: axiom-street-kit and 10 streets-infrastructure props#8
reposlayer wants to merge 3 commits into
vibe-stack:mainfrom
reposlayer:feat/street-district-wave

Conversation

@reposlayer

@reposlayer reposlayer commented Aug 16, 2026

Copy link
Copy Markdown

First batch of the street-level wave: ten props from reusable/streets-infrastructure, plus the kit the rest of the wave is built on. Sized to match the architecture batches so it reviews the same way; the remaining 18 in that family, and the E-District dressing after it, follow as their own PRs.

What's here

assets/prototypes/axiom-street-kit/ — the wave's kit, and the bulk of the work. Models on top of it are comparatively cheap, which is why it landed first.

It is keyed to pedestrian datums, not the building grid:

kerb 125 mm — what a foot steps up
headroom 2.3 m — what a person walks under
hip 900 mm — bollards, low barriers, planter rims

Sharing those is what stops a street assembled from these props reading as a set of individually plausible objects that don't belong on the same pavement.

Poles are the backbone. Almost everything on a street is bolted to a vertical tube, so the tube, base plate, holding-down bolts, grout pad and bracket arm are authored once — which is why the lamp, the signal and the utility pole share a silhouette at a hundred metres, exactly as they do in life.

Lit surfaces come in two tiers. A signal is a small lens read at distance and takes the cargo wave's brightness; a sign is a large panel read close up and clips to white at that level. The tier follows what the surface is rather than being picked per model.

Models (10)

Module Notes
utility-pole Tapered mast built from stepped sections, bolt-step ladder, two cross-arms with insulator banks
industrial-lamp Swan neck, shielded head raked at the carriageway, gear door in the column base
neon-street-lamp The district's column: channelled neon up the shaft, flat head, banner bracket
pedestrian-signal Signal head at reading height, push unit at hand height — the gap between them is the design
recycling-bin Three streams, told apart by aperture shape rather than by colour or label
traffic-signal Mast arm over the carriageway, backboard, deep hoods — read from a vehicle, not from the kerb
plastic-barrier Water-ballasted, with the fill port, drain and interlock that make a line of them a barrier
tree-planter Pit furniture first: grating, trunk guard, irrigation. See the note below on the canopy
sewer-opening Kerb inlet and top grating — a gully with only the grating is one the road cannot reach
planter A heavy box that stops vehicles and happens to hold plants; fork slots and lifting eyes say so

Note on build.ts

This branch carries the same support-kit discovery change as #2#5, textually identical, so it merges cleanly alongside any of them. It isn't optional here: without it axiom-street-kit is never registered and the registry fails schema validation on five dangling @scifi-kit/axiom-street-kit dependencies. That failure is a decent argument for the change on its own — a hand-maintained list is a step every new kit can forget.

Verification

typecheck clean · bun test 49/0 · registry builds 190 items from 184 models (+10 models, +1 kit against current main). Every model was rendered and inspected individually; previews are in the comments.

Two things worth flagging

The canopy on tree-planter is the weakest thing here. The kit's primitive is a chamfered box, and foliage wants something else — it now reads as stylised layered masses rather than a tree. It is honest for a low-poly kit and the planter itself (grating, guard, irrigation) is solid, but if reusable/vegetation-terrain is on the roadmap that family needs a foliage primitive before it starts, not a hundred models built from boxes.

The kit-discovery change carries a fix for a hole I opened in it. Absence of model.ts marks a shared kit — but it is equally true of an empty directory, and this branch had one. It published a support item with zero files, which the schema accepts and an install would silently resolve to nothing. Discovery now requires at least one TypeScript source. The same fix is on the four architecture branches, textually identical, so all five still merge in any order.

🤖 Generated with Claude Code

…ve props

First tranche of the street-level wave. The kit is the bulk of the work here;
the models on top of it are comparatively cheap.

axiom-street-kit is keyed to pedestrian datums rather than the building grid:
a 125 mm kerb because that is what a foot steps up, 2.3 m headroom because
that is what a person walks under, 900 mm for hip-height furniture. Sharing
those stops a street assembled from these props reading as a set of
individually plausible objects that do not belong on the same pavement.

Poles are the backbone, since almost everything on a street is bolted to a
vertical tube. The tube, its base plate, holding-down bolts, grout pad and
bracket arm are authored once, which is why the lamp, the signal and the
utility pole share a silhouette at distance exactly as they do in life.

Lit surfaces come in two tiers. A signal is a small lens read at distance and
takes the cargo wave's brightness; a sign is a large panel read close up and
clips to white at that level. The tier follows what the surface is rather
than being chosen per model.

Models: utility-pole, industrial-lamp, neon-street-lamp, pedestrian-signal,
recycling-bin.

Includes the same support-kit discovery change as the four architecture
branches, textually identical, so this branch merges cleanly alongside them.
Without it axiom-street-kit is never registered and the registry fails schema
validation on five dangling dependencies.

typecheck clean, bun test 49/0, registry builds 185 items from 179 models.
Five more street props: traffic-signal, plastic-barrier, tree-planter,
sewer-opening, planter.

Also fixes a hole I opened in the support-kit discovery. Absence of model.ts
is true of a shared kit, but it is equally true of a directory that is simply
empty - one left behind by an abandoned model. This branch had exactly that,
and it published a support item with zero files: the schema accepts it and an
install would silently resolve it to nothing. Discovery now requires at least
one TypeScript source, which is the thing that actually distinguishes a kit
from a leftover.

The street kit gains a foliage material. The cargo palette has no vegetation
tier because it was authored for a depot, so the first tree came out the
colour of sacking; FIELD-500 is the colour system's own planting token.

typecheck clean, bun test 49/0, registry builds 190 items from 184 models.
@reposlayer reposlayer changed the title WIP: Axiom Relay street and district wave (axiom-street-kit + models) Add the Axiom Relay street wave: axiom-street-kit and 10 streets-infrastructure props Aug 16, 2026
@reposlayer
reposlayer marked this pull request as ready for review August 16, 2026 23:56
Copilot AI lite review requested due to automatic review settings August 16, 2026 23:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Review of the batch as a contact sheet rather than one render at a time,
which is what surfaced most of these.

Two were geometry leaving its own envelope. traffic-signal's duct was drawn
as a length centred on a guess and ran 1.05 m below the pavement; it is now
solved from the two heights it spans. sewer-opening's hinge pin was laid on
AXIS_X, so it ran across the gully and stuck 210 mm past a frame 660 mm
wide; a pin runs with the side it hinges, which is Z.

utility-pole's insulator spacing divided by `Math.max(1, index === 0 ? 1 : 1)`
- always 1 - which collapsed the spread and left the lower arm bare.

plastic-barrier's interlock socket was a dark block stood proud of the end
wall, reading as glued on. A socket is a hole, so it is recessed now.

pedestrian-signal's head was sized against itself rather than against the
180 mm pole and read as a matchbox on a broomstick.

planter's clumps rested on the rim; they are now seated a third of their
height into the soil line so they emerge from it.

Poles gain a swollen base over the bottom fifth. A column of constant
diameter reads as a rod whatever its thickness, and at 1:24 slenderness the
lamps came out as broomsticks; real columns are thickest where the bending
moment is.

tree-planter's canopy is unchanged and still stylised. Scattering it into
fourteen small masses was tried and reverted - it lost its silhouette
entirely. Foliage wants a primitive this kit does not have, which is a kit
change rather than a model change.

typecheck clean, bun test 49/0, registry builds 190 items from 184 models.
@alightinastorm

Copy link
Copy Markdown
Contributor

do you have some screenshots?

@reposlayer

Copy link
Copy Markdown
Author

Yes — sorry, they should have been here already. My earlier attempt to post them on this PR reported success but never landed; the other four PRs got theirs.

All ten props in this PR:

street batch

Individually, full size

industrial-lamp

industrial-lamp

neon-street-lamp

neon-street-lamp

pedestrian-signal

pedestrian-signal

planter

planter

plastic-barrier

plastic-barrier

recycling-bin

recycling-bin

sewer-opening

sewer-opening

traffic-signal

traffic-signal

tree-planter

tree-planter

utility-pole

utility-pole

Same rig for every model, so the sheet is comparable side to side.

🤖 Posted by Claude Code

@alightinastorm

Copy link
Copy Markdown
Contributor

too simplified :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants