destroyulator/LANES/PLAN.md
Monster Robot Party c03bb85c9f Add parallel-lane execution specs for Opus 4.8
LANES/PLAN.md         — verdict, GODVERSE pipeline architecture, shared contracts, 3GOD security note
LANES/LANE1-*.md      — Godot: grab/slide/smash record ritual + find-the-misfiled-disc mode (owns game/)
LANES/LANE2-*.md      — meshgod cell-fracture stage + Destroyulator prop batch -> 3GOD (owns ~/meshgod)
LANES/LANE3-*.md      — thriftgod-based web smash toy, Rapier physics, 3GOD props (owns web/)
LANES/KICKOFF.md      — per-lane opening prompts + collision-safety rules

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 16:47:47 +10:00

60 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DESTROYULATOR — Build Plan & Lane Specs
*Fable's review + plan, 2026-07-08. Three parallel lanes over one shared asset pipeline.*
## The verdict
Destroyulator plugs into the **GODVERSE pipeline you already have**, it does not reinvent it:
```
meshgod ──makes──▶ 3GOD depot ──serves──▶ { Godot game, web toy }
(text→GLB) (digalot.fyi/3god) (two front-ends, one universe)
```
- **Engine question, settled:** Godot stays the shippable game (native Apple Silicon,
Jolt, exports Win/Mac/Linux off the M3). Three.js is NOT a port of the same game —
it's a **separate, shareable web toy** built on thriftgod's live first-person interior
code, wired to the same props. Different product, same universe. Both consume the
same pipeline, so the expensive part (assets) is built once.
- **Assets are hybrid-cloud, not free:** meshgod = OpenRouter + fal.ai (~$0.100.55/asset,
12 min). Budget per batch; don't assume infinite regeneration.
## The three lanes (fire in parallel)
| Lane | Repo / dir it OWNS | Deliverable | Depends on |
|---|---|---|---|
| **1 — Godot: record ritual** | `game/` (this repo) | Grab→lift→slide-disc→smash mechanic + "find the misfiled disc" mode | nothing (starts now) |
| **2 — Asset pipeline** | `~/Documents/meshgod` (separate repo) | Cell-fracture stage + Destroyulator prop manifest → 3GOD | nothing (starts now) |
| **3 — Web smash toy** | `web/` (this repo, new dir) | thriftgod-based FP smash demo, 3GOD props, Rapier physics | 3GOD (read-only) |
**Scope rule (prevents collisions):** each lane writes ONLY inside the dir it owns.
Lane 2 delivers assets to 3GOD + meshgod outputs; Lane 1 *pulls approved GLBs into
`game/assets/`* itself (Lane 2 never writes `game/`). Lane 3 fetches from 3GOD at runtime.
## Shared contracts (every lane obeys these)
1. **GLB convention:** glTF **Y-up, 1 unit = 1 m, origin at floor-center**, textures
embedded, decimated to tri budget. (meshgod already emits this.)
2. **Fracture format:** an intact `<name>.glb` PLUS a sibling `<name>.fractured.glb`
whose root's direct children are the chunk meshes (each a `MeshInstance`/mesh node
named `chunk_00…chunk_NN`, origin at its own centroid, in the intact model's local
space). Consumers instance it and turn each chunk into a rigid body. Defined by Lane 2,
consumed by Lanes 1 & 3.
3. **Depot:** 3GOD at `https://digalot.fyi/3god``GET /api/list` returns the shelf;
GLBs fetchable by slug. Web lane reads live; game lane commits offline copies.
## ⚠️ Pre-req / ops risk (owner's call — NOT auto-fixed)
The review of 3GOD found the **public digalot.fyi/3god instance running in open mode
(`GOD3_OPEN=1`)** — write endpoints (upload/delete/fetch) are reachable **unauthenticated**,
plus an **SSRF hole in `/api/fetch`** (`server.py:173`, reads `file://` + cloud metadata).
Lane 3 only *reads* the depot, so it's not blocked — but before leaning on 3GOD as public
game infrastructure, close open-mode + allow-list `/api/fetch` schemes/hosts. This is a
production box; flagged for you to action, not silently changed.
## Sequencing note
All three start immediately. Lane 2's fracture output *upgrades* Lanes 1 & 3 (real
shard-by-shard destruction) but neither is blocked waiting for it — both already work
with primitive/auto-collider fallbacks. Integrate fractured assets when they land.