Defer the in-game skinned-enemy animated check to a purpose-built semi-permanent
gym scene (Phase 1's 'no world - a gym') with spawn-a-chosen-enemy tooling, rather
than hacking the shared wave roster. Survives the coming enemy-system rework; the
3 skinned prefabs are ready to drop in.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
animationType=Human (enum 3, not Generic); CharactersAvatar.isHuman=true.
CLAUDE.md correct; the grounding agent misread the enum.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A0: all 3 master shaders now present (Emissive-Gloam authored as HLSL w/
in-shader flicker). A1: skinned recipe proven for a LANTERN creature
(EnemyRigTools.BuildDrowner -> EnemyDrowner.prefab); in-game animated run +
custom-kit reattach + suit/2nd-creature still open. Flags the Generic-vs-
Humanoid rig-type discrepancy vs CLAUDE.md to reconcile.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase-0 status + Workstream A0/A1 callouts: the in-engine ArtStaging style-proof
scene is built (prop+creature+suit triad under murk + light-is-territory pool
lighting, passes full/200px/grayscale); statics recipe validated in-engine;
skinned Rukhanka bake + 3 master shaders still open.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New /art-dev skill (SKILL.md + blender-cookbook + style-and-practices refs)
driving LANTERN Blender art work: Auto (headless) for simple changes, the
hybrid nudge-and-bake loop for precision/aesthetics, game-camera verification,
Blender-beginner coaching. Session log covers the A0 style-proof asset set +
the Bathynaut refinement.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Records the A0 material foundation + Phase 1 Group A implementation (steps 1/1b/2/2.5:
socket data model, per-socket stats, AbilityFireSystem restructure + SpawnId repack, feel-layer
migration), 494 green, the editor-focus correction, and the deferrals (L3 gate, AbilityRef
cleanup, Group B content).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adversarial pre-code review (wf_c7575828-934; 23 agents, 0 failures) over the Phase 1
combat-gym design raised 19 findings (8 CONFIRMED + 11 PARTIAL, 0 refuted) and caught
design-breakers before code:
- SpawnId bit budget exhausted (owner16|fireCount12|fork4) -> repack owner14|socket2|
fireCount12|fork4 so 4 sockets don't collide/desync.
- "KEEP as-is" client feel layer is a real migration (CombatFeedback/PlayerAnimationDrive/
HUD read the reworked AbilityRef/AbilityCooldown) + needs a new replicated class signal.
- predict-spawn is Projectile-only (Aoe/Hitscan/decoy = Cone-precedent server-only spawn);
Blink = velocity-blink in its own system (not a transform teleport); SocketCooldown hot
not cold; EffectiveAbilityStats 4-wide; windup needs a rollback-safe resolve tick;
Harpooner reel + player zone = new server-only code, not salvage.
Verdict: pass-with-changes on all 3 lenses, no redesign. Phase1_Combat_Gym_Build_Spec =
the implementation contract (8-step build order, wire/bake churn, open risks, ledger).
DR-050 records it; pre-review design -> superseded.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The tone bible was authored during the autonomous run but slipped between commit batches;
several already-pushed docs (Phase 7 design, operator questions, session log B) link to it.
Wordless Wicks + lamp-morse; per-voice register bounds (Keeper/Siren/Selkie/Klabautermann/
Anchorite/berths); warmth-against-dread; gates all bark generation.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adversarial design review (wf_aa6fb661-e25; 22 agents, 0 failures) over the world-model
proposal + ground-truth code raised 18 findings (12 CONFIRMED + 6 PARTIAL, 0 refuted) and
caught real design-breakers before any code:
- DP-1/RS-1 (HIGH): the seed model was self-contradictory (RunMapMath regenerates the WHOLE
graph per seed, incompatible with a persistent pinned prefix) -> split: graph topology is
a pure function of WorldSeed ONLY; DescentSalt re-knots content; pinning freezes PinnedSalt.
- NR-2/RS-3 (HIGH): salvaged respawn warps a dead Wick to base -> splits the co-located party
-> in-pocket death; warp gated behind party-wipe; revive is new code, not salvage.
- DP-2 (HIGH): born-correct restore is per-entry lazy replay, not a boot one-shot.
- NR-1 phantom-kill CombatFeedback fix; NR-3 enemy wind-up gated on the light-union;
RS-2 RegionTag->PocketTag is a ~23-site semantic rewrite, not a rename.
World_Model_Build_Spec.md = the review-hardened contract (all 18 folded, findings ledger,
build order, open risks). DR-049 records the decision. Spike -> reviewed; proposal -> superseded.
New forks parked (dark-contact policy, lantern placement, END-1/EB-1 mothball timing).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bundle 4 (critters + weather beats) shipped; all four World-Alive-II bundles
done. Next = the operator's Phase 1.5 gate lap.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blight geyser (bundle 3) shipped review-first. Records the design-review fold
(2 HIGH: no edge-detect on the replicated tick; invert the invalid-guard for a
baked scheduled-tick so a born-0 can't storm) and the new CLAUDE.md tick-sentinel
corollary for baked [GhostField] scheduled-ticks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bundle 2 (decals): explosion scorch pool, cover damage-cracks, room-arena
scars — all procedural, client-only, zero netcode. Records the pivotal
finding that a stock Synty prop shadergraph's _BaseColor is Unity-Per-Material
(not Hybrid-Per-Instance), so URPMaterialPropertyBaseColor darkening silently
no-ops on cover — the fork to decal quads.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Session log Part C (execution + validation evidence), roadmap stabilize #2
ticked, CLAUDE.md gains the MeshCollider-bakes-only-if-Read/Write gotcha
(38.4 KB, in budget), validation-harness.md gains the EditorApplication.update
guardian + EditorPrefs handoff pattern.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Serena dropped from .mcp.json + .serena/ untracked (unused in practice,
flaky on Unity per CLAUDE.md's own caveat); memory stack is now three
layers. Standing auths recorded in the skill: docs auto-commit + auto-push
main->gitea (origin stays ask-first).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 'Synty share one Generic skeleton' note was WRONG - the pipeline is
HUMANOID (CharactersAvatar isHuman, muscle-curve clips). Corrected + the
Blender clip recipe added; paid for by archiving Aim-controls, the URP
m_AssetVersion blocker, VolumeProfile persistence, HDRP-convert and the
HudTheme bullets (verbatim in the gotchas archive, 2026-07-06 section).
39,959 bytes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Direction locked 2026-07-06: trunk fixes + full Co-op Hades conversion
(mothball tower-defense, win expedition-side, hub base, mechanic-changer
boons, 2nd ability, node types, 2nd boss, revive), depth folded in now,
Blender at hero-props+decals scope. Evidence: 9-agent analysis workflow +
live play tour (screenshots referenced by the plan doc).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The room-exit portal was invisible in the first playtest - players loitered
out the 30s ExploreGrace timeout. Adds RegionMath.ExpeditionPortalPos as the
single client-derivable portal-position authority (HUD prompt + beacon can't
drift), a pooled breathing HDR pillar in CombatFeedbackSystem shown only
during RoomExplore, and an in-range/out-of-range two-stage prompt.
Also repairs the comment-swallowed _portalMat initialization (NRE in
OnStartRunning killed ALL combat feedback each session and auto-paused the
editor via Error Pause). 456/456 EditMode.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
DR-046 (portal-gated rooms, class-at-base via shared ClassSwapUtil, per-run
prep spend, Health.Max GhostField, C3/C4/Spitter) + the session log. CLAUDE.md
folds the batch into the core-loop bullet and corrects the now-wrong
'Health.Max unreplicated' line; paid net-zero (40921 B) by archiving the
one-time Rukhanka-samples bullet + trims into the gotchas archive.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>