4ae0876e34
Per canon decisions 2026-08-07 (advisor CONCEPT.md f12cb15, falsifier response): charges now generate on kills (kills_per_charge, chemistry chain kills feed the hand; per-hit generation removed). Kills drop scrap as physical pickups (amber diamond, magnet radius 70, drift to mech, 20s fade; grunt 1 / burster 3) — collection is the positioning reward gradient. Cumulative collected scrap gates card levels 1-3 (thresholds 12/30; per-level radius x1.25/x1.5 and power x1.15/x1.5 — HEAT L3 hits one-cast detonation threshold). HUD: level notches under slots + scrap counter. Salvage spawn is call_deferred: death can fire inside a physics signal flush where Area2D setup is blocked. Smoke gate: charge accrual now kill-fed, salvage drop + collection + level gating phases added, heat-target selection made retry-tolerant. 4/4 green on nh3-dev headless 4.7.1.
3.6 KiB
3.6 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. - Everything is knobs; operator says "everything needs tuning" — no tuning pass done yet. v1.0 cut not yet made (operator sign-off needed; ROADMAP v1 target arguably met).
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.