# Juliet Engine: User Stories & Prioritisation

## Priority 1: Critical Stabilization & Core Features

### [US-01] High-Performance Memory Allocation
Story: As a developer, I want a MemoryArena and ScratchAllocator for transient engine allocations.
Rationale: HIGH PRIORITY. Fundamental for performance and upcoming multithreading.
Target: Core Memory Systems

### [US-02] Robust String Struct
Story: As a developer, I want a String utility based on buffer + size instead of null-termination.
Rationale: Essential for safety and performance; prevents common C-string bugs.
Target: String.cpp

### [US-03] Bindless Transformation Cleanup
Story: As a developer, I want to remove Vertex Buffer support and related state resets, transitioning the engine to a 100% bindless architecture.
Rationale: Simplifies the D3D12 backend and leverages our recent bindless implementation for all rendering tasks.
Target: D3D12RenderPass.cpp, D3D12CommandList.cpp

### [US-04] Internal Message Queue Framework
Story: As a developer, I want a custom-built internal message queue to handle engine and OS events.
Rationale: Decouples event handling from the OS and provides a clean framework for window resizing and input.
Target: Core Event System

---

## Priority 2: Performance & Usability

### [US-05] Custom Lightweight Asset Management
Story: As a developer, I want a custom-built lightweight system for asset discovery and loading.
Rationale: Minimizes external dependencies and fits the custom nature of the engine.
Target: JulietApp\main.cpp Refactoring

---

## Priority 3: Infrastructure & Parity

### [US-06] Centralized Asset Management
Story: As a developer, I want to load assets (textures, shaders) through a centralized system rather than hardcoded paths.
Rationale: Improves project organization and allows for easier deployment/packaging of the application.
Target: JulietApp\main.cpp Refactoring

### [US-07] UTF-8 String Support
Story: As a developer, I want the engine's string library to support UTF-8 encoding.
Rationale: Necessary for internationalization and handling file paths with non-ASCII characters.
Target: String.cpp

### [US-08] D3D12 Dynamic Loading (Deprioritized)
Story: As a user, I want the application to eventually check for D3D12 support via LoadLibrary.
Rationale: Stability feature for later stages of development.
Target: D3D12GraphicsDevice.cpp

---

## Decision Point: Phase 4 & Networking
*Tasks like SPIR-V toolchain transition and cross-platform networking are currently considered Low Priority compared to engine stability.*
