diff --git a/.gitignore b/.gitignore index 51eb57d..8cf7381 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ cache/ +art/candidates/ .DS_Store __pycache__/ *.pyc diff --git a/CLAUDE.md b/CLAUDE.md index 91ad2e9..c9dfea3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,3 +17,6 @@ Horizons ground truth, the stage plan, and the known traps. - `cache/` is serve.py's disk cache — gitignored, never commit it. - Keep committed assets lean (~25 MB texture budget) and attribute CC BY sources in `assets/textures/CREDITS.md` + the HUD footer. +- Local unlimited image generation: MODELBEAST at `/Users/m3ultra/Documents/MODELBEAST` + (FLUX on-device via `mb` CLI) — see brief §7b. Truth boundary: real worlds get real + NASA textures; FLUX only paints the aesthetic layer (splash, grimoire cards, sprites). diff --git a/SOLARGOD_BRIEF.md b/SOLARGOD_BRIEF.md index ec3a59d..c5d00a4 100644 --- a/SOLARGOD_BRIEF.md +++ b/SOLARGOD_BRIEF.md @@ -291,6 +291,53 @@ JPL — the cache is the rate limiter. Print one boot line like GODSIGH's serve. scaled with the parent's draw scale), ring texture, `DoubleSide`, transparent. Uranus gets a thin schematic gray ring. Tilt with the parent's axial tilt. +## 7b. Generated art — the MODELBEAST pipeline + +The M3 Ultra runs **MODELBEAST** (`/Users/m3ultra/Documents/MODELBEAST`, web UI +`http://localhost:8777`, tailnet `http://100.89.131.57:8777`) — a local job +queue/load manager with an on-device FLUX operator (`flux_local`, mflux/MLX, +`flux2-klein-4b` ungated, seed-reproducible, **free and unlimited**). Drive it +headless with the `mb` CLI (see `MODELBEAST/AGENTS.md` for the full reference): + +```sh +export MB_HOST=http://localhost:8777 MB_TOKEN=mbt_... # token: ⚙ Settings → Users +# house workflow — run 5 seeds, pick the best: +for S in 1 2 3 4 5; do + ./mb run flux_local -p prompt="$PROMPT" -p model=flux2-klein-4b \ + -p seed=$S -p width=1024 -p height=1024 --wait --download art/candidates/ +done +``` + +The `gpu` lane runs one job at a time — queue all 5 and wait, don't spam retries +on `queued`. Finish assets with `fal_bg_remove` (alpha cutouts for sprites) and +`fal_upscale`/`seedvr2_upscale` where 1024 isn't enough. If `MB_TOKEN` isn't +available in the session, generate nothing and leave a TODO list of prompts in +`assets/art/PROMPTS.md` instead — never block a stage on art. + +**The truth boundary (non-negotiable):** SOLARGOD is a scientific instrument. +Real worlds get **real data textures** (§7 — NASA/Solar System Scope maps); FLUX +must never invent the surface of Mars or the face of Europa. Generated art owns +the *aesthetic* layer only, always visually distinct from data: + +- **Splash/boot screen** (Stage 0, optional polish): one hero image, brass-and-void + observatory aesthetic to match the god-app family. +- **Grimoire illustrations** (Stage 6): one stylized portrait per body for the info + panel — engraving/astrolabe style, clearly *art*, framed separately from the + rendered planet. ~800×800, 5-seed runs, pick best, note chosen seed+prompt in + `assets/art/PROMPTS.md` so any card can be regenerated in-style. +- **Effect sprites**: comet tail/coma, sun glow, spacecraft glyph icons — generate, + cutout via `fal_bg_remove`, save as alpha PNGs. +- **Optional "DREAM skybox"** toggle (off by default): a FLUX nebula panorama as an + alternate sky. The *default* sky stays the real Milky Way panorama — from inside + the solar system the real sky is a data statement too. FLUX doesn't produce + seamless 2:1 equirects reliably; hide the seam behind the anti-camera side or + mirror-wrap, and don't burn time here. + +Log every shipped asset in `assets/art/PROMPTS.md` (prompt, model, seed, operator +chain) — reproducibility is the house rule for art too. The §7 texture budget +(~25 MB committed) covers generated art as well; art candidates/rejects stay in +`art/candidates/` (gitignore it). + ## 8. Physical data (`bodies.js`) Registry keyed by body id with: `name, type, radiusKm, axialTiltDeg, rotationHours @@ -372,7 +419,8 @@ Branch per stage; gate before merge; one commit per coherent step. sphere, not a line); Halley's aphelion beyond Neptune's orbit… in the compressed view, near it. - **Stage 6 — ALMANAC** (knowing): info panel with live facts (§5), per-body prose - blurbs (2–3 sentences, hand-written, grimoire voice), Earth Easter egg — focusing + blurbs (2–3 sentences, hand-written, grimoire voice), grimoire illustrations via + MODELBEAST (§7b — skip gracefully if no token), Earth Easter egg — focusing Earth shows "▸ open GODSIGH world view" linking `http://127.0.0.1:8137`, README.md with the full GODSIGH-style layer table and screenshots (`docs/`), HUD credits. Gate: every clickable body has a card; README quickstart works from a fresh clone.