Skip to content

Add the Axiom Relay doors group (10 models) and a shared axiom-door-kit - #2

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

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

Conversation

@reposlayer

@reposlayer reposlayer commented Aug 16, 2026

Copy link
Copy Markdown

What this is

Ten of the sixteen briefs under docs/assets/reusable/architecture/doors/ have no model source in assets/prototypes/. This adds all ten.

They are built on one new support item rather than as ten independent props, in the same spirit as axiom-cargo-kit.

The kit

assets/prototypes/axiom-door-kit/ fixes the group's public interface:

  • a 1.06 m x 2.00 m clear opening, centred on the briefs' 1.6 x 0.30 x 2.6 m envelope, so every leaf in the family hangs in the same doorway;
  • shared portal plate, graphite reveal ring, ink liner, threshold, jamb light strips, head lamp, control plate, and hinge stack;
  • shared leaf construction — skin, raised panel, stepped seam, handle, vision port, rear ribs;
  • lit RED-500 and CYAN-400 lamps, which the doors briefs ask for as dominant signals and the cargo wave does not have.

The lamps sit one emissive tier below the cargo wave's on purpose: a door lights an 850 mm jamb strip where a crate lights a 70 mm lens, and at 2.2 the strip clips to cream and the module loses the saturated colour the brief asked it to carry. Built in the door kit rather than added to CargoMaterials so the source hashes of the 164 existing models are untouched.

Modules

Module What distinguishes it
door-frame The portal alone, shipped so an opening does not require deleting a door
blast-door Hardened leaf, dog bolts, RED-500 on the leaf
airlock-door Vision port, inflatable seal bead, separate equalisation read
bunker-door Manual: hand wheel, armour ribs, grab recess, no power on the leaf
damaged-door The standard leaf with a failed lower hinge, and every other change caused by that
double-sliding-door Bi-parting on an exposed head track
glass-commercial-door Slim stiles, push bar, manifestation band
hangar-door The briefs' 2.8 m double envelope, horizontally panelled
industrial-shutter Slat curtain rolling onto a barrel
floor-hatch The same language flat on a 1.2 m deck plate

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 now 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.
  • axiom-door-kit is registered as a support item alongside the modular and cargo kits.

Notes for review

  • Reference aspect ratio. The reference plates read close to square; the briefs specify 1.6 x 2.6 m. I followed the briefs, since the acceptance checklist requires the public envelope to be preserved, and matched the plates' language — clipped-corner outline, nested octagons, dark reveal, shell-over-graphite-over-ink — rather than their proportions. Happy to re-cut to the plates if the envelope in the briefs is the thing that is stale.
  • Nested assemblies. finishModel drops an articulated group whose parent is inside another articulated group — the merge destroys the intermediate group and the re-attach targets something no longer in the scene, silently. The bunker door's hand wheel and the floor hatch's gas strut both hit this. Both are fixed here by making them siblings, and the constraint is documented on DoorBuild.assemblies, but the underlying behaviour in packages/.../finish.ts might deserve a guard.

🤖 Generated with Claude Code

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

axiom-door-kit fixes the group's public interface: a 1.06 x 2.00 m clear
opening centred on the brief's 1.6 x 0.30 x 2.6 m envelope, so every leaf in
the family hangs in the same doorway. It carries the shared portal plate and
reveal ring, threshold, jamb strips, head lamp, control plate, hinge stack,
and leaf construction, plus the lit RED-500 and CYAN-400 lamps the doors
briefs ask for at a lower emissive tier than the cargo wave's.

Modules: door-frame (the portal alone), blast-door, airlock-door,
bunker-door, damaged-door, double-sliding-door, glass-commercial-door,
hangar-door, industrial-shutter, floor-hatch.

hangar-door takes the brief's 2.8 m double envelope; floor-hatch lays the
same language flat on a 1.2 m deck plate. Both keep the group's
clipped-corner outline and shell-over-graphite-over-ink value order.

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:04

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

