Skip to content

Add the Axiom Relay windows group (10 models) and a shared axiom-window-kit - #3

Open
reposlayer wants to merge 5 commits into
vibe-stack:mainfrom
reposlayer:feat/architecture-windows-batch-1
Open

reposlayer wants to merge 5 commits into
vibe-stack:mainfrom
reposlayer:feat/architecture-windows-batch-1

Conversation

@reposlayer

@reposlayer reposlayer commented Aug 16, 2026

Copy link
Copy Markdown

What this is

Ten of the twelve briefs under docs/assets/reusable/architecture/windows/ have no model source in assets/prototypes/. This adds all ten, built on one new support item in the same spirit as axiom-cargo-kit.

The kit

assets/prototypes/axiom-window-kit/ treats the briefs' 1.5 m W x 0.20 m D x 1.4 m H envelope as a bay pitch, not a fixed prop size. long-horizontal-window is four bays sharing one plate; high-rise-curtain-glazing is a 2x2 grid of the same bay. A stretched bay keeps its 50 mm reveal across a 6 m opening and reads as a slot cut in a panel; tiled bays keep the reveal, lamps and mullions at the size an eye expects.

The bay pitch and the grid rule do not agree on their own, which review caught: the bay is 1.5 m because the brief fixes the envelope, but production-rules.md requires modular architecture to terminate on the 1 m grid, and a run of 1.5 m bays only lands there on an even bay count. The pitch stays at the brief's figure and tiled runs are constrained to even counts, enforced by a tiledWidth() guard that throws rather than rounding — a run that silently became 4.5 m would surface as a seam in a level rather than as an error.

It carries the shared plate and reveal ring, glazing seat, cill and drip, aperture lamps, plate strips, control paddle, and actuator ram, plus lit signal lamps one emissive tier below the cargo wave's — a window lights the full head and cill of its aperture where a crate lights a 70 mm lens, and at the cargo tier that line clips to cream.

Modules

Module What distinguishes it
window-frame The bay alone, shipped so an unglazed opening does not require deleting a pane
observation-window Thick pane, retaining ring, stepped seat, equalisation port
small-industrial-window Tighter aperture in the same plate, protective grille, corner gussets
long-horizontal-window Four tiled bays (6 m, on the grid), continuous mullions, one border around the run
high-rise-curtain-glazing 2x2 bays; mullions continuous over both storeys, transoms interrupted by them, spandrel at the slab line
corner-window Two returns splayed about the corner post
laboratory-window Coved seal, capped fixings, flush cill, interlocked pass-through drawer
luxury-residential-window Wider aperture, hardware concealed, ledge and head-cassette blind
damaged-broken-window One impact; shards, failed bead, fallen fragments, and a dead lamp all follow from it
external-sunshade Brise-soleil blades on arms over a standard bay, tracking on a tie bar

Verification

  • Every module was iterated against its reference plate with bun run vibe:model preview.
  • bun run typecheck, bun run build, and bun test (49 pass, 0 fail) all pass.
  • bun run build:registries adds 10 models and 1 support item to the registry — 190 items from 184 models against the current main. Stated as a delta rather than a fixed pair, because the absolute count moves every time one of these batches lands.

Notes for review

  • Overlaps with the doors PR. This branch and the doors branch both add a signalLamp helper (same approach, different kit) and both touch the one buildSupportItem list in registries/scifi-kit/src/build.ts. They are cut independently from main so either can land first; whichever is second will want a trivial merge on that list, and the two lamp helpers are worth collapsing into the cargo kit once both are in.
  • Reference aspect ratio. As with the doors, the reference plates read closer to square than the briefs' stated envelope. I followed the briefs, since the acceptance checklist requires the public envelope to be preserved, and matched the plates' language rather than their proportions.

🤖 Generated with Claude Code

Ten of the twelve briefs under docs/assets/reusable/architecture/windows had
no model source. This adds all ten, built on one new support item rather
than as ten independent props.

axiom-window-kit treats the brief's 1.5 x 0.20 x 1.4 m envelope as a bay
pitch rather than a fixed prop size, because the brief says long and curtain
variants tile on the grid. That makes long-horizontal-window three bays and
high-rise-curtain-glazing a 2x2 grid of the same bay, instead of one bay
stretched — a stretched bay keeps its 50 mm reveal across a 3 m opening and
reads as a slot cut in a panel.

The kit carries the shared plate and reveal ring, glazing seat, cill and
drip, aperture lamps, plate strips, control paddle, and actuator ram, plus
lit lamps at a lower emissive tier than the cargo wave's.

Modules: window-frame (the bay alone), observation-window,
small-industrial-window, long-horizontal-window, high-rise-curtain-glazing,
corner-window, laboratory-window, luxury-residential-window,
damaged-broken-window, external-sunshade.

Every module was iterated against its reference plate with
`bun run vibe:model preview`. typecheck, build, and the 49 existing tests
pass; the registry now builds 179 items from 174 models.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 16, 2026 04:18

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.

Pull request overview

Adds a new Axiom Relay “windows” architecture group by introducing a shared axiom-window-kit support item and implementing 10 new procedural window modules that build on that kit, plus wiring the support item into the Sci-fi Kit registry build.

Changes:

  • Register new axiom-window-kit support item in the scifi-kit registry build.
  • Add axiom-window-kit (contract + shared builders + preview/model scaffold) for window modules.
  • Add 10 new window module model implementations and a registry changeset entry.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
