ralph-teams 1.0.30 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +2 -1
- package/dist/commands/task.js.map +1 -1
- package/package.json +1 -1
- package/prompts/team-lead-policy.md +15 -2
- package/prompts/team-lead-runtime.md +13 -1
- package/ralph.sh +192 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAA2C,MAAM,WAAW,CAAC;AAGjH,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAEpE,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1G,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3G,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACxC;AAqGD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAA2C,MAAM,WAAW,CAAC;AAGjH,KAAK,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAEpE,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1G,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3G,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACxC;AAqGD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBzF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B1F;AAoDD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,CA+CnE;AAyCD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,EACzB,IAAI,GAAE,QAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
package/dist/commands/task.js
CHANGED
|
@@ -163,7 +163,8 @@ function buildTaskExecutionPrompt(task, cwd, branch) {
|
|
|
163
163
|
'- Work in the current repository and stay on the current branch.',
|
|
164
164
|
'- Do not create or switch branches unless the user explicitly asks.',
|
|
165
165
|
'- You may use story-planner, builder, and story-validator teammates when helpful.',
|
|
166
|
-
'- If the runtime is Claude,
|
|
166
|
+
'- If the runtime is Claude, create a Claude agent team at the start of the task and use that team for delegated work instead of Claude subagents or a single-threaded solo workflow.',
|
|
167
|
+
'- If the runtime is Claude, do not execute the task as a solo Team Lead when team creation is available.',
|
|
167
168
|
'- If the runtime supports teammate model choice, respect explicit config overrides first; otherwise choose cheaper models for easy work and stronger models for difficult work.',
|
|
168
169
|
'- If the runtime is Codex, use these named teammate roles when spawning: story_planner_easy/story_planner_medium/story_planner_difficult, builder_easy/builder_medium/builder_difficult, story_validator_easy/story_validator_medium/story_validator_difficult.',
|
|
169
170
|
'- You may skip planning for very simple tasks, but plan internally or via a story-planner teammate when the task has ambiguity or design risk.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Team Lead Policy
|
|
2
2
|
|
|
3
|
-
You coordinate epic execution.
|
|
3
|
+
You coordinate epic execution. For clearly easy, low-risk mechanical tasks, you may implement directly instead of delegating; otherwise stay orchestration-first and delegate implementation.
|
|
4
4
|
|
|
5
5
|
## Core Rules
|
|
6
6
|
|
|
@@ -46,6 +46,7 @@ You coordinate epic execution. Do not write implementation code yourself.
|
|
|
46
46
|
## Per Story Workflow
|
|
47
47
|
|
|
48
48
|
- Before starting a story, check the epic state file. If the story has `passes: true`, skip it.
|
|
49
|
+
- For clearly easy, low-risk mechanical stories, you may implement directly in the Team Lead session when delegation overhead would exceed the work. Keep the change narrowly scoped and still run the required verification yourself before counting the story complete.
|
|
49
50
|
- Before delegating a story, determine the likely setup/build/test commands for this repository and pass the relevant commands or repository-based guidance to the Builder.
|
|
50
51
|
- If an epic plan exists, give the Builder the story, acceptance criteria, relevant plan section, and especially the story's planned test design.
|
|
51
52
|
- If a story planner was used, give the Builder the story planner output too.
|
|
@@ -93,4 +94,16 @@ You coordinate epic execution. Do not write implementation code yourself.
|
|
|
93
94
|
}
|
|
94
95
|
```
|
|
95
96
|
- When all stories are processed, verify every attempted story has an updated state file result.
|
|
96
|
-
|
|
97
|
+
|
|
98
|
+
## Merge Completion
|
|
99
|
+
|
|
100
|
+
- If every story in the epic passes, this same Team Lead session must attempt the merge before exiting.
|
|
101
|
+
- Use the loop-branch name, repository-root path, epic branch name, and merge-result artifact path provided by the runtime prompt.
|
|
102
|
+
- You may leave the epic worktree only for this final merge attempt. Keep all other work inside the epic worktree.
|
|
103
|
+
- Attempt the merge on the repository root branch with `git merge <epic-branch> --no-commit --no-ff` so you can resolve conflicts before the final commit.
|
|
104
|
+
- Before the merge attempt, check the repository root for uncommitted changes. If it is dirty, create a checkpoint commit so the merge can proceed cleanly.
|
|
105
|
+
- If the merge is clean, commit it and write a merge-result artifact with `status: "merged"` and mode `clean` or `projected-prd` as appropriate.
|
|
106
|
+
- If there are conflicts, resolve them yourself in this same session. Do not delegate to another merger role or any other teammate. If you resolve the conflicts, commit the merge and write `status: "merged"` with mode `conflict-resolved`.
|
|
107
|
+
- If you cannot resolve the merge safely, abort the merge, write a merge-result artifact with `status: "merge-failed"`, include a short concrete `details` string, and then exit.
|
|
108
|
+
- The merge-result artifact must be written atomically to the exact path provided by the runtime prompt before you print the final DONE line.
|
|
109
|
+
- Only print `DONE: X/Y stories passed` after the merge attempt and merge-result artifact write are finished.
|
|
@@ -5,7 +5,7 @@ You are the Team Lead for this epic. Read the epic below and execute it.
|
|
|
5
5
|
|
|
6
6
|
## Working Directory
|
|
7
7
|
ALL work for this epic MUST happen in this directory: {{WORKTREE_ABS_PATH}}
|
|
8
|
-
Do NOT modify files outside this directory, except for the epic state file below.
|
|
8
|
+
Do NOT modify files outside this directory, except for the epic state file below and the final merge workflow paths listed later in this prompt.
|
|
9
9
|
|
|
10
10
|
## Project Setup Strategy
|
|
11
11
|
- Ralph does not preinstall dependencies or preselect build/test commands for this repo.
|
|
@@ -22,6 +22,18 @@ Do NOT modify files outside this directory, except for the epic state file below
|
|
|
22
22
|
## PRD File Path (read-only context)
|
|
23
23
|
{{WORKTREE_PRD_PATH}}
|
|
24
24
|
|
|
25
|
+
## Merge Responsibility
|
|
26
|
+
- If all stories pass, this same Team Lead session owns the merge attempt before exiting.
|
|
27
|
+
- Loop branch to merge into: {{LOOP_BRANCH}}
|
|
28
|
+
- Source epic branch: {{EPIC_BRANCH}}
|
|
29
|
+
- Repository root for the merge attempt: {{ROOT_DIR}}
|
|
30
|
+
- Write the final merge result artifact to: {{WORKTREE_MERGE_RESULT_FILE}}
|
|
31
|
+
- The merge result artifact must be valid JSON with fields: epicId, status, mode, details, timestamp.
|
|
32
|
+
- Allowed status values: merged, merge-failed.
|
|
33
|
+
- Allowed mode values: clean, projected-prd, conflict-resolved, unknown.
|
|
34
|
+
- When all stories pass, do not print DONE until after you have attempted the merge and written the merge result artifact.
|
|
35
|
+
- During the merge attempt you may operate in the repository root path above even though normal implementation work stays inside the epic worktree.
|
|
36
|
+
|
|
25
37
|
## Epic
|
|
26
38
|
{{EPIC_JSON}}
|
|
27
39
|
|
package/ralph.sh
CHANGED
|
@@ -682,14 +682,70 @@ ensure_loop_branch_ready() {
|
|
|
682
682
|
|
|
683
683
|
ensure_loop_branch_ready
|
|
684
684
|
|
|
685
|
+
epic_branch_name() {
|
|
686
|
+
local epic_id="$1"
|
|
687
|
+
echo "ralph/epic/${LOOP_BRANCH#ralph/}/${epic_id}"
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
find_pending_epic_loop_history_conflict() {
|
|
691
|
+
local epic_id="$1"
|
|
692
|
+
local epic_branch
|
|
693
|
+
epic_branch=$(epic_branch_name "$epic_id")
|
|
694
|
+
|
|
695
|
+
if git show-ref --verify --quiet "refs/heads/${epic_branch}" && git merge-base --is-ancestor "$epic_branch" "$LOOP_BRANCH" >/dev/null 2>&1; then
|
|
696
|
+
echo "pending epic branch '${epic_branch}' is already an ancestor of loop branch '${LOOP_BRANCH}'"
|
|
697
|
+
return 0
|
|
698
|
+
fi
|
|
699
|
+
|
|
700
|
+
local merge_subject
|
|
701
|
+
merge_subject=$(git log "$LOOP_BRANCH" --merges --format=%s --grep="^Merge branch '${epic_branch}' into " -n 1 2>/dev/null || true)
|
|
702
|
+
if [ -n "$merge_subject" ]; then
|
|
703
|
+
echo "loop branch '${LOOP_BRANCH}' already contains prior merge history for '${epic_branch}' (${merge_subject})"
|
|
704
|
+
return 0
|
|
705
|
+
fi
|
|
706
|
+
|
|
707
|
+
return 1
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
fail_on_pending_epic_git_state_mismatch() {
|
|
711
|
+
local mismatch_found=0
|
|
712
|
+
|
|
713
|
+
for epic_index in $(seq 0 $((TOTAL_EPICS - 1))); do
|
|
714
|
+
local epic_status epic_id conflict_reason
|
|
715
|
+
epic_status=$(rjq read "$PRD_FILE" ".epics[$epic_index].status" "pending")
|
|
716
|
+
[ "$epic_status" = "pending" ] || continue
|
|
717
|
+
|
|
718
|
+
epic_id=$(rjq read "$PRD_FILE" ".epics[$epic_index].id")
|
|
719
|
+
conflict_reason=$(find_pending_epic_loop_history_conflict "$epic_id" || true)
|
|
720
|
+
[ -n "$conflict_reason" ] || continue
|
|
721
|
+
|
|
722
|
+
if [ "$mismatch_found" -eq 0 ]; then
|
|
723
|
+
echo "Error: pending epics in '$PRD_FILE' conflict with the current loop branch state." >&2
|
|
724
|
+
fi
|
|
725
|
+
mismatch_found=1
|
|
726
|
+
echo " [$epic_id] $conflict_reason" >&2
|
|
727
|
+
done
|
|
728
|
+
|
|
729
|
+
if [ "$mismatch_found" -eq 1 ]; then
|
|
730
|
+
echo "Fix the mismatch before rerunning Ralph:" >&2
|
|
731
|
+
echo " 1. Mark the already-merged epic(s) completed in '$PRD_FILE', or" >&2
|
|
732
|
+
echo " 2. Start from a fresh loop branch that does not already contain those merges." >&2
|
|
733
|
+
exit 1
|
|
734
|
+
fi
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
fail_on_pending_epic_git_state_mismatch
|
|
738
|
+
|
|
685
739
|
# --- Worktree Management ---
|
|
686
|
-
# Creates a git worktree at .worktrees/<epic_id> on branch
|
|
740
|
+
# Creates a git worktree at .worktrees/<epic_id> on a run-scoped branch under
|
|
741
|
+
# the current loop branch name, rooted from the loop branch for this run.
|
|
687
742
|
# rooted from the loop branch for this run.
|
|
688
743
|
# If the worktree already exists and is valid (e.g. from an interrupted run),
|
|
689
744
|
# it is reused as-is. Otherwise, any stale entries are cleaned up first.
|
|
690
745
|
create_epic_worktree() {
|
|
691
746
|
local epic_id="$1"
|
|
692
|
-
local branch_name
|
|
747
|
+
local branch_name
|
|
748
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
693
749
|
local worktree_path="${RALPH_RUNTIME_DIRNAME}/.worktrees/${epic_id}"
|
|
694
750
|
local add_output
|
|
695
751
|
local retry_output
|
|
@@ -1257,6 +1313,10 @@ render_team_lead_prompt() {
|
|
|
1257
1313
|
TEAM_LEAD_TEMPLATE_WORKTREE_ABS_PATH="$WORKTREE_ABS_PATH" \
|
|
1258
1314
|
TEAM_LEAD_TEMPLATE_WORKTREE_STATE_FILE="$WORKTREE_STATE_FILE" \
|
|
1259
1315
|
TEAM_LEAD_TEMPLATE_WORKTREE_PRD_PATH="$WORKTREE_PRD_PATH" \
|
|
1316
|
+
TEAM_LEAD_TEMPLATE_LOOP_BRANCH="$LOOP_BRANCH" \
|
|
1317
|
+
TEAM_LEAD_TEMPLATE_EPIC_BRANCH="$EPIC_BRANCH" \
|
|
1318
|
+
TEAM_LEAD_TEMPLATE_ROOT_DIR="$ROOT_DIR" \
|
|
1319
|
+
TEAM_LEAD_TEMPLATE_WORKTREE_MERGE_RESULT_FILE="$WORKTREE_MERGE_RESULT_FILE" \
|
|
1260
1320
|
TEAM_LEAD_TEMPLATE_EPIC_JSON="$EPIC_JSON" \
|
|
1261
1321
|
TEAM_LEAD_TEMPLATE_WORKTREE_PLAN_FILE="$WORKTREE_PLAN_FILE" \
|
|
1262
1322
|
TEAM_LEAD_TEMPLATE_EPIC_PLANNED="$EPIC_PLANNED" \
|
|
@@ -1290,6 +1350,12 @@ process_epic_result() {
|
|
|
1290
1350
|
local epic_index="$1"
|
|
1291
1351
|
local epic_id
|
|
1292
1352
|
epic_id=$(rjq read "$PRD_FILE" ".epics[$epic_index].id")
|
|
1353
|
+
local merge_status=""
|
|
1354
|
+
merge_status=$(read_epic_merge_result_field "$epic_id" .status "" 2>/dev/null || true)
|
|
1355
|
+
local merge_mode=""
|
|
1356
|
+
merge_mode=$(read_epic_merge_result_field "$epic_id" .mode "unknown" 2>/dev/null || true)
|
|
1357
|
+
local merge_details=""
|
|
1358
|
+
merge_details=$(read_epic_merge_result_field "$epic_id" .details "" 2>/dev/null || true)
|
|
1293
1359
|
|
|
1294
1360
|
local total_stories
|
|
1295
1361
|
total_stories=$(rjq length "$PRD_FILE" ".epics[$epic_index].userStories")
|
|
@@ -1297,11 +1363,34 @@ process_epic_result() {
|
|
|
1297
1363
|
passed_stories=$(rjq count-where "$PRD_FILE" ".epics[$epic_index].userStories" "passes=true")
|
|
1298
1364
|
|
|
1299
1365
|
if [ "$passed_stories" -eq "$total_stories" ] && [ "$total_stories" -gt 0 ]; then
|
|
1366
|
+
if [ "$merge_status" = "merge-failed" ]; then
|
|
1367
|
+
echo ""
|
|
1368
|
+
echo " [$epic_id] MERGE FAILED — all stories passed but merge did not complete"
|
|
1369
|
+
[ -n "$merge_details" ] && echo " [$epic_id] Merge details: $merge_details"
|
|
1370
|
+
rjq set "$PRD_FILE" ".epics[$epic_index].status" '"merge-failed"'
|
|
1371
|
+
FAILED=$((FAILED + 1))
|
|
1372
|
+
echo "[$epic_id] MERGE FAILED (${merge_details:-team lead merge failed}) — $(date)" >> "$PROGRESS_FILE"
|
|
1373
|
+
return
|
|
1374
|
+
fi
|
|
1375
|
+
|
|
1376
|
+
if [ "$merge_status" != "merged" ]; then
|
|
1377
|
+
echo ""
|
|
1378
|
+
echo " [$epic_id] MERGE FAILED — all stories passed but Team Lead did not record a merge result"
|
|
1379
|
+
rjq set "$PRD_FILE" ".epics[$epic_index].status" '"merge-failed"'
|
|
1380
|
+
FAILED=$((FAILED + 1))
|
|
1381
|
+
echo "[$epic_id] MERGE FAILED (missing team lead merge result artifact) — $(date)" >> "$PROGRESS_FILE"
|
|
1382
|
+
return
|
|
1383
|
+
fi
|
|
1384
|
+
|
|
1300
1385
|
echo ""
|
|
1301
1386
|
echo " [$epic_id] PASSED — all stories completed ($passed_stories/$total_stories)"
|
|
1302
1387
|
rjq set "$PRD_FILE" ".epics[$epic_index].status" '"completed"'
|
|
1303
1388
|
COMPLETED=$((COMPLETED + 1))
|
|
1304
1389
|
echo "[$epic_id] PASSED — $(date)" >> "$PROGRESS_FILE"
|
|
1390
|
+
if [ "$merge_status" = "merged" ]; then
|
|
1391
|
+
echo " [$epic_id] Merge successful (team lead, ${merge_mode:-unknown})"
|
|
1392
|
+
echo "[$epic_id] MERGED (team lead ${merge_mode:-unknown}) — $(date)" >> "$PROGRESS_FILE"
|
|
1393
|
+
fi
|
|
1305
1394
|
elif [ "$passed_stories" -gt 0 ]; then
|
|
1306
1395
|
echo ""
|
|
1307
1396
|
echo " [$epic_id] PARTIAL — $passed_stories/$total_stories stories passed"
|
|
@@ -1345,6 +1434,38 @@ NODE
|
|
|
1345
1434
|
mv "$tmp_file" "$state_file"
|
|
1346
1435
|
}
|
|
1347
1436
|
|
|
1437
|
+
reset_epic_merge_result_file() {
|
|
1438
|
+
local epic_id="$1"
|
|
1439
|
+
rm -f "${STATE_DIR}/merge-${epic_id}.json"
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
read_epic_merge_result_field() {
|
|
1443
|
+
local epic_id="$1"
|
|
1444
|
+
local field_path="$2"
|
|
1445
|
+
local default_value="$3"
|
|
1446
|
+
local result_file="${STATE_DIR}/merge-${epic_id}.json"
|
|
1447
|
+
|
|
1448
|
+
[ -f "$result_file" ] || return 1
|
|
1449
|
+
rjq read "$result_file" "$field_path" "$default_value"
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
delete_epic_branch() {
|
|
1453
|
+
local epic_id="$1"
|
|
1454
|
+
local branch_name
|
|
1455
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
1456
|
+
git branch -d "$branch_name" 2>/dev/null || true
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
verify_epic_branch_merged() {
|
|
1460
|
+
local epic_id="$1"
|
|
1461
|
+
local branch_name
|
|
1462
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
1463
|
+
|
|
1464
|
+
git show-ref --verify --quiet "refs/heads/${branch_name}" || return 1
|
|
1465
|
+
git show-ref --verify --quiet "refs/heads/${LOOP_BRANCH}" || return 1
|
|
1466
|
+
git merge-base --is-ancestor "$branch_name" "$LOOP_BRANCH" 2>/dev/null
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1348
1469
|
read_epic_state_passed() {
|
|
1349
1470
|
local epic_id="$1"
|
|
1350
1471
|
local state_file="${STATE_DIR}/${epic_id}.json"
|
|
@@ -1430,16 +1551,20 @@ spawn_epic_bg() {
|
|
|
1430
1551
|
WORKTREE_PATH=$(create_epic_worktree "$EPIC_ID")
|
|
1431
1552
|
local WORKTREE_ABS_PATH
|
|
1432
1553
|
WORKTREE_ABS_PATH="$(cd "${ROOT_DIR}/${WORKTREE_PATH}" && pwd)"
|
|
1554
|
+
local EPIC_BRANCH
|
|
1555
|
+
EPIC_BRANCH=$(epic_branch_name "$EPIC_ID")
|
|
1433
1556
|
ensure_worktree_runtime_link "$WORKTREE_ABS_PATH"
|
|
1434
1557
|
local WORKTREE_PRD_PATH="${WORKTREE_ABS_PATH}/${PRD_REL_PATH}"
|
|
1435
1558
|
local WORKTREE_STATE_FILE="${WORKTREE_ABS_PATH}/${RALPH_RUNTIME_DIRNAME}/state/${EPIC_ID}.json"
|
|
1436
1559
|
local WORKTREE_PLAN_FILE="${WORKTREE_ABS_PATH}/${RALPH_RUNTIME_DIRNAME}/plans/plan-${EPIC_ID}.md"
|
|
1560
|
+
local WORKTREE_MERGE_RESULT_FILE="${WORKTREE_ABS_PATH}/${RALPH_RUNTIME_DIRNAME}/state/merge-${EPIC_ID}.json"
|
|
1437
1561
|
local WORKTREE_PLAN_EXISTS="false"
|
|
1438
1562
|
if [ -f "$WORKTREE_PLAN_FILE" ]; then
|
|
1439
1563
|
WORKTREE_PLAN_EXISTS="true"
|
|
1440
1564
|
fi
|
|
1441
1565
|
|
|
1442
1566
|
init_epic_state_file "$EPIC_ID" "$EPIC_INDEX"
|
|
1567
|
+
reset_epic_merge_result_file "$EPIC_ID"
|
|
1443
1568
|
|
|
1444
1569
|
echo " Spawning [$EPIC_ID] in worktree $WORKTREE_PATH"
|
|
1445
1570
|
|
|
@@ -1474,9 +1599,10 @@ spawn_epic_bg() {
|
|
|
1474
1599
|
LAST_SPAWN_LOG="$EPIC_LOG"
|
|
1475
1600
|
}
|
|
1476
1601
|
|
|
1477
|
-
# merge_wave:
|
|
1478
|
-
#
|
|
1479
|
-
#
|
|
1602
|
+
# merge_wave: fallback merge pass for completed epic branches that were not already
|
|
1603
|
+
# merged by their original Team Lead sessions. Takes epic IDs as arguments.
|
|
1604
|
+
# Clean merges succeed without AI intervention. On conflict, hands the repo to a
|
|
1605
|
+
# tightly-scoped Team Lead takeover. Logs all outcomes to progress.txt.
|
|
1480
1606
|
merge_wave() {
|
|
1481
1607
|
local -a completed_epic_ids=("$@")
|
|
1482
1608
|
|
|
@@ -1495,7 +1621,8 @@ merge_wave() {
|
|
|
1495
1621
|
fi
|
|
1496
1622
|
|
|
1497
1623
|
for epic_id in "${completed_epic_ids[@]}"; do
|
|
1498
|
-
local branch_name
|
|
1624
|
+
local branch_name
|
|
1625
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
1499
1626
|
|
|
1500
1627
|
# Check if branch exists
|
|
1501
1628
|
if ! git show-ref --verify --quiet "refs/heads/${branch_name}"; then
|
|
@@ -1566,11 +1693,11 @@ merge_wave() {
|
|
|
1566
1693
|
continue
|
|
1567
1694
|
fi
|
|
1568
1695
|
|
|
1569
|
-
# Conflicts detected —
|
|
1570
|
-
echo " [$epic_id] conflicts detected —
|
|
1571
|
-
echo "[$epic_id] merge conflicts —
|
|
1696
|
+
# Conflicts detected — hand off the current merge state to the Team Lead.
|
|
1697
|
+
echo " [$epic_id] conflicts detected — team lead takeover..."
|
|
1698
|
+
echo "[$epic_id] merge conflicts — team lead takeover — $(date)" >> "$PROGRESS_FILE"
|
|
1572
1699
|
|
|
1573
|
-
local merge_prompt="You are the
|
|
1700
|
+
local merge_prompt="You are the Team Lead. Take over this merge conflict resolution directly.
|
|
1574
1701
|
|
|
1575
1702
|
## Context
|
|
1576
1703
|
- Target branch: ${target_branch}
|
|
@@ -1581,14 +1708,20 @@ merge_wave() {
|
|
|
1581
1708
|
${conflicted_files}
|
|
1582
1709
|
|
|
1583
1710
|
## Instructions
|
|
1584
|
-
1.
|
|
1585
|
-
2.
|
|
1586
|
-
3.
|
|
1587
|
-
4.
|
|
1588
|
-
5.
|
|
1589
|
-
6.
|
|
1590
|
-
7.
|
|
1591
|
-
8.
|
|
1711
|
+
1. Stay in the current repository and operate on the existing in-progress merge state.
|
|
1712
|
+
2. Do NOT delegate. Do NOT spawn merger, builder, planner, or validator work.
|
|
1713
|
+
3. For each conflicted file listed above, read the full file and inspect the conflict markers.
|
|
1714
|
+
4. Run: git log --oneline ${target_branch}..${branch_name} to see what the epic branch changed.
|
|
1715
|
+
5. Run: git log --oneline ${branch_name}..${target_branch} to see what changed on the target branch.
|
|
1716
|
+
6. Resolve each conflict by combining both sides' intent where possible.
|
|
1717
|
+
7. Stage each resolved file with: git add <filename>.
|
|
1718
|
+
8. Do NOT commit. ralph.sh will create the merge commit after all conflicts are resolved.
|
|
1719
|
+
9. Do NOT run git merge --abort.
|
|
1720
|
+
10. If you cannot safely resolve a conflict, leave the conflict markers in place.
|
|
1721
|
+
|
|
1722
|
+
When you are finished, print exactly one final line:
|
|
1723
|
+
- MERGE_SUCCESS
|
|
1724
|
+
- MERGE_FAILED
|
|
1592
1725
|
|
|
1593
1726
|
Begin resolving."
|
|
1594
1727
|
|
|
@@ -1596,18 +1729,18 @@ Begin resolving."
|
|
|
1596
1729
|
|
|
1597
1730
|
case "$BACKEND" in
|
|
1598
1731
|
claude)
|
|
1599
|
-
echo "$merge_prompt" | $AGENT_CMD --agent
|
|
1732
|
+
echo "$merge_prompt" | $AGENT_CMD --agent team-lead --model "$MODEL_TEAM_LEAD" --dangerously-skip-permissions --print --verbose --output-format stream-json > "$merge_log" 2>&1 || true
|
|
1600
1733
|
;;
|
|
1601
1734
|
copilot)
|
|
1602
1735
|
COPILOT_MERGE_PROMPT="$merge_prompt" \
|
|
1603
|
-
script -q /dev/null /bin/sh -lc 'exec gh copilot -- --agent
|
|
1736
|
+
script -q /dev/null /bin/sh -lc 'exec gh copilot -- --agent team-lead --allow-all --no-ask-user --stream on -p "$COPILOT_MERGE_PROMPT"' \
|
|
1604
1737
|
> "$merge_log" 2>&1 || true
|
|
1605
1738
|
;;
|
|
1606
1739
|
codex)
|
|
1607
|
-
|
|
1740
|
+
run_codex_exec "$ROOT_DIR" "$merge_prompt" > "$merge_log" 2>&1 || true
|
|
1608
1741
|
;;
|
|
1609
1742
|
opencode)
|
|
1610
|
-
run_opencode_exec "$ROOT_DIR" "$merge_prompt"
|
|
1743
|
+
run_opencode_exec "$ROOT_DIR" "$merge_prompt" team-lead "$MODEL_TEAM_LEAD" > "$merge_log" 2>&1 || true
|
|
1611
1744
|
;;
|
|
1612
1745
|
esac
|
|
1613
1746
|
|
|
@@ -1659,7 +1792,8 @@ collect_pending_merge_epics() {
|
|
|
1659
1792
|
epic_id=$(rjq read "$PRD_FILE" ".epics[$epic_index].id")
|
|
1660
1793
|
[ -n "$epic_id" ] || continue
|
|
1661
1794
|
|
|
1662
|
-
local branch_name
|
|
1795
|
+
local branch_name
|
|
1796
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
1663
1797
|
if git show-ref --verify --quiet "refs/heads/${branch_name}"; then
|
|
1664
1798
|
pending_merge_ids+=("$epic_id")
|
|
1665
1799
|
fi
|
|
@@ -1684,7 +1818,9 @@ recover_pending_merges() {
|
|
|
1684
1818
|
echo " --- Recovering completed epic branches before ${context} ---"
|
|
1685
1819
|
local epic_id
|
|
1686
1820
|
for epic_id in "${pending_merge_ids[@]}"; do
|
|
1687
|
-
|
|
1821
|
+
local branch_name
|
|
1822
|
+
branch_name=$(epic_branch_name "$epic_id")
|
|
1823
|
+
echo " [$epic_id] Recovered pending merge from existing epic branch (${branch_name})"
|
|
1688
1824
|
echo "[$epic_id] RECOVERED PENDING MERGE (${context}) — $(date)" >> "$PROGRESS_FILE"
|
|
1689
1825
|
done
|
|
1690
1826
|
|
|
@@ -2096,18 +2232,30 @@ while true; do
|
|
|
2096
2232
|
[ "$passed_s_prd" -gt "$passed_s" ] && passed_s="$passed_s_prd"
|
|
2097
2233
|
local all_done=false
|
|
2098
2234
|
[ "$passed_s" -eq "$total_s" ] && [ "$total_s" -gt 0 ] && all_done=true
|
|
2235
|
+
local live_merge_status=""
|
|
2236
|
+
live_merge_status=$(read_epic_merge_result_field "$finished_epic_id" .status "" 2>/dev/null || true)
|
|
2237
|
+
local merge_recorded=false
|
|
2238
|
+
if [ "$live_merge_status" = "merged" ] || [ "$live_merge_status" = "merge-failed" ]; then
|
|
2239
|
+
merge_recorded=true
|
|
2240
|
+
fi
|
|
2241
|
+
local epic_flow_complete=false
|
|
2242
|
+
if [ "$all_done" = true ] && [ "$merge_recorded" = true ]; then
|
|
2243
|
+
epic_flow_complete=true
|
|
2244
|
+
fi
|
|
2099
2245
|
|
|
2100
|
-
if [ "$process_finished" = true ] || [ "$
|
|
2101
|
-
#
|
|
2102
|
-
#
|
|
2103
|
-
|
|
2246
|
+
if [ "$process_finished" = true ] || [ "$epic_flow_complete" = true ]; then
|
|
2247
|
+
# Only terminate an in-flight session early after the Team Lead has
|
|
2248
|
+
# written the merge result artifact. Fully-passed stories alone are
|
|
2249
|
+
# not enough to declare the epic session complete.
|
|
2250
|
+
if [ "$process_finished" = false ] && [ "$epic_flow_complete" = true ]; then
|
|
2104
2251
|
terminate_process_tree "${active_pids[$slot]}"
|
|
2105
2252
|
fi
|
|
2106
2253
|
wait "${active_pids[$slot]}" 2>/dev/null || true
|
|
2107
2254
|
|
|
2108
|
-
# If the process exited before the epic reached
|
|
2109
|
-
# consider it a crash
|
|
2110
|
-
|
|
2255
|
+
# If the process exited before the epic reached full completion
|
|
2256
|
+
# (stories passed plus merge result recorded), consider it a crash
|
|
2257
|
+
# and retry when possible.
|
|
2258
|
+
if [ "$epic_flow_complete" = false ]; then
|
|
2111
2259
|
local retry_count
|
|
2112
2260
|
retry_count="$(get_crash_retry_count "$finished_epic_id")"
|
|
2113
2261
|
if [ "$retry_count" -lt "$MAX_CRASH_RETRIES" ]; then
|
|
@@ -2132,14 +2280,25 @@ while true; do
|
|
|
2132
2280
|
|
|
2133
2281
|
echo " [$finished_epic_id] finished — processing result"
|
|
2134
2282
|
project_state_to_prd "$finished_epic_id" || true
|
|
2283
|
+
local merge_status
|
|
2284
|
+
merge_status=$(read_epic_merge_result_field "$finished_epic_id" .status "" 2>/dev/null || true)
|
|
2285
|
+
if [ "$merge_status" = "merged" ] && ! verify_epic_branch_merged "$finished_epic_id"; then
|
|
2286
|
+
echo " [$finished_epic_id] Team Lead reported merge success but scripted check failed"
|
|
2287
|
+
echo "[$finished_epic_id] MERGE CHECK FAILED (team lead reported merged) — $(date)" >> "$PROGRESS_FILE"
|
|
2288
|
+
reset_epic_merge_result_file "$finished_epic_id"
|
|
2289
|
+
merge_status=""
|
|
2290
|
+
fi
|
|
2135
2291
|
process_epic_result "${active_indices[$slot]}"
|
|
2136
|
-
# Track completed epics for merge_wave
|
|
2292
|
+
# Track completed epics for merge_wave only when the Team Lead did not already merge.
|
|
2137
2293
|
local post_status
|
|
2138
2294
|
post_status=$(rjq read "$PRD_FILE" ".epics[${active_indices[$slot]}].status" "pending")
|
|
2139
|
-
if [ "$post_status" = "completed" ]; then
|
|
2295
|
+
if [ "$post_status" = "completed" ] && [ "$merge_status" != "merged" ]; then
|
|
2140
2296
|
wave_completed_ids+=("$finished_epic_id")
|
|
2141
2297
|
fi
|
|
2142
2298
|
cleanup_epic_worktree "$finished_epic_id"
|
|
2299
|
+
if [ "$merge_status" = "merged" ]; then
|
|
2300
|
+
delete_epic_branch "$finished_epic_id"
|
|
2301
|
+
fi
|
|
2143
2302
|
unset 'active_pids[$slot]'
|
|
2144
2303
|
unset 'active_indices[$slot]'
|
|
2145
2304
|
unset 'active_start_times[$slot]'
|