diff --git a/Documentation/Archaeology/00A-Phase-1-Execution-Plan.md b/Documentation/Archaeology/00A-Phase-1-Execution-Plan.md index 5d83aaa8..9613e2eb 100644 --- a/Documentation/Archaeology/00A-Phase-1-Execution-Plan.md +++ b/Documentation/Archaeology/00A-Phase-1-Execution-Plan.md @@ -1,6 +1,6 @@ --- name: Phase 1 Archaeology -overview: "Phase 1 archaeology: Batches 1–4 complete (4A–4D — Passes 4, 7, 8, 9, 10); Batch 5 waiting (Pass 11 synthesis). Docs only with substantive evidence; integrity gate before/after; no auto-continue." +overview: "Phase 1 archaeology COMPLETE: Batches 1–5 (Passes 0–11). Synthesis delivered (01 + 07 + final 13/14/15). Docs only; integrity gate; no auto-continue into Phase 2." todos: - id: batch1-foundation content: "Batch 1 (authorized): Passes 0–2 — continuity, modules/config, native C++ → 02+03+14+15 (+seeds)" @@ -24,8 +24,8 @@ todos: content: "Batch 4D (completed): Pass 4 sessions/frontend + Pass 10 HUD/pickups → 11/12/02 (+seeds)" status: completed - id: batch5-synthesis - content: "Batch 5 (when authorized): Pass 11 — matrix, unknowns, summary, final handoff" - status: pending + content: "Batch 5 (completed): Pass 11 — matrix, unknowns, summary, final handoff → 01/07/13/14/15" + status: completed isProject: false --- @@ -113,7 +113,7 @@ Do not begin Batch 5 until Batches 1–4 are complete and their documents have b | Batch 2 — Blueprint foundation (Passes 3 + 5) | **Completed** | | Batch 3 — Character abilities (Pass 6) | **Completed** | | Batch 4 — Supporting systems (Passes 4, 7, 8, 9, 10) | **Completed** — 4A–4D | -| Batch 5 — Synthesis | Waiting for authorization (requires Batch 4 complete) | +| Batch 5 — Synthesis (Pass 11) | **Completed** — `01-ExecutiveSummary`, `07-AbilityMigrationMatrix`, final `13`/`14`/`15` | ## Batch 1 — Foundation (COMPLETED) @@ -216,12 +216,12 @@ Batch 4 was authorized and executed as **sub-batches 4A–4D** (one pass or pair **Batch 4D outcomes (do not contradict without evidence):** sessions live in menu PC/widgets (not GameInstance); AdvancedSessions connected but OnlineSubsystem INI absent — do not claim sessions work without runtime; Overlay Health/Mana static path present; four GE pickups Active with Authority Risk; gold Partial; Gunslinger absent from char-select UI; char-select widget created server-only. -## Batch 5 — Synthesis (NOT AUTHORIZED) +## Batch 5 — Synthesis (COMPLETED) -### Pass 11 + final synthesis +### Pass 11 + final synthesis — **Completed 2026-07-16** Migration matrix; unknowns consolidation; evidence index; executive summary; final handoff → `01`/`07`/`13`/`14`/`15`. -Do not begin until Batch 4 is complete and docs reviewed. **Authorize Pass 11 explicitly** before starting. +**Outcomes:** Phase 1 Static Architecture complete. Runtime validation intentionally not executed. Next action: Phase 2A when explicitly authorized (see `15-HandoffStatus.md`). ## Contradiction protocol diff --git a/Documentation/Archaeology/01-ExecutiveSummary.md b/Documentation/Archaeology/01-ExecutiveSummary.md new file mode 100644 index 00000000..3e4d0774 --- /dev/null +++ b/Documentation/Archaeology/01-ExecutiveSummary.md @@ -0,0 +1,415 @@ +# 01 — Executive Summary + +**Status: Complete** + +- **Scope:** Phase 1 synthesis — evidence-grounded description of the project as it currently exists after static archaeology (Batches 1–4; Passes 0–10). No implementation, repair, or runtime testing. +- **Inspection method:** Cross-document synthesis of archaeology docs `00`, `00A`, `02`–`06`, `08`–`15`; read-only continuity MCP only. +- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. +- **Tool or visibility limitations:** CustomEvent Reliability flags unreadable via MCP; AnimGraph/transition DSL empty; montage notify trigger times require Manual Editor; no PIE executed in Phase 1. +- **Last updated:** 2026-07-16 +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5 synthesis) +- **Next pass expected to contribute:** Phase 2A when explicitly authorized + +--- + +## 1. Purpose and scope + +This document closes Phase 1 Static Architecture. It synthesizes recovered evidence into a coherent picture of: + +- What exists, is connected, is active but unverified, is partial, is missing +- What is deprecated but still active, scaffolding only, or present but unreferenced +- What requires runtime verification vs what can be reconstructed or replaced in Phase 2 + +It does **not** authorize implementation, asset modification, or Phase 2 work. + +--- + +## 2. Methodology and evidence model + +| Classification | Meaning | +|----------------|---------| +| Observed Implementation | Static graph, CDO, source, or config evidence | +| Documented Intent | Comments, interface stubs, orphan assets suggesting design | +| Observed Runtime Behavior | Project-supplied baseline brief only (not re-tested in Phase 1) | +| Inferred | Reasonable conclusion from static structure without direct proof | +| Unknown | Not resolvable with approved static tools | + +Implementation statuses and issue classifications follow Pass 11 authorization vocabulary (Active, Partial, Stub, Missing, Deprecated but Connected, Scaffolding Only, Authority Risk, Requires Runtime Inspection, etc.). + +**Rule:** Presence ≠ reachability ≠ runtime correctness. Later exact evidence supersedes earlier preliminary statements. + +--- + +## 3. Project recovery and UE 5.8 migration status + +| Fact | Classification | +|------|----------------| +| Recovered and migrated from UE 5.4.4 → UE 5.8 | Established baseline | +| UE 5.8 runtime parity vs known pre-migration baseline | Passed (project brief) | +| Known gameplay defects | Existing Baseline Defects, not established migration regressions | +| AdvancedSessions / AdvancedSteamSessions | Replaced with UE 5.8–compatible project plugins | +| Remaining NetUpdateFrequency warning | Outside Phase 1 scope | + +--- + +## 4. Current architecture at a glance + +```mermaid +flowchart TD + MainMenu[MainMenu_GM_MainMenu] --> Sessions[PC_MainMenu_AdvancedSessions] + Sessions -->|Host_listen| DevIsland[Dev_Island] + MainMenu -->|NewGame| Test01[Test01] + Test01 --> CharSelect[WBP_CharacterSelect] + CharSelect --> Spawn[PC_SpawnActor_Possess] + Spawn --> Player[BP_PlayerCharacterBase_children] + Player -->|Legacy_Server_Ability| Montage[Multicast_PlayMontage] + Montage --> AN[AN_Ability_plus_AN_AttackComplete] + Player -->|ASC_on| PS[ARIRPlayerState] + PS --> Overlay[WBP_Overlay_Health_Mana] + Potions[EffectActor_pickups] -->|GE_only_path| PS + Enemy[BP_Enemy_Skeleton] -->|ASC_on_self| EnemyASC[Enemy_ASC] + Enemy -->|Combat| MissingAI[Chase_Attack_Damage_Missing] +``` + +**Native player:** `ARIRBaseCharacter` → `ARIRPlayerCharacter` → `BP_PlayerCharacterBase` → five `Player_*` children. +**Player ASC / AttributeSet:** on `ARIRPlayerState`. +**Combat:** legacy Blueprint abilities via Enhanced Input → `Server_Ability_*` → Multicast montage → AnimNotify `UseAbility*` — **no** connected Gameplay Ability grant/activation. + +--- + +## 5. What currently exists + +- Playable hierarchy and shared ability input/RPC scaffolding +- Paladin / Amazonian / Cleric substantive ability graphs (varying completeness) +- Wizard / Gunslinger character assets (stubs / data-only) +- Player and enemy ASC + AttributeSet with replication +- Eight Gameplay Effect assets (four consumable, four orphan defaults) +- Project Gameplay Tags in INI (unused) +- Main menu, session create/find/join graphs, character select, Overlay HUD +- Four GE pickups + gold pickup path +- Enemy highlight (`ITargetInterface`) and empty combat EventGraphs +- AnimNotifies `AN_Ability_001–004`, `AN_AttackComplete` + +--- + +## 6. What is currently connected + +| Path | Status | +|------|--------| +| IA → Server_Ability_* → child overrides (where present) | Connected | +| Multicast_PlayMontage → AnimNotifies → Authority UseAbility* / SetIsAttacking | Connected (notify-driven) | +| Char-select (server) → SpawnActor+Possess | Connected (SP/server path) | +| Host CreateAdvancedSession → OpenLevel Dev_Island `?listen` | Connected (static) | +| FindSessions → WBP_GameSlot presentation | Connected (static) | +| ASC Overlay Health/Mana bar bindings | Connected (static) | +| EffectActor overlap → ApplyGameplayEffectSpecToSelf → Destroy | Connected (static) | +| Gold overlap → AddGold call | Connected caller; receiver unimplemented | +| Enemy GetASC via interface | Connected call path → nullptr on enemies | + +--- + +## 7. What is known to work + +| Item | Evidence | +|------|----------| +| Amazonian Ability 001 / melee | Observed Runtime Behavior (supplied baseline brief) | +| UE 5.8 parity vs pre-migration baseline | Project recovery brief | +| Enemy highlight on/off | Observed Implementation (native) | + +All other gameplay paths remain **Active but Unverified** or **Requires Runtime Inspection** until Phase 2 validation. + +--- + +## 8. What is partial + +- Paladin Ability 002 (block presentation); Paladin 004 FX hole +- Cleric 001 (montage, dead notify), 002 (heal + FX hole), 004 (mana bypass + empty SpawnActor) +- Amazonian death (legacy health); whirlwind setter unconnected +- Sessions (no DestroySession; Join lacks explicit success travel; OSS INI Missing) +- Character select (server-only widget create; Gunslinger absent) +- Gold (SFX+destroy without score mutation) +- Dual HUD (Overlay connected; legacy UpdatePlayerHUD unimplemented) +- Enemy death ABP (Death state exists; `IsDead` forced false every Update) + +--- + +## 9. What is missing + +- Project Gameplay Ability assets, grant, activation, costs/cooldowns, cues, MMCs +- Connected enemy target acquisition, chase, attack, outbound damage, inbound damage +- Behavior Tree / Blackboard / custom AIController / perception +- OnlineSubsystem / Steam project INI configuration +- DestroySession / EndSession paths +- Stamina Overlay widget and stamina pickups +- Gunslinger combat, AnimBP, GE, and select-UI entry +- Default attribute GE application (`BP_PlayerState.DefaultAttributesGameplayEffect` = None) +- Most `Server_Ability_*_End` bodies +- NavMeshBoundsVolume / RecastNavMesh in Test01 (secondary to missing MoveTo) + +--- + +## 10. Major static defects + +| Defect | Issue classification | Doc | +|--------|----------------------|-----| +| Dual DEPRECATED vs ASC resources with no sync | Incomplete Refactor | 05, 06 | +| Enemy chase/attack/damage reception absent | Existing Baseline Defect / Implementation Missing | 09 | +| Enemy GetASC → PlayerState → nullptr | Incomplete Refactor | 06, 09, 12 | +| ABP_Skeleton forces `IsDead` false | Connected but Incomplete | 09, 10 | +| Cleric 004 mana Branch = literal true; SpawnActor Class empty | Existing Baseline Defect | 05 | +| Multicast montage completion pins unwired | Networking Risk / Incomplete Refactor | 05, 10 | +| EffectActor no authority; `bReplicates=false` | Authority Risk | 12 | +| AddGold / UpdatePlayerHUD unimplemented | Incomplete Refactor | 11, 12, 03 | +| OnlineSubsystem project INI absent | Configuration Gap | 02, 11 | +| Player ApplyDamage with no enemy health consumer | Existing Baseline Defect (enemy side) | 05, 09 | + +--- + +## 11. Major authority / network risks + +1. **Gameplay on Multicast notify evaluation** — hit windows require server montage notify evaluation; interrupt may skip `AN_AttackComplete`. +2. **EffectActor pickups** — no `SwitchHasAuthority`; non-replicating actors. +3. **Character select** — widget created only on Authority∧IsServer; remote clients may lack UI. +4. **JoinSession** — no explicit OnSuccess / ClientTravel in DSL. +5. **CustomEvent Reliability** — Unknown — Tool Limitation for all ability RPCs. +6. **Gold** — authority-gated pickup calling unimplemented AddGold (cosmetic-only result today). + +--- + +## 12. GAS migration state + +| Layer | Status | +|-------|--------| +| ASC ownership + actor-info init | Active (player PS; enemy self) | +| AttributeSet replication | Active | +| DefaultAttributes GE apply | Scaffolding Only / Present but Unreferenced | +| Consumable GEs | Partially Integrated (only confirmed GE apply path) | +| Gameplay Abilities | Scaffolding Only (`URIRGameplayAbility`); grant/activate Missing | +| Gameplay Tags | Present but Unreferenced | +| Gameplay Cues | Missing | +| Legacy↔ASC sync | Missing | + +**Disposition:** Stabilize canonical attributes/authority in Phase 2A before migrating abilities into GAS. Do not treat orphan default GEs or unconnected Wizard FX as final ability design. + +--- + +## 13. Playable-character status + +| Character | Combat status | Notes | +|-----------|---------------|-------| +| Paladin | Broadest Implemented set after Cleric richness | 001/003/004 Implemented; 002 Partial; no parent calls | +| Amazonian | 001 Implemented + runtime-confirmed melee | 002–004 Stub; whirlwind unconnected | +| Cleric | Richest event surface; highest duplication risk | 003 Implemented; 001/002/004 Partial; vestigial AN_003 | +| Wizard | Stub PrintString only | Unconnected NS/GE/projectile — Documented Intent only | +| Gunslinger | Data-only Stub | Absent from character select; no AnimBP/GE | + +--- + +## 14. Enemy-system status + +| Concern | Status | +|---------|--------| +| Control | Stock AIController; AutoPossessAI=PlacedInWorld | +| Target / chase / attack | Implementation Missing | +| Damage reception / ApplyDamage bridge | Implementation Missing | +| Death | Connected but Incomplete (ABP forced false) | +| GAS GetASC | Existing Baseline Defect (nullptr) | +| Navmesh Test01 | Missing (secondary) | + +--- + +## 15. Frontend / session status + +| Concern | Status | +|---------|--------| +| GameDefaultMap | MainMenu — Active | +| Main menu path | PC_MainMenu + WBP_MainMenu — Active but Unverified | +| GI_Dungeoneer | Present but Unconnected | +| Host / Find | Partial / Active but Unverified | +| Join travel | Partial | +| DestroySession | Missing | +| OnlineSubsystem INI | Missing | + +--- + +## 16. HUD / UI status + +| Path | Status | +|------|--------| +| WBP_PlayerHUD (AHUD despite WBP_ prefix) | Overlay classes assigned | +| ASC Overlay Health/Mana | Active but Unverified | +| Stamina widget | Missing | +| Legacy Server_UpdateHUD → UpdatePlayerHUD | Present but Unconnected (receiver unimplemented) | + +--- + +## 17. Pickup / currency status + +| Path | Status | +|------|--------| +| Four EffectActor GE pickups | Active but Unverified / Authority Risk | +| Gold | Partial (AddGold unimplemented) | +| Stamina / other currency | Missing | + +--- + +## 18. Runtime validation still required + +Full bounded plan: [`13-Unknowns-And-RuntimeQuestions.md`](13-Unknowns-And-RuntimeQuestions.md). + +Priority groups: attributes/HUD; ability authority/replication; AnimNotify execution; interruption/cleanup; player damage/death; enemy ASC; enemy damage/death; pickup authority; char-select networking; sessions; gold; respawn/HUD recreation. + +**Phase 1 did not execute any of these tests.** + +--- + +## 19. Recommended Phase 2 reconstruction order + +Evidence supports the default dependency order: + +### Phase 2A — Baseline framework stabilization + +| Field | Content | +|-------|---------| +| Objective | Canonical health/mana/stamina SoT; default attribute init; legacy↔ASC policy; shared death/damage; server-authoritative rules; reliable cleanup; validation harness | +| Dependencies | Phase 1 complete | +| Static evidence | Docs 05, 06, 08, 11, 12 | +| Required runtime tests | Groups 1, 5, 12 (doc 13) | +| Exit criteria | Written SoT + authority + cleanup contracts approved; harness defined | +| Principal risk | Migrating abilities atop dual resources locks in divergence | + +### Phase 2B — Shared player ability framework + +| Field | Content | +|-------|---------| +| Objective | Replace PrintString stubs; shared input→activation; cost/cooldown/targeting/cleanup contracts; remove gameplay dependence on cosmetic multicast evaluation | +| Dependencies | 2A contracts | +| Static evidence | Docs 05, 07, 10 | +| Required runtime tests | Groups 2–4 | +| Exit criteria | Shared activation path proven in harness without per-character redesign | +| Principal risk | Preserving notify-timed hit windows while moving authority | + +### Phase 2C — Character reconstruction + +Order: **Amazonian 001 → Paladin → Cleric → Wizard → Gunslinger**. + +| Why this order | Evidence | +|----------------|----------| +| Amazonian 001 | Known-working behavioral reference (Observed Runtime Behavior) | +| Paladin | Largest Implemented legacy set to preserve | +| Cleric | Richest surface + known defects; reconstruct before migrate | +| Wizard | Stub + unconnected content; replace after framework | +| Gunslinger | Data-only + missing select UI; last | + +| Field | Content | +|-------|---------| +| Dependencies | 2A + 2B | +| Static evidence | Docs 05, 07, 08, 10 | +| Required runtime tests | Per-slot ability tests; interruption | +| Exit criteria | Selected slots match preserved legacy behavior under harness | +| Principal risk | Over-inferring Wizard/Gunslinger from orphan assets | + +### Phase 2D — Enemy baseline + +Damage reception → health/death → target → chase → attack → anim callbacks → drops → enemy GAS compatibility. + +| Dependencies | 2A damage/death contracts; navmesh when MoveTo added | +| Static evidence | Doc 09 | +| Required runtime tests | Groups 6–7 | +| Exit criteria | Placed skeleton can take damage, die, and perform one attack loop | +| Principal risk | Treating GetASC defect as root of chase/attack (it is independent) | + +### Phase 2E — Supporting systems + +HUD consolidation; pickup authority/replication; gold; char-select networking; session join/travel/destroy; OnlineSubsystem config; stamina UI/collectibles. + +| Dependencies | 2A SoT; preferably 2B+ partial 2C | +| Static evidence | Docs 02, 11, 12 | +| Required runtime tests | Groups 8–11 | +| Exit criteria | SP Overlay+pickups+gold correct; listen-server select+join documented | +| Principal risk | Claiming MP sessions work without OSS config + runtime | + +**Reconstruct before modernization:** dual resources, death/damage, notify cleanup, Implemented/Partial abilities with clear intent, enemy damage reception. +**Replace during modernization:** pure stubs, PrintString bases, unconnected orphans (after design decision), dead unimplemented receivers where no behavior exists. + +--- + +## 20. Phase 1 completion statement + +Phase 1 Static Architecture is **complete**. All authorized static archaeology passes (0–10) and synthesis (Pass 11) are finished. Remaining unknowns are explicitly runtime or Manual Editor items documented in doc 13. No Unreal assets, source, configuration, maps, plugins, or editor state were modified during Phase 1 archaeology. + +**Exact next action:** Begin Phase 2A with a bounded runtime-baseline and shared resource-authority design pass. Do not begin per-character implementation until the canonical attribute, damage, death, authority, and cleanup contracts are approved. + +--- + +## System-status table + +| System | Current status | Evidence confidence | Principal gap | Phase 2 disposition | +|--------|----------------|---------------------|---------------|---------------------| +| Project startup | Active | High | Runtime map/session proof | Preserve; configure OSS in 2E | +| Main menu | Active but Unverified | High | PIE menu flows | Preserve behavior | +| Character selection | Partial | High | Server-only create; no Gunslinger | Reconstruct networking + selection | +| Pawn spawning and possession | Connected / Partial | High | Remote-client path | Reconstruct MP path | +| Sessions | Partial | High | Join travel; Destroy; OSS INI | Reconstruct + configure | +| Player base | Active | High | Dual resources; stub Ends | Reconstruct SoT then framework | +| Paladin | Implemented (mixed slots) | High | 002 Partial; FX hole; notify authority | Preserve behavior, migrate | +| Amazonian | Implemented (001) + Stubs | High | 002–004 stubs; whirlwind | Preserve 001; replace stubs | +| Cleric | Partial / Implemented mix | High | 001/004 defects; duplication | Reconstruct then migrate | +| Wizard | Stub | High | No Server_Ability bodies | Replace with shared framework | +| Gunslinger | Stub / data-only | High | No combat; not selectable | Reconstruct select + replace | +| Animation callbacks | Active / Incomplete | High | Completion pins unwired | Replace cleanup contract | +| Player GAS ownership | Active | High | No GA grant/activate | Preserve ASC; build abilities later | +| Attributes | Partially Integrated | High | Defaults orphaned; dual sources | Reconstruct SoT (2A) | +| Gameplay Effects | Partially Integrated | High | Consumables only | Preserve consumables; wire defaults | +| Gameplay Abilities | Scaffolding Only / Missing | High | No GA assets | Replace stubs with GAS later | +| Gameplay Tags | Present but Unreferenced | High | Unused | Defer pending design | +| Gameplay Cues | Missing | High | No cues | Defer / add with abilities | +| Enemy control | Scaffolding Only | High | Empty graphs | Reconstruct (2D) | +| Enemy chase | Missing | High | No MoveTo/target | Reconstruct (2D) | +| Enemy attack | Missing | High | Stub + orphan montage | Reconstruct (2D) | +| Enemy damage reception | Missing | High | No ReceiveAnyDamage | Reconstruct first (2D) | +| Enemy death | Connected but Incomplete | High | IsDead forced false | Reconstruct (2D) | +| ASC Overlay | Active but Unverified | High | No stamina; PIE | Preserve; consolidate HUD | +| Legacy HUD | Present but Unconnected | High | UpdatePlayerHUD missing | Remove or implement after SoT | +| Pickups | Active but Unverified / Authority Risk | High | No authority gate | Reconstruct authority (2E) | +| Gold/currency | Partial | High | AddGold no-op | Reconstruct AddGold (2E) | + +--- + +## Top-risk register + +| Priority | Risk | Static consequence | Runtime consequence to verify | Dependency | +|----------|------|--------------------|-------------------------------|------------| +| P0 | Dual health/mana (DEPRECATED vs ASC) unsynchronized | Combat and potions mutate different stores | Death vs Overlay/potion divergence | 2A SoT | +| P0 | Enemy damage reception / death missing | Player ApplyDamage has no health consumer | Hits appear to do nothing | 2D after 2A | +| P0 | Enemy chase/attack Implementation Missing | No PvE combat loop | Enemies idle forever | 2D | +| P1 | Gameplay depends on Multicast AnimNotify evaluation | Interrupt may skip AN_AttackComplete | Stuck CurrentlyAttacking; missed hits | 2B cleanup | +| P1 | EffectActor Authority Risk | Non-replicating; no authority switch | Double destroy / missed GE in MP | 2E | +| P1 | Enemy GetASC nullptr | Effects skip enemies; destroy still runs | Loot destroy without heal | 2A/2D/2E | +| P1 | Char-select server-only + Join Session Partial | Remote clients / join travel fragile | Clients stuck; join fails | 2E | +| P1 | OnlineSubsystem INI Missing | Sessions may use unknown defaults | Host/find/join silent failure | 2E | +| P1 | AddGold / UpdatePlayerHUD unimplemented | Callers connected; receivers dead | Gold/HUD no-ops | 2E after 2A | +| P2 | Cleric 004 mana bypass + empty SpawnActor | Ability defective | No projectile; free cast | 2C Cleric | +| P2 | Orphan default GEs; no Gunslinger GE | Spawn uses native Init only | Wrong class balances | 2A | +| P2 | Stamina scaffolding unused | Attribute/UI/pickup incomplete | Dead stamina surface | 2A/2E | +| P3 | WBP_PlayerHUD is AHUD; Amazon vs Amazonian naming | Maintainability / confusion | None functional | Defer polish | +| P3 | Tags/cues unused; GI unwired; pause missing | Dead scaffolding | None until used | Defer | + +--- + +## Cross-document reconciliation notes (Pass 11) + +| Topic | Resolution | +|-------|------------| +| Stale “next pass = Pass 4/10” in docs 09/10 | Superseded: Batch 4D complete; Pass 11 is synthesis close | +| Death/HUD labels differ slightly in 05 vs 08 | Prefer 05 slot labels; Amazonian death = Partial (local AnyDamage); HUD “Active” on Amazonian = local call sites of shared legacy HUD | +| Implemented abilities vs no enemy damage sink | Player statuses unchanged; enemy reception is separate Existing Baseline Defect | +| Preliminary Batch 1 “sessions deferred” | Superseded by Pass 4 matrices in docs 11/02 | +| Preliminary “pickups unknown” | Superseded by Pass 10 matrices in docs 12/06 | + +--- + +## Evidence sources + +Primary: `02`–`06`, `08`–`12`, `14`. Ability detail: `05`, `07`, `08`, `10`. Runtime boundary: `13`. Handoff: `15`. diff --git a/Documentation/Archaeology/02-ProjectArchitecture.md b/Documentation/Archaeology/02-ProjectArchitecture.md index 11d58807..774ad40e 100644 --- a/Documentation/Archaeology/02-ProjectArchitecture.md +++ b/Documentation/Archaeology/02-ProjectArchitecture.md @@ -1,17 +1,19 @@ # 02 — Project Architecture -**Status: Draft** +**Status: Complete** - **Scope:** Project modules, targets, Build.cs dependencies, plugins (engine + project-local), gameplay-relevant configuration (maps, tags, input, networking, GAS-related settings), engine vs project boundaries. - **Inspection method:** Read-only inspection of `.uproject`, Target.cs, Build.cs, module startup, plugin descriptors, `Config/*.ini`, and PluginToolset (`ListEnabledPlugins`, `GetPluginInfo`, `IsEnabled`). - **Evidence classifications used:** Observed Implementation, Documented Intent, Inferred, Unknown. - **Tool or visibility limitations:** PluginToolset `ListEnabledPlugins` returns the full editor-enabled set (engine + project). No `OnlineSubsystem` / Steam settings found under `Config/` (Pass 4 reconfirmed). Map World Settings GameMode not in asset-registry tags — inferred from package dependencies. SemanticSearch not used. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; static content from Pass 4 + Pass 10 +- **Next pass expected to contribute:** Phase 2E (OSS/runtime config) when authorized -## Draft tracking +## Completion notes + +Static Phase 1 scope for this document is exhausted. Remaining items (OSS runtime defaults, JoinSession travel, live plugin usage) are **Requires Runtime Inspection** / Manual Editor — tracked in `13-Unknowns-And-RuntimeQuestions.md`. ### Completed sections - Module and target descriptors @@ -22,23 +24,12 @@ - CoreRedirects (GAS* → RIR* rename evidence) - **Pass 4:** Per-map GameMode via deps; GameDefaultMap/EditorStartupMap; GI unwired; OnlineSubsystem INI negative inventory; production AdvancedSessions node consumers -### Pending sections +### Deferred to runtime / Phase 2 - Confirmation of which other enabled engine plugins are referenced by live gameplay content - Runtime OnlineSubsystem default platform when INI keys absent - -### Evidence still required - Whether JoinSession travels without explicit ClientTravel pin - Steam runtime defaults -### Tool or visibility limitations -- Map World Settings GameMode tags unavailable; dependency inference used -- Full enabled-plugin list is large - -### Unknowns requiring later verification -- `GI_Dungeoneer` not assigned via `GameInstanceClass` and has 0 referencers — Present but Unconnected -- GlobalDefaultGameMode absent — per-map overrides only -- No project OnlineSubsystem INI under `Config/` - --- ## Pass 4 — Maps, GameModes, sessions, config (Batch 4D) diff --git a/Documentation/Archaeology/03-ClassHierarchy.md b/Documentation/Archaeology/03-ClassHierarchy.md index d1fd5457..8c5c6826 100644 --- a/Documentation/Archaeology/03-ClassHierarchy.md +++ b/Documentation/Archaeology/03-ClassHierarchy.md @@ -1,17 +1,19 @@ # 03 — Class Hierarchy -**Status: Draft** +**Status: Complete** - **Scope:** Native C++ hierarchy under `Source/REALMSINRUIN/` plus Blueprint parent chains, interfaces, and framework Blueprints inspected in Batch 2 Pass 3. - **Inspection method:** Batch 1 native reads; Batch 2 read-only AssetTools tags/deps + BlueprintTools graphs/events/variables; ObjectTools CDO properties. - **Evidence classifications used:** Observed Implementation, Documented Intent, Inferred, Unknown. - **Tool or visibility limitations:** Inherited Blueprint variables require querying each parent; CustomEvent FunctionFlags not exposed via ObjectTools; Gunslinger FiB/IsDataOnly anomaly. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close +- **Next pass expected to contribute:** Phase 2 when authorized -## Draft tracking +## Completion notes + +Static hierarchy archaeology for Phase 1 is complete. CommonUI usage, CustomEvent Reliability, and PIE possession remain **Requires Runtime Inspection** / Manual Editor (`13`). ### Completed sections - Full native class inventory (Batch 1) @@ -22,14 +24,6 @@ - **Pass 9:** Enemy EventGraphs empty; stock AIController; BPI partial; no BT/BB - **Pass 4/10:** Frontend PC/GM/GI roles; BPI_PlayerController `UpdatePlayerHUD`/`AddGold` unimplemented on `PC_Character`; EffectActor vs `BP_BasePickUp` hierarchies -### Pending sections -- CommonUI content usage -- Exact CustomEvent reliable flags - -### Evidence still required -- PIE possession of placed skeletons -- Whether any other class implements `AddGold` / `UpdatePlayerHUD` - --- ## Hierarchy overview diff --git a/Documentation/Archaeology/05-LegacyAbilityArchitecture.md b/Documentation/Archaeology/05-LegacyAbilityArchitecture.md index d5e0bf25..e90b0c41 100644 --- a/Documentation/Archaeology/05-LegacyAbilityArchitecture.md +++ b/Documentation/Archaeology/05-LegacyAbilityArchitecture.md @@ -1,17 +1,19 @@ # 05 — Legacy Ability Architecture -**Status: Draft** +**Status: Complete** - **Scope:** Shared `BP_PlayerCharacterBase` ability architecture (Batch 2) plus per-character Ability 001–004 connected-path reconstruction (Batch 3 Pass 6), qualified by animation-notify wiring (Batch 4A Pass 8) and Pass 7 legacy/GAS boundary clarification. - **Inspection method:** BlueprintTools connected subgraphs (Pass 6); AnimNotify `Received_Notify` DSL + montage dependency/referencer graphs (Pass 8); Pass 7 GAS GE/ASC inventory correlation. - **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. - **Tool or visibility limitations:** CustomEvent Reliable flags not exposed; Montage Notifies array / trigger times unreadable via ObjectTools; AnimGraph DSL empty. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 7 (Batch 4B) — boundary clarification only; ability tables unchanged -- **Next pass expected to contribute:** Pass 11 migration matrix / other Batch 4 passes when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — migration matrix in `07`; ability tables unchanged +- **Next pass expected to contribute:** Phase 2B/2C when authorized -## Draft tracking +## Completion notes + +Static ability archaeology is complete. Migration matrix: [`07-AbilityMigrationMatrix.md`](07-AbilityMigrationMatrix.md). Runtime CDO values, interrupt cleanup, notify times: [`13-Unknowns-And-RuntimeQuestions.md`](13-Unknowns-And-RuntimeQuestions.md). ### Completed sections - Shared input → Server RPC routing on base @@ -24,17 +26,7 @@ - Montage dependency seeds - **Pass 8:** UseAbility* callers resolved (`AN_Ability_001–004`); `AN_AttackComplete` cleanup; Pass 6 reclassification table in `10` - **Pass 7:** Legacy vs GAS dual-resource boundary clarified (no ability-graph GE/ASC usage) - -### Pending sections -- Cross-character migration matrix (Pass 11 → doc 07) -- Runtime verification of CDO damage/mana values (PIE) -- Interrupt cleanup if `AN_AttackComplete` skipped - -### Evidence still required -- Notify trigger times (Manual Editor Inspection) -- FCanUseMana implementation body (call sites only) -- Client_Charge timeline numeric details -- PIE: potion ASC Health vs DEPRECATED_CurrentHealth divergence +- **Pass 11:** Cross-character migration matrix → doc 07 --- diff --git a/Documentation/Archaeology/06-PartialGASArchitecture.md b/Documentation/Archaeology/06-PartialGASArchitecture.md index dcdad8c2..166e0713 100644 --- a/Documentation/Archaeology/06-PartialGASArchitecture.md +++ b/Documentation/Archaeology/06-PartialGASArchitecture.md @@ -1,50 +1,19 @@ # 06 — Partial GAS Architecture -**Status: Draft** +**Status: Complete** - **Scope:** Complete static archaeology of partial GAS: ASC ownership, AttributeSet, Gameplay Effects, tags, cues, grant/activation absence, EffectActor boundary, legacy/GAS resource conflict, enemy ASC accessor defect. - **Inspection method:** Native C++ read of all GAS-related Source/REALMSINRUIN files; AssetTools find/deps/refs; ObjectTools CDO properties / search_subclasses; BlueprintTools EventGraph DSL on consumable BPs; GameplayTagsToolset (read-only); prior Pass 5–8 ability/anim negative GAS results. - **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. - **Tool or visibility limitations:** `GameplayEffectComponents` array unreadable via ObjectTools (cues/component tags Unknown on GE CDOs); BlueprintGeneratedClass CDO sometimes rejects duration/modifier property names depending on load path — modifiers recovered via successful GE CDO queries on Default__ / generated class where available; no PIE. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 10 (Batch 4D) — Overlay bindings + EffectActor authority static pass -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; content through Pass 10 +- **Next pass expected to contribute:** Phase 2A (attribute SoT) when authorized -## Draft tracking +## Completion notes -### Completed sections -- ASC ownership + replication + InitAbilityActorInfo -- AttributeSet inventory, replication, constructor defaults, absence of PostGameplayEffectExecute -- Full project GE inventory (8 assets) with modifiers / duration / referencers -- Default-attribute GE matrix + orphan status -- Tag inventory from DefaultGameplayTags.ini + referencer status -- Gameplay Ability / grant / activation negative searches -- Gameplay Cue negative inventory -- EffectActor + consumable BP wiring -- Dual HUD path + stamina delegate type debt -- **Pass 10:** WBP_Overlay Health/Mana bindings only; no stamina widget; EffectActor no authority; UpdatePlayerHUD unimplemented on PC - -### Pending sections -- PIE: Overlay bars update on potion overlap; dual-resource display - -### Evidence still required -- PIE: EffectActor vs enemy GetASC null early-out impact -- Sphere collision GenerateOverlapEvents exact (tool limit) -- Dual HUD path + stamina delegate type debt -- Legacy vs GAS boundary table -- Enemy ASC compatibility table -- Subsystem status matrix - -### Pending sections -- Runtime ASC attribute values after spawn (PIE) -- Whether potion ApplyEffect succeeds on listen-server/client authority variants -- Full WBP_Overlay bar binding node walk (beyond native controller) - -### Evidence still required -- PIE: dual HUD coexistence; spawn Health/Mana vs native Init values -- PIE: EffectActor vs enemy GetASC null early-out impact -- Manual Editor: GE GameplayEffectComponents / cue slots if any +Static GAS archaeology for Phase 1 is complete (subsystem matrix, GE inventory, tags/cues negatives, dual-resource boundary, enemy GetASC). PIE Overlay/potion/authority tests deferred to doc `13`. --- diff --git a/Documentation/Archaeology/07-AbilityMigrationMatrix.md b/Documentation/Archaeology/07-AbilityMigrationMatrix.md new file mode 100644 index 00000000..bb94b9a5 --- /dev/null +++ b/Documentation/Archaeology/07-AbilityMigrationMatrix.md @@ -0,0 +1,1518 @@ +# 07 — Ability Migration Matrix + +**Status: Complete** + +- **Scope:** Final per-character and shared-system ability migration matrix for Phase 1 → Phase 2 handoff. Documentation only. +- **Inspection method:** Synthesis of docs `05`, `08`, `10`, `06`, `03`, `11`, `01`. No new Unreal archaeology except continuity. +- **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. +- **Tool or visibility limitations:** CustomEvent Reliability = Unknown — Tool Limitation; notify trigger times = Requires Manual Editor Inspection. +- **Last updated:** 2026-07-16 +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 +- **Next pass expected to contribute:** Phase 2A/2B when authorized + +--- + +## Disposition vocabulary (only) + +- Preserve behavior, migrate implementation +- Reconstruct legacy behavior first, then migrate +- Replace directly with GAS +- Replace directly with native/shared framework +- Retain as cosmetic-only path +- Remove obsolete or dead path +- Defer pending runtime validation +- Defer pending design decision + +--- + +## How to read rows + +Every row fills all required fields. Where a value does not apply: `Not applicable`. Where static tools cannot resolve: `Unknown — Tool Limitation` or `Requires Runtime Inspection`. Where no interaction exists: `None observed`. + +**Network path shorthand:** `Client IA → Server_Ability_*_Begin → [child] → Multicast_PlayMontage → AN → Authority UseAbility* / SetIsAttacking`. + +**Shared parent path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/BP_PlayerCharacterBase` + +--- + +## Shared systems + +### S1 — BP_PlayerCharacterBase input routing + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | shared | +| Current status | Active | +| Exact entry point | IA_Ability_001–004 Started → Server_Ability_N_Begin; Completed/Canceled → Server_Ability_N_End | +| Parent behavior | Not applicable (root BP of playables) | +| Network path | Client Enhanced Input → Server custom events | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable at routing layer | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | Routes to Begin/End only | +| Authority location | Server (Begin/End events) | +| Animation dependency | None observed at routing layer | +| Cleanup/end behavior | End events exist; base bodies empty | +| Connected assets | `/Game/_Main/Blueprints/Player/Inputs/` IMC/IA deps on base | +| Deprecated dependencies | None observed at routing layer | +| GAS interaction | None observed | +| Known static defect | None at routing; Ends mostly empty (Incomplete Refactor) | +| Runtime question | Requires Runtime Inspection — input binding completeness per class | +| Migration disposition | Replace directly with native/shared framework | +| Prerequisites | Phase 2A SoT; 2B activation contract | +| Migration complexity | Medium | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05 Shared architecture; 08 Ability flow | + +### S2 — Base Ability 001–004 Begin stubs + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | 001–004 Begin | +| Current status | Stub | +| Exact entry point | Server_Ability_001–004_Begin | +| Parent behavior | Not applicable | +| Network path | Client IA → Server Begin → PrintString `"Override Ability N"` | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | BP_PlayerCharacterBase EventGraph | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub used by Wizard/Gunslinger/Amazonian 002–004 | +| Runtime question | Not applicable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B shared activation | +| Migration complexity | Low | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Shared architecture | + +### S3 — Base Ability 001–004 End stubs + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | 001–004 End | +| Current status | Stub | +| Exact entry point | Server_Ability_001–004_End | +| Parent behavior | Not applicable | +| Network path | Client IA Completed/Canceled → Server End → then unconnected | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Missing (empty) | +| Connected assets | BP_PlayerCharacterBase EventGraph | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Incomplete Refactor — cleanup via AN_AttackComplete instead | +| Runtime question | Requires Runtime Inspection — release-cancel mid-ability | +| Migration disposition | Replace directly with native/shared framework | +| Prerequisites | 2B cleanup contract | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Shared architecture; 10 cleanup | + +### S4 — Multicast_PlayMontage + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | shared | +| Current status | Active | +| Exact entry point | Multicast_PlayMontage | +| Parent behavior | Not applicable | +| Network path | Server child → Multicast → PlayMontage on Mesh | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | Montage playback; enables AnimNotifies | +| Authority location | Multicast (presentation); gameplay via notify Authority gates | +| Animation dependency | Caller-supplied montage asset | +| Cleanup/end behavior | OnCompleted/OnBlendOut/OnInterrupted **unwired** | +| Connected assets | BP_PlayerCharacterBase; character montages | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Networking Risk — gameplay depends on notify evaluation; interrupt may skip AN_AttackComplete | +| Runtime question | Requires Runtime Inspection — interrupt cleanup; server notify fire | +| Migration disposition | Replace directly with native/shared framework | +| Prerequisites | 2B authority/cleanup contracts | +| Migration complexity | High | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05; 10 Shared animation architecture | + +### S5 — PlaySFX + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | shared | +| Current status | Active | +| Exact entry point | Multicast_PlaySFX / PlaySFX helper | +| Parent behavior | Not applicable | +| Network path | Server/caller → Multicast SFX | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | Audio presentation | +| Authority location | Multicast / client presentation | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | BP_PlayerCharacterBase | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | None observed | +| Runtime question | Requires Runtime Inspection — audibility on clients | +| Migration disposition | Retain as cosmetic-only path | +| Prerequisites | None observed | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Shared architecture | + +### S6 — Multi_SpawnParticle + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | shared | +| Current status | Partial | +| Exact entry point | Multi_SpawnParticle | +| Parent behavior | Not applicable | +| Network path | Multicast particle spawn | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | Particle presentation | +| Authority location | Multicast | +| Animation dependency | Optional with ability montages | +| Cleanup/end behavior | Not applicable | +| Connected assets | BP_PlayerCharacterBase; callers Paladin 004 / Cleric 002 with **empty EmitterTemplate** | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Partially Implemented FX hole on Paladin 004 / Cleric 002 | +| Runtime question | Requires Runtime Inspection — particle visibility | +| Migration disposition | Retain as cosmetic-only path | +| Prerequisites | Per-ability FX asset assignment | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Authority findings | + +### S7 — PlayerDeath + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase | +| Slot | death | +| Current status | Active | +| Exact entry point | PlayerDeath; Client_PlayerDeath; HandleDeath | +| Parent behavior | Not applicable | +| Network path | Server death → Client_PlayerDeath presentation | +| Reliability | Unknown — Tool Limitation | +| Validation | IsDead / health checks (call-site dependent) | +| Resource source | DEPRECATED health where callers write it (Amazonian AnyDamage) | +| Cost mutation | Sets IsDead / death presentation | +| Gameplay output | Death state; ABP IsDead → Death | +| Authority location | Server + Client presentation | +| Animation dependency | ABP Death states (per character) | +| Cleanup/end behavior | Server_RespawnPlayer path exists | +| Connected assets | BP_PlayerCharacterBase; character ABPs | +| Deprecated dependencies | DEPRECATED_CurrentHealth (Amazonian inbound) | +| GAS interaction | None observed (ASC Health not bridged) | +| Known static defect | Incomplete Refactor — dual health sources | +| Runtime question | Requires Runtime Inspection — death reachability vs ASC Health | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A shared death/damage SoT | +| Migration complexity | High | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05; 08; 06 | + +### S8 — Server_RespawnPlayer + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase / PC_Character | +| Slot | death | +| Current status | Active but Unverified | +| Exact entry point | Server_RespawnPlayer; PlayerRespawn BPI | +| Parent behavior | Not applicable | +| Network path | Server respawn | +| Reliability | Unknown — Tool Limitation | +| Validation | Not fully inventoried beyond event presence | +| Resource source | Requires Runtime Inspection | +| Cost mutation | Requires Runtime Inspection | +| Gameplay output | Respawn pawn/location | +| Authority location | Server | +| Animation dependency | Not applicable | +| Cleanup/end behavior | HUD re-init expected via Possessed delay path | +| Connected assets | BP_PlayerCharacterBase; PC_Character | +| Deprecated dependencies | Possible DEPRECATED HUD re-init | +| GAS interaction | None observed | +| Known static defect | Requires Runtime Inspection for attribute reset | +| Runtime question | Requires Runtime Inspection — Overlay recreation after respawn | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A death + 2E HUD | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | Medium | +| Evidence source | 03 PC_Character; 08 Possessed; 11 | + +### S9 — Legacy resource validation + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase + children | +| Slot | shared | +| Current status | Deprecated but Connected | +| Exact entry point | FCanUseMana; DEPRECATED_*ManaCost / Damage / Health comparisons | +| Parent behavior | Inherited by children | +| Network path | Server ability bodies | +| Reliability | Not applicable | +| Validation | Gate !CurrentlyAttacking && !IsDead; FCanUseMana (where wired) | +| Resource source | DEPRECATED_* floats | +| Cost mutation | Subtract/compare DEPRECATED mana/health | +| Gameplay output | Gate ability execution | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | BP_PlayerCharacterBase variables | +| Deprecated dependencies | All DEPRECATED_* resource vars | +| GAS interaction | None observed — ASC not read | +| Known static defect | Incomplete Refactor — dual with ASC | +| Runtime question | Requires Runtime Inspection — potion ASC vs DEPRECATED combat | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A canonical SoT | +| Migration complexity | Very High | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05 Resource inventory; 06 boundary | + +### S10 — Legacy HUD update + +| Field | Content | +|-------|---------| +| Character/system | BP_PlayerCharacterBase → BPI_PlayerController | +| Slot | HUD | +| Current status | Present but Unconnected | +| Exact entry point | Server_UpdateHUD → UpdatePlayerHUD | +| Parent behavior | Base calls; Amazonian after damage | +| Network path | Server → PC UpdatePlayerHUD | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED health/mana % | +| Cost mutation | None observed | +| Gameplay output | Intended HUD refresh — **receiver unimplemented** | +| Authority location | Server caller; PC receiver missing | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | BP_PlayerCharacterBase; BPI_PlayerController; PC_Character | +| Deprecated dependencies | DEPRECATED health/mana | +| GAS interaction | Conflicts with Overlay ASC path — no sync | +| Known static defect | Incomplete Refactor — UpdatePlayerHUD bIsImplemented=false | +| Runtime question | Requires Runtime Inspection — confirm no-op | +| Migration disposition | Remove obsolete or dead path | +| Prerequisites | 2A SoT + Overlay consolidation | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05; 11; 03 | + +### S11 — AnimNotify UseAbility routing + +| Field | Content | +|-------|---------| +| Character/system | Shared AN_Ability_001–004 | +| Slot | shared | +| Current status | Active | +| Exact entry point | AN_Ability_00N Received_Notify → BPI UseAbility00N(GetOwner) | +| Parent behavior | Not applicable | +| Network path | Multicast montage → notify on evaluating machines → Authority Switch in UseAbility* | +| Reliability | Not applicable (notify) | +| Validation | Inside UseAbility* Authority gates | +| Resource source | Per-ability DEPRECATED damage/heal | +| Cost mutation | Per-ability | +| Gameplay output | Damage / heal / spawn | +| Authority location | Notify may fire multi-machine; gameplay Authority-gated | +| Animation dependency | Montage embedded notifies | +| Cleanup/end behavior | Paired with AN_AttackComplete | +| Connected assets | `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterRelated/AN_Ability_001`–`004` | +| Deprecated dependencies | Per-ability DEPRECATED damage | +| GAS interaction | None observed | +| Known static defect | Networking Risk — server must evaluate montage notifies | +| Runtime question | Requires Runtime Inspection — multi-machine duplicate fire | +| Migration disposition | Replace directly with native/shared framework | +| Prerequisites | 2B hit-window contract | +| Migration complexity | High | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 10 AnimNotify inventory; 05 Pass 8 note | + +### S12 — AN_AttackComplete cleanup + +| Field | Content | +|-------|---------| +| Character/system | Shared AN_AttackComplete | +| Slot | shared | +| Current status | Active | +| Exact entry point | AN_AttackComplete → BPI SetIsAttacking → Authority clears CurrentlyAttacking / CanMove | +| Parent behavior | Not applicable | +| Network path | Multicast montage notify → Authority SetIsAttacking | +| Reliability | Not applicable | +| Validation | Authority | +| Resource source | Not applicable | +| Cost mutation | Clears CurrentlyAttacking | +| Gameplay output | Attack lockout release | +| Authority location | Authority inside SetIsAttacking | +| Animation dependency | Must fire at montage end notify | +| Cleanup/end behavior | Primary cleanup for notify-driven attacks | +| Connected assets | `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterRelated/AN_AttackComplete` | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | If interrupt skips notify, CurrentlyAttacking may stick (Inferred) | +| Runtime question | Requires Runtime Inspection — interrupted montage cleanup | +| Migration disposition | Replace directly with native/shared framework | +| Prerequisites | 2B interruption rules | +| Migration complexity | Medium | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 10; 05 | + +--- + +## Player_Paladin + +**Path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Paladin/Player_Paladin` + +### P-001 — Ability 001 + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | 001 | +| Current status | Implemented | +| Exact entry point | Server_Ability_001_Begin; UseAbility001 via AN_Ability_001 | +| Parent behavior | Bypassed (no Parent call) | +| Network path | Client IA → Server Begin → Multicast_PlayMontage → AN_Ability_001 → Authority BoxOverlap ApplyDamage | +| Reliability | Unknown — Tool Limitation | +| Validation | NOT CurrentlyAttacking AND NOT IsDead | +| Resource source | None (no mana cost) | +| Cost mutation | None observed | +| Gameplay output | ApplyDamage(DEPRECATED_Ability001Damage) | +| Authority location | Server Begin; Authority UseAbility001 | +| Animation dependency | Attack_A/B/C/D_Fast_Montage + AN_Ability_001 + AN_AttackComplete | +| Cleanup/end behavior | AN_AttackComplete; no local End | +| Connected assets | `.../Paladin/AnimMontages/Attack_{A,B,C,D}_Fast_Montage`; AN_Ability_001; AN_AttackComplete | +| Deprecated dependencies | DEPRECATED_Ability001Damage | +| GAS interaction | None observed | +| Known static defect | No enemy health consumer (enemy-side defect); interrupt cleanup risk | +| Runtime question | Requires Runtime Inspection — hit registration vs enemy | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | 2A damage SoT; 2B framework; enemy reception for end-to-end | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Player_Paladin; 10 | + +### P-002 — Ability 002 + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | 002 | +| Current status | Partial | +| Exact entry point | Server_Ability_002_Begin; Server_Ability_002_End | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin (block state); End clears state | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate attacking/dead | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | IsBlocking true; ABP Block; **hit absorb untraced** | +| Authority location | Server | +| Animation dependency | ABP_Paladin Block via IsBlocking (no Montage) | +| Cleanup/end behavior | Server_Ability_002_End clears attacking/CanMove/IsBlocking | +| Connected assets | `/Game/_Main/Animations/PlayerCharacters/Human/CharacterClasses/Paladin/ABP_Paladin` | +| Deprecated dependencies | None observed | +| GAS interaction | None observed (State.Blocking tag unused) | +| Known static defect | Partial — presentation only | +| Runtime question | Requires Runtime Inspection — does block absorb damage? | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A damage rules; design for block absorb | +| Migration complexity | High | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 Paladin Ability 002; 10 | + +### P-003 — Ability 003 + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | 003 | +| Current status | Implemented | +| Exact entry point | Server_Ability_003_Begin; Charge; Client_Charge; ChargeBox overlap | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → FCanUseMana → Charge + Client_Charge; ChargeBox Authority ApplyDamage | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate + FCanUseMana | +| Resource source | DEPRECATED_Ability003ManaCost | +| Cost mutation | FCanUseMana / DEPRECATED mana | +| Gameplay output | ApplyDamage(DEPRECATED_Ability003Damage) via ChargeBox | +| Authority location | Server + Client_Charge presentation | +| Animation dependency | ChargeTimeline (not Montage); ABP Charge via IsCharging | +| Cleanup/end behavior | Not notify-driven; timeline/end path | +| Connected assets | Player_Paladin Charge nodes; ABP_Paladin | +| Deprecated dependencies | DEPRECATED_Ability003ManaCost; DEPRECATED_Ability003Damage | +| GAS interaction | None observed | +| Known static defect | Client_Charge numeric details Unknown — Tool Limitation | +| Runtime question | Requires Runtime Inspection — charge distance/damage timing | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | 2A mana SoT; 2B | +| Migration complexity | High | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Paladin Ability 003 | + +### P-004 — Ability 004 + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | 004 | +| Current status | Implemented | +| Exact entry point | Server_Ability_004_Begin; UseAbility004 via AN_Ability_004 | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → FCanUseMana → Multicast_PlayMontage → AN → Authority AoE | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate + FCanUseMana | +| Resource source | DEPRECATED_Ability004ManaCost | +| Cost mutation | FCanUseMana | +| Gameplay output | Authority AoE ApplyDamage(DEPRECATED_Ability004Damage); empty particle | +| Authority location | Server Begin; Authority UseAbility004 | +| Animation dependency | Paladin_Ability004_Montage; AN_Ability_004; AN_AttackComplete; NS_Paladin_Ability004 may exist on montage | +| Cleanup/end behavior | AN_AttackComplete | +| Connected assets | `.../Paladin/AnimMontages/Abilities/Paladin_Ability004_Montage` | +| Deprecated dependencies | DEPRECATED_Ability004ManaCost; DEPRECATED_Ability004Damage | +| GAS interaction | None observed | +| Known static defect | Multi_SpawnParticle EmitterTemplate empty (FX hole) | +| Runtime question | Requires Runtime Inspection — AoE radius/damage | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | 2A; 2B; optional FX fill | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Paladin Ability 004; 10 | + +### P-melee — Basic attack + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | melee | +| Current status | Implemented | +| Exact entry point | Same as Ability 001 | +| Parent behavior | Bypassed | +| Network path | Same as Ability 001 | +| Reliability | Unknown — Tool Limitation | +| Validation | Same as Ability 001 | +| Resource source | None | +| Cost mutation | None observed | +| Gameplay output | Same as Ability 001 | +| Authority location | Same as Ability 001 | +| Animation dependency | Same as Ability 001 | +| Cleanup/end behavior | Same as Ability 001 | +| Connected assets | Same as Ability 001 | +| Deprecated dependencies | DEPRECATED_Ability001Damage | +| GAS interaction | None observed | +| Known static defect | Same as Ability 001 | +| Runtime question | Same as Ability 001 | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | Same as Ability 001 | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Basic attack =001 | + +### P-passive — Passive + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | passive | +| Current status | Missing | +| Exact entry point | None observed | +| Parent behavior | Not applicable | +| Network path | Not applicable | +| Reliability | Not applicable | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Not applicable | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | None observed | +| Runtime question | Not applicable | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design decision | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Passive Missing | + +### P-death — Death + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | death | +| Current status | Inherited | +| Exact entry point | Inherited PlayerDeath (no local AnyDamage) | +| Parent behavior | Inherited | +| Network path | Base death path | +| Reliability | Unknown — Tool Limitation | +| Validation | Base | +| Resource source | DEPRECATED health if damaged via shared path | +| Cost mutation | Base | +| Gameplay output | Base death | +| Authority location | Server | +| Animation dependency | ABP_Paladin Death | +| Cleanup/end behavior | Base respawn | +| Connected assets | ABP_Paladin | +| Deprecated dependencies | Possible DEPRECATED health | +| GAS interaction | None observed | +| Known static defect | Dual health SoT | +| Runtime question | Requires Runtime Inspection — how Paladin takes lethal damage | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | Medium | +| Evidence source | 05 Death Inherited | + +### P-HUD — HUD/resource integration + +| Field | Content | +|-------|---------| +| Character/system | Paladin | +| Slot | HUD | +| Current status | Inherited | +| Exact entry point | Inherited Server_UpdateHUD; native InitOverlay | +| Parent behavior | Inherited | +| Network path | Base DEPRECATED path + ASC Overlay | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED floats + ASC attrs | +| Cost mutation | None observed | +| Gameplay output | Dual unsynchronized UI paths | +| Authority location | Mixed | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | WBP_Overlay; WBP_PlayerHUD | +| Deprecated dependencies | DEPRECATED health/mana | +| GAS interaction | Overlay ASC only | +| Known static defect | Dual HUD Incomplete Refactor | +| Runtime question | Requires Runtime Inspection — Overlay vs combat resources | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; 2E HUD | +| Migration complexity | High | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05; 06; 11 | + +--- + +## Player_Amazonian + +**Path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Amazonian/Player_Amazonian` + +### A-001 — Ability 001 + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | 001 | +| Current status | Implemented | +| Exact entry point | Server_Ability_001_Begin; UseAbility001 via AN_Ability_001 | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → Multicast_PlayMontage → AN → Authority BoxOverlap ApplyDamage | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate attacking/dead | +| Resource source | None | +| Cost mutation | None observed | +| Gameplay output | ApplyDamage(DEPRECATED_Ability001Damage) | +| Authority location | Server Begin; Authority UseAbility001 | +| Animation dependency | A_Hu_F_Combat_2H_Attack* montages; AN_Ability_001; AN_AttackComplete | +| Cleanup/end behavior | AN_AttackComplete | +| Connected assets | `.../Amazon/AnimMontages/A_Hu_F_Combat_2H_Attack01_Montage` (+ Attack02, Attack_Base, Attack) | +| Deprecated dependencies | DEPRECATED_Ability001Damage | +| GAS interaction | None observed | +| Known static defect | Interrupt cleanup risk; enemy reception missing for end-to-end | +| Runtime question | Observed Runtime Behavior: known working melee — preserve as reference | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | 2A; 2B — use as Phase 2C reference | +| Migration complexity | Medium | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05 Amazonian; 08 Observed Runtime Behavior | + +### A-002 — Ability 002 + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | 002 | +| Current status | Stub | +| Exact entry point | Inherited Server_Ability_002_Begin | +| Parent behavior | Inherited stub | +| Network path | Client IA → Server PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Base empty End | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub | +| Runtime question | Not applicable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B; design decision for slot content | +| Migration complexity | Low | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 Amazonian 002–004 Stub | + +### A-003 — Ability 003 + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | 003 | +| Current status | Stub | +| Exact entry point | Inherited Server_Ability_003_Begin | +| Parent behavior | Inherited stub | +| Network path | Client IA → Server PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Base empty End | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub; PerformingWhirlwind may have been intended (Present but Unconnected) | +| Runtime question | Defer pending design decision — whirlwind intent | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B; design for whirlwind | +| Migration complexity | Low | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05; whirlwind note | + +### A-004 — Ability 004 + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | 004 | +| Current status | Stub | +| Exact entry point | Inherited Server_Ability_004_Begin | +| Parent behavior | Inherited stub | +| Network path | Client IA → Server PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Base empty End | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub | +| Runtime question | Not applicable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B; design decision | +| Migration complexity | Low | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 Amazonian Stub | + +### A-melee — Basic attack + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | melee | +| Current status | Implemented | +| Exact entry point | Same as Ability 001 | +| Parent behavior | Bypassed | +| Network path | Same as Ability 001 | +| Reliability | Unknown — Tool Limitation | +| Validation | Same as Ability 001 | +| Resource source | None | +| Cost mutation | None observed | +| Gameplay output | Same as Ability 001 | +| Authority location | Same as Ability 001 | +| Animation dependency | Same as Ability 001 | +| Cleanup/end behavior | Same as Ability 001 | +| Connected assets | Same as Ability 001 | +| Deprecated dependencies | DEPRECATED_Ability001Damage | +| GAS interaction | None observed | +| Known static defect | Same as Ability 001 | +| Runtime question | Observed Runtime Behavior: known working | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | Same as Ability 001 | +| Migration complexity | Medium | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05; 08 | + +### A-passive — Passive / Whirlwind + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | passive | +| Current status | Partial | +| Exact entry point | PerformingWhirlwind Get (AnyDamage gate); never Set | +| Parent behavior | Not applicable | +| Network path | None observed for activation | +| Reliability | Not applicable | +| Validation | PlayerHitCheck when whirlwind (getter only) | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed (setter unconnected) | +| Authority location | Unknown — never activated | +| Animation dependency | Not in AnimBP/montages | +| Cleanup/end behavior | Missing | +| Connected assets | Player_Amazonian variable only | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Present but Unconnected setter | +| Runtime question | Defer pending design decision | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design; then reconstruct or remove | +| Migration complexity | Medium | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Whirlwind; 10 | + +### A-death — Death + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | death | +| Current status | Partial | +| Exact entry point | ReceiveAnyDamage → subtract DEPRECATED_CurrentHealth → Server_UpdateHUD → PlayerDeath if ≤0 | +| Parent behavior | Local override path to base PlayerDeath | +| Network path | Damage → local health → PlayerDeath | +| Reliability | Unknown — Tool Limitation | +| Validation | PlayerHitCheck when whirlwind | +| Resource source | DEPRECATED_CurrentHealth | +| Cost mutation | Writes DEPRECATED_CurrentHealth | +| Gameplay output | Death when ≤0 | +| Authority location | Server/local AnyDamage path | +| Animation dependency | ABP_Amazon Death | +| Cleanup/end behavior | Base | +| Connected assets | Player_Amazonian ReceiveAnyDamage; ABP_Amazon | +| Deprecated dependencies | DEPRECATED_CurrentHealth | +| GAS interaction | None observed — ASC Health unsynced | +| Known static defect | Partial legacy health; dual SoT | +| Runtime question | Requires Runtime Inspection — ASC vs DEPRECATED death | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A SoT | +| Migration complexity | High | +| Priority | P0 | +| Evidence confidence | High | +| Evidence source | 05 Amazonian Death | + +### A-HUD — HUD/resource integration + +| Field | Content | +|-------|---------| +| Character/system | Amazonian | +| Slot | HUD | +| Current status | Active | +| Exact entry point | Server_UpdateHUD after damage; native InitOverlay | +| Parent behavior | Calls shared base HUD | +| Network path | Server_UpdateHUD (receiver unimplemented) + Overlay | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED health + ASC | +| Cost mutation | None observed | +| Gameplay output | Dual path; legacy receiver dead | +| Authority location | Mixed | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | WBP_Overlay; base HUD | +| Deprecated dependencies | DEPRECATED_CurrentHealth | +| GAS interaction | Overlay ASC | +| Known static defect | UpdatePlayerHUD unimplemented | +| Runtime question | Requires Runtime Inspection | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; 2E | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Amazonian HUD Active; 11 | + +--- + +## Player_Cleric + +**Path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Cleric/Player_Cleric` + +### C-001 — Ability 001 + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | 001 | +| Current status | Partial | +| Exact entry point | Server_Ability_001_Begin; AN_Ability_001 → UseAbility001 **unimplemented** | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → Multicast_PlayMontage → AN (dead receiver) | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate attacking/dead; CanMove false | +| Resource source | None | +| Cost mutation | None observed | +| Gameplay output | Montage only — no hit | +| Authority location | Server Begin | +| Animation dependency | Cleric_PrimaryAttack_* montages; AN_Ability_001; AN_AttackComplete | +| Cleanup/end behavior | AN_AttackComplete still clears attacking | +| Connected assets | Cleric primary attack montages; AN_Ability_001 | +| Deprecated dependencies | None for damage (missing) | +| GAS interaction | None observed | +| Known static defect | Notify Present; Receiver Unimplemented | +| Runtime question | Requires Runtime Inspection — montage-only feel | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | Implement UseAbility001 or redesign; 2B | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Cleric Ability 001; 10 | + +### C-002 — Ability 002 + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | 002 | +| Current status | Partial | +| Exact entry point | Server_Ability_002_Begin; UseAbility002 via AN_Ability_002 | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → FCanUseMana → Multicast → AN → Authority heal | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate + FCanUseMana | +| Resource source | DEPRECATED_Ability002ManaCost | +| Cost mutation | FCanUseMana | +| Gameplay output | RecoverPlayerHealth(DEPRECATED_Ability002Damage as heal amount); empty particle | +| Authority location | Authority UseAbility002 | +| Animation dependency | Cleric_Ability002_Montage; AN_Ability_002; AN_AttackComplete | +| Cleanup/end behavior | AN_AttackComplete | +| Connected assets | `.../Cleric/AnimMontages/Abilities/Cleric_Ability002_Montage` | +| Deprecated dependencies | DEPRECATED_Ability002ManaCost; DEPRECATED_Ability002Damage; DEPRECATED_RecoverPlayerHealth | +| GAS interaction | None observed | +| Known static defect | FX hole (empty particle) | +| Runtime question | Requires Runtime Inspection — heal amount / target | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A heal SoT; 2B | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Cleric Ability 002 | + +### C-003 — Ability 003 + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | 003 | +| Current status | Implemented | +| Exact entry point | Server_Ability_003_Begin/End; ConcentrateHandle; EndConcentrate | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → mana≥cost → DivineCircleActive + SetTimer 0.25 ConcentrateHandle → ApplyDamage; End → EndConcentrate | +| Reliability | Unknown — Tool Limitation | +| Validation | Mana≥cost | +| Resource source | DEPRECATED_Ability003ManaCost | +| Cost mutation | Mana compare/cost | +| Gameplay output | ApplyDamage in timer; ABP Divine Circle | +| Authority location | Server timer | +| Animation dependency | Cleric_Ability003_Montage (timer byproduct); ABP Divine Circle; **AN_Ability_003 vestigial** | +| Cleanup/end behavior | Server_Ability_003_End → EndConcentrate | +| Connected assets | Cleric_Ability003_Montage; ABP_Cleric | +| Deprecated dependencies | DEPRECATED_Ability003ManaCost; damage vars | +| GAS interaction | None observed | +| Known static defect | AN_Ability_003 → UseAbility003 dead/vestigial | +| Runtime question | Requires Runtime Inspection — tick damage rate | +| Migration disposition | Preserve behavior, migrate implementation | +| Prerequisites | 2A; 2B; remove vestigial notify or wire intentionally | +| Migration complexity | High | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Cleric Ability 003; 10 | + +### C-004 — Ability 004 + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | 004 | +| Current status | Partial | +| Exact entry point | Server_Ability_004_Begin; UseAbility004 via AN_Ability_004 | +| Parent behavior | Bypassed | +| Network path | Client IA → Server Begin → FCanUseMana called but Branch Condition=**literal true** → Multicast → AN → SpawnActor | +| Reliability | Unknown — Tool Limitation | +| Validation | Gate; mana bypassed | +| Resource source | DEPRECATED_Ability004ManaCost **unused** | +| Cost mutation | Bypassed (literal true) | +| Gameplay output | SpawnActor Class **empty** — broken | +| Authority location | Authority UseAbility004 | +| Animation dependency | Cleric_Ability004_Montage; AN_Ability_004; AN_AttackComplete | +| Cleanup/end behavior | AN_AttackComplete | +| Connected assets | Cleric_Ability004_Montage | +| Deprecated dependencies | DEPRECATED_Ability004ManaCost unused | +| GAS interaction | None observed | +| Known static defect | Existing Baseline Defect — mana bypass + empty SpawnActor | +| Runtime question | Requires Runtime Inspection — confirms no projectile | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | Design projectile class; fix mana gate; 2B | +| Migration complexity | High | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Cleric Ability 004 | + +### C-melee — Basic attack + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | melee | +| Current status | Partial | +| Exact entry point | Ability 001 montage path | +| Parent behavior | Bypassed | +| Network path | Same as Ability 001 | +| Reliability | Unknown — Tool Limitation | +| Validation | Same as Ability 001 | +| Resource source | None | +| Cost mutation | None observed | +| Gameplay output | Missing hit | +| Authority location | Server Begin only | +| Animation dependency | PrimaryAttack montages | +| Cleanup/end behavior | AN_AttackComplete | +| Connected assets | Cleric_PrimaryAttack_* | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Same as Ability 001 | +| Runtime question | Requires Runtime Inspection | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | Same as Ability 001 | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05 Basic attack Partial | + +### C-passive — Passive + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | passive | +| Current status | Missing | +| Exact entry point | None observed | +| Parent behavior | Not applicable | +| Network path | Not applicable | +| Reliability | Not applicable | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Not applicable | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | Unused locals EnemyFound/ClosestEnemy/IsBlocking declared | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Unused locals (Technical Debt) | +| Runtime question | Not applicable | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Passive Missing | + +### C-death — Death + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | death | +| Current status | Inherited | +| Exact entry point | Inherited PlayerDeath | +| Parent behavior | Inherited | +| Network path | Base | +| Reliability | Unknown — Tool Limitation | +| Validation | Base | +| Resource source | Base DEPRECATED/ASC dual | +| Cost mutation | Base | +| Gameplay output | Base death | +| Authority location | Server | +| Animation dependency | ABP_Cleric Death | +| Cleanup/end behavior | Base | +| Connected assets | ABP_Cleric | +| Deprecated dependencies | Possible DEPRECATED health | +| GAS interaction | None observed | +| Known static defect | Dual SoT | +| Runtime question | Requires Runtime Inspection | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A | +| Migration complexity | Medium | +| Priority | P1 | +| Evidence confidence | Medium | +| Evidence source | 05 Death Inherited | + +### C-HUD — HUD/resource integration + +| Field | Content | +|-------|---------| +| Character/system | Cleric | +| Slot | HUD | +| Current status | Inherited | +| Exact entry point | Inherited Server_UpdateHUD; InitOverlay | +| Parent behavior | Inherited | +| Network path | Dual path | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED + ASC | +| Cost mutation | None observed | +| Gameplay output | Dual unsynchronized | +| Authority location | Mixed | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | WBP_Overlay; GE_Cleric_DefaultAttributes **0 referencers** | +| Deprecated dependencies | DEPRECATED mana/health | +| GAS interaction | Overlay ASC; orphan GE | +| Known static defect | Dual HUD; orphan default GE | +| Runtime question | Requires Runtime Inspection | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; 2E | +| Migration complexity | High | +| Priority | P1 | +| Evidence confidence | High | +| Evidence source | 05; 06; 11 | + +--- + +## Player_Wizard + +**Path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Wizard/Player_Wizard` + +### W-001 through W-004 — Abilities (identical stub profile) + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | 001 / 002 / 003 / 004 (same) | +| Current status | Stub | +| Exact entry point | Inherited Server_Ability_*_Begin only | +| Parent behavior | Inherited | +| Network path | Client IA → Server PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed (no Wizard ability montages) | +| Cleanup/end behavior | Base empty End | +| Connected assets | None for abilities; Present but Unconnected: NS_Wizard_Ability001, GE_Wizard_DefaultAttributes, BP_PlayerProjectile | +| Deprecated dependencies | None in ability graphs | +| GAS interaction | None observed (orphan GE not applied) | +| Known static defect | No Server_Ability child implementations | +| Runtime question | Defer pending design decision — do not infer from orphans | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B; design decision for spell kit | +| Migration complexity | High | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 Player_Wizard | + +### W-melee — Basic attack + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | melee | +| Current status | Stub | +| Exact entry point | Inherited Ability 001 stub | +| Parent behavior | Inherited | +| Network path | PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Base empty End | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub | +| Runtime question | Not applicable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | 2B; design | +| Migration complexity | Medium | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 | + +### W-passive — Passive + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | passive | +| Current status | Missing | +| Exact entry point | None observed | +| Parent behavior | Not applicable | +| Network path | Not applicable | +| Reliability | Not applicable | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Not applicable | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | Unused locals EnemyFound, IsBlocking, ClosestEnemy | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Unused locals | +| Runtime question | Not applicable | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 | + +### W-death — Death + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | death | +| Current status | Inherited | +| Exact entry point | Inherited PlayerDeath; BeginPlay **no Parent** (skips InitialSpawnLocation) | +| Parent behavior | Tick/Overlap call Parent; BeginPlay bypasses | +| Network path | Base | +| Reliability | Unknown — Tool Limitation | +| Validation | Base | +| Resource source | Base | +| Cost mutation | Base | +| Gameplay output | Base death | +| Authority location | Server | +| Animation dependency | ABP_Wizard Death | +| Cleanup/end behavior | Base | +| Connected assets | ABP_Wizard | +| Deprecated dependencies | Possible DEPRECATED health | +| GAS interaction | None observed | +| Known static defect | BeginPlay skips Parent InitialSpawnLocation | +| Runtime question | Requires Runtime Inspection — respawn location | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; fix BeginPlay Parent call | +| Migration complexity | Medium | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05; 08 Wizard BeginPlay | + +### W-HUD — HUD/resource integration + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | HUD | +| Current status | Inherited | +| Exact entry point | Inherited dual HUD | +| Parent behavior | Inherited | +| Network path | Dual path | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED + ASC | +| Cost mutation | None observed | +| Gameplay output | Dual unsynchronized | +| Authority location | Mixed | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | WBP_Overlay; GE_Wizard_DefaultAttributes unreferenced | +| Deprecated dependencies | DEPRECATED floats | +| GAS interaction | Overlay ASC | +| Known static defect | Dual HUD; orphan GE | +| Runtime question | Requires Runtime Inspection | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; 2E | +| Migration complexity | Medium | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05; 06 | + +### W-orphans — Unconnected spell content (not ability slots) + +| Field | Content | +|-------|---------| +| Character/system | Wizard | +| Slot | shared (orphans) | +| Current status | Present but Unconnected | +| Exact entry point | None observed | +| Parent behavior | Not applicable | +| Network path | Not applicable | +| Reliability | Not applicable | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Not applicable | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | NS_Wizard_Ability001; GE_Wizard_DefaultAttributes; BP_PlayerProjectile | +| Deprecated dependencies | None observed | +| GAS interaction | Orphan GE Present but Unreferenced | +| Known static defect | Must not define final ability from these alone | +| Runtime question | Defer pending design decision | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design review | +| Migration complexity | Medium | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 Unwired assets | + +--- + +## Player_Gunslinger + +**Path:** `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Gunslinger/Player_Gunslinger` + +### G-001 through G-004 — Abilities + +| Field | Content | +|-------|---------| +| Character/system | Gunslinger | +| Slot | 001 / 002 / 003 / 004 (same) | +| Current status | Stub | +| Exact entry point | Inherited Server_Ability_*_Begin | +| Parent behavior | Inherited; BeginPlay/Tick/Overlap call Parent | +| Network path | Client IA → Server PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed (no AnimBP) | +| Cleanup/end behavior | Base empty End | +| Connected assets | IsDataOnly=True; deps = base only | +| Deprecated dependencies | None observed | +| GAS interaction | None observed; no GE_Gunslinger | +| Known static defect | Data-only; missing from character select | +| Runtime question | Not applicable until selectable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | Char-select entry (2E); 2B framework; design kit | +| Migration complexity | Very High | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 Gunslinger; 08; 11 | + +### G-melee — Basic attack + +| Field | Content | +|-------|---------| +| Character/system | Gunslinger | +| Slot | melee | +| Current status | Stub | +| Exact entry point | Inherited stub | +| Parent behavior | Inherited | +| Network path | PrintString | +| Reliability | Unknown — Tool Limitation | +| Validation | None observed | +| Resource source | None observed | +| Cost mutation | None observed | +| Gameplay output | PrintString only | +| Authority location | Server | +| Animation dependency | None observed | +| Cleanup/end behavior | Base empty End | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | Stub | +| Runtime question | Not applicable | +| Migration disposition | Replace directly with GAS | +| Prerequisites | Design; 2B | +| Migration complexity | High | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05 | + +### G-passive — Passive + +| Field | Content | +|-------|---------| +| Character/system | Gunslinger | +| Slot | passive | +| Current status | Missing | +| Exact entry point | None observed | +| Parent behavior | Not applicable | +| Network path | Not applicable | +| Reliability | Not applicable | +| Validation | Not applicable | +| Resource source | Not applicable | +| Cost mutation | None observed | +| Gameplay output | None observed | +| Authority location | Not applicable | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | None observed | +| Deprecated dependencies | None observed | +| GAS interaction | None observed | +| Known static defect | None observed | +| Runtime question | Not applicable | +| Migration disposition | Defer pending design decision | +| Prerequisites | Design | +| Migration complexity | Low | +| Priority | P3 | +| Evidence confidence | High | +| Evidence source | 05 | + +### G-death — Death + +| Field | Content | +|-------|---------| +| Character/system | Gunslinger | +| Slot | death | +| Current status | Inherited | +| Exact entry point | Inherited PlayerDeath | +| Parent behavior | Inherited (Parent called on BeginPlay) | +| Network path | Base | +| Reliability | Unknown — Tool Limitation | +| Validation | Base | +| Resource source | Base | +| Cost mutation | Base | +| Gameplay output | Base death | +| Authority location | Server | +| Animation dependency | Inherited base only (no AnimBP) | +| Cleanup/end behavior | Base | +| Connected assets | None character-specific | +| Deprecated dependencies | Possible DEPRECATED health | +| GAS interaction | None observed | +| Known static defect | No AnimBP death presentation | +| Runtime question | Requires Runtime Inspection if ever playable | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A; AnimBP creation | +| Migration complexity | High | +| Priority | P2 | +| Evidence confidence | Medium | +| Evidence source | 05; 10 Gunslinger none | + +### G-HUD — HUD/resource integration + +| Field | Content | +|-------|---------| +| Character/system | Gunslinger | +| Slot | HUD | +| Current status | Inherited | +| Exact entry point | Inherited dual HUD | +| Parent behavior | Inherited | +| Network path | Dual path | +| Reliability | Unknown — Tool Limitation | +| Validation | Not applicable | +| Resource source | DEPRECATED + ASC | +| Cost mutation | None observed | +| Gameplay output | Dual unsynchronized | +| Authority location | Mixed | +| Animation dependency | None observed | +| Cleanup/end behavior | Not applicable | +| Connected assets | WBP_Overlay; no GE_Gunslinger | +| Deprecated dependencies | DEPRECATED floats | +| GAS interaction | Overlay ASC; Missing default GE | +| Known static defect | No GE_Gunslinger; not in select UI | +| Runtime question | Requires Runtime Inspection if selectable | +| Migration disposition | Reconstruct legacy behavior first, then migrate | +| Prerequisites | 2A defaults; 2E select UI | +| Migration complexity | Medium | +| Priority | P2 | +| Evidence confidence | High | +| Evidence source | 05; 06; 11 | + +--- + +## Character reconstruction order (Phase 2C) + +Evidence supports: **Amazonian Ability 001 → Paladin → Cleric → Wizard → Gunslinger**. + +| Order | Why | +|-------|-----| +| 1 Amazonian 001 | Observed Runtime Behavior reference; simplest Implemented melee | +| 2 Paladin | Largest Implemented set to preserve | +| 3 Cleric | Richest surface + known defects; reconstruct before migrate | +| 4 Wizard | Stubs + design-gated orphans | +| 5 Gunslinger | Data-only + missing select UI | + +--- + +## Shared-framework migration disposition summary + +| Concern | Disposition | +|---------|-------------| +| Input → activation | Replace directly with native/shared framework | +| Cost / cooldown / targeting | Replace directly with native/shared framework (then GAS) | +| Multicast-driven gameplay | Replace directly with native/shared framework | +| AnimNotify hit timing | Preserve behavior references; migrate off cosmetic multicast evaluation | +| Dual resources | Reconstruct SoT first (2A) | +| Legacy HUD | Remove obsolete or dead path after Overlay consolidation | +| PrintString stubs | Replace directly with GAS | +| Cosmetic SFX/VFX helpers | Retain as cosmetic-only path | + +--- + +## Cross-links + +- Executive summary: [`01-ExecutiveSummary.md`](01-ExecutiveSummary.md) +- Detailed ability graphs: [`05-LegacyAbilityArchitecture.md`](05-LegacyAbilityArchitecture.md) +- Animation: [`10-AnimationDependencies.md`](10-AnimationDependencies.md) +- GAS boundary: [`06-PartialGASArchitecture.md`](06-PartialGASArchitecture.md) +- Runtime plan: [`13-Unknowns-And-RuntimeQuestions.md`](13-Unknowns-And-RuntimeQuestions.md) diff --git a/Documentation/Archaeology/08-CharacterSystems.md b/Documentation/Archaeology/08-CharacterSystems.md index d4be9064..70d29631 100644 --- a/Documentation/Archaeology/08-CharacterSystems.md +++ b/Documentation/Archaeology/08-CharacterSystems.md @@ -1,36 +1,17 @@ # 08 — Character Systems -**Status: Draft** +**Status: Complete** - **Scope:** Player character Blueprint hierarchy (Pass 3), shared base architecture (Pass 5), and per-character Ability 001–004 connected-path reconstruction (Pass 6). - **Inspection method:** Read-only AssetTools + BlueprintTools + ObjectTools; connected subgraphs on all five playables + base correlation. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) — char-select spawn correlation -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — migration matrix correlates; static content through Pass 4/10 +- **Next pass expected to contribute:** Phase 2C when authorized -## Draft tracking +## Completion notes -### Completed sections -- Native player chain + ASC ownership (Batch 1) -- Blueprint parent chains and structural sheets for five playables + base -- Shared input / RPC / death / HUD / multicast architecture -- Interface BPI_PlayerCharacter surface -- Override matrix (which Server_Ability events children implement) -- Pass 6 Ability 001–004 path reconstruction -- Pass 8: AnimBP/Montage/AnimNotify callback wiring — see `10-AnimationDependencies.md` -- **Pass 7:** Character DefaultAttributes GEs orphaned; no per-character ASC grant; Gunslinger still no GE -- **Pass 4:** Char-select offers Paladin/Wizard/Cleric/Amazonian only (Gunslinger absent); DefaultPawn=None → PlayerFirstSpawn - -### Pending sections -- Weapon component deep dive if separate assets exist beyond overlaps -- Gunslinger intended design (no static implementation) - -### Evidence still required -- Notify trigger times (Manual Editor) -- Interrupt cleanup if AN_AttackComplete skipped -- PIE spawn attribute values vs orphan default GEs -- Remote-client character-select visibility +Static character-system archaeology is complete. Gunslinger design and weapon deep dive are **Defer pending design decision**. Runtime interrupt/select/attribute tests: doc `13`. Migration dispositions: doc `07`. --- diff --git a/Documentation/Archaeology/09-EnemyAI-StaticAnalysis.md b/Documentation/Archaeology/09-EnemyAI-StaticAnalysis.md index 0de624e8..cdc55b68 100644 --- a/Documentation/Archaeology/09-EnemyAI-StaticAnalysis.md +++ b/Documentation/Archaeology/09-EnemyAI-StaticAnalysis.md @@ -1,41 +1,19 @@ # 09 — Enemy AI Static Analysis -**Status: Draft** +**Status: Complete** - **Scope:** Complete static reconstruction of enemy control, targeting, chase, attack, damage, death, animation callbacks, navigation context, and enemy-GAS boundary (Pass 9). Builds on Batch 1 native + Pass 3 structural seeds. - **Inspection method:** Native C++ read of `ARIRBaseEnemyCharacter` / `ARIRBaseCharacter` / `ITargetInterface`; BlueprintTools EventGraph DSL + interface graphs; AssetTools find/deps/refs; ObjectTools CDO + placed-instance properties; SceneTools find_actors in Test01; project-wide AI asset/subclass searches. - **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. - **Tool or visibility limitations:** AnimGraph/transition DSL empty (Death transition rule not fully readable); CharacterMovement orient flags partially unreadable; no PIE possession/nav query validation. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 9 (Batch 4C) -- **Next pass expected to contribute:** Pass 4 / Pass 10 when authorized — not auto-started +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; static content Pass 9 (Batch 4C). **Superseded:** earlier “next = Pass 4/10” — Batch 4D completed separately without reopening this doc’s combat findings. +- **Next pass expected to contribute:** Phase 2D when authorized -## Draft tracking +## Completion notes -### Completed sections -- Native enemy ASC, highlight, no native AI combat -- Full BP_EnemyCharacterBase / BP_Enemy_Skeleton structural + EventGraph reconstruction -- BPI_EnemyCharacter implementation status -- Controller / AutoPossessAI class + instance -- AI framework negative inventory -- Targeting / chase / attack absence -- Attack montage orphan -- ABP_Skeleton locomotion + Death + IsDead forced false -- Damage/death reception absence at BP layer -- Enemy GAS compatibility (Pass 7 + Pass 9) -- Test01 navigation context (no NavMeshBoundsVolume / RecastNavMesh) -- Root-cause classifications for chase and attack - -### Pending sections -- Runtime possession confirmation under PIE -- Whether engine TakeDamage has any other consumer outside enemy BP -- ABP Death transition condition exact VariableGet wiring (DSL empty) - -### Evidence still required -- PIE: does stock AIController possess placed skeletons? -- PIE: player ApplyDamage visual/health effect on skeleton -- Manual Editor: ABP Death transition rule pins +Static enemy AI archaeology is complete. Chase/attack classified **Implementation Missing** (not caused by GetASC). Runtime possession/damage/Death pins: doc `13`. --- diff --git a/Documentation/Archaeology/10-AnimationDependencies.md b/Documentation/Archaeology/10-AnimationDependencies.md index d192799f..0e192f9b 100644 --- a/Documentation/Archaeology/10-AnimationDependencies.md +++ b/Documentation/Archaeology/10-AnimationDependencies.md @@ -1,33 +1,16 @@ # 10 — Animation Dependencies -**Status: Draft** +**Status: Complete** - **Scope:** Animation Blueprints, Montages, AnimNotify Blueprints for playable characters (Pass 8) plus enemy AnimBP/montage findings required by Pass 9 combat archaeology. -- **Last completed pass:** Pass 9 (Batch 4C) — enemy animation seed -- **Next pass expected to contribute:** Pass 4 / Pass 10 when authorized +- **Last updated:** 2026-07-16 +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; static content Pass 8–9. **Superseded:** earlier “next = Pass 4/10” — Batch 4D completed without changing animation findings. +- **Next pass expected to contribute:** Phase 2B cleanup contracts / Manual Editor notify times when authorized -## Draft tracking +## Completion notes -### Completed sections -- Per-character AnimBP architecture table (playables) -- Per-ability Montage + notify tables -- AnimNotify/callback inventory (`AN_Ability_001–004`, `AN_AttackComplete`) -- Resolved UseAbility* callers -- Pass 6 reclassification table -- Cleanup via `AN_AttackComplete` → `SetIsAttacking` -- Networking/authority static notes -- Wizard / Gunslinger animation dependency confirmation -- **Pass 9:** `ABP_Skeleton` locomotion/Death; `Anim_SkeletonAttackMontage` orphan; `SetIsDead(false)` every Update - -### Pending sections -- Exact notify trigger times / track indices (Requires Manual Editor Inspection) -- Montage section names / blend / root-motion flags -- ABP_Skeleton Death transition rule pin details - -### Evidence still required -- Manual editor confirmation of notify timing windows -- Whether interrupted montages skip `AN_AttackComplete` (static risk only) -- Gunslinger mesh AnimClass assignment on CDO (data-only; deps show no AnimBP) +Static animation-dependency archaeology is complete. Notify trigger times, interrupt skip of `AN_AttackComplete`, and Gunslinger AnimClass remain runtime/Manual Editor (`13`). --- diff --git a/Documentation/Archaeology/11-UI-HUD-And-Sessions.md b/Documentation/Archaeology/11-UI-HUD-And-Sessions.md index 854b8e76..2ac6f88e 100644 --- a/Documentation/Archaeology/11-UI-HUD-And-Sessions.md +++ b/Documentation/Archaeology/11-UI-HUD-And-Sessions.md @@ -1,35 +1,17 @@ # 11 — UI, HUD, and Sessions -**Status: Draft** +**Status: Complete** - **Scope:** Pass 4 frontend / sessions / maps + Pass 10 HUD / widget architecture (Batch 4D). Static read-only only. - **Inspection method:** BlueprintTools `read_graph_dsl` / `list_events`; ObjectTools CDO; AssetTools deps/refs; UMG `GetWidgetDescription`; filesystem `Config/*.ini` grep; EditorApp `IsPIERunning` / SceneTools `get_current_level`. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 (synthesis) when explicitly authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; static content Pass 4 + Pass 10 +- **Next pass expected to contribute:** Phase 2E when authorized -## Draft tracking +## Completion notes -### Completed sections -- Framework / frontend matrix -- Session create / find / join graphs and classification -- Online configuration inventory (negative for OnlineSubsystem under project Config) -- Map / travel / pawn-spawn matrix -- HUD architecture (ASC Overlay + legacy BPI hole) -- Widget inventory -- Character-selection matrix - -### Pending sections -- Runtime session / travel validation (PIE / standalone / multiplayer — not authorized) -- JoinSession internal ClientTravel confirmation -- CommonUI production usage beyond enabled plugin - -### Evidence still required -- Whether `JoinSession` travels without an explicit success pin -- Whether listen-server remote clients ever receive `WBP_CharacterSelect` -- Whether `W_HUD_OLD` is ever created (no connected creator found) -- Steam / OnlineSubsystem runtime defaults when INI keys are absent +Static UI/HUD/session archaeology is complete. Session travel, remote char-select, OSS defaults, and CommonUI usage remain **Requires Runtime Inspection** (`13`). ### Tool or visibility limitations - Map World Settings GameMode not in asset-registry tags; inferred from map→GM package dependencies diff --git a/Documentation/Archaeology/12-Pickups-And-Effects.md b/Documentation/Archaeology/12-Pickups-And-Effects.md index 26b9fb92..bb4fb6a9 100644 --- a/Documentation/Archaeology/12-Pickups-And-Effects.md +++ b/Documentation/Archaeology/12-Pickups-And-Effects.md @@ -1,33 +1,17 @@ # 12 — Pickups and Effects -**Status: Draft** +**Status: Complete** - **Scope:** Pass 10 pickup / consumable / EffectActor / currency archaeology (Batch 4D). Complements Pass 7 GE inventory in doc 06. - **Inspection method:** BlueprintTools EventGraph DSL; ObjectTools CDO; `search_subclasses` on `RIREffectActor`; AssetTools referencers; SceneTools `find_actors` on already-loaded Test01 (read-only). - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 when authorized; PIE for authority / overlap validation +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5) — status close; static content Pass 10 +- **Next pass expected to contribute:** Phase 2E when authorized -## Draft tracking +## Completion notes -### Completed sections -- All four `ARIREffectActor` children overlap → Apply → Destroy -- Legacy `BP_BasePickUp` / gold path -- GE application matrix + enemy GetASC incompatibility -- Currency / collectible matrix + negative stamina-potion inventory -- Pickup issue matrix - -### Pending sections -- Sphere collision profile / `GenerateOverlapEvents` exact values (tool limit) -- Runtime multiplayer authority behavior for non-replicating EffectActors -- Whether full-health HealthPickUp leaves actor undestroyed (DSL branch shape) - -### Evidence still required -- PIE: player overlap applies GE and updates Overlay bars -- PIE: enemy overlap early-out -- PIE: gold AddGold no-op (unimplemented BPI) -- Respawn / lifespan (none found statically) +Static pickup/currency archaeology is complete. Authority/replication PIE, sphere collision exacts, and AddGold no-op confirmation: doc `13`. ### Tool or visibility limitations - CDO `get_properties("sphere")` → None (component templates) diff --git a/Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md b/Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md index c8989784..fec6991c 100644 --- a/Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md +++ b/Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md @@ -2,46 +2,60 @@ **Status: Draft** -- **Scope:** Unresolved questions after Batches 1–4D (Passes 4, 7–10). -- **Inspection method:** Consolidation through Pass 10. +- **Scope:** Unresolved questions after Phase 1 static archaeology (Batches 1–5). Static defects are recorded; runtime validation is planned but **not executed**. +- **Inspection method:** Consolidation through Pass 11 synthesis. - **Evidence classifications used:** Observed Implementation, Documented Intent, Observed Runtime Behavior, Inferred, Unknown. -- **Tool or visibility limitations:** Semantic Search unavailable; AnimGraph transition DSL empty; Sphere CDO collision unreadable; no PIE. +- **Tool or visibility limitations:** Semantic Search unavailable; AnimGraph transition DSL empty; Sphere CDO collision unreadable; CustomEvent Reliability unreadable; no PIE in Phase 1. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete); runtime validation deferred +- **Last completed pass:** Pass 11 (Batch 5 synthesis) +- **Next pass expected to contribute:** Phase 2A runtime-baseline when explicitly authorized ## Draft tracking ### Completed sections -- Batch 1–3 / Pass 7 / Pass 8 / Pass 9 resolutions -- **Pass 4 resolutions:** GI empty/unwired; session graphs Partial; OnlineSubsystem INI Missing; map/GameMode deps; char-select spawn -- **Pass 10 resolutions:** Overlay Health/Mana only; UpdatePlayerHUD/AddGold unimplemented; EffectActor authority risk; gold Partial; no stamina pickup/UI +- Batch 1–4D resolutions (Passes 0–10) +- Pass 11: bounded runtime validation plan (groups 1–12) +- Static vs runtime boundary clarified ### Pending sections -- Runtime test procedures (Pass 11 may list; PIE still unauthorized until requested) +- **All runtime test execution** (not authorized in Phase 1) +- Manual Editor notify trigger times / ABP Death pins / sphere GenerateOverlapEvents ### Evidence still required -- PIE possession / ApplyDamage feedback / Death state reachability -- Session create/find/join with OnlineSubsystem defaults -- Notify trigger times (Manual Editor) +- All rows in Runtime validation plan below +- FCanUseMana implementation body detail +- Client_Charge numeric timeline details + +### Why Draft remains +Runtime execution has not begun. Static scope for Phase 1 unknowns is fully inventoried. --- -## Resolved in Batch 4D (Pass 4 + Pass 10) +## Static vs runtime boundary -| Question | Resolution | Classification | Doc | -|---|---|---|---| -| Where is session logic? | `PC_MainMenu` + `WBP_MainMenu` / `WBP_GameSlot` — not GI | Observed Implementation | 11 | -| Is GI used? | Empty; not in GameInstanceClass; 0 refs | Present but Unconnected | 11, 02 | -| OnlineSubsystem project INI? | Absent from Config/*.ini | Missing | 11, 02 | -| How DefaultPawn=None gets a pawn? | Char-select → ServerSpawnCharacter → PlayerFirstSpawn | Connected (static) | 11, 08 | -| Gunslinger in select UI? | No | Missing from select | 11, 08 | -| Does UpdatePlayerHUD update widgets? | Unimplemented on PC_Character; not in RIRPlayerController C++ | Present but Unconnected | 11, 03 | -| Stamina UI? | No Overlay child; no stamina widget asset | Present but Unconnected / Missing | 11, 06 | -| Pickup authority? | EffectActors: no SwitchHasAuthority; gold: has Authority | Authority Risk / Partial | 12 | -| Gold storage? | AddGold called but unimplemented | Present but Unconnected | 12 | -| Stamina / other currency pickups? | None found | Missing / negative inventory | 12 | +| Category | Examples | Phase 1 status | +|----------|----------|----------------| +| Confirmed static defects | Enemy chase missing; GetASC nullptr; AddGold unimplemented; Cleric 004 mana bypass | Closed as static findings | +| Active but Unverified connected paths | Overlay bars; EffectActor apply; session host/find | Require runtime | +| Unknown — Tool Limitation | CustomEvent Reliability; montage notify times | Manual Editor or MCP gap | +| Design decisions | Wizard orphan intent; whirlwind; Gunslinger kit | Defer pending design | + +Do **not** treat runtime questions as confirmed defects until tested. + +--- + +## Resolved in prior passes (summary) + +| Pass/Batch | Examples resolved statically | +|------------|------------------------------| +| Batch 4D | Sessions in PC_MainMenu not GI; OSS INI Missing; char-select spawn; UpdatePlayerHUD/AddGold unimplemented; EffectActor authority risk; Overlay Health/Mana only | +| Pass 9 | Chase/attack Implementation Missing independent of GetASC | +| Pass 8 | UseAbility* callers = AN_Ability_*; AN_AttackComplete cleanup; montage pins unwired | +| Pass 7 | Dual resource boundary; no GA grant/activate; orphan default GEs | +| Pass 6 | Per-character ability statuses | + +Full tables remain in docs `02`–`12`. --- @@ -62,23 +76,124 @@ | OnlineSubsystem INI Missing | Missing | LAN/Steam sessions fail silently? | | Char-select server-only create | Partial | Remote clients stuck without pawn UI? | | Orphan default GEs / dual resources | Incomplete Refactor | Spawn Health/Mana vs Overlay | +| Montage completion pins unwired | Networking Risk | Interrupt leaves CurrentlyAttacking stuck? | +| Cleric 004 mana bypass + empty SpawnActor | Existing Baseline Defect | Confirm free cast + no projectile | --- -## Requires further inspection +## Runtime validation plan (do not execute in Phase 1) -| Question | Method | Priority | -|---|---|---| -| Controlled PIE — sessions, Overlay, potions, gold, enemy idle | PIE (explicit auth) | High | -| JoinSession travel internals | PIE / Manual Editor | High | -| ABP Death transition pins | Manual Editor | Low | -| Sphere GenerateOverlapEvents exact | Manual Editor / SCS | Medium | +For each test: distinguish **PIE**, **Listen-server**, **Dedicated-server**, **Two-client**, **Standalone**, **Manual Editor**. + +### 1. Player attributes and HUD + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Spawn ASC Init values | Dual SoT documented | Standalone NewGame→Test01→select Paladin | Overlay Health/Mana at spawn | Match native Init (75/100, 25/50) or documented policy | Orphan GE / Init mismatch | Standalone / PIE | +| Potion updates Overlay | EffectActor path | Overlap HealthPotion | Overlay Health rises +25 | ASC Health changed; bar updates | Overlay or apply broken | PIE | +| Combat vs potion divergence | Dual resources | Take legacy damage then potion | DEPRECATED vs ASC values | Divergence documented or SoT enforced | Confirms P0 dual-resource risk | PIE | + +### 2. Ability authority and replication + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Amazonian 001 listen-server | Implemented path | Host+client; Amazonian melee | Damage Authority; montage both | Authority damage once; clients see montage | Authority/replication defect | Listen-server + Two-client | +| Wizard stub | Stub | Activate Ability 001 | PrintString / no combat | Stub only | Unexpected child override | PIE | + +### 3. Animation callback execution + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| AN_Ability_001 fires UseAbility | AN wiring | Paladin/Amazonian 001 | Hit window applies damage | Damage at notify time | Notify not evaluated on server | PIE / Listen-server | +| Cleric 001 dead receiver | Unimplemented UseAbility001 | Cleric 001 | Montage plays; no hit | Partial confirmed | Unexpected hit path | PIE | + +### 4. Ability interruption and cleanup + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Interrupt mid-montage | Pins unwired | Cancel/stun/move cancel mid-001 | CurrentlyAttacking state | Clears or stuck documented | P1 cleanup risk confirmed | PIE | +| AN_AttackComplete path | Connected notify | Complete full montage | CurrentlyAttacking false | Lockout released | Cleanup broken even on complete | PIE | + +### 5. Player damage and death + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Amazonian AnyDamage death | Partial death path | Reduce health to ≤0 | PlayerDeath; ABP Death | Death reached | Death unreachable | PIE | +| Paladin lethal path | Inherited death | Apply lethal damage source | Death or no-op | Path documented | Missing inbound damage | PIE | + +### 6. Enemy ASC compatibility + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Potion on enemy | GetASC nullptr | Overlap potion on skeleton | GE apply + destroy | Early-out no heal; actor may destroy | Confirms destroy-without-heal | PIE | +| Direct enemy ASC Health | ASC on self | Inspect ASC after spawn | Health Init present | Component alive despite GetASC defect | ASC missing entirely | PIE / Manual Editor | + +### 7. Enemy damage reception and death + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Player hit skeleton | No ReceiveAnyDamage | Amazonian 001 on skeleton | Health/death response | No health change (expected today) | Unexpected consumer found | PIE | +| IsDead forced false | ABP Update | Force IsDead true then tick | Death state | Forced false prevents Death | Or Death somehow reachable | PIE / Manual Editor | +| AIController possession | PlacedInWorld | PIE possess check | Controller class | Possessed by AIController | Unpossessed | PIE | + +### 8. Pickup authority and replication + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| EffectActor listen-server | Authority Risk | Host+client overlap potion | GE apply count; destroy | Single authoritative apply | Double apply/destroy | Listen-server + Two-client | +| Gold authority | Authority gated | Overlap gold | SFX+destroy; AddGold | No score change (unimplemented) | Unexpected score store | PIE | + +### 9. Character-selection networking + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Remote client select UI | Server-only create | Listen-server two clients | Widget on client | Client has UI and can spawn | Client stuck — P1 confirmed | Listen-server + Two-client | +| Gunslinger absence | Not in UI | Open select | Class buttons | No Gunslinger | Unexpected button | Standalone | + +### 10. Session create/find/join/travel/destroy + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Host create | Partial host path | HostGame | Session + travel Dev_Island | Lands listen-server | OSS/config failure | Listen-server | +| Find sessions | Find connected | Refresh | Slot list | Rows appear | Find broken | Two-client | +| Join travel | No OnSuccess pin | JoinGame | Travel to host map | Client travels | Join travel broken | Two-client | +| Destroy/leave | Missing DestroySession | Return MainMenu mid-session | Session state | Document leak/orphan session | Confirms Missing cleanup | Listen-server | + +### 11. Gold and currency + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| AddGold no-op | Unimplemented | Pick gold | Score/UI | No persistent gold | Unexpected implementation elsewhere | PIE | +| No stamina pickup | Negative inventory | Search/play | No stamina collectible | Confirmed Missing | Asset found | Standalone | + +### 12. Respawn and HUD recreation + +| Test | Static prerequisite | Setup | Observation | Pass condition | Failure implication | Mode | +|------|---------------------|-------|-------------|----------------|---------------------|------| +| Respawn Overlay | Server_RespawnPlayer | Die → respawn | Overlay bars | HUD recreated; attrs reset per policy | HUD/attr stuck | PIE | +| Possessed Server_UpdateHUD | Delay 0.4 path | Possess | Legacy HUD call | No-op (expected) | Unexpected UpdatePlayerHUD impl | PIE | + +--- + +## Requires Manual Editor Inspection + +| Question | Priority | +|----------|----------| +| AnimNotify trigger times / track indices | Medium | +| Montage section / blend / root-motion flags | Low | +| ABP_Skeleton Death transition pin wiring | Low | +| Sphere GenerateOverlapEvents / collision profile on EffectActors | Medium | +| FCanUseMana function body | Medium | +| CommonUI content usage | Low | --- ## Priority order for later verification -1. **Pass 11** — synthesis / executive summary / migration matrix (when authorized) -2. Controlled PIE — menu→Test01 spawn, Overlay bars, potion GE, gold no-op, enemy idle -3. Multiplayer PIE — host Dev_Island, join travel, remote char-select -4. Manual Editor — collision templates, AnimGraph pins +1. Phase 2A design: canonical attribute/authority/cleanup contracts (**do not skip**) +2. Controlled PIE — menu→Test01 spawn, Overlay, potion GE, gold no-op, enemy idle, Amazonian 001 +3. Interrupt cleanup + dual-resource divergence +4. Multiplayer PIE — host Dev_Island, join travel, remote char-select, EffectActor authority +5. Manual Editor — collision templates, AnimGraph pins, notify times + +**Do not begin Phase 2 implementation until Phase 2A contracts are approved.** diff --git a/Documentation/Archaeology/14-EvidenceIndex.md b/Documentation/Archaeology/14-EvidenceIndex.md index abf27a26..6e29716d 100644 --- a/Documentation/Archaeology/14-EvidenceIndex.md +++ b/Documentation/Archaeology/14-EvidenceIndex.md @@ -1,43 +1,64 @@ # 14 — Evidence Index -**Status: Draft** +**Status: Complete** -- **Scope:** Compact cross-model index of material findings. +- **Scope:** Compact cross-model index of material Phase 1 findings. Every major conclusion has an evidence row. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass:** Pass 4 + Pass 10 (Batch 4D) -- **Next pass expected to contribute:** Pass 11 when authorized +- **Current phase:** Phase 1 — Static Architecture (complete) +- **Last completed pass:** Pass 11 (Batch 5 synthesis) +- **Next pass expected to contribute:** Phase 2 when authorized ## Draft tracking ### Completed sections -- Batch 1–3; Pass 7; Pass 8; Pass 9; **Pass 4 frontend/sessions; Pass 10 HUD/pickups** +- Batches 1–4D evidence rows +- Pass 11 synthesis rows (player hierarchy, abilities, GAS, enemy, frontend, HUD, pickups, migration) ### Pending sections -- Pass 11 synthesis rows +- None for Phase 1 static scope +- Runtime verification columns remain open by design --- -| System | Subsystem | Finding | Evidence type | Classification | Exact source | Exact symbol | Blueprint path | Graph | Node/event | Asset/config | Doc | Confidence | Remaining verification | -|--------|-----------|---------|---------------|----------------|--------------|--------------|----------------|-------|------------|--------------|-----|------------|------------------------| -| Frontend | GI | Empty; 0 refs; not GameInstanceClass | Observed Implementation | Present but Unconnected | DSL; refs; Config | GI_Dungeoneer | GI_Dungeoneer | EventGraph | — | DefaultEngine.ini | 11,02 | High | — | -| Frontend | Startup | GameDefaultMap=MainMenu; EditorStartup=Test01 | Observed Implementation | Active | DefaultEngine.ini | GameDefaultMap | — | — | — | Config/DefaultEngine.ini | 11,02 | High | — | -| Sessions | Host | CreateAdvancedSession → OpenLevel Dev_Island ?listen | Observed Implementation | Partial | read_graph_dsl | HostGame | PC_MainMenu | EventGraph | CreateAdvancedSession | — | 11 | High | PIE Steam/LAN | -| Sessions | Find | FindSessionsAdvanced → WBP_GameSlot rows | Observed Implementation | Active but Unverified | DSL | RefreshButton | WBP_MainMenu | EventGraph | FindSessionsAdvanced | — | 11 | High | PIE | -| Sessions | Join | JoinSession; no OnSuccess; no ClientTravel | Observed Implementation | Partial | DSL | JoinGame | PC_MainMenu | EventGraph | JoinSession | — | 11 | High | PIE travel | -| Sessions | Config | No OnlineSubsystem/Steam keys in project Config | Observed Implementation | Missing | filesystem grep | — | — | — | — | Config/*.ini | 11,02 | High | Engine defaults | -| Sessions | Example | ExampleAdvancedSessionsFunctionsChar 0 refs | Observed Implementation | Example Only | get_referencers | — | Examples/... | — | — | — | 11 | High | — | -| Maps | GameMode | MainMenu→GM_MainMenu; Test01/Dev_Island/LEVEL_01→GM_Dungeoneer | Inferred (deps) | Active but Unverified | get_dependencies | — | maps | — | — | — | 11 | Medium | World Settings tags | -| Spawn | Pawn | DefaultPawn=None; char-select SpawnActor+Possess | Observed Implementation | Connected | DSL | PlayerFirstSpawn | PC_Character / GM_Dungeoneer | EventGraph | GetSelectedClass | — | 11,08 | High | Remote client | -| Select | Classes | Paladin/Wizard/Cleric/Amazonian; no Gunslinger | Observed Implementation | Partial | DSL | SelectedCharacterClass | WBP_CharacterSelect | EventGraph | OnClicked | — | 11,08 | High | — | -| HUD | Overlay | CDO Overlay+Controller assigned; Health+Mana bars | Observed Implementation | Active but Unverified | ObjectTools; UMG; DSL | InitOverlay | WBP_PlayerHUD / WBP_Overlay | EventWidgetControllerSet | — | — | 11,06 | High | PIE | -| HUD | Stamina UI | No stamina widget in Overlay | Observed Implementation | Present but Unconnected | GetWidgetDescription | — | WBP_Overlay | — | — | — | 11 | High | — | -| HUD | Legacy | UpdatePlayerHUD bIsImplemented=false; not in C++ | Observed Implementation | Present but Unconnected | list_events; Source grep | UpdatePlayerHUD | PC_Character | — | — | BPI_PlayerController | 11,03 | High | PIE no-op | -| Pickup | GE | Four EffectActors overlap→Apply→Destroy; no authority | Observed Implementation | Active but Unverified / Authority Risk | DSL | ApplyEffecttoTarget | BP_*Potion/Crystal/Slice | EventGraph | OnComponentBeginOverlap | GE_* | 12,06 | High | PIE | -| Pickup | Enemy | GetASC nullptr; destroy still runs | Observed Implementation | Enemy-Incompatible Due to ASC Accessor | RIREffectActor; GetASC | ApplyEffectToTarget | — | — | — | — | 12,06,09 | High | PIE | -| Pickup | Gold | Amount=25; AddGold unimplemented | Observed Implementation | Partial / Present but Unconnected | DSL; list_events | AddGold | BP_BasePickUp / PC_Character | GoldPickUp | — | — | 12 | High | PIE | -| Currency | Other | No stamina/coin/score systems beyond gold call | Observed Implementation | Missing / negative | asset search | — | — | — | — | — | 12 | High | — | -| Enemy | EventGraph | BeginPlay/Tick/Overlap present; bodies empty | Observed Implementation | Present but Unconnected | read_graph_dsl | EventTick | BP_Enemy_Skeleton | EventGraph | EventTick | — | 09 | High | — | -| Enemy | Chase | No MoveTo/GetPlayer/target store | Observed Implementation | Implementation Missing | DSL + searches | — | BP_Enemy* | — | — | — | 09 | High | — | -| Enemy | Attack | EnemyMeleeAttack unimplemented; montage 0 refs | Observed Implementation | Implementation Missing / Present but Unreferenced | interface; get_referencers | EnemyMeleeAttack | BPI_EnemyCharacter | — | — | Anim_SkeletonAttackMontage | 09,10 | High | — | -| Continuity | Editor | PIE=false; Test01; sel Skeleton_C_1 | Observed Implementation | — | IsPIERunning; get_current_level | — | — | — | — | Test01 | 15 | High | — | +| Evidence ID | System | Evidence classification | Exact source path | Exact symbol | Finding | Pass | Doc / section | Confidence | Remaining limitation | +|-------------|--------|-------------------------|-------------------|--------------|---------|------|---------------|------------|----------------------| +| E-P1-001 | Player hierarchy | Observed Implementation | Source/REALMSINRUIN; `/Game/_Main/Blueprints/Characters/PlayerCharacters/BP_PlayerCharacterBase` | ARIRBaseCharacter → ARIRPlayerCharacter → BP_PlayerCharacterBase → Player_* | Native+BP playable hierarchy established | Pass 1–3 | 03 Hierarchy; 08 Native chain | High | None for structure | +| E-P1-002 | Input/RPC | Observed Implementation | `/Game/_Main/Blueprints/Characters/PlayerCharacters/BP_PlayerCharacterBase` | IA_Ability_001–004 → Server_Ability_*_Begin/End | Enhanced Input routes to Server ability events | Pass 5 | 05 Shared architecture; 08 Ability flow | High | Reliability Unknown — Tool Limitation | +| E-P1-003 | Paladin abilities | Observed Implementation | `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Paladin/Player_Paladin` | Server_Ability_001/003/004_Begin; UseAbility001/004 | 001/003/004 Implemented; 002 Partial; no Parent calls | Pass 6+8 | 05 Player_Paladin; 07 P-* | High | Runtime hit vs enemy | +| E-P1-004 | Amazonian Ability 001 | Observed Runtime Behavior | Player_Amazonian; project baseline brief | Server_Ability_001_Begin; UseAbility001 | Implemented melee; baseline-confirmed working | Pass 6+8 | 05; 08; 07 A-001 | High | Not re-tested in Phase 1 | +| E-P1-005 | Cleric abilities | Observed Implementation | Player_Cleric | Server_Ability_001–004; UseAbility002/004; ConcentrateHandle | 003 Implemented; 001/002/004 Partial; 004 mana bypass + empty SpawnActor | Pass 6+8 | 05 Player_Cleric; 07 C-* | High | PIE confirm defects | +| E-P1-006 | Wizard abilities | Observed Implementation | Player_Wizard | Inherited Server_Ability_* only | Stub PrintString; no child Server_Ability bodies | Pass 6 | 05 Player_Wizard; 07 W-* | High | Design for orphans | +| E-P1-007 | Gunslinger | Observed Implementation | Player_Gunslinger; WBP_CharacterSelect | IsDataOnly=True; no select button | Data-only stubs; absent from character select | Pass 3+4+6 | 05; 08; 11 Select | High | Mesh AnimClass Unknown | +| E-P1-008 | AnimNotify routing | Observed Implementation | `/Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterRelated/AN_Ability_001`–`004` | Received_Notify → UseAbility00N | Hit windows driven by AnimNotify BPs | Pass 8 | 10 Shared animation; 05 | High | Trigger times Manual Editor | +| E-P1-009 | AN_AttackComplete | Observed Implementation | AN_AttackComplete | SetIsAttacking clears CurrentlyAttacking | Primary cleanup for notify-driven attacks | Pass 8 | 10; 05; 07 S12 | High | Interrupt skip Requires Runtime Inspection | +| E-P1-010 | Montage pins | Observed Implementation | BP_PlayerCharacterBase Multicast_PlayMontage | OnCompleted/OnBlendOut/OnInterrupted | Completion pins unwired | Pass 8 | 10; 05 | High | Interrupt behavior runtime | +| E-P1-011 | Player GAS ownership | Observed Implementation | Source/REALMSINRUIN/RIRPlayerState.cpp | URIRAbilitySystemComponent on ARIRPlayerState | Player ASC+AttributeSet on PlayerState; InitAbilityActorInfo | Pass 1+7 | 06 §1; 03 | High | None for ownership | +| E-P1-012 | Default attributes | Observed Implementation | BP_PlayerState CDO; GE_*_DefaultAttributes | defaultAttributesGameplayEffect=None; referencers [] | Default attribute GEs Present but Unreferenced; spawn uses native Init | Pass 7 | 06 §3; 03 BP_PlayerState | High | PIE spawn values | +| E-P1-013 | Gameplay Effects | Observed Implementation | `/Game/_Main/Blueprints/Game/GameSystems/GAS/GameplayEffects/` | GE_PotionHeal/Mana; GE_HoT/MoT; four defaults | Eight GEs; consumables Active path; defaults orphaned | Pass 7+10 | 06 §2; 12 | High | GE components unreadable | +| E-P1-014 | Gameplay Abilities | Observed Implementation | Source URIRGameplayAbility; find_assets GA_ | No GA assets; no GiveAbility/TryActivateAbility | Scaffolding Only; grant/activate Missing | Pass 7 | 06 §1; 05 | High | None | +| E-P1-015 | Gameplay Tags | Observed Implementation | Config/DefaultGameplayTags.ini | State.*/Disable.*/Effect.* | Twelve tags Present but Unreferenced | Pass 7 | 06; 02 §4.3 | High | None | +| E-P1-016 | Gameplay Cues | Observed Implementation | find_assets GC_/GameplayCue | No project cue notifies | Missing | Pass 7 | 06 §1 | High | GE cue slots Unknown — Tool Limitation | +| E-P1-017 | Legacy resources | Observed Implementation | BP_PlayerCharacterBase DEPRECATED_* | DEPRECATED health/mana/damage/costs | Deprecated but Connected in ability graphs; no ASC sync | Pass 5–7 | 05 Resource inventory; 06 boundary | High | PIE divergence | +| E-P1-018 | Enemy chase/attack | Observed Implementation | BP_Enemy_Skeleton EventGraph | EventTick/BeginPlay/Overlap empty | Target/chase/attack Implementation Missing | Pass 9 | 09 Executive summary | High | PIE idle confirm | +| E-P1-019 | Enemy damage reception | Observed Implementation | BP_Enemy*; player ApplyDamage callers | No ReceiveAnyDamage | Implementation Missing; ApplyDamage has no enemy health consumer | Pass 6+9 | 05 Pass 9 note; 09 | High | PIE hit feedback | +| E-P1-020 | Enemy death defect | Observed Implementation | ABP_Skeleton | SetIsDead(false) every Update | Death Connected but Incomplete | Pass 9 | 09; 10 | High | Transition pins Manual Editor | +| E-P1-021 | Enemy GetASC | Observed Implementation | RIRBaseCharacter.cpp; RIREffectActor.cpp | GetAbilitySystemComponent → PlayerState | Interface path nullptr on enemies | Pass 7+9 | 06; 09; 12 | High | PIE potion-on-enemy | +| E-P1-022 | Frontend startup | Observed Implementation | Config/DefaultEngine.ini | GameDefaultMap=MainMenu; EditorStartupMap=Test01 | Startup maps Active | Pass 1+4 | 02 §4.1; 11 | High | None | +| E-P1-023 | Character selection | Observed Implementation | WBP_CharacterSelect; PC_Character | PlayerFirstSpawn SpawnActor+Possess | DefaultPawn=None; select supplies pawn; server-only widget create | Pass 4 | 11; 08 | High | Remote client PIE | +| E-P1-024 | Session partial flow | Observed Implementation | PC_MainMenu; WBP_MainMenu; WBP_GameSlot | CreateAdvancedSession; FindSessionsAdvanced; JoinSession | Host/Find connected; Join no OnSuccess; DestroySession Missing | Pass 4 | 11 §2 | High | PIE OSS/LAN/Steam | +| E-P1-025 | OnlineSubsystem config | Observed Implementation | Config/*.ini grep | No OnlineSubsystem/Steam keys | Configuration Gap / Missing | Pass 4 | 11 §3; 02 | High | Engine default runtime | +| E-P1-026 | GI_Dungeoneer | Observed Implementation | GI_Dungeoneer; DefaultEngine.ini | Not GameInstanceClass; 0 refs | Present but Unconnected | Pass 4 | 11; 02; 03 | High | None | +| E-P1-027 | HUD dual path | Observed Implementation | WBP_PlayerHUD; WBP_Overlay; PC_Character | InitOverlay vs UpdatePlayerHUD | Overlay Health/Mana Connected; UpdatePlayerHUD unimplemented | Pass 10 | 11; 06; 03 | High | PIE Overlay update | +| E-P1-028 | Pickup authority | Observed Implementation | BP_HealthPotion etc. | OnComponentBeginOverlap → Apply → Destroy; bReplicates=false | Active static path; Authority Risk | Pass 10 | 12 §1; 06 | High | Listen-server PIE | +| E-P1-029 | Gold no-op | Observed Implementation | BP_BasePickUp; PC_Character | AddGold bIsImplemented=false | Partial / Present but Unconnected | Pass 10 | 12 §3; 03 | High | PIE confirm no-op | +| E-P1-030 | UE 5.8 migration | Documented Intent / Observed Runtime Behavior | Project recovery brief | EngineAssociation 5.8 | Recovered 5.4.4→5.8; parity passed; defects are baseline | Pre-Phase 1 | 01 §3 | Medium | Not re-validated in archaeology | +| E-P1-031 | Phase 1 synthesis | Observed Implementation | Documentation/Archaeology/01-ExecutiveSummary.md; 07-AbilityMigrationMatrix.md | Pass 11 deliverables | Executive summary + migration matrix complete | Pass 11 | 01; 07; 15 | High | Phase 2 not started | +| E-P1-032 | Continuity Pass 11 | Observed Implementation | Editor MCP | IsPIERunning=false; level Test01 | PIE stopped; level Test01; selection empty at Pass 11 check | Pass 11 | 15 | High | Selection cleared vs Batch 4D Skeleton_C_1 | + +--- + +## Index notes + +- Do not use `—` as a classification; use explicit statuses above. +- Later exact evidence supersedes earlier preliminary Batch 1–2 statements (sessions/pickups deferred → resolved in Batch 4D). +- Full narrative: `01-ExecutiveSummary.md`. Ability dispositions: `07-AbilityMigrationMatrix.md`. diff --git a/Documentation/Archaeology/15-HandoffStatus.md b/Documentation/Archaeology/15-HandoffStatus.md index b3f846af..b90a35e1 100644 --- a/Documentation/Archaeology/15-HandoffStatus.md +++ b/Documentation/Archaeology/15-HandoffStatus.md @@ -1,121 +1,207 @@ # 15 — Handoff Status -**Status: Draft** +**Status: Complete** -- **Scope:** Authoritative cross-model continuation document for Phase 1. +- **Scope:** Authoritative Phase 1 completion handoff for cross-model continuation into Phase 2. - **Last updated:** 2026-07-16 -- **Current phase:** Phase 1 — Static Architecture -- **Last completed pass / batch:** Batch 4D (Pass 4 + Pass 10) -- **Next authorized work:** Wait for user — **Pass 11** (synthesis / executive summary / Ability Migration Matrix) only when explicitly authorized +- **Current phase:** Phase 1 — Static Architecture (**complete**) +- **Last completed pass / batch:** Batch 5 / Pass 11 (synthesis) +- **Next authorized work:** Wait for user — **Phase 2A only** when explicitly authorized ## Phase completed | Item | Value | |------|--------| -| Phase | Phase 1 — Static Architecture (in progress; static archaeology complete pending Pass 11) | -| Batch completed | Batch 4D — Frontend/sessions + UI/HUD/pickups | -| Passes completed | Pass 4, Pass 10 | +| Phase | Phase 1 — Static Architecture | +| Phase status | **Complete** | +| Batch completed | Batch 5 — Synthesis | +| Passes completed | Passes 0–11 (Batches 1–5) | | Date completed | 2026-07-16 | | Model identifier | Cursor Grok 4.5 | --- -## Repository integrity +## Passes completed -### Starting state (Batch 4D) +| Batch | Passes | Focus | +|-------|--------|-------| +| 1 | 0–2 | Continuity; modules/config; native C++ | +| 2 | 3, 5 | BP hierarchy; BP_PlayerCharacterBase | +| 3 | 6 | Per-character abilities | +| 4A | 8 | Animation / AnimNotify | +| 4B | 7 | Partial GAS | +| 4C | 9 | Enemy AI static | +| 4D | 4, 10 | Frontend/sessions; HUD/pickups | +| 5 | 11 | Executive summary; migration matrix; final handoff | -- **Git:** Clean (`git status --short` empty; `git diff` / `git diff --cached` empty). -- **Authorization gate:** Batch 4C committed; Migration-Notes resolved; working tree empty before investigation. -- **Editor:** `IsPIERunning=false`; level `/Game/_Main/Levels/Testing/Test01`; selected actor `BP_Enemy_Skeleton_C_1`. +--- -### Ending state (Batch 4D close) +## Documents created -- Modified files: Markdown under `Documentation/Archaeology/` only (listed below). -- Temporary scratch files `_tmp_pass4.txt` / `_tmp_pass10.txt` deleted if present. +| File | Role | +|------|------| +| Documentation/Archaeology/01-ExecutiveSummary.md | Phase 1 executive synthesis | +| Documentation/Archaeology/07-AbilityMigrationMatrix.md | Final ability migration matrix | + +(Other archaeology docs were created in prior batches.) + +--- + +## Documents completed + +| File | Status | +|------|--------| +| 00-MCP-Capability-Calibration.md | Complete (unchanged in Pass 11) | +| 00A-Phase-1-Execution-Plan.md | Execution plan (Batch 5 marked completed; not a result doc) | +| 01-ExecutiveSummary.md | **Complete** | +| 02-ProjectArchitecture.md | **Complete** | +| 03-ClassHierarchy.md | **Complete** | +| 05-LegacyAbilityArchitecture.md | **Complete** | +| 06-PartialGASArchitecture.md | **Complete** | +| 07-AbilityMigrationMatrix.md | **Complete** | +| 08-CharacterSystems.md | **Complete** | +| 09-EnemyAI-StaticAnalysis.md | **Complete** | +| 10-AnimationDependencies.md | **Complete** | +| 11-UI-HUD-And-Sessions.md | **Complete** | +| 12-Pickups-And-Effects.md | **Complete** | +| 14-EvidenceIndex.md | **Complete** | +| 15-HandoffStatus.md | **Complete** (this document) | + +--- + +## Documents remaining Draft + +| File | Why Draft | +|------|-----------| +| 13-Unknowns-And-RuntimeQuestions.md | Runtime validation planned but **not executed**; remains the open runtime boundary | + +--- + +## Repository state + +### Starting state (Pass 11) + +- **Git before gate commit:** Dirty — only `Documentation/Archaeology/00A-Phase-1-Execution-Plan.md` (Batch 4 complete status). +- **Gate commit:** `48d7a751` — Mark Batch 4 complete in Phase 1 execution plan. +- **After gate:** `git status --short` empty; diffs empty. Batch 4D docs already at `ee652712`. + +### Ending state (Pass 11 close) + +- Modified/created: Markdown under `Documentation/Archaeology/` only (Pass 11 synthesis set). - No Unreal assets, source, config, plugins, or maps modified. -- PIE not started; level and selection unchanged at closeout check. +- PIE not started; level unchanged at closeout. - Ending Git: Archaeology Markdown dirty only (expected before user commit request). --- -## Areas fully inspected (Batch 4D) +## Editor continuity -### Pass 4 -- `GI_Dungeoneer`, `GM_MainMenu`, `GM_Dungeoneer`, `PC_MainMenu`, `PC_Character` -- `WBP_MainMenu`, `WBP_GameSlot`, `WBP_CharacterSelect`, `BP_MainMenuPawn` -- Session create/find/join completion/failure pins -- Maps MainMenu, Test01, Dev_Island, LEVEL_01 (GameMode via deps) -- `Config/*.ini` OnlineSubsystem / Steam / GameInstanceClass grep (negative) -- Example AdvancedSessions BP referencers - -### Pass 10 -- `WBP_PlayerHUD` CDO Overlay classes; `WBP_Overlay` tree + bar bindings -- `BP_OverlayWidgetController` (empty BP; native parent) -- `BPI_PlayerController` UpdatePlayerHUD / AddGold implementation status -- Four `RIREffectActor` pickups EventGraphs + CDO GE / replicate -- `BP_BasePickUp` / `BP_SmallGoldPickUp` gold + DEPRECATED health/mana paths -- UI inventory (pause missing; W_HUD_OLD unreferenced creator) -- Test01 placed pickup counts - -## Areas partially inspected - -- JoinSession internal travel (no explicit success pin) -- Remote-client character-select (server-only CreateWidget) -- Sphere collision profile / GenerateOverlapEvents (tool limit) -- LEVEL_01 menu reachability (no OpenLevel referencer found) -- WBP_BannerMessage / GameStats widgets (existence only) - -## Areas not yet inspected - -- **Pass 11** synthesis / `01-ExecutiveSummary` / `07-AbilityMigrationMatrix` -- PIE / standalone / multiplayer runtime -- Full CommonUI content usage +| Check | Result | +|-------|--------| +| IsPIERunning | false | +| Current level | `/Game/_Main/Levels/Testing/Test01` | +| Selected actors | Empty at Pass 11 continuity check (previously Batch 4D: `BP_Enemy_Skeleton_C_1`) | +| Editor mutation | None | --- -## Files updated +## Runtime work intentionally not performed -| File | Status | -|------|--------| -| Documentation/Archaeology/02-ProjectArchitecture.md | Draft (Pass 4 maps/config) | -| Documentation/Archaeology/03-ClassHierarchy.md | Draft (PC/GI/BPI holes) | -| Documentation/Archaeology/06-PartialGASArchitecture.md | Draft (Overlay + EffectActor Pass 10) | -| Documentation/Archaeology/08-CharacterSystems.md | Draft (char-select spawn) | -| Documentation/Archaeology/11-UI-HUD-And-Sessions.md | Draft (Pass 4+10 rewrite) | -| Documentation/Archaeology/12-Pickups-And-Effects.md | Draft (Pass 10 rewrite) | -| Documentation/Archaeology/13-Unknowns-And-RuntimeQuestions.md | Draft | -| Documentation/Archaeology/14-EvidenceIndex.md | Draft | -| Documentation/Archaeology/15-HandoffStatus.md | Draft | +- No PIE / Simulate / standalone / multiplayer sessions +- No compile or save of Unreal assets +- No Blueprint / GE / GA / tag / animation / widget / map / AI edits +- No OnlineSubsystem configuration changes +- Runtime validation plan written in doc 13 only -**09 not reopened** (pickup enemy ASC note only via 12/06). -**05 / 10 Animation** not modified. -**07 not created.** **01-ExecutiveSummary not created.** +--- -## Key Batch 4D outcomes +## Major current-system conclusions -1. **Sessions live in menu PC/widgets**, not GameInstance; AdvancedSessions nodes connected; OnlineSubsystem project INI **Missing**. -2. **GI_Dungeoneer Present but Unconnected.** -3. **Pawn spawn:** DefaultPawn=None → character-select → SpawnActor+Possess (Gunslinger not in UI; char-select server-only create). -4. **ASC Overlay** Health/Mana connected statically; **no stamina widget**; Overlay class CDOs assigned. -5. **Legacy UpdatePlayerHUD and AddGold unimplemented** on `PC_Character` (not native either). -6. **Four GE pickups** Active static path with **Authority Risk**; gold Partial (AddGold hole); no other currency. -7. **Do not claim sessions or pickups work** without runtime testing. +1. Combat is **legacy Blueprint abilities** (IA → Server_Ability_* → Multicast montage → AnimNotify), not GAS activation. +2. Player ASC/AttributeSet on PlayerState are **Active**; consumable GEs are the only confirmed GE apply path. +3. Dual DEPRECATED vs ASC resources are **unsynchronized** (P0). +4. Amazonian Ability 001 is the only ability with supplied **Observed Runtime Behavior** confirmation. +5. Enemy chase/attack/damage reception are **Implementation Missing** (independent of GetASC defect). +6. Sessions graphs exist but OSS project INI is **Missing**; do not claim MP works. +7. Overlay Health/Mana connected statically; legacy UpdatePlayerHUD and AddGold **unimplemented**. -## Suggested next bounded task +--- -**Authorize Pass 11 explicitly** (Phase 1 synthesis only), e.g.: +## Major defects -1. Create `01-ExecutiveSummary.md` / update synthesis docs -2. Create `07-AbilityMigrationMatrix.md` -3. No PIE unless separately authorized +| Priority | Defect | +|----------|--------| +| P0 | Dual resource SoT; enemy damage/death missing; enemy chase/attack missing | +| P1 | Multicast notify gameplay/cleanup; EffectActor authority; GetASC nullptr; char-select MP; sessions/OSS; AddGold/UpdatePlayerHUD | +| P2 | Cleric 004 defects; orphan default GEs; stamina scaffolding | +| P3 | Naming/prefix debt; unused tags/cues/GI | -**Do not begin Pass 11 without explicit user authorization.** +--- + +## Ability migration summary + +| Character | Disposition summary | +|-----------|---------------------| +| Amazonian 001 | Preserve behavior, migrate implementation (Phase 2C reference) | +| Paladin 001/003/004 | Preserve behavior, migrate implementation | +| Paladin 002 / Cleric partials | Reconstruct legacy behavior first, then migrate | +| Cleric 003 | Preserve behavior, migrate implementation | +| Wizard / Gunslinger stubs | Replace directly with GAS after framework | +| Wizard orphans | Defer pending design decision | +| Shared Multicast gameplay | Replace directly with native/shared framework | +| Dual resources | Reconstruct SoT in 2A first | + +Full matrix: [`07-AbilityMigrationMatrix.md`](07-AbilityMigrationMatrix.md). + +--- + +## Phase 2 recommended starting point + +**Phase 2A — Baseline framework stabilization** + +Establish canonical health/mana/stamina source of truth; default attribute initialization; legacy↔ASC transition policy; shared death/damage architecture; server-authoritative gameplay rules; reliable cleanup/interruption rules; repeatable runtime validation harness. + +Do **not** begin per-character implementation until these contracts are approved. + +--- + +## Required runtime-validation gates + +Before trusting modernization claims, execute (when authorized) the grouped tests in [`13-Unknowns-And-RuntimeQuestions.md`](13-Unknowns-And-RuntimeQuestions.md): + +1. Attributes/HUD → 2. Ability authority → 3. AnimNotify → 4. Interrupt cleanup → 5. Player death → 6–7. Enemy ASC/damage → 8. Pickups → 9. Char-select MP → 10. Sessions → 11. Gold → 12. Respawn/HUD. + +--- + +## Tool limitations + +- CustomEvent Reliability flags not exposed via MCP +- AnimGraph / Death transition DSL empty +- Montage notify trigger times require Manual Editor +- Sphere CDO collision often unreadable +- Semantic Search unavailable in prior passes +- A blocked read-only query is a tool limitation, not evidence of mutation + +--- + +## Exact next action + +Begin Phase 2A with a bounded runtime-baseline and shared resource-authority design pass. Do not begin per-character implementation until the canonical attribute, damage, death, authority, and cleanup contracts are approved. + +**Do not begin Phase 2 without explicit user authorization.** + +--- + +## Integrity statement + +No Unreal assets, source, configuration, maps, plugins, or editor state were modified during Phase 1 archaeology (Passes 0–11). Only Markdown files beneath `Documentation/Archaeology/` were created or updated. --- ## Continuity checklist for next model -1. Read docs 00, 00A, 02–06, 08–15 (and 11–12 as primary Batch 4D deliverables). +1. Read `01-ExecutiveSummary.md`, `07-AbilityMigrationMatrix.md`, `13`, `14`, `15`, then domain docs as needed. 2. Confirm git status before any work; only Archaeology Markdown may change unless user expands authorization. 3. Confirm PIE stopped; level Test01 unless user changed it. -4. Pass 11 = synthesis only — no Unreal mutation, no PIE unless authorized. +4. Phase 2A = design + bounded runtime validation harness — not full character implementation. +5. Wait for explicit authorization before Phase 2.