registries/scifi-kit/src/build.ts Adds axiom-window-kit to the support items built into the registry.
assets/prototypes/axiom-window-kit/index.ts Window kit entrypoint: shared model scaffold, preview helper, glazing + signal lamp utilities, and metadata.
assets/prototypes/axiom-window-kit/frame.ts Shared bay/plate/reveal/cill/lighting/control/actuator construction helpers.
assets/prototypes/axiom-window-kit/contract.ts Declares the window kit’s core datums (envelope, pitch, clips, etc.).
assets/prototypes/window-frame/model.ts Implements the base unglazed frame module.
assets/prototypes/observation-window/model.ts Implements the pressure-rated observation port variant.
assets/prototypes/small-industrial-window/model.ts Implements the reduced-aperture industrial variant with grille/gussets.
assets/prototypes/long-horizontal-window/model.ts Implements the 3-bay ribbon window variant.
assets/prototypes/high-rise-curtain-glazing/model.ts Implements the 2×2 bay curtain wall variant with mullions/transoms/spandrels.
assets/prototypes/corner-window/model.ts Implements the corner-return window variant.
assets/prototypes/laboratory-window/model.ts Implements the sealed/cleanable lab variant with pass-through drawer.
assets/prototypes/luxury-residential-window/model.ts Implements the residential variant with blind/cassette + ledge.
assets/prototypes/damaged-broken-window/model.ts Implements the damaged/broken variant with shards, debris, and dead lamp behavior.
assets/prototypes/external-sunshade/model.ts Implements the external brise-soleil accessory variant with articulated blades.
.changeset/architecture-windows-wave.md Publishes a patch changeset describing the new windows group + kit.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread assets/prototypes/axiom-window-kit/contract.ts
Comment thread assets/prototypes/long-horizontal-window/model.ts Outdated
Comment thread assets/prototypes/corner-window/model.ts Outdated
vmlabss and others added 2 commits August 16, 2026 06:42
… footprint

Review feedback on the windows wave.

The bay pitch and the tiling rule contradicted each other. The bay is 1.5 m
because the brief fixes the envelope, but production-rules.md requires
modular architecture to terminate on the 1 m grid, and a run of 1.5 m bays
only lands there on an even bay count - so the three-bay long window was
4.5 m wide and pushed everything placed after it half a metre off grid.

Rather than break one rule to satisfy the other, the pitch stays at the
brief's 1.5 m and tiled runs are constrained to even counts. A new
tiledWidth() guard enforces that and throws rather than rounding, because a
run that silently became 4.5 m would surface as a seam in a level instead of
as an error. long-horizontal-window is now four bays at 6 m; the curtain
wall's two columns were already 3 m and now go through the same guard. The
contract prose and the module comments no longer claim a 1 m pitch.

corner-window published the single-bay envelope, which was simply wrong for
a module with two returns splayed 45 degrees each way: its mount sockets sat
about a metre inside the geometry they are meant to bound. It now publishes
the footprint it occupies, derived from the pitch rather than measured.

Also applies the doors wave's part-naming fix here, since it is the same
convention gap: articulated groups now carry the state token, so an exported
open drawer, blind or shade is not full of parts claiming to be _CLOSED.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
# Conflicts:
#	registries/scifi-kit/src/build.ts
@reposlayer

Copy link
Copy Markdown
Author

Conflict with main after #6 landed is resolved — this branch has main merged in and reports MERGEABLE / CLEAN. It was the one-line buildSupportItem list in registries/scifi-kit/src/build.ts, resolved by keeping both support items rather than choosing one. Verified after merging: typecheck clean, bun test 49/0, build:registries succeeds.

Full explanation and a note on merge order in #5.

🤖 Posted by Claude Code

Every batch appends its kit to one hardcoded array in this file, so two
batches in flight always collide on that single line even though their kits
have nothing to do with each other. That is what put four of these PRs into
conflict the moment the interiors batch landed, and it would do it again for
every batch after them.

A prototype directory with no model.ts is a shared kit rather than a model,
which the directory walk here already has to determine in order to collect
the models. Registering those directly removes the hand-maintained list, so
a batch that adds a kit no longer touches this file at all and there is
nothing left to conflict on.

Both lists are sorted, so the output stays deterministic. The registry
builds the same items as before; only their order within the lib tier
changes, since discovery is alphabetical where the list was chronological.
@reposlayer

Copy link
Copy Markdown
Author

Updated: build.ts now discovers support kits from the prototypes directory instead of listing them by hand, so batches no longer edit a shared line and these PRs can be merged in any order without conflicts. Verified by merging all four into main back to back — clean each time, typecheck clean, 49/0 tests, 223 items / 214 models combined.

Details in #5.

🤖 Posted by Claude Code

Absence of model.ts marks a shared kit, but it is equally true of a directory
that is simply empty - one left behind by an abandoned model. Registering that
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, which is what actually distinguishes a kit from a leftover.

Identical to the change on the other batch branches, so they still merge
cleanly in any order.
@reposlayer

Copy link
Copy Markdown
Author

Previews

Every model in this PR, rendered so you don't have to check out the branch and run the renderer.

windows

Individual previews (1024×1024)

corner-window

corner-window

damaged-broken-window

damaged-broken-window

external-sunshade

external-sunshade

high-rise-curtain-glazing

high-rise-curtain-glazing

laboratory-window

laboratory-window

long-horizontal-window

long-horizontal-window

luxury-residential-window

luxury-residential-window

observation-window

observation-window

small-industrial-window

small-industrial-window

window-frame

window-frame

Same deterministic rig for every model in the wave — that is what a contact sheet is for, since the defect that matters at pack scale is whether the props read as one catalogue rather than as individually plausible objects.

Images live on the previews branch of the fork (images only, never merged), so nothing here touches this PR's diff.

🤖 Posted by Claude Code

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.

3 participants