Document Pass 11 Phase 1 synthesis and close static archaeology.

Add executive summary and ability migration matrix; finalize evidence index, runtime validation plan, and Phase 1 handoff.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-16 23:40:52 -07:00
co-authored by Cursor
parent 48d7a75149
commit aa0058a018
15 changed files with 2368 additions and 359 deletions
@@ -1,6 +1,6 @@
---
name: Phase 1 Archaeology
overview: "Phase 1 archaeology: Batches 14 complete (4A4D — 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 15 (Passes 011). 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 02 — 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 14 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** — 4A4D |
| 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 4A4D** (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
@@ -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 14; Passes 010). 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.8compatible 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_001004`, `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 | 002004 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 24 |
| 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 67 |
| 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 811 |
| 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 (010) 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 | 002004 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`.
@@ -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)
+7 -13
View File
@@ -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
@@ -1,17 +1,19 @@
# 05 — Legacy Ability Architecture
**Status: Draft**
**Status: Complete**
- **Scope:** Shared `BP_PlayerCharacterBase` ability architecture (Batch 2) plus per-character Ability 001004 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_001004`); `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
---
@@ -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 58 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`.
---
File diff suppressed because it is too large Load Diff
@@ -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 001004 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 001004 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`.
---
@@ -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 docs 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`.
---
@@ -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 89. **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_001004`, `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`).
---
@@ -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
@@ -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)
@@ -2,46 +2,60 @@
**Status: Draft**
- **Scope:** Unresolved questions after Batches 14D (Passes 4, 710).
- **Inspection method:** Consolidation through Pass 10.
- **Scope:** Unresolved questions after Phase 1 static archaeology (Batches 15). 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 13 / 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 14D resolutions (Passes 010)
- Pass 11: bounded runtime validation plan (groups 112)
- 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.**
+51 -30
View File
@@ -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 13; Pass 7; Pass 8; Pass 9; **Pass 4 frontend/sessions; Pass 10 HUD/pickups**
- Batches 14D 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 13 | 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_001004 → 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_001004; 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 57 | 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 12 statements (sessions/pickups deferred → resolved in Batch 4D).
- Full narrative: `01-ExecutiveSummary.md`. Ability dispositions: `07-AbilityMigrationMatrix.md`.
+165 -79
View File
@@ -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 011 (Batches 15) |
| Date completed | 2026-07-16 |
| Model identifier | Cursor Grok 4.5 |
---
## Repository integrity
## Passes completed
### Starting state (Batch 4D)
| Batch | Passes | Focus |
|-------|--------|-------|
| 1 | 02 | 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 → 67. 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 011). Only Markdown files beneath `Documentation/Archaeology/` were created or updated.
---
## Continuity checklist for next model
1. Read docs 00, 00A, 0206, 0815 (and 1112 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.