Files
realms-in-ruin-dev/Documentation/Phase2/02-Phase2A-OpenDecisions.md
T
tedwardsandCursor 6aab068876 Document Phase 2A2b owner approval of shared gameplay contracts.
Record Approved and Approved-with-Conditions decisions, reject bidirectional sync and client-overlap pickup RPC, and keep runtime validation as non-blocking obligations.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-17 08:20:29 -07:00

13 KiB
Raw Blame History

Phase 2A — Open Decisions and Validation Obligations

Field Value
Status Draft
Date 2026-07-17
Phase 2A1 Git commit aa0058a0
Phase 2A2a commit c2fa15db
Phase 2A2b base commit c2fa15db
Why Draft remains Runtime validation obligations are incomplete; architecture contracts are owner-approved but not runtime-proven

Architecture questions C-001 through C-015 are Resolved by owner decision (2026-07-17). This document no longer holds open architecture conflicts for those contracts. It preserves validation obligations, deferred implementation choices, and historical evidence.

Contracts: 03-SharedGameplayContracts.md (Status: Complete). Register: 04-Phase2A-DecisionRegister.md (Status: Complete).


Phase 2A2b — Owner decision reconciliation

Field Value
Pass 2A2b — Apply owner contract approvals
Owner decision date 2026-07-17
Architecture status C-001C-015 resolved

Architecture questions resolved by owner decision

Decision Classification Contract Owner state
Canonical health source of truth Resolved by owner decision C-001 Approved
Canonical mana source of truth Resolved by owner decision C-001, C-003 Approved
Canonical stamina source of truth Resolved by owner decision C-001, C-002 Approved / Approved with Conditions (init)
Temporary legacy mirror during reconstruction Resolved by owner decision C-004 Approved (transitional only)
Where damage must enter shared framework Resolved by owner decision C-005 Approved
Where death threshold evaluation must occur Resolved by owner decision C-007 Approved
Whether AnimNotifies may trigger authoritative gameplay Resolved by owner decision C-009, C-010 Approved / Approved with Conditions
Required interruption and cleanup contract Resolved by owner decision C-011 Approved
Required respawn and HUD lifecycle contract Resolved by owner decision C-008, C-013 Approved with Conditions / Approved
Pickup authority model Resolved by owner decision C-014 Approved
PlayerState versus pawn ownership boundaries Resolved by owner decision C-012 Approved
How to enable 2-client PIE for remaining evidence Validation obligation / environment Not an architecture SoT conflict
Enhanced Input injection for automated ability tests Validation obligation / environment Not an architecture SoT conflict

Deferred implementation choices (not open architecture conflicts)

Choice Related contract Resolve during
Exact default-GE mapping mechanism C-002 Implementation planning / bounded init batch
Gameplay Effect versus ExecutionCalculation details for damage C-005 Implementation planning / damage batch
Exact authoritative animation-timing mechanism C-010 Implementation planning / ability framework
Exact temporary observability implementation C-015 Implementation planning / harness
Whether any real consumer requires a temporary legacy shadow C-004 Consumer inventory during migration planning

Runtime validation obligations

These remain validation obligations. They are not architecture approval blockers. Tool inaccessibility is not runtime absence.

Area Status Evidence IDs Related contracts
Enhanced Input ability execution Blocked by Test Environment / Tool Limitation RE-2A1-015, 019, 021; RT-002/004/005 C-009, C-010, C-011
AnimNotify execution roles Blocked by Missing Runtime Evidence RE-2A1-019, 021 C-009, C-010
Ability cost mutation Blocked by Missing Runtime Evidence / Tool Limitation RE-2A1-014, 015 C-003, C-004
Interruption and cleanup Blocked by Test Environment RE-2A1-020; RT-004B C-011
Player damage / death / respawn Blocked by Missing Implementation / Tool Limitation RE-2A1-022; RT-006 C-005, C-007, C-008
Two-client replication Blocked by Test Environment / Tool Limitation RE-2A1-023026; RT-007010 C-009, C-014
Remote character selection Blocked by Test Environment Depends on RE-2A1-023 C-008 related / 2E
Pickup authority and visibility Blocked by Test Environment / Tool Limitation RE-2A1-017, 018; RT-003/010 C-014
Enemy attribute mutation Blocked by Missing Runtime Evidence / Tool Limitation RE-2A1-028, 030; RT-011 C-005, C-012
Session behavior Still open for Phase 2E Not closed by 2A1 Outside 2A contracts

