project:
  name: deaddrop
  root: .
  task_file: .nightshift/tasks.md
  artifact_dir: .nightshift

safety:
  require_clean_worktree: false
  scoped_paths:
    - src
    - tests
    - templates
    - pyproject.toml
    - README.md
  allowed_commands:
    - python -m pytest -q tests/test_{task_id_compact}.py
  forbidden_commands:
    - rm -rf
    - git push
    - curl | bash

experiment:
  label: deaddrop-qwen3-coder
  prompt_variant: fixed-tests-qwen3-coder-30b-v1

agents:
  planner:
    backend: ollama
    model: qwen3-coder:30b
    temperature: 0.2
    num_ctx: 8192
    num_predict: 4096
    system_prompt: .nightshift/agents/planner.md

  implementer:
    backend: ollama
    model: qwen3-coder:30b
    temperature: 0.1
    num_ctx: 8192
    num_predict: 4096
    system_prompt: .nightshift/agents/implementer.md

  test_writer:
    backend: ollama
    model: qwen3-coder:30b
    temperature: 0.1
    num_ctx: 8192
    num_predict: 4096
    system_prompt: .nightshift/agents/test-writer.md

  debugger:
    backend: ollama
    model: qwen3-coder:30b
    role: debugger
    temperature: 0.1
    num_ctx: 8192
    num_predict: 4096
    system_prompt: .nightshift/agents/debugger.md

  reviewer:
    backend: ollama
    model: qwen3-coder:30b
    temperature: 0.1
    num_ctx: 8192
    num_predict: 4096
    system_prompt: .nightshift/agents/reviewer.md

pipeline:
  max_task_retries: 6
  stop_on_repeated_failure_signature_after: 6
  continue_on_task_failure: false
  stages:
    - id: plan
      type: agent
      agent: planner
      output: plan.md

    - id: semantic_context
      type: semantic_context
      output: semantic-context.md

    - id: context
      type: repo_context
      output: context-pack.md

    - id: implement
      type: file_writer
      agent: implementer
      output: proposed.patch

    - id: normalize
      type: patch_normalizer
      output: normalized.patch

    - id: validate_patch
      type: patch_validator
      output: patch-validation.md
      max_files: 12
      max_lines: 900
      max_delete_ratio: 0.70
      allowed_paths:
        - src
        - templates
        - README.md
      on_fail: implement

    - id: apply_patch
      type: patch_apply
      mode: apply
      output: patch-apply-output.txt
      on_fail: implement

    - id: test
      type: command
      commands:
        - python -m pytest -q tests/test_{task_id_compact}.py
      output: test-output.txt
      shell: true
      timeout_seconds: 25
      on_fail: implement

    - id: review
      type: agent_review
      agent: reviewer
      output: review.md
      on_fail: implement

    - id: summarize
      type: summarize
      output: final-notes.md
