Add Mission 2 objectives verification document

Created OBJECTIVES_VERIFICATION.md to confirm objectives are clear and constant:

 Verification Status: PASS
- 5 well-defined objectives with descriptive titles
- 15 specific tasks with explicit completion criteria
- Consistent across all files (scenario.json.erb, SOLUTION_GUIDE.md, Ink scripts)
- Progressive unlock structure ensures linear story flow
- Multiple solution paths documented for flexibility

Objectives Summary:
1. Infiltrate Hospital (3 tasks) - Active at start
2. Access IT Systems (3 tasks) - Unlocks after Objective 1
3. Exploit ENTROPY's Backdoor (4 tasks) - Unlocks after server room access
4. Recover Offline Backup Keys (3 tasks) - Unlocks after database flag
5. Make Critical Decisions (2 tasks) - Unlocks after Objectives 3 & 4

Cross-File Verification:
 scenario.json.erb: 5 objectives, 15 tasks
 SOLUTION_GUIDE.md: 5 objectives, 15 tasks (documented)
 Ink scripts: Reference tasks via #complete_task tags
 Global variables: Track objective states

Progression Flow:
Start → Obj 1 → Obj 2 → Obj 3 + Obj 4 → Obj 5 → Complete

Completion Requirements:
- Minimum (60%): 2+ VM flags, offline keys, both moral choices
- Perfect (100%): All 15 tasks, 4 VM flags, 3 LORE fragments, Marcus protected

Player-Facing Clarity:
- Clear task titles guide player actions
- Progressive unlocking prevents confusion
- Multiple solution paths (social, stealth, combat)
- No ambiguity in completion criteria

Optional Content (not required for completion):
- Marcus Protection Choice (moral decision)
- LORE Fragment Collection (3 fragments for narrative depth)

Result: Mission 2 objectives are clear, constant, and suitable for:
- Player guidance during gameplay
- Completion tracking for mission scoring
- Educational assessment of learning outcomes
- Narrative pacing and tension building
This commit is contained in:
Claude
2025-12-24 13:16:17 +00:00
parent 762202524a
commit 10f0964cc4

View File

