summaryrefslogtreecommitdiff
path: root/Omni
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2025-11-20 23:15:49 -0500
committerBen Sima <ben@bsima.me>2025-11-20 23:15:49 -0500
commitb63fc12f1a1229520d0227143b496079a12f2253 (patch)
treebec2229c7956d69fa9cf67e3c801d0a969531dc3 /Omni
parent3eeffaaed05e6fbe547d9c56937fa3e2738777d7 (diff)
docs(agent): add rigorous git/state learnings to design
Diffstat (limited to 'Omni')
-rw-r--r--Omni/Agent/DESIGN.md3
1 files changed, 3 insertions, 0 deletions
diff --git a/Omni/Agent/DESIGN.md b/Omni/Agent/DESIGN.md
index eb30ecb..a53c802 100644
--- a/Omni/Agent/DESIGN.md
+++ b/Omni/Agent/DESIGN.md
@@ -91,6 +91,9 @@ The Haskell implementation should replicate the logic of `start-worker.sh` but w
- If the task depends on another task that is *not* yet in `live` (e.g., in `Review`), the worker should branch off the dependency's branch (`task/<dep-id>`).
- Otherwise, branch off `live` (via the worker's base branch).
- **Clean State**: The worker should ensure the workspace is clean (no uncommitted changes) before starting a new loop iteration.
+- **Rebase Safety**: Always check the exit code of `git rebase`. If it fails (conflicts), abort immediately (`git rebase --abort`) to avoid leaving the repo in a broken interactive rebase state.
+- **Status Verification**: Verify that task status updates actually succeed. Check `task ready` output against `live` state to prevent "zombie" tasks (completed in live but stuck in local loop) from being re-claimed.
+- **Binary Freshness**: Ensure the `task` binary used by the worker is rebuilt/updated when source code changes, otherwise logic fixes (like `task ready` filtering) won't take effect.
## 5. Migration Strategy