This PR introduces the Axiom Relay “doors” wave by adding 10 new procedural architecture door modules under assets/prototypes/, all built atop a shared new support library (assets/prototypes/axiom-door-kit/). It also updates the scifi-kit registry build to include the new support item and publishes a changeset describing the wave.

Changes:

  • Register axiom-door-kit as a support item in the scifi-kit registry build.
  • Add a new axiom-door-kit support library defining shared door envelope/clear-opening contract, portal/frame construction, shared leaf construction, and additional signal lamp materials.
  • Add 10 new door-family prototype models (frame-only, multiple leaf variants, shutter, hangar door, and floor hatch) that use the shared kit scaffold.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
registries/scifi-kit/src/build.ts Adds axiom-door-kit to the list of built support items.
assets/prototypes/axiom-door-kit/contract.ts Defines the shared door envelope/clear-opening contract and shared sockets.
assets/prototypes/axiom-door-kit/frame.ts Implements shared portal plate, reveal, threshold, jamb strips, head lamp, control plate, hinge stack, etc.
assets/prototypes/axiom-door-kit/leaf.ts Implements shared leaf construction helpers (skin/panel/seam/handle/ribs/vision port/etc.).
assets/prototypes/axiom-door-kit/signal.ts Adds additional lit signal lamp materials (incl. RED-500) without touching the existing cargo bundle.
assets/prototypes/axiom-door-kit/index.ts Provides the shared door model scaffold, state handling, preview framing, and exports.
assets/prototypes/door-frame/model.ts Adds the frame-only module built from the shared portal.
assets/prototypes/blast-door/model.ts Adds a hardened swing-leaf blast door module using shared leaf + portal.
assets/prototypes/airlock-door/model.ts Adds an airlock door module with vision port + seal bead and signal reads.
assets/prototypes/bunker-door/model.ts Adds a manual bunker door module with wheel actuator assembly.
assets/prototypes/damaged-door/model.ts Adds a damaged variant module (failed hinge, buckling, torn seam, fault signal behavior).
assets/prototypes/double-sliding-door/model.ts Adds a bi-parting sliding door module with exposed head track.
assets/prototypes/glass-commercial-door/model.ts Adds a glazed commercial door leaf module (stiles/rails/push bar/band).
assets/prototypes/hangar-door/model.ts Adds the widened (2.8 m) hangar door module with bi-parting travel.
assets/prototypes/industrial-shutter/model.ts Adds a rolling shutter module (slat curtain + barrel + guides).
assets/prototypes/floor-hatch/model.ts Adds a floor hatch module (rotated language + gas strut + deck signal).
.changeset/architecture-doors-wave.md Publishes a patch changeset describing the new doors wave and 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/industrial-shutter/model.ts Outdated
Comment thread assets/prototypes/axiom-door-kit/index.ts
vmlabss and others added 2 commits August 16, 2026 06:40
Review feedback on the doors wave.

createDoorModel renamed only the root on a state change, so an exported or
previewed open door was full of parts still claiming to be _CLOSED. Every
animated model already in the library keeps its moving parts in step - a
crate's lid becomes _LID_OPEN - so this follows that convention: the
articulated groups are retagged on setState and on the first frame of
travel, not only at the far end.

Only a trailing _CLOSED or _OPEN is rewritten. The damaged door's leaf is
_JAMMED and stays that way, because it is not a state this controller
drives and overwriting it would claim the door closes.

Also removes the unused Group import from industrial-shutter, which builds
its curtain through the kit's part() helper and never constructs one.

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.

doors

Individual previews (1024×1024)

airlock-door

airlock-door

blast-door

blast-door

bunker-door

bunker-door

damaged-door

damaged-door

door-frame

door-frame

double-sliding-door

double-sliding-door

floor-hatch

floor-hatch

glass-commercial-door

glass-commercial-door

hangar-door

hangar-door

industrial-shutter

industrial-shutter

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