@@ -0,0 +1,313 @@
# Mission 2: Objectives Verification Report
## Purpose
This document verifies that Mission 2 "Ransomed Trust" has a **clear and constant** set of objectives across all scenario files and documentation.
## Verification Status: ✅ VERIFIED
---
## Objectives Structure
Mission 2 has **5 main objectives** (aims) with **15 total tasks**.
### Summary Table
| # | Objective ID | Title | Tasks | Status at Start |
|---|--------------|-------|-------|-----------------|
| 1 | infiltrate_hospital | Infiltrate Hospital | 3 | Active |
| 2 | access_it_systems | Access IT Systems | 3 | Locked |
| 3 | exploit_entropy_backdoor | Exploit ENTROPY's Backdoor | 4 | Locked |
| 4 | recover_offline_keys | Recover Offline Backup Keys | 3 | Locked |
| 5 | make_critical_decisions | Make Critical Decisions | 2 | Locked |
**Total: 5 Objectives, 15 Tasks**
---
## Detailed Objectives Breakdown
### Objective 1: Infiltrate Hospital
**Status:** Active at mission start
**Order:** 0
**Description:** Enter St. Catherine's Regional Medical Center and meet key staff
#### Tasks:
1. **arrive_at_hospital** - Arrive at hospital reception
- Type: `enter_room`
- Target: `reception_lobby`
- Status: Active (auto-completes on spawn)
2. **meet_dr_kim** - Meet Dr. Sarah Kim (Hospital CTO)
- Type: `npc_conversation`
- Target: `dr_sarah_kim`
- Status: Locked → Unlocks after task 1
3. **talk_to_marcus** - Interview IT administrator Marcus Webb
- Type: `npc_conversation`
- Target: `marcus_webb`
- Status: Locked → Unlocks after task 2
---
### Objective 2: Access IT Systems
**Status:** Locked (unlocks after Objective 1)
**Order:** 1
**Description:** Gain access to hospital's IT infrastructure and server room
#### Tasks:
1. **obtain_password_hints** - Gather SSH password hints from Marcus
- Type: `collect_items`
- Target: `password_sticky_note` (or NPC dialogue)
- Status: Locked
2. **decode_ransomware_note** - Decode Base64 ransomware message
- Type: `custom`
- Location: Infected terminal (IT Department)
- Status: Locked
3. **access_server_room** - Access the server room
- Type: `enter_room`
- Target: `server_room`
- Methods: RFID keycard (high trust) OR lockpicking (medium difficulty)
- Status: Locked
---
### Objective 3: Exploit ENTROPY's Backdoor
**Status:** Locked (unlocks after accessing server room)
**Order:** 2
**Description:** Use ProFTPD vulnerability to access encrypted backups
#### Tasks:
1. **submit_ssh_flag** - Submit SSH access flag
- Type: `submit_flags`
- Flag: `flag{ssh_access_granted}`
- Reward: ENTROPY server credentials intercepted
- Status: Locked
2. **submit_proftpd_flag** - Submit ProFTPD exploitation flag
- Type: `submit_flags`
- Flag: `flag{proftpd_backdoor_exploited}`
- Reward: Shell access to backup server
- Status: Locked
3. **submit_database_flag** - Submit database backup flag
- Type: `submit_flags`
- Flag: `flag{database_backup_located}`
- Reward: Intel reveals safe location (Emergency Equipment Storage)
- Status: Locked
4. **submit_ghost_log_flag** - Submit Ghost's operational log flag
- Type: `submit_flags`
- Flag: `flag{ghost_operational_log}`
- Reward: Unlocks "Ghost's Manifesto" LORE fragment
- Status: Locked
---
### Objective 4: Recover Offline Backup Keys
**Status:** Locked (unlocks after database backup flag submission)
**Order:** 3
**Description:** Find and crack PIN safe for offline backup encryption keys
#### Tasks:
1. **locate_safe** - Locate PIN safe in Emergency Equipment Storage
- Type: `enter_room`
- Target: `emergency_equipment_storage`
- Route: hallway_south → emergency_equipment_storage
- Status: Locked
2. **gather_pin_clues** - Find clues for 4-digit safe PIN
- Type: `custom`
- Clues:
- Hospital founding plaque: "Founded 1987"
- Dr. Kim's sticky note: "Safe combination: founding year"
- Red herring: Emma's photo (2018)
- Answer: **1987**
- Status: Locked
3. **crack_safe_pin** - Crack PIN safe (code: 1987)
- Type: `unlock_object`
- Target: `emergency_storage_safe`
- Methods: PIN 1987 OR PIN cracker device
- Reward: Offline backup encryption keys (USB drive)
- Status: Locked
---
### Objective 5: Make Critical Decisions
**Status:** Locked (unlocks after BOTH Objectives 3 AND 4 complete)
**Order:** 4
**Description:** Decide how to recover hospital systems and handle the crisis
#### Tasks:
1. **make_ransom_decision** - Decide on ransom payment
- Type: `custom`
- Location: Ransom Interface Terminal (server_room)
- Options:
- **Pay Ransom:** 2.5 BTC ($87K), 1-2 patient deaths, 2-4 hour recovery
- **Manual Recovery:** $0 to ENTROPY, 4-6 patient deaths, 12-hour recovery
- Global Variable: `paid_ransom` (true/false)
- Status: Locked
2. **decide_hospital_exposure** - Decide whether to expose hospital negligence
- Type: `custom`
- Location: Closing debrief conversation
- Options:
- **Expose:** Public scandal, Dr. Kim fired, sector-wide security improvements
- **Quiet Resolution:** Dr. Kim keeps job, internal improvements only
- Global Variable: `exposed_hospital` (true/false)
- Status: Locked
---
## Optional Content (Not Required for Completion)
### Marcus Protection Choice
**Type:** Optional moral choice (not a formal task)
**Trigger:** Finding scapegoating email in IT filing cabinet
**Options:**
- Protect Marcus (document warnings) → `marcus_protected` = true
- Warn Marcus to resign → `marcus_protected` = false
- Ignore → `marcus_protected` = false
**Impact:** Affects Marcus's career outcome in debrief
### LORE Fragment Collection
**Type:** Optional collectibles (not formal tasks)
**Fragments:**
1. **Ghost's Manifesto** - VM filesystem (requires flag 4 submission)
2. **CryptoSecure Services Log** - IT filing cabinet (lockpick easy)
3. **Zero Day Syndicate Invoice** - Dr. Kim's safe (PIN 1987)
**Impact:** Unlocks additional narrative content and campaign connections
---
## Cross-File Verification
### Files Checked:
1.`scenario.json.erb` (lines 41-183) - **5 objectives, 15 tasks**
2.`SOLUTION_GUIDE.md` (lines 55-183) - **5 objectives, 15 tasks documented**
3. ✅ Ink dialogue scripts reference task completion via `#complete_task` tags
4. ✅ Global variables track objective states
### Consistency Verification:
| Aspect | scenario.json.erb | SOLUTION_GUIDE.md | Status |
|--------|-------------------|-------------------|--------|
| **Objective Count** | 5 | 5 | ✅ Match |
| **Task Count** | 15 | 15 | ✅ Match |
| **Objective IDs** | infiltrate_hospital, access_it_systems, exploit_entropy_backdoor, recover_offline_keys, make_critical_decisions | Same | ✅ Match |
| **Task IDs** | arrive_at_hospital, meet_dr_kim, talk_to_marcus, obtain_password_hints, decode_ransomware_note, access_server_room, submit_ssh_flag, submit_proftpd_flag, submit_database_flag, submit_ghost_log_flag, locate_safe, gather_pin_clues, crack_safe_pin, make_ransom_decision, decide_hospital_exposure | Same | ✅ Match |
| **Unlock Conditions** | Progressive unlock structure | Documented | ✅ Match |
| **Descriptions** | Clear, concise | Expanded with context | ✅ Consistent |
---
## Progression Flow
### Linear Progression:
```
Start → Objective 1 (Active)
Objective 1 Complete → Unlock Objective 2
Objective 2 (Access Server Room) → Unlock Objective 3
Objective 3 (Submit Flags) → Unlock Objective 4
Objective 3 + 4 Both Complete → Unlock Objective 5
Objective 5 Complete → Mission Complete
```
### Task Dependencies:
- **Objective 1:** Linear (1 → 2 → 3)
- **Objective 2:** Can be completed in any order, but access_server_room gates Objective 3
- **Objective 3:** 4 flags can be submitted in any order (SSH → ProFTPD → Database → Ghost Log recommended)
- **Objective 4:** Linear (1 → 2 → 3)
- **Objective 5:** Both decisions required, order flexible
---
## Clarity Assessment
### ✅ Objectives are CLEAR:
- Each objective has a descriptive title
- Each objective has a clear description of purpose
- Each task has specific completion criteria
- Task types are well-defined (enter_room, npc_conversation, collect_items, submit_flags, unlock_object, custom)
- Target rooms, NPCs, items, and objects are explicitly named
- Multiple solution paths documented (keycard vs lockpicking, social vs investigation)
### ✅ Objectives are CONSTANT:
- Objectives defined once in `scenario.json.erb`
- Same 5 objectives, same 15 tasks across all documentation
- No conflicting task lists
- No ambiguous completion criteria
- Progressive unlock structure ensures consistent player experience
- Global variables track persistent state
---
## Player-Facing Clarity
### In-Game Objective Display:
Players will see objectives in this order:
1.**Objective 1: Infiltrate Hospital** (Active at start)
2. 🔒 **Objective 2: Access IT Systems** (Unlocks after Objective 1)
3. 🔒 **Objective 3: Exploit ENTROPY's Backdoor** (Unlocks after server room access)
4. 🔒 **Objective 4: Recover Offline Backup Keys** (Unlocks after database flag)
5. 🔒 **Objective 5: Make Critical Decisions** (Unlocks after Objectives 3 & 4)
### Task Visibility:
- Active tasks shown with ✅ checkmark when complete
- Locked tasks shown with 🔒 until unlocked
- Progressive unlocking prevents confusion
- Clear task titles guide player actions
---
## Minimum Completion Requirements
### 60% Mission Score (Minimal Path):
- ✅ Objective 1: Complete (3/3 tasks)
- ✅ Objective 2: Complete access_server_room (1/3 tasks minimum)
- ✅ Objective 3: Complete 2+ flags (2/4 tasks)
- ✅ Objective 4: Complete (3/3 tasks)
- ✅ Objective 5: Complete (2/2 tasks)
### 100% Mission Score (Perfect Path):
- ✅ All 5 objectives complete (15/15 tasks)
- ✅ All 4 VM flags submitted
- ✅ All 3 LORE fragments collected (optional)
- ✅ Marcus protected (optional moral choice)
- ✅ Both moral decisions made with informed choices
---
## Conclusion
**Verification Result: PASS ✅**
Mission 2 "Ransomed Trust" has a **clear and constant** set of objectives:
- **5 well-defined objectives** with descriptive titles and purposes
- **15 specific tasks** with explicit completion criteria
- **Consistent across all files** (scenario.json.erb, SOLUTION_GUIDE.md, Ink scripts)
- **Progressive unlock structure** ensures linear story flow
- **Multiple solution paths** documented for flexibility
- **Clear player guidance** through task titles and types
- **No ambiguity** in completion requirements
The objectives are suitable for:
- Player guidance during gameplay
- Completion tracking for mission scoring
- Educational assessment of learning outcomes
- Narrative pacing and tension building
**Document Version:** 1.0
**Last Verified:** Mission 2 Development (Session: claude/prepare-mission-2-dev-KRHGY)
**Status:** All objectives verified clear and constant