harness-engineering-agent 0.3.31 → 0.3.33

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.
Files changed (65) hide show
  1. package/README.md +9 -7
  2. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -1
  3. package/dist/agent/harness-role-capability-directory-data.js +1 -2
  4. package/dist/agent/harness-role-capability-directory-data.js.map +1 -1
  5. package/dist/controller/agent-output.d.ts +11 -0
  6. package/dist/controller/agent-output.d.ts.map +1 -1
  7. package/dist/controller/agent-output.js +91 -1
  8. package/dist/controller/agent-output.js.map +1 -1
  9. package/dist/controller/failure-factory.d.ts.map +1 -1
  10. package/dist/controller/failure-factory.js +27 -0
  11. package/dist/controller/failure-factory.js.map +1 -1
  12. package/dist/controller/index.d.ts +2 -0
  13. package/dist/controller/index.d.ts.map +1 -1
  14. package/dist/controller/index.js +1 -0
  15. package/dist/controller/index.js.map +1 -1
  16. package/dist/controller/parallel-task-delta.d.ts +24 -0
  17. package/dist/controller/parallel-task-delta.d.ts.map +1 -0
  18. package/dist/controller/parallel-task-delta.js +34 -0
  19. package/dist/controller/parallel-task-delta.js.map +1 -0
  20. package/dist/controller/repair-loop.d.ts.map +1 -1
  21. package/dist/controller/repair-loop.js +3 -4
  22. package/dist/controller/repair-loop.js.map +1 -1
  23. package/dist/controller/route-resolver.js +3 -2
  24. package/dist/controller/route-resolver.js.map +1 -1
  25. package/dist/controller/run-controller.d.ts.map +1 -1
  26. package/dist/controller/run-controller.js +14 -26
  27. package/dist/controller/run-controller.js.map +1 -1
  28. package/dist/controller/run-error-finalizer.d.ts +13 -0
  29. package/dist/controller/run-error-finalizer.d.ts.map +1 -1
  30. package/dist/controller/run-error-finalizer.js +74 -9
  31. package/dist/controller/run-error-finalizer.js.map +1 -1
  32. package/dist/controller/run-state.d.ts.map +1 -1
  33. package/dist/controller/run-state.js +3 -1
  34. package/dist/controller/run-state.js.map +1 -1
  35. package/dist/controller/streamlined-runner.d.ts.map +1 -1
  36. package/dist/controller/streamlined-runner.js +59 -4
  37. package/dist/controller/streamlined-runner.js.map +1 -1
  38. package/dist/controller/task-executor.d.ts.map +1 -1
  39. package/dist/controller/task-executor.js +216 -40
  40. package/dist/controller/task-executor.js.map +1 -1
  41. package/dist/domain/failure.d.ts +291 -0
  42. package/dist/domain/failure.d.ts.map +1 -1
  43. package/dist/domain/failure.js +25 -0
  44. package/dist/domain/failure.js.map +1 -1
  45. package/dist/domain/index.d.ts +1 -1
  46. package/dist/domain/index.d.ts.map +1 -1
  47. package/dist/domain/index.js +1 -1
  48. package/dist/domain/index.js.map +1 -1
  49. package/dist/domain/report.d.ts +596 -0
  50. package/dist/domain/report.d.ts.map +1 -1
  51. package/dist/domain/run.d.ts +607 -0
  52. package/dist/domain/run.d.ts.map +1 -1
  53. package/dist/domain/run.js +7 -1
  54. package/dist/domain/run.js.map +1 -1
  55. package/dist/plugin/harness-delivery-envelope.d.ts.map +1 -1
  56. package/dist/plugin/harness-delivery-envelope.js +2 -1
  57. package/dist/plugin/harness-delivery-envelope.js.map +1 -1
  58. package/dist/plugin/harness-request-router.d.ts.map +1 -1
  59. package/dist/plugin/harness-request-router.js +13 -0
  60. package/dist/plugin/harness-request-router.js.map +1 -1
  61. package/dist/plugin/harness-status-projection.js +13 -5
  62. package/dist/plugin/harness-status-projection.js.map +1 -1
  63. package/dist/store/run-event.d.ts +596 -0
  64. package/dist/store/run-event.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -130,7 +130,9 @@ export const consumeBudget = (run, budget) => {
130
130
  export const canResume = (run) => hasAllowedStatus(RESUMEABLE_RUN_STATUSES, run.status);
131
131
  export const canAdvanceRun = (run) => run.status === "blocked"
132
132
  ? run.blockingDetails?.kind === "blocked"
133
- : hasAllowedStatus(ADVANCEABLE_RUN_STATUSES, run.status);
133
+ : run.status === "paused"
134
+ ? true
135
+ : hasAllowedStatus(ADVANCEABLE_RUN_STATUSES, run.status);
134
136
  export const canPause = (run) => hasAllowedStatus(PAUSEABLE_RUN_STATUSES, run.status);
135
137
  export const canAnswer = (run) => hasAllowedStatus(ANSWERABLE_RUN_STATUSES, run.status);
136
138
  export const isEnvBlocked = (run) => hasAllowedStatus(ENV_BLOCKED_RUN_STATUSES, run.status);
@@ -1 +1 @@
1
- {"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/controller/run-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/controller/run-state.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,SAAS,GAIV,MAAM,oBAAoB,CAAA;AAqB3B,MAAM,mBAAmB,GAA6B;IACpD,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;CACZ,CAAA;AAED,MAAM,sBAAsB,GAA6B;IACvD,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;CACZ,CAAA;AAED,MAAM,uBAAuB,GAA6B;IACxD,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,WAAW;IACX,cAAc;IACd,QAAQ;IACR,aAAa;CACd,CAAA;AAED,MAAM,uBAAuB,GAA6B,CAAC,wBAAwB,CAAC,CAAA;AAEpF,MAAM,wBAAwB,GAA6B,CAAC,aAAa,CAAC,CAAA;AAE1E,MAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;IACX,cAAc;IACd,wBAAwB;IACxB,aAAa;IACb,QAAQ;CACmC,CAAA;AAE7C,MAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;IACX,cAAc;IACd,QAAQ;IACR,aAAa;CAC8B,CAAA;AAE7C,MAAM,qBAAqB,GAA6B;IACtD,wBAAwB;IACxB,QAAQ;IACR,QAAQ;CACT,CAAA;AAED,MAAM,kCAAkC,GAAG;IACzC,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;CACN,CAAA;AAEV,MAAM,gBAAgB,GAAG,CAAC,OAAiC,EAAE,MAAqB,EAAW,EAAE,CAC7F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAE1B,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAIrC;IACA;IACA;IALF,IAAI,GAAG,yBAAyB,CAAA;IAEzC,YACW,KAAmB,EACnB,SAAiB,EACjB,MAAqB;QAE9B,KAAK,CAAC,UAAU,SAAS,QAAQ,KAAK,gBAAgB,MAAM,EAAE,CAAC,CAAA;QAJtD,UAAK,GAAL,KAAK,CAAc;QACnB,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAe;IAGhC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAG,oBAAoB,CAAA;CACrC;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAIpC;IACA;IACA;IALF,IAAI,GAAG,wBAAwB,CAAA;IAExC,YACW,KAAmB,EACnB,MAAqB,EACrB,KAAa;QAEtB,KAAK,CAAC,OAAO,KAAK,kBAAkB,MAAM,oBAAoB,KAAK,EAAE,CAAC,CAAA;QAJ7D,UAAK,GAAL,KAAK,CAAc;QACnB,WAAM,GAAN,MAAM,CAAe;QACrB,UAAK,GAAL,KAAK,CAAQ;IAGxB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,MAAqB,EAAO,EAAE,CACjE,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAE,MAAqB,EAAc,EAAE,CACtF,eAAe,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;AAErC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAe,EAAE,IAAU,EAAc,EAAE,CAClE,eAAe,CAAC;IACd,GAAG,GAAG;IACN,SAAS,EAAE;QACT,GAAG,GAAG,CAAC,SAAS;QAChB,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3C,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CACpD;KACF;CACF,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAe,EAAE,KAAsB,EAAc,EAAE,CAC/E,eAAe,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;AAEvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAkB,EAAE;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACtC,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAW,CAAA;IAC9D,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,aAAa;KACvB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAkB,EAAE,CAAC,CAAC;IAC9D,kBAAkB,EAAE,IAAI;IACxB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;CAClB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,UAA6B,EAAO,EAAE,CAC7E,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAE,MAAqB,EAAO,EAAE;IACpE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC;QACrB,GAAG,GAAG;QACN,OAAO,EAAE;YACP,GAAG,GAAG,CAAC,OAAO;YACd,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;SACjD;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC7C,gBAAgB,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAW,EAAE,CACjD,GAAG,CAAC,MAAM,KAAK,SAAS;IACtB,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,KAAK,SAAS;IACzC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAEnG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC7C,gBAAgB,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAW,EAAE,CAChD,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAQ,EAAW,EAAE,CACvD,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC7C,gBAAgB,CAAC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAElG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAQ,EAAW,EAAE,CACvD,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAA;AAErF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAW,EAAE,CACrD,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAQ,EACR,SAAiB,EACjB,SAAsC,EAChC,EAAE;IACR,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,UAAkB,EAAW,EAAE,CACjE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAA;AAE3E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,aAAqB,EAAW,EAAE,CACpE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,KAAK,aAAa,CAAC,CAAA;AAEjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,MAAuB,EAAO,EAAE,CACrE,cAAc,CAAC,GAAG,EAAE;IAClB,GAAG,GAAG,CAAC,UAAU;IACjB,kBAAkB,EAAE,IAAI;IACxB,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IAC5C,MAAM,EAAE,IAAI;CACb,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,MAAuB,EAAO,EAAE,CACrE,cAAc,CAAC,GAAG,EAAE;IAClB,GAAG,GAAG,CAAC,UAAU;IACjB,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;CAC7C,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,MAA6B,EAAO,EAAE,CACxE,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAQ,EAAU,EAAE,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,CAAA;AAEpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,aAAqB,EAAQ,EAAE;IACxE,MAAM,qBAAqB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IACzD,IACE,kCAAkC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CACtD,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC5C,EACD,CAAC;QACD,MAAM,IAAI,kBAAkB,CAC1B,eAAe,aAAa,iFAAiF,CAC9G,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAc,EAAE;IAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;QACvB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;AAC7D,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"streamlined-runner.d.ts","sourceRoot":"","sources":["../../src/controller/streamlined-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA8B,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAIjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AASxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAgB1D,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACvD,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,MAAM,6BAA6B;iBA0GpD,GAAG,eAAe,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAqGlE,CAAA"}
1
+ {"version":3,"file":"streamlined-runner.d.ts","sourceRoot":"","sources":["../../src/controller/streamlined-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA8B,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAQjG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AASxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAgB1D,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACvD,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,MAAM,6BAA6B;iBA4KpD,GAAG,eAAe,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAqGlE,CAAA"}
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import { PlanReviewSchema, TaskGraphSchema } from "../domain/index.js";
3
3
  import { HARNESS_SESSION_ROLE } from "../session/index.js";
4
- import { parseAgentJson } from "./agent-output.js";
4
+ import { describeContractRetryFeedback, emitAgentDiagnostics, parseAgentJson, } from "./agent-output.js";
5
5
  import { buildContextSnapshot } from "./context-builder.js";
6
6
  import { AgentOutputParseError, AgentRunFailedError, GraphValidationError, isReadOnlyContractError, } from "./errors.js";
7
7
  import { validateTaskGraph } from "./graph-validator.js";
8
8
  import { plannerTaskPrompt } from "./role-prompts.js";
9
- import { consumeBudget, withStatus } from "./run-state.js";
9
+ import { consumeBudget, RunBudgetExceededError, withStatus } from "./run-state.js";
10
10
  import { getTaskGraphPlannerContract } from "./task-graph-contract.js";
11
11
  const StreamlinedPlanReviewSchema = z
12
12
  .object({
@@ -63,7 +63,7 @@ export const createStreamlinedRunner = (deps) => {
63
63
  taskGraph,
64
64
  };
65
65
  };
66
- const requestStreamlinedGraphReview = async (run, requirement, taskGraph) => {
66
+ const requestStreamlinedGraphReview = async (run, requirement, taskGraph, previousSchemaError) => {
67
67
  const snapshot = buildContextSnapshot({
68
68
  ids: deps.ids,
69
69
  run,
@@ -82,6 +82,13 @@ export const createStreamlinedRunner = (deps) => {
82
82
  "执行轻量 TaskGraph 审查,不执行完整 ContextPackage/PlanReview 流程。",
83
83
  "审查每个 task 的 verificationPlan、allowedPaths 和验收项覆盖。",
84
84
  "复用 PlanReview 数据契约输出结构化图审查结果。",
85
+ "只输出符合契约的完整 JSON,不要解释、不要对话。",
86
+ ...(previousSchemaError === undefined
87
+ ? []
88
+ : [
89
+ `上一次审查输出未通过契约校验,具体原因:${previousSchemaError}`,
90
+ "本次必须修正上述问题后一次性输出合规 JSON。",
91
+ ]),
85
92
  ],
86
93
  evidence: [
87
94
  {
@@ -109,6 +116,54 @@ export const createStreamlinedRunner = (deps) => {
109
116
  }
110
117
  return output.planReview;
111
118
  };
119
+ /**
120
+ * 图审查契约失败的重试闭环:把 schema 错误摘要回喂 verifier 重试,
121
+ * 纳入 overall 预算计量;GraphValidationError(rejected)与 AgentRunFailedError
122
+ * 保持既有升级/终止语义,不进入 parse 重试。
123
+ */
124
+ const requestStreamlinedGraphReviewWithRetry = async (run, requirement, taskGraph) => {
125
+ let currentRun = run;
126
+ let lastError;
127
+ let wastedAttempts = 0;
128
+ const maxAttempts = currentRun.budgets.overall.limit;
129
+ while (true) {
130
+ const isFinalAttempt = lastError !== undefined &&
131
+ (wastedAttempts >= maxAttempts - 1 || currentRun.budgets.overall.used >= maxAttempts - 1);
132
+ try {
133
+ return await requestStreamlinedGraphReview(currentRun, requirement, taskGraph, lastError === undefined
134
+ ? undefined
135
+ : describeContractRetryFeedback(lastError, "verifier", isFinalAttempt));
136
+ }
137
+ catch (error) {
138
+ if (!(error instanceof AgentOutputParseError)) {
139
+ throw error;
140
+ }
141
+ lastError = error;
142
+ emitAgentDiagnostics("verifier", error, wastedAttempts + 1);
143
+ const isBudgetExemptFailure = error.reasonCode === "empty-output" || error.reasonCode === "truncated";
144
+ if (isBudgetExemptFailure) {
145
+ wastedAttempts += 1;
146
+ if (wastedAttempts >= maxAttempts) {
147
+ throw error;
148
+ }
149
+ continue;
150
+ }
151
+ currentRun = (() => {
152
+ try {
153
+ return consumeBudget(currentRun, "overall");
154
+ }
155
+ catch (budgetError) {
156
+ // 预算耗尽按契约失败归因终止:携带真实角色与具体 schema 原因,
157
+ // 而不是退化为泛化的 BUDGET 归因(对齐 spec 的按角色归因要求)。
158
+ if (budgetError instanceof RunBudgetExceededError && lastError !== undefined) {
159
+ throw lastError;
160
+ }
161
+ throw budgetError;
162
+ }
163
+ })();
164
+ }
165
+ }
166
+ };
112
167
  return {
113
168
  async execute(run, requirement) {
114
169
  const planningSnapshot = buildContextSnapshot({
@@ -161,7 +216,7 @@ export const createStreamlinedRunner = (deps) => {
161
216
  await deps.writer.persist(planReady, deps.writer.createEvent(run.runId, "run.planning.streamlined.completed", {
162
217
  graphId: taskGraph.graphId,
163
218
  }));
164
- const planReview = await requestStreamlinedGraphReview(run, requirement, taskGraph);
219
+ const planReview = await requestStreamlinedGraphReviewWithRetry(run, requirement, taskGraph);
165
220
  const reviewed = {
166
221
  ...planReady,
167
222
  planReview,
@@ -1 +1 @@
1
- {"version":3,"file":"streamlined-runner.js","sourceRoot":"","sources":["../../src/controller/streamlined-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamlined-runner.js","sourceRoot":"","sources":["../../src/controller/streamlined-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/controller/task-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,GAAG,EAAa,MAAM,oBAAoB,CAAA;AAIzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAiBhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAkBhD,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACxD,CAAA;AAkBD,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB;oBAi1B/B,UAAU,KAAG,OAAO,CAAC,GAAG,CAAC;CAiiBvD,CAAA"}
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/controller/task-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,GAAG,EAAa,MAAM,oBAAoB,CAAA;AAQzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAA;AAkBhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAkBhD,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACxD,CAAA;AAkBD,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB;oBAi1B/B,UAAU,KAAG,OAAO,CAAC,GAAG,CAAC;CAwvBvD,CAAA"}
@@ -1,12 +1,13 @@
1
1
  import { AgentResultSchema } from "../domain/index.js";
2
2
  import { normalizeVerificationCommand } from "../verification/command-policy.js";
3
3
  import { VerificationExecutionStatus } from "../verification/index.js";
4
- import { createGitWorkspaceAdapter, createGitWorktreeAdapter } from "../workspace/index.js";
4
+ import { createGitWorkspaceAdapter, createGitWorktreeAdapter, } from "../workspace/index.js";
5
5
  import { createEvidence } from "./evidence-factory.js";
6
6
  import { resolveFailureAnalysis } from "./failure-analysis.js";
7
7
  import { classifyFailureScope } from "./failure-classification.js";
8
8
  import { createContextGapFailure, createImplementationFailure, createMergeConflictFailure, createModelFailure, createScopeDriftFailure, createVerificationEnvironmentFailure, } from "./failure-factory.js";
9
9
  import { orderTasks } from "./graph-validator.js";
10
+ import { createParallelTaskDelta } from "./parallel-task-delta.js";
10
11
  import { reassessRemainingTasks } from "./reassessor.js";
11
12
  import { runRepairLoop } from "./repair-loop.js";
12
13
  import { finalizeRunAcceptance } from "./run-acceptance.js";
@@ -729,7 +730,7 @@ export const createTaskExecutor = (input) => {
729
730
  if (readyTasks.length >= 2) {
730
731
  const batchResult = await runParallelReadyBatch(currentRun, readyTasks);
731
732
  if (batchResult.kind === "paused") {
732
- return batchResult.run;
733
+ return reassessAfterFailure(batchResult.run);
733
734
  }
734
735
  if (batchResult.kind === "completed") {
735
736
  currentRun = batchResult.run;
@@ -786,7 +787,7 @@ export const createTaskExecutor = (input) => {
786
787
  break;
787
788
  currentRun = await runTask(currentRun, task);
788
789
  if (currentRun.status !== "executing") {
789
- return currentRun;
790
+ return reassessAfterFailure(currentRun);
790
791
  }
791
792
  const completedTask = currentRun.taskGraph.tasks.find((candidate) => candidate.taskId === task.taskId);
792
793
  if (completedTask?.status === "completed") {
@@ -842,7 +843,7 @@ export const createTaskExecutor = (input) => {
842
843
  }
843
844
  currentRun = await runTask(currentRun, task);
844
845
  if (currentRun.status !== "executing") {
845
- return currentRun;
846
+ return reassessAfterFailure(currentRun);
846
847
  }
847
848
  const completedTask = currentRun.taskGraph.tasks.find((candidate) => candidate.taskId === task.taskId);
848
849
  if (completedTask?.status === "completed") {
@@ -893,9 +894,27 @@ export const createTaskExecutor = (input) => {
893
894
  runtime: input.runtime,
894
895
  run: currentRun,
895
896
  });
897
+ const acceptanceBlockingDetails = runAcceptanceResult.status === "blocked"
898
+ ? {
899
+ kind: "blocked",
900
+ missingContext: runAcceptanceResult.runAcceptance.criterionDecisions
901
+ .filter((decision) => decision.status === "blocked" || decision.status === "unknown")
902
+ .map((decision) => decision.criterionId),
903
+ discoveredEvidence: runAcceptanceResult.runAcceptance.criterionDecisions.flatMap((decision) => decision.evidenceIds),
904
+ nextActions: ["补充缺失证据后执行 resume", "检查阻塞 criterion 后重新验收"],
905
+ failureIds: runAcceptanceResult.runAcceptance.criterionDecisions.flatMap((decision) => decision.failureIds),
906
+ criterionIds: runAcceptanceResult.runAcceptance.criterionDecisions
907
+ .filter((decision) => decision.status === "blocked" || decision.status === "unknown")
908
+ .map((decision) => decision.criterionId),
909
+ allowedOperations: ["resume", "report", "cancel"],
910
+ }
911
+ : undefined;
896
912
  const completed = withPlannedStatus(withParts(parsePlannedRun({
897
913
  ...currentRun,
898
914
  runAcceptance: runAcceptanceResult.runAcceptance,
915
+ ...(acceptanceBlockingDetails === undefined
916
+ ? {}
917
+ : { blockingDetails: acceptanceBlockingDetails }),
899
918
  }), {
900
919
  evidence: currentRun.evidence,
901
920
  failures: runAcceptanceResult.failure === undefined
@@ -921,10 +940,6 @@ export const createTaskExecutor = (input) => {
921
940
  verificationCommands: commands,
922
941
  defaultWorkingDirectory: runWorkingDirectory(run),
923
942
  });
924
- if (result.records.length === 0 ||
925
- result.records.some((record) => record.status !== VerificationExecutionStatus.passed)) {
926
- return persistIntegrationVerificationFailure(run, task, "integration verification failed");
927
- }
928
943
  const evidence = result.records.map((record, index) => createEvidence({
929
944
  ids: input.options.ids,
930
945
  runId: run.runId,
@@ -940,6 +955,63 @@ export const createTaskExecutor = (input) => {
940
955
  agentResults: run.agentResults,
941
956
  workspace: run.workspace,
942
957
  });
958
+ if (result.records.length === 0) {
959
+ const failure = createContextGapFailure({
960
+ failureId: input.options.ids.createFailureId(`${run.runId}-integration-empty`),
961
+ runId: run.runId,
962
+ taskId: task.taskId,
963
+ relatedEvidenceIds: [],
964
+ summary: "Integration verification produced no evidence records.",
965
+ detail: "At least one integration verification record is required before acceptance.",
966
+ recoveryPlan: "Rerun integration verification and capture a real result.",
967
+ missingContext: ["integration-verification-record"],
968
+ });
969
+ return (await analyzeFailure({
970
+ run: withParts(verified, {
971
+ evidence: verified.evidence,
972
+ failures: [...verified.failures, failure],
973
+ agentResults: verified.agentResults,
974
+ workspace: verified.workspace,
975
+ }),
976
+ task,
977
+ attempt: 1,
978
+ failure,
979
+ evidence,
980
+ })).run;
981
+ }
982
+ if (result.records.some((record) => record.status !== VerificationExecutionStatus.passed)) {
983
+ const failure = createImplementationFailure({
984
+ failureId: input.options.ids.createFailureId(`${run.runId}-integration-failed`),
985
+ runId: run.runId,
986
+ taskId: task.taskId,
987
+ ...(evidence[0] === undefined ? {} : { failingEvidenceId: evidence[0].evidenceId }),
988
+ summary: "Integration verification failed after task execution.",
989
+ detail: "A run-level integration verification command returned a failed result.",
990
+ recoveryPlan: "Analyze the integration failure before authorizing a bounded repair.",
991
+ });
992
+ const analyzed = await analyzeFailure({
993
+ run: withParts(verified, {
994
+ evidence: verified.evidence,
995
+ failures: [...verified.failures, failure],
996
+ agentResults: verified.agentResults,
997
+ workspace: verified.workspace,
998
+ }),
999
+ task,
1000
+ attempt: 1,
1001
+ failure,
1002
+ evidence,
1003
+ });
1004
+ if (analyzed.repairRequested && analyzed.run.status === "executing" && task.repairEnabled) {
1005
+ return handleRepairRequest({
1006
+ run: analyzed.run,
1007
+ task,
1008
+ attempt: 1,
1009
+ failure: analyzed.failure,
1010
+ evidence,
1011
+ });
1012
+ }
1013
+ return analyzed.run;
1014
+ }
943
1015
  await input.writer.persist(verified, input.writer.createEvent(run.runId, "run.integration.verified", {
944
1016
  evidenceIds: evidence.map((item) => item.evidenceId),
945
1017
  }));
@@ -948,28 +1020,37 @@ export const createTaskExecutor = (input) => {
948
1020
  catch (error) {
949
1021
  if (!(error instanceof Error))
950
1022
  throw error;
951
- return persistIntegrationVerificationFailure(run, task, error.message);
1023
+ const failure = createVerificationEnvironmentFailure({
1024
+ failureId: input.options.ids.createFailureId(`${run.runId}-integration-environment`),
1025
+ runId: run.runId,
1026
+ taskId: task.taskId,
1027
+ commandName: commands[0]?.name ?? "integration verification",
1028
+ detail: error.message,
1029
+ });
1030
+ const blocked = withPlannedStatus(withParts(run, {
1031
+ evidence: run.evidence,
1032
+ failures: [...run.failures, failure],
1033
+ agentResults: run.agentResults,
1034
+ workspace: run.workspace,
1035
+ }), "blocked");
1036
+ const withDetails = parsePlannedRun({
1037
+ ...blocked,
1038
+ blockingDetails: {
1039
+ kind: "blocked",
1040
+ missingContext: ["integration-environment"],
1041
+ discoveredEvidence: [],
1042
+ nextActions: ["修复集成验证环境后执行 resume"],
1043
+ failureIds: [failure.failureId],
1044
+ criterionIds: [],
1045
+ allowedOperations: ["resume", "report", "cancel"],
1046
+ },
1047
+ });
1048
+ await input.writer.persist(withDetails, input.writer.createEvent(run.runId, "run.integration.blocked", {
1049
+ failureId: failure.failureId,
1050
+ }));
1051
+ return withDetails;
952
1052
  }
953
1053
  };
954
- const persistIntegrationVerificationFailure = async (run, task, detail) => {
955
- const failure = createVerificationEnvironmentFailure({
956
- failureId: input.options.ids.createFailureId(`${run.runId}-integration`),
957
- runId: run.runId,
958
- taskId: task.taskId,
959
- commandName: "integration verification",
960
- detail,
961
- });
962
- const nextRun = withParts(run, {
963
- evidence: run.evidence,
964
- failures: [...run.failures, failure],
965
- agentResults: run.agentResults,
966
- workspace: run.workspace,
967
- });
968
- await input.writer.persist(nextRun, input.writer.createEvent(run.runId, "run.integration.failed", {
969
- failureId: failure.failureId,
970
- }));
971
- return nextRun;
972
- };
973
1054
  return { runTasks };
974
1055
  async function runParallelReadyBatch(run, orderedTasks) {
975
1056
  if (run.workspace.git.mode !== "git") {
@@ -1046,7 +1127,10 @@ export const createTaskExecutor = (input) => {
1046
1127
  return { kind: "completed", run: serialRun };
1047
1128
  }
1048
1129
  case "parallel-completed":
1049
- return { kind: "completed", run: mergeChildRuns(run, childRuns) };
1130
+ return {
1131
+ kind: "completed",
1132
+ run: mergeChildRuns(run, childRuns, new Map(result.results.map((item) => [item.task.taskId, item.lease]))),
1133
+ };
1050
1134
  case "merge-conflict":
1051
1135
  return { kind: "paused", run: await persistMergeConflict(run, result.conflict.detail) };
1052
1136
  case "execution-failed":
@@ -1061,24 +1145,68 @@ export const createTaskExecutor = (input) => {
1061
1145
  const result = run.agentResults.findLast((candidate) => candidate.role === "worker" && candidate.taskId === task.taskId);
1062
1146
  return result?.status === "completed" ? result.changedPaths : [];
1063
1147
  }
1064
- function mergeChildRuns(parentRun, childRuns) {
1148
+ function mergeChildRuns(parentRun, childRuns, leasesByTaskId) {
1065
1149
  let merged = parentRun;
1066
- for (const childRun of childRuns) {
1067
- for (const task of childRun.taskGraph.tasks) {
1068
- const parentTask = merged.taskGraph.tasks.find((candidate) => candidate.taskId === task.taskId);
1069
- if (parentTask !== undefined && task.status === "completed") {
1070
- merged = withTask(merged, task);
1071
- }
1150
+ const appliedDeltaIds = new Set();
1151
+ const deltas = childRuns
1152
+ .map((childRun) => {
1153
+ const task = childRun.taskGraph.tasks.find((candidate) => candidate.status === "completed" && candidate.taskId);
1154
+ if (task === undefined)
1155
+ return undefined;
1156
+ const lease = leasesByTaskId.get(task.taskId);
1157
+ if (lease === undefined)
1158
+ return undefined;
1159
+ return createParallelTaskDelta({
1160
+ parentRun,
1161
+ childRun,
1162
+ task,
1163
+ lease,
1164
+ });
1165
+ })
1166
+ .filter((delta) => delta !== undefined)
1167
+ .sort((left, right) => left.taskId.localeCompare(right.taskId));
1168
+ for (const delta of deltas) {
1169
+ if (delta.runId !== merged.runId)
1170
+ continue;
1171
+ if (appliedDeltaIds.has(delta.deltaId))
1172
+ continue;
1173
+ const parentTask = merged.taskGraph.tasks.find((candidate) => candidate.taskId === delta.taskId);
1174
+ if (parentTask === undefined)
1175
+ continue;
1176
+ if (delta.baselineDigest !== parentRun.workspace.git.baselineDiffDigest) {
1177
+ throw new Error(`stale parallel task delta baseline for ${delta.taskId}`);
1072
1178
  }
1179
+ appliedDeltaIds.add(delta.deltaId);
1180
+ merged = withTask(merged, delta.task);
1073
1181
  merged = withParts(merged, {
1074
- evidence: uniqueById([...merged.evidence, ...childRun.evidence], (item) => item.evidenceId),
1075
- failures: uniqueById([...merged.failures, ...childRun.failures], (item) => item.failureId),
1076
- agentResults: uniqueById([...merged.agentResults, ...childRun.agentResults], (item) => item.resultId),
1077
- workspace: childRun.workspace,
1182
+ evidence: uniqueById([...merged.evidence, ...delta.evidence], (item) => item.evidenceId),
1183
+ failures: uniqueById([...merged.failures, ...delta.failures], (item) => item.failureId),
1184
+ agentResults: uniqueById([...merged.agentResults, ...delta.agentResults], (item) => item.resultId),
1185
+ workspace: merged.workspace,
1078
1186
  });
1187
+ merged = applyBudgetDelta(merged, delta.budgetDelta);
1079
1188
  }
1080
1189
  return merged;
1081
1190
  }
1191
+ function applyBudgetDelta(run, delta) {
1192
+ return parsePlannedRun({
1193
+ ...run,
1194
+ budgets: Object.fromEntries(Object.entries(run.budgets).map(([key, counter]) => [
1195
+ key,
1196
+ {
1197
+ ...counter,
1198
+ used: checkedBudgetUsage(counter.used, delta[key] ?? 0, counter.limit, key, run.runId),
1199
+ },
1200
+ ])),
1201
+ });
1202
+ }
1203
+ function checkedBudgetUsage(used, delta, limit, budget, runId) {
1204
+ const next = used + delta;
1205
+ if (next > limit) {
1206
+ throw new RunBudgetExceededError(runId, budget, limit);
1207
+ }
1208
+ return next;
1209
+ }
1082
1210
  async function persistMergeConflict(run, detail) {
1083
1211
  const task = firstIncompleteTask(run);
1084
1212
  const failure = createMergeConflictFailure({
@@ -1149,6 +1277,54 @@ export const createTaskExecutor = (input) => {
1149
1277
  }));
1150
1278
  return paused;
1151
1279
  }
1280
+ async function reassessAfterFailure(run) {
1281
+ const failure = run.failures.at(-1);
1282
+ if (failure === undefined ||
1283
+ !["implementation-defect", "scope-drift", "merge-conflict"].includes(failure.category)) {
1284
+ return run;
1285
+ }
1286
+ const affectedRemainingTasks = run.taskGraph.tasks
1287
+ .filter((task) => task.status !== "completed")
1288
+ .map((task) => task.taskId);
1289
+ if (affectedRemainingTasks.length === 0 || run.resolvedTier === "complex") {
1290
+ return run;
1291
+ }
1292
+ const event = {
1293
+ triggerTaskId: failure.taskId,
1294
+ previousTier: run.resolvedTier,
1295
+ newTier: "complex",
1296
+ reason: `Failure ${failure.failureId} requires conservative complexity escalation`,
1297
+ affectedRemainingTasks,
1298
+ };
1299
+ const updated = parsePlannedRun({
1300
+ ...run,
1301
+ resolvedTier: "complex",
1302
+ resolvedRoute: "full",
1303
+ routingDecision: {
1304
+ ...run.routingDecision,
1305
+ tier: "complex",
1306
+ governance: "full",
1307
+ scheduling: run.routingDecision?.scheduling ?? "serial",
1308
+ source: "reassessment",
1309
+ reasons: [event.reason],
1310
+ },
1311
+ reassessmentHistory: [...run.reassessmentHistory, event],
1312
+ taskGraph: {
1313
+ ...run.taskGraph,
1314
+ tasks: run.taskGraph.tasks.map((task) => affectedRemainingTasks.includes(task.taskId)
1315
+ ? { ...task, complexityTier: "complex" }
1316
+ : task),
1317
+ },
1318
+ });
1319
+ await input.writer.persist(updated, input.writer.createEvent(run.runId, "task.reassessment.after_failure", {
1320
+ triggerTaskId: event.triggerTaskId,
1321
+ failureId: failure.failureId,
1322
+ previousTier: event.previousTier,
1323
+ newTier: event.newTier,
1324
+ affectedRemainingTasks,
1325
+ }));
1326
+ return updated;
1327
+ }
1152
1328
  };
1153
1329
  const findWorkerScopeViolations = (task, output) => {
1154
1330
  const violations = [];