# Decisions ## Weekly fork cleanup workflow on `agent-runtimes-agents` A weekly cron in the fork's `.gitea/workflows/cleanup.yaml` deletes `task-*` branches that have been inactive for 7+ days, and resets `main` to an orphan commit if there have been no commits for 7+ days. Supports a dry-run via `workflow_dispatch`. Runs on the fork (not the parent) because Gitea Actions is per-repo and the fork enables Actions independently. Merged 2026-05-04 (PR #1, opened by ai_enablement, merged by admin). ## Shallow clones (`--depth 1`) for task branches in fork cleanup The fork-cleanup workflow uses `--depth 1` when cloning individual task branches it is about to delete — no history is needed beyond the tip. Keeps the runner cheap. The exception is the cleanup job itself, which uses `fetch-depth: 0` so it can inspect commit dates across `main`. ## Workspace pre-test hook reverts agent test edits before each test run `pre_test.sh` at the harness level reverts any agent modifications to test folders before each test run. The hook writes `{"reverted": N}` to `/workspace/.agent-output/.pre-test-result.json` atomically (mktemp + mv). Exit non-zero → that test attempt is skipped. Closes BUG-5 (`.agent-output/` silent drops) and prevents agents from tampering with the tests they are being judged against. ## Workflow nodes declare `output: {path, min_bytes}` for validation All 17 nodes in the spec-planning workflow now carry an `output:` block. The finalize step validates that the declared file exists and meets the minimum size before declaring the node successful. Pairs with wrong-path detection: if the agent writes the right content to the wrong path, a `.correction-prompt.txt` sentinel is written and the entrypoint re-invokes the agent with the correction prompt. Closes BUG-20 (MiniMax finalize no-push). ## Push retry with debug tracing in finalize `finalize.sh` now runs with `set -x` tracing and retries the final git push up to `AGENT_PUSH_RETRIES` times. Output validation gates the push: if `AGENT_EXPECTED_OUTPUT` is set and the file is missing or under-sized, the finalize fails loudly rather than silently pushing an empty branch.