default_max_attempts_per_step: "invalid"  # Should be integer
tokens_for_ai_rubric: 123  # Should be string

sections:
  - section_id: "section_1"
    title: "Test Section"
    steps:
      - step_id: "step_1"
        title: "Valid Step"
        content_blocks:
          - "This is a valid step."
        
      - step_id: "step_2" 
        title: "Question Step"
        question: "What do you want to do?"
        tokens_for_ai: |
          Categorize the response.
        feedback_tokens_for_ai: |
          Provide feedback.
        buckets:
          - valid_response
          - invalid_response
        transitions:
          valid_response:
            content_blocks:
              - "Good response!"
            metadata_add:
              test_key: "value"
            metadata_feedback_filter:
              - user_response
              - result
            next_section_and_step: "section_1:step_3"
          invalid_response:
            content_blocks:
              - "Try again."
            metadata_remove: ["temp_data", "old_value"]
            next_section_and_step: "section_1:step_2"
          unused_bucket:  # This should trigger a warning
            content_blocks:
              - "This transition is unused"
            
      - step_id: "step_3"
        title: "Final Step With Question"  # This should be an ERROR - final steps can't have questions
        question: "This is invalid for a final step"
        buckets:
          - some_bucket  # This should be an ERROR - final steps shouldn't have buckets
        transitions:
          some_bucket:
            content_blocks:
              - "Done"
            # No next_section_and_step - this makes it a terminal step
      
      - step_4  # Missing step_id field - ERROR
        title: "Invalid Step Structure"
        # Missing either content_blocks or question - ERROR
        
      - step_id: "step_5"
        title: "Python Syntax Error Step"
        question: "Test question"
        pre_script: |
          # This has a syntax error
          if True
              print("missing colon")
        processing_script: |
          # This has an empty else block
          if condition:
              do_something()
          else:
              # This will trigger a warning about empty else block
        buckets:
          - test_bucket
        transitions:
          test_bucket:
            run_processing_script: "not_boolean"  # Should be boolean
            metadata_clear: "not_boolean"  # Should be boolean  
            metadata_feedback_filter: "not_list"  # Should be list
            metadata_remove: 123  # Should be string or list
            next_section_and_step: "invalid_format"  # Should be section:step format
            
  - section_id: "section_1"  # Duplicate section_id - ERROR
    title: "Duplicate Section"
    steps:
      - step_id: "duplicate_step"
        title: "Test"
        content_blocks: "not_a_list"  # Should be list
        
      - step_id: "duplicate_step"  # Duplicate step_id - ERROR
        title: "Another Duplicate"
        content_blocks:
          - 123  # Should be string