7.1 KiB
7.1 KiB
Persistent memory — urm03 (U R M03)
Last updated: 2026-08-07
Always check for
/tmp/m03-dev-handoff.md— if it exists and itsWritten:stamp is under an hour old, read it (it carries the in-flight handoff from the previous session), then delete it. Older than an hour: stale — delete it unread.
Repo purpose
Implementation repo for U R M03 (Godot 4.7.1): the strategy-forward mech auto-battler rogue-lite. Design canon lives in the advisor repo (see CLAUDE.md); this repo builds what canon ratifies. Current mission is the greybox falsifier (ROADMAP.md v1) that tests the design's three core bets.
Current state / in-flight
As of 2026-08-07 (post-falsifier):
- Greybox build complete AND falsifier verdicts rendered (ROADMAP v1 target met through capability 6). Verdicts: bet 2 (card-freeze rhythm) CONFIRMED; bet 1 (positioning) shaky → salvage-pickup loop adopted and built; bet 3 (chemistry) inconclusive → in-card randomness parked to belt stage.
- Post-falsifier loop built: charges generate on kills; kills drop scrap pickups (magnet radius, fade); collected scrap gates card levels 1→3 (thresholds + per-level radius/power scaling, HEAT L3 reaches one-cast threshold). Smoke gate green 4/4.
- Canon amendments landed in the advisor repo at
f12cb15(local-only — that repo has NO git remote): Freeze charge ratified, kill-charges + salvage-gated levels decided, randomness parked. - Salvage loop playtested and KEPT (operator, 2026-08-07: "interesting mechanic, let's keep it and move on"). Everything remains knobs; no tuning pass done yet.
- M1 (greybox falsifier) done, untagged — v1.0 reserved for the public RC (operator ruling 2026-08-07; internal milestones are 0.x).
- M2 (run skeleton) BUILT 2026-08-07, operator playtest pending: belt (consume-on-play, draft refills), draft node (3 + scrap decline), CARD-vs-SCRAP fork between rooms, spawn-budget rooms (4/run), tally + relaunch, DASH + IGNITE greybox cards. Chain semantics deliberately deferred to M3.
- Advisor repo remote WIRED 2026-08-07: git@gitea.phasefinal.com:vh/game-design-advisor.git (private, created via tea CLI with the vh token), main pushed — canon is backed up. (Distinct repo from vh/urm03 — operator briefly read the new name as a rename; clarified 2026-08-08.)
[2026-08-08]Operator is building asset tools offline (his side — likely the Aseprite/Retro Diffusion pixel pipeline from the advisor notes) and will loop this project in when ready. M2 playtest verdict still pending; no repo work blocked on it.[2026-08-14]Aseprite 1.3.18.2 built from source on nh3-dev (operator-licensed) at~/bin/aseprite; headless gen_sprites.lua run verified pixel-identical with preview.py (see CLAUDE.md Engine notes). Sprite work remains_phideation — greybox stays art-free.[2026-08-15]Retro Diffusion local weights wired into Arbo's ComfyUI (irv-ml1,/storetank/arbo/models, comfy-dev thread 01M01PKJ5EAR…): base pixel-art checkpoints (rd_pixel/palettegen/ micro_v14) + VAE (comfy-dev repaired its key prefixes — derived file, not a symlink) + 5 controlnets + 11 LECO sliders VERIFIED working. Render at 512 and downscale — 128 direct is below the model's floor (validated A/B on booth rd-validation).[2026-08-15]Style LoRAs recovered — operator decrypted all 24 himself (with permission); now live in ComfyUI. Genuine SD1.5 LoRAs (kohya, 792 tensors each). Licensing (operator directive): copyrighted, licensed-for-use, NOT-for-export — fleet-internal only. Full trigger map attools/retro-diffusion/lora-triggers.md.[2026-08-15]M03 sprite-ideation exploration COMPLETE (2 batches) — pipeline proven, findings ratified to canon, exploration wrapped (operator). Key results (full record:tools/retro-diffusion/ FINDINGS.md): baserd_pixel_v14alone renders M03 + mismatched eyes; style LoRAs kill the hero (object priors) → reserved for tiles/icons/env props; sprite budget 64px full-body / 48px bust / 32px blob. Booths m03-batch01 / m03-batch02 (ephemeral).[2026-08-14]Art direction resolved (operator): watercolor backgrounds/scenery + pixel-art sprites. Watercolor scenery pipeline owned by waterland-dev (fleet peer). Pixel sprites = local RD base ideation. Ratified to advisor CONCEPT.md (§ Tech & art direction + decisions log + open-Q #2 sprite-grid struck) at3eeeaf4. Ideation-grade — shipped art still human-authored, M03 ref stays locked syn02/syn04b. Loop-in waterland-dev when scenery work actually starts (no ask ripe yet).
Recent decisions
[2026-08-06]Greybox discipline: direct implementation + headless smoke gate; contract/heid ceremony skipped — falsifier code's real review is the operator playtest.[2026-08-07]Freeze charge meter adopted as the card-time variant for playtest (banded ladder, A/B vs unlimited toggle on M); canon ratification deferred pending playtest verdict — tracked at commit73f84e7+ advisor repo CONCEPT.md § Open questions #0. →persistent-memory.d/2026-08-07-freeze-meter-variant.md[2026-08-07]Detonations are symmetric — they damage enemies AND the mech in radius: one grammar on both sides; heat play prices standing close (1976149).[2026-08-06]Placeholder tag hues: KINETIC pale steel-blue, HEAT orange — canon assigns no tag colors yet (naming/color pass parked post-greybox).[2026-08-07]Falsifier verdicts + resulting design decisions live in advisor-repo CONCEPT.md (§ loop stack amendments, decisions-log rows, open-question #0 closure) atf12cb15— design rationale is NOT duplicated here; that log owns it.
Tried and abandoned
[2026-08-07]Engine.time_scale = 0as the freeze — fake: physics still steps with delta 0 on 4.7 (probed headless), so delta-independent logic (heat thresholds, contact callbacks) kept firing while "frozen". Freeze =SceneTree.paused+ hand onPROCESS_MODE_ALWAYS;time_scaleonly for dilation > 0 (c340b7b).[2026-08-07]Committing new scripts without their.uidsidecars — the Mac editor generated its own untracked copies and the nextgit pullrefused to merge over them. Import headless before committing so.uidfiles ride the same commit as their scripts.[2026-08-07]Spawning physics nodes (Area2D) directly inside a physics signal flush (projectilebody_entered→ death → spawn) — Godot blocks collision setup mid-flush. Spawn viaadd_child.call_deferred()from any death/hit signal path.[2026-08-14]preload()of an imported texture in a code-created sprite breaks the WHOLE script at compile time if the other machine's import cache is stale (Mac editor after pull: black scene, no movement — preload can't resolve the not-yet-imported resource). Use runtimeload()(null-degrades) for code-created sprites; fix62e86f9. Recovery for a victim machine: quit editor,rm -rf .godot, pull, reopen, let reimport finish. Committed state was provably sound (fresh clone ran clean) — the bug was purely the consumer's stale cache.