project: name: tiny-lisp root: . task_file: tasks.md artifact_dir: .nightshift safety: require_clean_worktree: false scoped_paths: - . allowed_commands: - python -m unittest discover -v forbidden_commands: - rm -rf - git push - curl | bash agents: planner: backend: ollama model: qwen2.5-coder:14b temperature: 0.2 system_prompt: agents/planner.md implementer: backend: ollama model: qwen2.5-coder:14b temperature: 0.1 system_prompt: agents/implementer.md reviewer: backend: ollama model: qwen2.5-coder:14b temperature: 0.1 system_prompt: agents/reviewer.md pipeline: max_task_retries: 3 continue_on_task_failure: false stages: - id: plan type: agent agent: planner output: plan.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: 4 max_lines: 400 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 unittest discover -v output: test-output.txt shell: true timeout_seconds: 60 on_fail: implement - id: review type: agent_review agent: reviewer on_fail: implement output: review.md - id: summarize type: summarize output: final-notes.md