Defects and limitations still accounted for

Observation Handling
PlayerFirstSpawn Accessed None; spawn still succeeds C-008 failure modes; validation during respawn/spawn work
Amazonian/Paladin legacy defaults differ; legacy health at 0 C-001/C-004/C-007; migration must not leave lethal legacy writers
ASC defaults identical; no active default GE; no granted GAs C-002 Approved with Conditions
Enhanced Input / multi-client PIE tooling limits Validation obligations; C-015
Enemy inspector cannot read attributes C-012 corrected accessor; C-015; not treated as ASC absence

Duplicate / superseded (historical)

Topic Classification Disposition
Separate health/mana/stamina SoT rows Duplicate → unified under C-001 Historical table retained below
Legacy mirror options Superseded by C-004 owner decision Bidirectional Rejected

Historical — Phase 2A2a reconciliation (preserved)

Phase 2A2a classified decisions as Addressed by Proposed Contract only. Owner approval occurred in 2A2b. The 2A2a classifications are superseded by the 2A2b table above but retained for continuity.

Pass Status
2A2a Proposed contracts; none Approved
2A2b Owner Approved / Approved with Conditions

Historical Phase 2A1 open-decision table (preserved)

The following table is the Phase 2A1 inventory. Evidence references are retained. Architecture options in this table are historical; owner outcomes live in docs 03/04 and the 2A2b section above.

