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.
@@ -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,CAyB1F;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"}
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"}
@@ -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, use Claude agent teams for delegated work instead of Claude subagents or a single-threaded solo workflow.',
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HA,0DAgBC;AAED,4DA0BC;AAoDD,oEAkDC;AAyCD,kCAyDC;AA/WD,iDAAiD;AACjD,4DAA8C;AAC9C,kDAA0B;AAC1B,sCAAiH;AACjH,wCAAqE;AAoBrE,MAAM,WAAW,GAAa;IAC5B,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IACxB,IAAI,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C,UAAU,EAAV,mBAAU;IACV,+BAA+B,EAA/B,wCAA+B;CAChC,CAAC;AAEF,MAAM,2BAA2B,GAAoC;IACnE,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,QAAQ;IACjB,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,QAAQ;IACxB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAS,sBAAsB,CAAC,OAAyB;IACvD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAA,yBAAS,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE;YACpE,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,IAAA,yBAAS,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,IAAA,yBAAS,EAAC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;QAC5D,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAyB,EAAE,KAAa;IAClE,QAAQ,GAAG,OAAO,IAAI,KAAK,EAAE,EAAE,CAAC;QAC9B,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,eAAe,CAAC;QACzB,KAAK,cAAc;YACjB,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,eAAe,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,+BAA+B,CAAC;QACzC,KAAK,iBAAiB;YACpB,OAAO,yBAAyB,CAAC;QACnC,KAAK,eAAe;YAClB,OAAO,uBAAuB,CAAC;QACjC;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc;IAC/E,OAAO;QACL,gEAAgE;QAChE,mEAAmE;QACnE,EAAE;QACF,SAAS,IAAI,EAAE;QACf,oBAAoB,GAAG,EAAE;QACzB,mBAAmB,MAAM,EAAE;QAC3B,EAAE;QACF,mEAAmE;QACnE,+FAA+F;QAC/F,wCAAwC;QACxC,+CAA+C;QAC/C,oEAAoE;QACpE,8EAA8E;KAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAgB,wBAAwB,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc;IAChF,OAAO;QACL,uDAAuD;QACvD,2EAA2E;QAC3E,EAAE;QACF,SAAS,IAAI,EAAE;QACf,sBAAsB,GAAG,EAAE;QAC3B,mBAAmB,MAAM,EAAE;QAC3B,EAAE;QACF,QAAQ;QACR,kEAAkE;QAClE,qEAAqE;QACrE,mFAAmF;QACnF,sLAAsL;QACtL,0GAA0G;QAC1G,iLAAiL;QACjL,iQAAiQ;QACjQ,gJAAgJ;QAChJ,0IAA0I;QAC1I,wFAAwF;QACxF,uIAAuI;QACvI,6DAA6D;QAC7D,kGAAkG;QAClG,EAAE;QACF,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAyB,EACzB,WAAmB,EACnB,MAA4C,EAC5C,sBAAgE;IAEhE,MAAM,iBAAiB,GAAG,CAAC,KAAsB,EAAU,EAAE,CAAC,CAC5D,sBAAsB,CAAC,KAAK,CAAC,KAAK,SAAS;QACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC,CAAC,2BAA2B,CAAC,KAAK,CAAC,CACvC,CAAC;IAEF,OAAO;QACL,GAAG,OAAO,CAAC,GAAG;QACd,aAAa,EAAE,OAAO;QACtB,qBAAqB,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACjF,yBAAyB,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACzF,wBAAwB,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACvF,mBAAmB,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC9E,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC7F,0BAA0B,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC3F,2BAA2B,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC7F,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5E,8BAA8B,EAAE,sBAAsB,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACzF,kCAAkC,EAAE,sBAAsB,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACjG,iCAAiC,EAAE,sBAAsB,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QAC/F,4BAA4B,EAAE,sBAAsB,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACtF,oCAAoC,EAAE,sBAAsB,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACrG,mCAAmC,EAAE,sBAAsB,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACnG,oCAAoC,EAAE,sBAAsB,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACrG,2BAA2B,EAAE,sBAAsB,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACpF,uBAAuB,EAAE,WAAW;KACrC,CAAC;AACJ,CAAC;AAED,SAAgB,4BAA4B,CAC1C,OAAyB,EACzB,GAAsB;IAEtB,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE;gBACJ,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,GAAG,CAAC,qBAAqB,IAAI,MAAM;gBAC9C,gCAAgC;gBAChC,iBAAiB,EAAE,YAAY;aAChC;YACD,QAAQ,EAAE;gBACR,GAAG,GAAG;gBACN,oCAAoC,EAAE,GAAG,CAAC,oCAAoC,IAAI,GAAG;aACtF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,MAAM;YACN,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG,CAAC,qBAAqB,IAAI,eAAe;YAClD,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,iBAAiB;YACvB,uBAAuB;YACvB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,aAAa;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAc,EAAE,GAAsB;IAChF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YACjC,KAAK,EAAE,SAAS;YAChB,GAAG;SACJ,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACxC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAyB,EAAE,GAAsB;IACjG,MAAM,OAAO,GAAiB,IAAA,8BAAoB,EAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAAyB,EAAE,GAAsB;IAClG,MAAM,UAAU,GAAG,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,iBAAiB,CACrB,UAAU,CAAC,OAAO,EAClB,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAC5B,UAAU,CAAC,QAAQ,IAAI,GAAG,CAC3B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,UAAuB,EAAE,EACzB,OAAiB,WAAW;IAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAU,CAAC;IACnD,MAAM,uBAAuB,GAAG,IAAI,CAAC,+BAA+B,IAAI,wCAA+B,CAAC;IAExG,IAAI,MAAM,CAAC;IACX,IAAI,sBAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,IAAA,0BAAiB,EAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC5C,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC,CAAC;QACH,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAA2B,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC;IAC5E,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,EAAE,CAAC;IACjE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAO,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAE/E,IAAI,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;YAC7D,MAAM,MAAM,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,GAAG,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC;YAC/D,MAAM,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ralph-teams",
3
- "version": "1.0.30",
3
+ "version": "1.0.31",
4
4
  "description": "CLI tool for Ralph Teams",
