- Resolve Forgejo label name to integer ID before PUT /issues/{n}/labels
(both create_uat_tracking_issue and create_uat_announcement_issue);
string names cause 422 / silent no-op, breaking the cleanup filter
- Add rm -rf /tmp/uat-tester-* and rm -rf /tmp/docs-* to bash allowlist
so worker clone cleanup can actually execute
- Replace multi-line python3 -c calls in Pool Supervisor with jq:
EXISTING_WORKERS lookup now uses jq ltrimstr/startswith filter;
SESSION_ID creation now uses jq -r '.id'
Worker Mode requires git clone, git config, git pull, git checkout,
git add, git commit, git push, and uv commands in bash. These were all
missing from the frontmatter permission block, causing every Worker Mode
instance to fail immediately with permission denied on the first command.
- Delete scripts/fix_uat_tester.py: one-off patch script with a
hardcoded /tmp path that no longer exists. Per CONTRIBUTING.md,
scripts/ is for ongoing-purpose utilities, not development artifacts.
- Remove update_examples_json() from create_documentation_pr(): each
per-PR call was modifying examples.json inside the git clone, causing
merge conflicts when parallel UAT workers created docs PRs
simultaneously. Option A from reviewer: move the call outside the PR
creation function entirely.
- Add batch update_examples_json(documented_examples) call after the
inner docs-PR creation loop completes, guarded by `if documented_examples`.
This runs once per cycle instead of once per PR, eliminating the
examples.json conflict surface for parallel workers.
- Expand CHANGELOG entry to reflect the examples.json fix.
ISSUES CLOSED: #4374
Fixed two critical bugs in the uat-tester agent's create_documentation_pr() function:
1. **Branch-existence guard bug**: Changed existing_branch.get('error') to existing_branch.get('errors') to correctly detect when a branch does not exist. The Forgejo API returns a JSON error body with an errors field (not error) when a branch is absent.
2. **Open-PR duplicate check bug**: Changed head={branch_name} to head={owner}:{branch_name} in the Forgejo API query. The API expects the owner prefix to properly filter PRs by head branch.
These fixes ensure parallel workers can safely coordinate without creating conflicting PRs.
Closes#4374