on_status replaces the single on_pass field with a mapping that routes
each review status (pass/fail/retry/escalate) to a different target
stage. The lookup order for non-pass statuses is:
on_status[status] -> on_fail -> next_stage (agent output)
Config parsing validates that on_status keys are valid status names
and all referenced stages exist. Includes test coverage for parsing,
validation errors, pass/fail/escalate routing, and on_fail fallback.
- Add `integ-test` to create, set up, validate, and run integration template tasks
- Add `integ-report` to summarize latest integration run artifacts
- Switch default pastebin template from model fallback to single `qwen3-coder:30b`
- Support optional Ollama fields: `num_ctx`, `num_predict`, `seed`, and `stop`
- Add `nightshift validate` preflight for task-specific test files
- Update pastebin docs, config reference, and ideas tracking
- Add tests for integration helpers, task-test validation, config parsing, and template expectations
What changed:
- Added file_writer stage support in nightshift/config.py:93, nightshift/agents.py:446, and nightshift/pipeline.py:374.
- Added file-block parsing and deterministic patch generation in nightshift/patches.py:65.
- file_writer agents now return complete file blocks:
```file:relative/path.py
<complete file content>
```
NightShift reads current files and generates the unified diff itself.
- Existing patch_validator, patch_normalizer, and patch_apply still run after that.
- Switched tiny-lisp-nightshift/nightshift.yaml:51 to type: file_writer.
- Updated tiny-lisp-nightshift/agents/implementer.md:1 to request file blocks instead of diffs.
- Updated README, tutorial, config reference, and design doc.
Also added tests for parsing file blocks, generating multi-file diffs, validating those diffs, and running a full file_writer -> normalize -> validate pipeline.
Verification: python -m unittest discover -v passes, 101 tests.
- Added operational run logging via nightshift/runlog.py.
- CLI now streams progress during run / run --all.
- Runs write .nightshift/runs/<run-id>/run.log and aggregate .nightshift/nightshift.log.
- Web dashboard now shows the last 100 run log lines.
- Added agent temperature config.
- Added minimal openai_compatible backend and temperature passing for it.
- Added Ollama temperature handling.
- Added scoped repo lookup tools in nightshift/repo_tools.py: list_files, read_file, grep.
- Planner agents can request lookup context with lookup_requests; NightShift saves files-inspected.md and reruns the planner with retrieved context.
- Added repo_context stage type that writes context-pack.md.
- Marked phases 23-27 complete in docs/design.md:990.