5
5
  "bin": {
6
6
  "ralph-teams": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  # Team Lead Policy
2
2
 
3
- You coordinate epic execution. Do not write implementation code yourself.
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
- - Print `DONE: X/Y stories passed` and exit immediately.
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 ralph/<epic_id>,
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="ralph/${epic_id}"
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: merges completed epic branches back to the loop branch sequentially.
1478
- # Takes epic IDs as arguments. Clean merges succeed without AI intervention.
1479
- # On conflict, spawns the merger agent. Logs all outcomes to progress.txt.
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="ralph/${epic_id}"
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 — attempt AI resolution via merger agent
1570
- echo " [$epic_id] conflicts detected — spawning merger agent..."
1571
- echo "[$epic_id] merge conflicts — attempting AI resolution — $(date)" >> "$PROGRESS_FILE"
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 Merger Agent. Resolve the git merge conflicts.
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. For each conflicted file listed above, read the full file to see the conflict markers
1585
- 2. Run: git log --oneline ${target_branch}..${branch_name} (what the epic branch changed)
1586
- 3. Run: git log --oneline ${branch_name}..${target_branch} (what target changed since branch point)
1587
- 4. Resolve each conflict by combining both sides' intent
1588
- 5. Stage each resolved file with: git add <filename>
1589
- 6. Do NOT commit ralph.sh will create the merge commit
1590
- 7. Do NOT run git merge --abort
1591
- 8. If you cannot safely resolve a conflict, leave the conflict markers in place
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 merger --model "$MODEL_MERGER" --dangerously-skip-permissions --print --verbose --output-format stream-json > "$merge_log" 2>&1 || true
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 merger --allow-all --no-ask-user --stream on -p "$COPILOT_MERGE_PROMPT"' \
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
- MODEL_TEAM_LEAD="$MODEL_MERGER" run_codex_exec "$ROOT_DIR" "$merge_prompt" > "$merge_log" 2>&1 || true
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" merger "$MODEL_MERGER" > "$merge_log" 2>&1 || true
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="ralph/${epic_id}"
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
- echo " [$epic_id] Recovered pending merge from existing epic branch"
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 ] || [ "$all_done" = true ]; then
2101
- # Treat fully-passed stories in the PRD as the authoritative completion
2102
- # signal, even if the backend session is still idling.
2103
- if [ "$process_finished" = false ]; then
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 all stories passed,
2109
- # consider it a crash and retry when possible.
2110
- if [ "$all_done" = false ]; then
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]'