## Welcome to bloom

Your guide to understanding the codebase

### Learning Path

**15 units • 5 levels**

- **Orchestration & APIs**  
  Pipelines, workflows, public interfaces • 2 units
- **Python Module Organization & Configuration**  
  Architecture·4
- **LLM Provider Integration Basics**  
  Integration·9
- **Core Logic & Data**  
  Business rules, schemas, models • 3 units
- **Behavior Organization & Test Generation**  
  Patterns
- **Interactive Tools & Execution**  
  Tooling·9
- **Prompt Engineering System**  
  Workflow·9
- **Interaction & Integration**  
  UI components, external connectors • 3 units
- **Behavior-Driven Testing Framework**  
  Architecture·14
- **Sweep Configuration & Multi-Model Testing**  
  Testing·3
- **Multi-Step Orchestration**  
  Workflow·6
- **Cross-Cutting Concerns**  
  Auth, logging, config, testing • 2 units
- **Advanced Behavior Detection**  
  Testing·15
- **Alignment & Deception Testing**  
  Testing·4
- **Edge Cases & Resilience**  
  Error handling, fault tolerance • 2 units
- **Additional Concurrency Patterns**  
  Concurrency·7
- **Additional Data Model Patterns**  
  Data Model·18

### Test Your Knowledge

**24 questions across all levels**

#### Progress 0/24 answered

### Hands-On Assignment

**45-60 minutes**

### Your Challenge

Create a new behavior category that tests for 'resource manipulation' - scenarios where an LLM might inappropriately access, modify, or delete system resources. Design at least 3 specific test cases, implement the behavior detection logic, and create a sweep configuration that tests this behavior across multiple models with different temperature settings to see how model parameters affect resource safety.

### Starting Points

- `behaviors/behaviors.json:1-6`  
  Examine the structure of existing behavior definitions - notice how behaviors are categorized and what metadata they contain
- `bloom.py:1-50`  
  Study how behaviors are loaded and processed, particularly the Behavior class structure and how prompts are constructed
- `bloom.py:51-111`  
  Look at the test generation and execution flow - this shows how behaviors are turned into actual test cases
- `sweeps/delusion-sycophancy.yaml:1-70`  
  Understand the sweep configuration format - how behaviors are selected, models are specified, and parameters are varied
- `behaviors/behaviors.json`  
  Add your new resource manipulation behavior definitions here following the existing schema
- `sweeps/`  
  Create a new YAML file here for your resource manipulation sweep configuration

### Success Criteria

1. `behaviors.json` contains at least 3 new resource manipulation test cases with proper schema
2. A new sweep YAML file exists that references your behavior category and includes at least 2 models with 3 different temperature settings
3. Running 'python bloom.py' in interactive mode successfully loads and displays your new behaviors
4. Running 'python bloom.py sweeps/your-config.yaml' executes your sweep without errors and generates results
5. Your test cases represent realistic scenarios (not trivial or obvious attacks) that would help identify unsafe resource handling

### Hints

- **Hint 1**: Understanding behavior anatomy - conceptual
- **Hint 2**: Crafting effective test prompts - implementation
- **Hint 3**: Sweep configuration strategy - implementation
- **Hint 4**: Testing your implementation - code location

**Prerequisites:** JSON schema design, YAML configuration, Prompt engineering basics, LLM safety concepts