Decision Static evidence Runtime evidence Options Blocking unknown Required approval
Canonical health source of truth Dual pools: ASC Health/MaxHealth vs DEPRECATED_CurrentHealth/MaxHealth; combat uses legacy; potions use ASC ASC init 75/100 confirmed; Amazonian/Paladin legacy Current/Max Health = 0 at spawn; Overlay binds ASC A) ASC only immediately B) Legacy only during reconstruction C) ASC canonical with temporary legacy mirror D) Character-specific transitional policy Whether death/combat must keep working on legacy-zero characters before mirror Phase 2A2 architecture contract — Resolved 2A2b C-001
Canonical mana source of truth Abilities use DEPRECATED_*Mana + FCanUseMana; potions modify ASC Mana ASC Mana 25/50; Paladin legacy Mana 100/100; Amazonian legacy Mana 0/0; Paladin Ability004ManaCost CDO = 0 A) ASC only B) Legacy only during reconstruction C) ASC + mirror D) Per-ability migration Ability cost mutation path not runtime-proven (input Tool Limitation) Resolved 2A2b C-001/C-003
Canonical stamina source of truth ASC Stamina attrs present; no stamina widget; no stamina pickup ASC Stamina 0/0; Amazonian legacy stamina 85/100; Paladin legacy stamina 0/0 A) ASC only B) Legacy only C) Defer stamina until after health/mana D) Remove stamina until redesigned Whether stamina is required for Phase 2B ability framework Resolved 2A2b C-001/C-002; UI gated by C-013
Temporary legacy mirror during reconstruction No sync code found Confirmed divergent values at spawn; Overlay shows ASC while combat vars are legacy zeros A) One-way ASC→legacy B) One-way legacy→ASC C) Bidirectional during transition D) No mirror; switch cutover Which systems still read legacy at runtime (death path not executed) Resolved 2A2b C-004; whether any shadow consumer needed remains Deferred
Where damage must enter shared framework Player ApplyDamage + legacy health; potions via GE; enemy inbound Missing Damage path not exercised (no enemy attack; ability input Tool Limitation) A) Gameplay Effect Execution only B) Shared native damage API writing ASC C) Keep ApplyDamage adapter to ASC D) Hybrid Runtime authority of ApplyDamage vs GE still unverified Resolved 2A2b C-005; ExecCalc Deferred
Where death threshold evaluation must occur Amazonian AnyDamage → subtract legacy health → ≤0 PlayerDeath Not observed; legacy health already 0 at spawn implies immediate death-threshold risk if AnyDamage fires A) ASC Health ≤0 B) Legacy ≤0 C) Shared Predicates on ASC with legacy shim D) Tag-based death Whether AnyDamage runs with CurrentHealth=0 Resolved 2A2b C-007; validation obligation remains
Whether AnimNotifies may trigger authoritative gameplay Static: UseAbility* from AN_*; Multicast montage; server notify evaluation assumed Ability/notify chain not executed (Enhanced Input Tool Limitation) A) Forbid authoritative notify gameplay B) Allow only on Authority with validation C) Move timing to Ability Tasks D) Keep notify for VFX only Server vs client notify execution roles unknown at runtime Resolved 2A2b C-009/C-010; timing mechanism Deferred
Required interruption and cleanup contract AN_AttackComplete clears CurrentlyAttacking; montage complete pins unconnected; interrupt may skip cleanup Interrupt test blocked; cleanup not observed A) Ability Task end states B) Cancel tags C) Explicit EndAbility + force clear CurrentlyAttacking D) Montage blend-out notify required Which existing actions can interrupt without asset edits Resolved 2A2b C-011; validation obligation remains
Required respawn and HUD lifecycle contract Server_RespawnPlayer ~2s; Overlay recreate risk; stale widgets possible RT-006 blocked — respawn/HUD recreation not observed A) Destroy+recreate Overlay each possess B) Rebind existing Overlay C) HUD owned by PC only D) PlayerState-driven Overlay Post-respawn Owner/Avatar and Overlay instance counts Resolved 2A2b C-008/C-013; validation obligation remains
Pickup authority model No authority gate; bReplicates=false; overlap→GE→destroy HealthPotion runtime bReplicates=false confirmed; overlap/GE apply not observed A) Server-only overlap apply + replicate actor B) Server RPC from client overlap C) GAS cue + server GE only D) Keep local for SP prototypes Duplicate apply / client desync still unverified in MP Resolved 2A2b C-014; option B rejected as default
PlayerState versus pawn ownership boundaries ASC on ARIRPlayerState; pawn caches via InitAbilityActorInfo; Overlay via HUD PS ASC works; pawn attribute query works; enemy ASC component present but inspector rejects actor A) Keep ASC on PlayerState for players B) Move ASC to pawn C) Dual ownership with clear Avatar rules D) Enemy-specific ASC init contract Enemy ASC InitAbilityActorInfo / interface exposure at runtime Resolved 2A2b C-012
How to enable 2-client PIE for remaining evidence MCP StartPIE lacks NumberOfPlayers; PlayIn settings exist Read: playNumberOfClients=1, PIE_Standalone; non-persisting UI set not achieved; config save unauthorized A) Manual editor Play settings (user) then re-run RT-007010 B) Authorize transient SetSectionProperties without Save if possible C) Defer MP until harness exists D) Dedicated listen-server process (out of scope) Whether editor can raise clients without writing config Environment / validation harness — remains open
Enhanced Input injection for automated ability tests Input maps IA_Ability_* in IMC_PlayerDefault Slate PressKey does not activate abilities; OS injection blocked by policy A) Manual human-driven ability tests B) Authorize OS input for evidence harness C) Temporary debug console activate (unauthorized now) D) Automation Driver outside MCP Cannot close AnimNotify/authority decisions without ability fire Environment / validation harness — remains open

Explicitly not decided here

  • Final Gameplay Ability class layout
  • Final attribute set schema changes beyond approved SoT
  • Whether to delete DEPRECATED_* in a specific batch
  • Per-character reconstruction start (blocked until Phase 2A implementation sequence approved)
  • Exact deferred implementation choices listed above

Next authorized step

Wait for explicit authorization before Phase 2A3 implementation planning. Do not begin Unreal implementation or Phase 2B from this document alone.