fix: validation-gate the review's rework loop so unvalidated repos never receive autonomous pushes #243
No reviewers
Labels
No labels
Agent
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
2 participants
Notifications
Total time spent: 2 minutes 26 seconds
Due date
igor
2 minutes 26 seconds
No due date set.
Dependencies
No dependencies set
Reference
joshtronic/igor!243
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/242-fix-validation-gate-the-review-s-rework-loop-don"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this PR does
do_review_tick, checkmaintenance_repo_validatedbefore assigning the bot on REQUEST_CHANGES; unvalidated repos get a human-reviewer request with an explanatory comment insteadforgejo_my_assigned_prsto validated repos only, matching Signal 1's existing behaviorTest plan
bash -n bin/tick.shpasses (syntax clean)bash bin/check-sync.shpasses (AGENTS.md <-> tick.sh contract intact)VALIDATED_REPOS_JSON-- verify the bot posts the "not validated" comment and requests the human reviewer, does NOT assign itselfCloses #242
🤖 Review —
COMMENT(automated)CI for
9347732a: successAdds two validation gates to
bin/tick.sh: (1) a new unvalidated-repo branch indo_review_tick'sREQUEST_CHANGEScase that hands off to a human instead of self-assigning, and (2) a filter in Signal 2's assignment dance so only validated assigned PRs are reworked. The code itself is clean and the change only ever restricts autonomous behavior (no path expands it), so it's low-risk — but a couple of things I can't confirm from the diff alone are worth a human glance.What's solid
done < <(jq -c '.[]' ...)process substitution, which correctly keeps thewhileloop in the current shell soREVIEW_PRassignment persists — the right pattern.maintenance_repo_validated "$target_repo" && repo_validated=trueisset -e-safe (the failing command precedes the final&&).local repo_validated=falseis fine since this is insidedo_review_tick.Reservations I'd want you to weigh
<<<"$VALIDATED_REPOS_JSON"and the change-2 comment asserts that's "the same rule as Signal 1." If both signals already exclude unvalidated repos, cantarget_repoindo_review_tickever actually be unvalidated? If not, the new branch is harmless defense-in-depth rather than the operative fix; if the fix depends on it firing, confirm what path delivers an unvalidated repo intodo_review_tick. (I can't see Signal 1's loop body or the definition ofVALIDATED_REPOS_JSONto settle this.)rc_rounds >= 3escalation (which is gated by tracked round state), the unvalidated branch posts a comment + requests review unconditionally every time it's hit. If the review selector can re-pick the same PR on later ticks, this could re-post "Handing to you" repeatedly. Presumably there's upstream dedup that also protects the existing escalation path — worth confirming that protection covers this branch too.bash -n,check-sync.sh) confirm syntax and the AGENTS.md contract, but neither exercises the actual gating logic. Both manual verification items are unchecked, so the central claims — "posts the comment and requests the human, does NOT self-assign" and "validated repos still drive the rework loop" — have not been demonstrated. Given it's a bash script, a manual run-through (or a sample assigned-PRs payload through the Signal 2 loop) before merge would be reassuring.Nothing here is a hard blocker, but the reachability/idempotency questions plus the unrun behavioral tests are exactly the kind of thing I'd rather you confirm than rubber-stamp.
Independent review by the harness on
claude-opus-4-8. The human reviewer is requested once Igor has reviewed; a human still merges.