fix(issue-34): the loop waits for the creator job's descendants, hands reviewers the sub-job table with closing reasons, and voids a round whose source changed during review in every mode
- wait_for_job_tree at the execution, correction and compliance waits; bounded by MAM_CHILD_WAIT_S (3900) and MAM_JOB_TREE_MAX (50) - [하위 위임 잡] table: OPEN / CLOSED-UNCONFIRMED (deadline_timeout, agent_blocked, or error with no reason) / NOT-DISPATCHED / error / completed, plus unattributed open jobs; omitted when there are none so option-less prompts stay byte-identical - --wait-open-jobs also waits for unattributed open jobs - stale-review guard without --worktree/--base: head + tree (control plane excluded) before review, re-checked after verdicts and before promotion; off with a warning when the source cannot be fingerprinted - tests/test_issue34_job_tree.py: real wrapper registrations, real publish_event / deadline close, real loop process Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ec663a93c8
commit
30c8c7ebab
3 files changed
+681
-9
No files matched your search
@@ -38,6 +38,7 @@ LOOP_BASE=""
|
||||
LOOP_REVIEW_ONLY=0
|
||||
LOOP_REVIEW_ISOLATION=""
|
||||
LOOP_REMOTE_REVIEW=""
|
||||
LOOP_WAIT_OPEN_JOBS=0
|
||||
|
||||
# Print usage instructions
|
||||
usage() {
|
||||
@@ -59,6 +60,7 @@ usage() {
|
||||
echo " --review-only Skip implementation; review <base>..HEAD (requires --base)"
|
||||
echo " --review-isolation <v> Review tree with --worktree/--base: worktree (default) or env"
|
||||
echo " --remote-review <v> Remote reviewers with --worktree/--base: refuse (default) or diff-only"
|
||||
echo " --wait-open-jobs Also wait for open jobs registered without --parent-job during the creator's work"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -101,6 +103,7 @@ while [[ "$#" -gt 0 ]]; do
|
||||
--review-only) LOOP_REVIEW_ONLY=1; shift ;;
|
||||
--review-isolation) LOOP_REVIEW_ISOLATION="$2"; shift 2 ;;
|
||||
--remote-review) LOOP_REMOTE_REVIEW="$2"; shift 2 ;;
|
||||
--wait-open-jobs) LOOP_WAIT_OPEN_JOBS=1; shift ;;
|
||||
-h|--help) usage ;;
|
||||
*) echo "Unknown option: $1"; usage ;;
|
||||
esac
|
||||
@@ -130,8 +133,8 @@ fi
|
||||
if [ "${MAM_LOOP_PY:-1}" = "0" ] && { [ -n "$LOOP_WORKTREE" ] || [ -n "$LOOP_BASE" ] \
|
||||
|| [ "$LOOP_REVIEW_ONLY" = "1" ] || [ -n "${MAM_LOOP_WORKTREE:-}" ] \
|
||||
|| [ -n "$LOOP_REVIEW_ISOLATION" ] || [ -n "$LOOP_REMOTE_REVIEW" ] \
|
||||
|| [ -n "$LOOP_PLAN_FILE" ]; }; then
|
||||
echo "ERROR: --worktree/--base/--review-only/--review-isolation/--remote-review/--plan-file require the Python loop (MAM_LOOP_PY=1)" >&2
|
||||
|| [ -n "$LOOP_PLAN_FILE" ] || [ "$LOOP_WAIT_OPEN_JOBS" = "1" ]; }; then
|
||||
echo "ERROR: --worktree/--base/--review-only/--review-isolation/--remote-review/--plan-file/--wait-open-jobs require the Python loop (MAM_LOOP_PY=1)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in new issue
Block a user