Nocturne v1.2.0
Highlights
Post-PR feedback loop (opt-in: reactions.enabled)
After Nocturne opens a PR it can now keep shepherding it toward merge-ready. It never merges; an approved and green PR only notifies a human.
- Failing CI -> re-dispatches the agent on the same branch and fast-forward pushes a fix (no new PR, no force)
- Reviewer requested changes -> addresses the comments on the same branch
- Approved and green -> notifies you it is ready to merge
- Reads PR lifecycle, CI, and review state via gh api REST; dedupes on head sha; escalates after max_fix_attempts; stops on merge, close, or TTL
Agent isolation hardening
- opencode and the verify step run with GitHub tokens, stored gh auth, and SSH agent/keys stripped
- Commits touching CI workflows, private keys, or credential files are blocked from PRs
- Live issue state is re-checked before opening a PR (closed, label removed, or already has a PR)
Operational footguns closed
- Reap failed/aborted worktrees so they cannot exhaust disk
- Enforce the token budget mid-run
- Network timeouts on git push and gh pr create
- Cap opencode output held in memory
605 tests pass; ruff and mypy clean.