Transmission #043: Quest progress and completion achievements (Step 10)
QuestSessionState now AttachTracker / DetachTracker: listens to StatValueChanged, syncs ActiveQuest.CurrentProgress, and when newValue >= target removes the quest and raises QuestCompleted with QuestCompletedInfo (title, stat line, completed target). TryAcceptQuest calls TryImmediateCompletionIfAlreadyMet so quests accepted while already over target finish immediately. PlayerStatTrackerProvider attaches the session tracker in Awake and detaches in OnDestroy. ProgressionOrchestrator resolves QuestSession from the provider (or AttachQuestSessionForUnitTests), handles OnQuestCompleted: toast Quest complete: '…', enqueues PendingStatAchievement titled '…' completed with tier from LootBoxTierRules.TierForMilestoneThreshold(completedTarget), then New Achievement '…' toast. AttachTrackerForUnitTests now clears quest subscription to avoid cross-talk with the DDOL provider during isolated tests. Edit Mode tests cover completion / wrong-stat behavior and orchestrator tier (Basic at 10, Cool at 1000). Implementation plan Step 10 remains the vertical slice for quest → achievement → claim path; next is Step 11 (remaining stat gameplay hooks).