harnery 0.29.0 → 0.30.0
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/work.d.ts +2 -1
- package/dist/commands/work.d.ts.map +1 -1
- package/dist/commands/work.js +17 -3
- package/dist/core/harnesses/types.d.ts +5 -0
- package/dist/core/harnesses/types.d.ts.map +1 -1
- package/dist/core/supervisor/plan-read.js +7 -1
- package/dist/core/supervisor/plan-types.d.ts +10 -0
- package/dist/core/supervisor/plan-types.d.ts.map +1 -1
- package/dist/core/supervisor/planning.d.ts.map +1 -1
- package/dist/core/supervisor/planning.js +18 -0
- package/dist/core/supervisor/state.d.ts.map +1 -1
- package/dist/core/supervisor/state.js +65 -11
- package/dist/core/work/runner.d.ts.map +1 -1
- package/dist/core/work/runner.js +11 -2
- package/dist/core/work/state.d.ts +17 -0
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +102 -3
- package/dist/core/workflow/engine.js +13 -0
- package/dist/core/workflow/index.d.ts +3 -2
- package/dist/core/workflow/index.d.ts.map +1 -1
- package/dist/core/workflow/index.js +2 -1
- package/dist/core/workflow/proof.d.ts +18 -1
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +34 -0
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +19 -2
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +17 -2
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +18 -2
- package/dist/core/workflow/spawn-failure.d.ts +14 -0
- package/dist/core/workflow/spawn-failure.d.ts.map +1 -1
- package/dist/core/workflow/spawn-failure.js +34 -0
- package/dist/core/workflow/types.d.ts +26 -0
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/lib/exec.d.ts +7 -0
- package/dist/lib/exec.d.ts.map +1 -1
- package/dist/lib/exec.js +6 -3
- package/package.json +1 -1
- package/src/commands/work.ts +22 -3
- package/src/core/harnesses/types.ts +5 -0
- package/src/core/supervisor/plan-read.ts +11 -2
- package/src/core/supervisor/plan-types.ts +11 -0
- package/src/core/supervisor/planning.ts +21 -0
- package/src/core/supervisor/state.ts +68 -11
- package/src/core/work/runner.ts +11 -2
- package/src/core/work/state.ts +125 -3
- package/src/core/workflow/engine.ts +11 -0
- package/src/core/workflow/index.ts +3 -0
- package/src/core/workflow/proof.ts +36 -0
- package/src/core/workflow/spawn-claude.ts +21 -2
- package/src/core/workflow/spawn-codex.ts +17 -2
- package/src/core/workflow/spawn-cursor.ts +18 -2
- package/src/core/workflow/spawn-failure.ts +40 -0
- package/src/core/workflow/types.ts +27 -0
- package/src/lib/exec.ts +13 -3
|
@@ -76,6 +76,11 @@ export interface WorkflowAgentProof {
|
|
|
76
76
|
session_id?: string;
|
|
77
77
|
result?: ResultDigest;
|
|
78
78
|
error?: string;
|
|
79
|
+
/** Set on a failed agent whose spawn was classified uninformative about the
|
|
80
|
+
* work (ADR 0046): environment (binary absent) or upstream (vendor refused).
|
|
81
|
+
* Absent ⇒ a work failure. Recorded even when a script's parallel() swallows
|
|
82
|
+
* the rejection, so the run-level class can still be derived from proof. */
|
|
83
|
+
class?: SpawnFailureClass;
|
|
79
84
|
}
|
|
80
85
|
export interface WorkflowRepoSnapshot {
|
|
81
86
|
cwd: string;
|
|
@@ -151,6 +156,12 @@ export interface WorkflowProof {
|
|
|
151
156
|
objective?: string;
|
|
152
157
|
error?: string;
|
|
153
158
|
result?: ResultDigest;
|
|
159
|
+
/** Set on a failed run that was uninformative about the work (ADR 0046):
|
|
160
|
+
* environment or upstream. Derived from the agents' classes when no agent
|
|
161
|
+
* produced a result; absent ⇒ the attempt is charged as before. The durable
|
|
162
|
+
* work projection reads this to decide charging, stopping, and the
|
|
163
|
+
* uncharged-attempt bound. */
|
|
164
|
+
class?: SpawnFailureClass;
|
|
154
165
|
};
|
|
155
166
|
acceptance: {
|
|
156
167
|
criteria: AcceptanceResult[];
|
|
@@ -256,6 +267,18 @@ export interface WorkflowSpecialistProfile {
|
|
|
256
267
|
timeoutMs?: number;
|
|
257
268
|
maxTurns?: number;
|
|
258
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Why a failed run was uninformative about the work (ADR 0046). Absent means
|
|
272
|
+
* the attempt produced information about the work (or succeeded), which is the
|
|
273
|
+
* default and is charged against the attempt budget exactly as before.
|
|
274
|
+
*
|
|
275
|
+
* - `environment`: the run never started — a precondition was missing (the
|
|
276
|
+
* vendor binary was absent). Uncharged AND not retried: retrying an unchanged
|
|
277
|
+
* environment cannot help, so the work item stops and names the precondition.
|
|
278
|
+
* - `upstream`: the vendor was reached and refused (5xx, 429, circuit open).
|
|
279
|
+
* Uncharged, but retry stays available (bounded by max_uncharged_attempts).
|
|
280
|
+
*/
|
|
281
|
+
export type SpawnFailureClass = "environment" | "upstream";
|
|
259
282
|
/** What a spawn adapter returns for one subagent run. */
|
|
260
283
|
export interface SpawnResult {
|
|
261
284
|
ok: boolean;
|
|
@@ -267,6 +290,9 @@ export interface SpawnResult {
|
|
|
267
290
|
durationMs: number;
|
|
268
291
|
/** Populated when ok=false. */
|
|
269
292
|
error?: string;
|
|
293
|
+
/** Set when ok=false and the failure was positively identified as
|
|
294
|
+
* uninformative about the work. Absent ⇒ a work failure (charged). */
|
|
295
|
+
class?: SpawnFailureClass;
|
|
270
296
|
}
|
|
271
297
|
export interface SpawnRequest {
|
|
272
298
|
prompt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,6BAA6B,EAAG,CAAU,CAAC;AACxD,eAAO,MAAM,oCAAoC,EAAG,CAAU,CAAC;AAC/D,eAAO,MAAM,uCAAuC,EAAG,CAAU,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AACjG,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AACnD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0EAA0E;IAC1E,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,EAAE;QACL,cAAc,EAAE,OAAO,CAAC;QACxB,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,kFAAkF;QAClF,UAAU,EAAE,OAAO,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;uEACuE;AACvE,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE;QACb,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;QAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF;;iCAE6B;IAC7B,WAAW,CAAC,EAAE,0BAA0B,CAAC;CAC1C;AAED,MAAM,WAAW,iCAAiC;IAChD,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mEAAmE;IACnE,SAAS,EAAE,sBAAsB,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EACA,2BAA2B,GAC3B,iCAAiC,GACjC,uBAAuB,GACvB,0BAA0B,GAC1B,6BAA6B,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,OAAO,6BAA6B,CAAC;IACrD,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,wEAAwE;QACxE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,iBAAiB,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,mBAAmB,CAAC;QACnC,eAAe,CAAC,EAAE,sBAAsB,CAAC;QACzC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,YAAY,CAAC;KACvB,CAAC;IACF,UAAU,EAAE;QACV,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAC7B,OAAO,EAAE,iBAAiB,CAAC;KAC5B,CAAC;IACF,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,mEAAmE;IACnE,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC;;2EAEuE;IACvE,kBAAkB,CAAC,EAAE,iCAAiC,CAAC;IACvD,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,SAAS,EAAE;QACT,OAAO,EAAE;YACP,IAAI,EAAE,eAAe,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,CAAC,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,eAAe,CAAC;IAC3B,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;CACxD;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,oEAAoE;IACpE,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB;gFAC4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;8EAE0E;IAC1E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;uDACmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;sDACkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;kBAEc;IACd,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED;;kCAEkC;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;8EAC8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ;2EACuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;8DAC0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;6EAGyE;IACzE,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAElE;gFACgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAAC;IACtC;;8EAE0E;IAC1E,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;8EAC8E;AAC9E,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAElE;+EAC+E;AAC/E,MAAM,WAAW,eAAe;IAC9B;wDACoD;IACpD,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACrC;gFAC4E;IAC5E,OAAO,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC3C,6EAA6E;IAC7E,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,8EAA8E;IAC9E,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3E,+DAA+D;IAC/D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2CAA2C;IAC3C,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,qFAAqF;IACrF,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,MAAM,CAAC;IACnD,0EAA0E;IAC1E,SAAS,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,OAAO,oCAAoC,CAAC;IACrE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,2BAA2B,GACnC,gBAAgB,GAChB,wBAAwB,GACxB,oBAAoB,GACpB,MAAM,CAAC;AAEX,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACpE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,uCAAuC,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACvD;;2EAEuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;CAClE;AAED;gFACgF;AAChF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB;iDAC6C;IAC7C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7D,kFAAkF;IAClF,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,sEAAsE;IACtE,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAClE;;6EAEyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;8DAE0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;6EACyE;IACzE,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;4EACwE;IACxE,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;+BAE2B;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;iCAG6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;mDAC+C;IAC/C,eAAe,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC,CAAC;IACvF;8EAC0E;IAC1E,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5F;;kFAE8E;IAC9E,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mFAAmF;IACnF,MAAM,CAAC,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACvC,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAC7C,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,uEAAuE;IACvE,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,6FAA6F;IAC7F,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,CAAC;IAC9B;;gFAE4E;IAC5E,6BAA6B,EAAE,MAAM,CAAC;IACtC,6EAA6E;IAC7E,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC,CAAC;IAC5D,6DAA6D;IAC7D,MAAM,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxC,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/exec.d.ts
CHANGED
|
@@ -14,6 +14,13 @@ export interface ExecResult {
|
|
|
14
14
|
* child that handles the signal cleanly still exits 0, so the exit code alone
|
|
15
15
|
* cannot distinguish a kill from an ordinary finish. */
|
|
16
16
|
timedOut?: boolean;
|
|
17
|
+
/** The `code` from a spawn-level failure (`proc` "error" event), e.g.
|
|
18
|
+
* "ENOENT" when the binary is absent. Absent for an ordinary process exit.
|
|
19
|
+
* We collapse such failures to exitCode 127 so callers' exit-code branches
|
|
20
|
+
* still fire, but a shell can legitimately exit 127 too; only this field
|
|
21
|
+
* distinguishes "the binary was never there" from "the process ran and exited
|
|
22
|
+
* 127". The process that knows reports it (as ADR 0044 did for `timedOut`). */
|
|
23
|
+
spawnErrno?: string;
|
|
17
24
|
}
|
|
18
25
|
export interface ExecOpts {
|
|
19
26
|
cwd?: string;
|
package/dist/lib/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;4DAEwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB;;4DAEwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;mFAK+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,QAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CA2C5E;AAED,sEAAsE;AACtE,wBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAEhG"}
|
package/dist/lib/exec.js
CHANGED
|
@@ -34,7 +34,7 @@ export function exec(cmd, opts = {}) {
|
|
|
34
34
|
timedOut = true;
|
|
35
35
|
proc.kill();
|
|
36
36
|
}, timeout);
|
|
37
|
-
const finish = (exitCode, errOverride) => {
|
|
37
|
+
const finish = (exitCode, errOverride, spawnErrno) => {
|
|
38
38
|
clearTimeout(timer);
|
|
39
39
|
const stdout = Buffer.concat(out).toString("utf-8");
|
|
40
40
|
const stderr = errOverride ?? Buffer.concat(err).toString("utf-8");
|
|
@@ -44,12 +44,15 @@ export function exec(cmd, opts = {}) {
|
|
|
44
44
|
stderr: shouldTrim ? stderr.trim() : stderr.replace(/\n$/, ""),
|
|
45
45
|
exitCode,
|
|
46
46
|
...(timedOut ? { timedOut: true } : {}),
|
|
47
|
+
...(spawnErrno ? { spawnErrno } : {}),
|
|
47
48
|
});
|
|
48
49
|
};
|
|
49
50
|
// ENOENT (binary not found) and similar spawn failures surface here rather
|
|
50
51
|
// than throwing: resolve with 127 + the message so callers' exitCode
|
|
51
|
-
// branches handle it instead of crashing on an unhandled rejection.
|
|
52
|
-
|
|
52
|
+
// branches handle it instead of crashing on an unhandled rejection. The
|
|
53
|
+
// errno (e.g. "ENOENT") is carried through so a real missing binary is
|
|
54
|
+
// distinguishable from a shell that merely exited 127.
|
|
55
|
+
proc.on("error", (e) => finish(127, e.message, e.code));
|
|
53
56
|
proc.on("close", (code) => finish(code ?? 1));
|
|
54
57
|
});
|
|
55
58
|
}
|
package/package.json
CHANGED
package/src/commands/work.ts
CHANGED
|
@@ -30,6 +30,7 @@ interface WorkCreateOpts {
|
|
|
30
30
|
accept?: string[];
|
|
31
31
|
dependsOn?: string;
|
|
32
32
|
maxAttempts?: string;
|
|
33
|
+
maxUnchargedAttempts?: string;
|
|
33
34
|
sourceKind?: "human" | "workflow" | "external";
|
|
34
35
|
sourceRef?: string;
|
|
35
36
|
actor?: string;
|
|
@@ -75,7 +76,11 @@ export function registerWorkCommand(program: Command, emit: EmitContext): void {
|
|
|
75
76
|
.option("--id <work-id>", "Stable work id (generated by default)")
|
|
76
77
|
.option("--accept <text>", "Acceptance statement; repeat for more than one", collect, [])
|
|
77
78
|
.option("--depends-on <ids>", "Comma-separated prerequisite work ids")
|
|
78
|
-
.option("--max-attempts <n>", "
|
|
79
|
+
.option("--max-attempts <n>", "Charged-attempt ceiling (default 3)")
|
|
80
|
+
.option(
|
|
81
|
+
"--max-uncharged-attempts <n>",
|
|
82
|
+
"Ceiling on consecutive uncharged upstream attempts (default 3)",
|
|
83
|
+
)
|
|
79
84
|
.option("--source-kind <kind>", "human | workflow | external", "human")
|
|
80
85
|
.option("--source-ref <ref>", "Bounded source reference")
|
|
81
86
|
.option("--actor <name>", "Actor recorded in the creation receipt")
|
|
@@ -91,6 +96,9 @@ export function registerWorkCommand(program: Command, emit: EmitContext): void {
|
|
|
91
96
|
acceptance: opts.accept,
|
|
92
97
|
dependencies: splitIds(opts.dependsOn),
|
|
93
98
|
maxAttempts: opts.maxAttempts ? Number.parseInt(opts.maxAttempts, 10) : undefined,
|
|
99
|
+
maxUnchargedAttempts: opts.maxUnchargedAttempts
|
|
100
|
+
? Number.parseInt(opts.maxUnchargedAttempts, 10)
|
|
101
|
+
: undefined,
|
|
94
102
|
source: opts.sourceKind ? { kind: opts.sourceKind, ref: opts.sourceRef } : undefined,
|
|
95
103
|
actor: opts.actor,
|
|
96
104
|
});
|
|
@@ -374,7 +382,7 @@ function emitWork(
|
|
|
374
382
|
`objective: ${record.intent.objective}`,
|
|
375
383
|
`reason: ${projection.reason}`,
|
|
376
384
|
`next: ${projection.next_action}`,
|
|
377
|
-
`attempts: ${
|
|
385
|
+
`attempts: ${renderAttemptBudget(record)}`,
|
|
378
386
|
];
|
|
379
387
|
if (record.intent.dependencies.length)
|
|
380
388
|
lines.push(`depends on: ${record.intent.dependencies.join(", ")}`);
|
|
@@ -406,7 +414,18 @@ function renderAttemptJournalError(error: string | undefined): string {
|
|
|
406
414
|
|
|
407
415
|
function renderWorkRow(record: WorkRecord): string {
|
|
408
416
|
const projection = record.projection;
|
|
409
|
-
return `${record.intent.id} ${projection.state.padEnd(17)} ${
|
|
417
|
+
return `${record.intent.id} ${projection.state.padEnd(17)} ${renderAttemptBudget(record).padEnd(18)} ${projection.next_action.padEnd(21)} ${record.intent.title}`;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// `max_attempts` budgets CHARGED attempts (ADR 0046), so the budget is
|
|
421
|
+
// charged/max, not the raw attempt count. When uncharged environment/upstream
|
|
422
|
+
// attempts happened, surface them as a suffix rather than folding them into the
|
|
423
|
+
// numerator, where they would read as spent budget the item still has.
|
|
424
|
+
export function renderAttemptBudget(record: WorkRecord): string {
|
|
425
|
+
const { charged_attempts, attempts_used } = record.projection;
|
|
426
|
+
const uncharged = attempts_used - charged_attempts;
|
|
427
|
+
const base = `${charged_attempts}/${record.intent.max_attempts}`;
|
|
428
|
+
return uncharged > 0 ? `${base} (+${uncharged} uncharged)` : base;
|
|
410
429
|
}
|
|
411
430
|
|
|
412
431
|
function withWorkRoot(emit: EmitContext, fn: (coordRoot: string) => void): void {
|
|
@@ -88,6 +88,11 @@ export interface HarnessRawResult {
|
|
|
88
88
|
* kill from a finish; without this a timed-out child reads as a success with
|
|
89
89
|
* an empty answer. */
|
|
90
90
|
timedOut?: boolean;
|
|
91
|
+
/** The `code` from a spawn-level failure, e.g. "ENOENT" when the vendor
|
|
92
|
+
* binary is absent. Adapters spawn the binary directly, so a missing binary
|
|
93
|
+
* surfaces here; a normalizer can then classify it as an environment failure
|
|
94
|
+
* (run never started) rather than a work failure. Absent on ordinary exit. */
|
|
95
|
+
spawnErrno?: string;
|
|
91
96
|
}
|
|
92
97
|
|
|
93
98
|
export interface HarnessBenchFixture {
|
|
@@ -171,7 +171,10 @@ function deriveStatus(
|
|
|
171
171
|
coordRoot: string,
|
|
172
172
|
events: SupervisorPlanEvent[],
|
|
173
173
|
proposal: SupervisorPlanProposal | undefined,
|
|
174
|
-
): Pick<
|
|
174
|
+
): Pick<
|
|
175
|
+
SupervisorPlanRecord,
|
|
176
|
+
"status" | "approval_id" | "root_work_id" | "work_ids" | "reason" | "class"
|
|
177
|
+
> {
|
|
175
178
|
const latest = events.at(-1);
|
|
176
179
|
const completed = [...events].reverse().find((event) => event.event === "plan.completed");
|
|
177
180
|
if (completed) {
|
|
@@ -196,7 +199,10 @@ function deriveStatus(
|
|
|
196
199
|
return { status: "attention", work_ids: [], reason: latest.reason };
|
|
197
200
|
}
|
|
198
201
|
if (latest?.event === "plan.failed") {
|
|
199
|
-
|
|
202
|
+
// ADR 0046: carry the planner run's failure class so the projection can stop
|
|
203
|
+
// an environment failure and bound consecutive upstream ones, rather than
|
|
204
|
+
// replanning an unchanged environment to budget exhaustion.
|
|
205
|
+
return { status: "failed", work_ids: [], reason: latest.reason, class: latest.class };
|
|
200
206
|
}
|
|
201
207
|
const parked = [...events].reverse().find((event) => event.event === "plan.awaiting_approval");
|
|
202
208
|
const resumedAfterPark =
|
|
@@ -552,6 +558,9 @@ function validateEvent(event: SupervisorPlanEvent, planId: string, sequence: num
|
|
|
552
558
|
throw new Error(`supervisor plan ${planId} event ${sequence} has invalid work ids`);
|
|
553
559
|
}
|
|
554
560
|
}
|
|
561
|
+
if (event.class !== undefined && event.class !== "environment" && event.class !== "upstream") {
|
|
562
|
+
throw new Error(`supervisor plan ${planId} event ${sequence} has an unknown failure class`);
|
|
563
|
+
}
|
|
555
564
|
}
|
|
556
565
|
|
|
557
566
|
function approvalIsResolved(coordRoot: string, approvalId: string): boolean {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SpawnFailureClass } from "../workflow/types.ts";
|
|
2
|
+
|
|
1
3
|
export const SUPERVISOR_PLAN_SCHEMA_VERSION = 1 as const;
|
|
2
4
|
export const MAX_SUPERVISOR_PLAN_REVIEWERS = 5 as const;
|
|
3
5
|
export const MAX_SUPERVISOR_PLAN_REVISION_ROUNDS = 3 as const;
|
|
@@ -145,6 +147,11 @@ export interface SupervisorPlanEvent {
|
|
|
145
147
|
approval_id?: string;
|
|
146
148
|
root_work_id?: string;
|
|
147
149
|
work_ids?: string[];
|
|
150
|
+
/** Set on a `plan.failed` event whose planner workflow was uninformative about
|
|
151
|
+
* the plan (ADR 0046): environment (the planner binary was absent) or upstream
|
|
152
|
+
* (the vendor refused). Read from the planner run's `run.class`. Absent ⇒ a
|
|
153
|
+
* charged replan, exactly as before. */
|
|
154
|
+
class?: SpawnFailureClass;
|
|
148
155
|
}
|
|
149
156
|
|
|
150
157
|
export type SupervisorPlanStatus =
|
|
@@ -169,6 +176,10 @@ export interface SupervisorPlanRecord {
|
|
|
169
176
|
root_work_id?: string;
|
|
170
177
|
work_ids: string[];
|
|
171
178
|
reason?: string;
|
|
179
|
+
/** Set on a `failed` plan the planner run classified as uninformative about the
|
|
180
|
+
* plan (ADR 0046). Drives the projection's do-not-charge / stop handling and
|
|
181
|
+
* the consecutive-uncharged bound. Absent ⇒ a charged replan. */
|
|
182
|
+
class?: SpawnFailureClass;
|
|
172
183
|
}
|
|
173
184
|
|
|
174
185
|
export interface SupervisorPlanHistory {
|
|
@@ -247,15 +247,36 @@ export async function runSupervisorPlanner(
|
|
|
247
247
|
});
|
|
248
248
|
return outcome(readSupervisorPlan(coordRoot, input.record.intent.id, request.id));
|
|
249
249
|
}
|
|
250
|
+
// ADR 0046: a planner workflow that never touched the plan (its binary was
|
|
251
|
+
// absent, or the vendor refused) writes a proof carrying run.class. Stamp it
|
|
252
|
+
// on the failure so the projection can stop an environment failure and bound
|
|
253
|
+
// consecutive upstream ones, instead of replanning an unchanged environment
|
|
254
|
+
// to budget exhaustion — the failure mode that burned the measured 19.
|
|
255
|
+
const failureClass = plannerFailureClass(coordRoot, request.workflow_run_id);
|
|
250
256
|
appendPlanEvent(coordRoot, input.record.intent.id, request.id, {
|
|
251
257
|
event: "plan.failed",
|
|
252
258
|
actor: input.actor,
|
|
253
259
|
reason: bounded((error as Error).message, "plan failure", MAX_REASON),
|
|
260
|
+
...(failureClass ? { class: failureClass } : {}),
|
|
254
261
|
});
|
|
255
262
|
throw error;
|
|
256
263
|
}
|
|
257
264
|
}
|
|
258
265
|
|
|
266
|
+
/** The failure class (ADR 0046) of a planner workflow run, read from its proof.
|
|
267
|
+
* Undefined when no proof was written, the proof is unreadable, or the run was
|
|
268
|
+
* informative about the plan — all of which default to a charged replan. */
|
|
269
|
+
function plannerFailureClass(
|
|
270
|
+
coordRoot: string,
|
|
271
|
+
workflowRunId: string,
|
|
272
|
+
): SupervisorPlanEvent["class"] {
|
|
273
|
+
try {
|
|
274
|
+
return readWorkflowProof(coordRoot, workflowRunId).run.class;
|
|
275
|
+
} catch {
|
|
276
|
+
return undefined;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
259
280
|
async function recoverReviewedPlan(input: {
|
|
260
281
|
coordRoot: string;
|
|
261
282
|
record: SupervisorRecord;
|
|
@@ -38,6 +38,13 @@ const MAX_INTENT_BYTES = 256 * 1024;
|
|
|
38
38
|
const MAX_TEMPLATES = 20;
|
|
39
39
|
const TEMPLATE_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
40
40
|
const FOREIGN_LEASE_STALE_MS = 24 * 60 * 60 * 1_000;
|
|
41
|
+
/** Ceiling on CONSECUTIVE uncharged (upstream) replans (ADR 0046). Because an
|
|
42
|
+
* uncharged replan does not spend `max_replans`, an unending vendor outage would
|
|
43
|
+
* otherwise replan forever; this bound stops it and names the outside service.
|
|
44
|
+
* Kept low — each replan is a real planner round-trip — and a module constant
|
|
45
|
+
* rather than a policy field to keep the frozen replanning schema unchanged; an
|
|
46
|
+
* environment failure self-bounds at one because it stops immediately. */
|
|
47
|
+
const MAX_UNCHARGED_REPLANS = 3;
|
|
41
48
|
|
|
42
49
|
export interface SupervisorLimits {
|
|
43
50
|
max_cycles: number;
|
|
@@ -322,6 +329,18 @@ function deriveProjection(
|
|
|
322
329
|
): SupervisorProjection {
|
|
323
330
|
const root = work.find((record) => record.intent.id === plans.active_root_work_id);
|
|
324
331
|
const attemptsUsed = governed.reduce((sum, record) => sum + record.projection.attempts_used, 0);
|
|
332
|
+
// The goal budget, like the per-item budget, counts only charged attempts
|
|
333
|
+
// (ADR 0046): an uncharged environment/upstream attempt on any child does not
|
|
334
|
+
// spend the goal's total. attempts_used stays the raw count for display.
|
|
335
|
+
const chargedUsed = governed.reduce((sum, record) => sum + record.projection.charged_attempts, 0);
|
|
336
|
+
// Replans, like per-item attempts (ADR 0046), are budgeted by the CHARGED
|
|
337
|
+
// count: an uncharged planner failure (environment/upstream) does not spend
|
|
338
|
+
// max_replans. replans_used stays the raw count for display.
|
|
339
|
+
const unchargedReplans = plans.plans.filter(
|
|
340
|
+
(plan) =>
|
|
341
|
+
plan.status === "failed" && (plan.class === "environment" || plan.class === "upstream"),
|
|
342
|
+
).length;
|
|
343
|
+
const chargedReplans = plans.plans.length - unchargedReplans;
|
|
325
344
|
const readyWork = work
|
|
326
345
|
.filter((record) => record.projection.state === "ready")
|
|
327
346
|
.map((record) => record.intent.id);
|
|
@@ -382,11 +401,11 @@ function deriveProjection(
|
|
|
382
401
|
retryable_work: retryableWork,
|
|
383
402
|
attention_work: attentionWork,
|
|
384
403
|
attempts_used: attemptsUsed,
|
|
385
|
-
attempts_remaining: Math.max(0, intent.limits.max_total_attempts -
|
|
404
|
+
attempts_remaining: Math.max(0, intent.limits.max_total_attempts - chargedUsed),
|
|
386
405
|
specialists: Object.keys(intent.specialists),
|
|
387
406
|
plan_generation: plans.generation,
|
|
388
407
|
replans_used: plans.plans.length,
|
|
389
|
-
replans_remaining: Math.max(0, (intent.replanning?.max_replans ?? 0) -
|
|
408
|
+
replans_remaining: Math.max(0, (intent.replanning?.max_replans ?? 0) - chargedReplans),
|
|
390
409
|
milestones_completed: milestonesCompleted,
|
|
391
410
|
milestones_remaining: Math.max(0, (intent.mission?.max_milestones ?? 0) - milestonesCompleted),
|
|
392
411
|
pending_plan_id: plans.latest?.status === "proposed" ? plans.latest.request.id : undefined,
|
|
@@ -433,6 +452,46 @@ function deriveProjection(
|
|
|
433
452
|
next_action: "replan",
|
|
434
453
|
};
|
|
435
454
|
}
|
|
455
|
+
// ADR 0046: a planner failure that never touched the plan is handled before
|
|
456
|
+
// the replan path. Otherwise a "failed" plan falls through to canReplan and
|
|
457
|
+
// the runner replans an unchanged environment on every tick — the failure mode
|
|
458
|
+
// that burned the measured 19 "codex not found" replans.
|
|
459
|
+
if (plans.latest?.status === "failed" && plans.latest.class === "environment") {
|
|
460
|
+
// A missing precondition (the planner binary was absent). Retrying an
|
|
461
|
+
// unchanged environment cannot help, so the goal STOPS and names it. A human
|
|
462
|
+
// who installs the binary can re-run; the failure was uncharged, so the
|
|
463
|
+
// replan budget is intact.
|
|
464
|
+
return {
|
|
465
|
+
...base,
|
|
466
|
+
state: "blocked",
|
|
467
|
+
reason: `planning could not start; a required precondition is missing: ${plans.latest.reason ?? "the planner binary was absent"}`,
|
|
468
|
+
next_action: "none",
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
if (plans.latest?.status === "failed" && plans.latest.class === "upstream") {
|
|
472
|
+
// The vendor refused. Uncharged replans do not spend max_replans, so the
|
|
473
|
+
// only brake on an unending outage is this consecutive bound; at the limit
|
|
474
|
+
// the goal stops and names the outside service, distinct from work-blocked.
|
|
475
|
+
let trailingUncharged = 0;
|
|
476
|
+
for (let index = plans.plans.length - 1; index >= 0; index--) {
|
|
477
|
+
const plan = plans.plans[index]!;
|
|
478
|
+
if (plan.status !== "failed" || (plan.class !== "environment" && plan.class !== "upstream")) {
|
|
479
|
+
break;
|
|
480
|
+
}
|
|
481
|
+
trailingUncharged++;
|
|
482
|
+
}
|
|
483
|
+
if (trailingUncharged >= MAX_UNCHARGED_REPLANS) {
|
|
484
|
+
return {
|
|
485
|
+
...base,
|
|
486
|
+
state: "blocked",
|
|
487
|
+
reason: `planning is blocked waiting on an outside service after ${trailingUncharged} consecutive uncharged attempt(s): ${plans.latest.reason ?? "the vendor refused"}`,
|
|
488
|
+
next_action: "none",
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
// Under the bound: fall through so the goal replans when nothing else is
|
|
492
|
+
// dispatchable — the vendor may have recovered. canReplan reads
|
|
493
|
+
// chargedReplans, so these uncharged attempts do not exhaust max_replans.
|
|
494
|
+
}
|
|
436
495
|
const triggerFingerprint = supervisorGraphFingerprint({
|
|
437
496
|
rootWorkId: plans.active_root_work_id,
|
|
438
497
|
generation: plans.generation,
|
|
@@ -449,13 +508,11 @@ function deriveProjection(
|
|
|
449
508
|
reason: plans.latest.reason ?? `plan ${plans.latest.request.id} requires attention`,
|
|
450
509
|
attention_plan_id: plans.latest.request.id,
|
|
451
510
|
next_action:
|
|
452
|
-
intent.replanning &&
|
|
453
|
-
? "retry_plan"
|
|
454
|
-
: "none",
|
|
511
|
+
intent.replanning && chargedReplans < intent.replanning.max_replans ? "retry_plan" : "none",
|
|
455
512
|
};
|
|
456
513
|
}
|
|
457
514
|
if (!root && intent.mission) {
|
|
458
|
-
if (!intent.replanning ||
|
|
515
|
+
if (!intent.replanning || chargedReplans >= intent.replanning.max_replans) {
|
|
459
516
|
return {
|
|
460
517
|
...base,
|
|
461
518
|
state: "budget_exhausted",
|
|
@@ -472,7 +529,7 @@ function deriveProjection(
|
|
|
472
529
|
}
|
|
473
530
|
if (!root) throw new Error(`supervisor ${intent.id} root work is missing`);
|
|
474
531
|
if (root.projection.state === "succeeded" && intent.mission) {
|
|
475
|
-
if (!intent.replanning ||
|
|
532
|
+
if (!intent.replanning || chargedReplans >= intent.replanning.max_replans) {
|
|
476
533
|
return {
|
|
477
534
|
...base,
|
|
478
535
|
state: "budget_exhausted",
|
|
@@ -517,7 +574,7 @@ function deriveProjection(
|
|
|
517
574
|
next_action: "run",
|
|
518
575
|
};
|
|
519
576
|
}
|
|
520
|
-
if (
|
|
577
|
+
if (chargedUsed >= intent.limits.max_total_attempts && attemptDispatchable.length > 0) {
|
|
521
578
|
return {
|
|
522
579
|
...base,
|
|
523
580
|
state: "budget_exhausted",
|
|
@@ -565,7 +622,7 @@ function deriveProjection(
|
|
|
565
622
|
next_action: "retry",
|
|
566
623
|
};
|
|
567
624
|
}
|
|
568
|
-
if (
|
|
625
|
+
if (chargedUsed >= intent.limits.max_total_attempts && cancelled.length === 0) {
|
|
569
626
|
return {
|
|
570
627
|
...base,
|
|
571
628
|
state: "budget_exhausted",
|
|
@@ -575,7 +632,7 @@ function deriveProjection(
|
|
|
575
632
|
}
|
|
576
633
|
const canReplan =
|
|
577
634
|
intent.replanning !== undefined &&
|
|
578
|
-
|
|
635
|
+
chargedReplans < intent.replanning.max_replans &&
|
|
579
636
|
cancelled.length === 0 &&
|
|
580
637
|
!latestHandledSameGraph;
|
|
581
638
|
if (canReplan) {
|
|
@@ -590,7 +647,7 @@ function deriveProjection(
|
|
|
590
647
|
}
|
|
591
648
|
if (
|
|
592
649
|
intent.replanning &&
|
|
593
|
-
|
|
650
|
+
chargedReplans >= intent.replanning.max_replans &&
|
|
594
651
|
cancelled.length === 0
|
|
595
652
|
) {
|
|
596
653
|
return {
|
package/src/core/work/runner.ts
CHANGED
|
@@ -68,7 +68,11 @@ export async function runWorkItem(input: RunWorkItemInput): Promise<RunReport> {
|
|
|
68
68
|
if (!(record.projection.state === "ready" || record.projection.state === "blocked")) {
|
|
69
69
|
throw new Error(`work item ${input.workId} cannot run from state ${record.projection.state}`);
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
// Budget is spent by CHARGED attempts (ADR 0046); uncharged environment or
|
|
72
|
+
// upstream attempts don't count against it. The attempt NUMBER still comes
|
|
73
|
+
// from attempts_used so the history stays a gapless 1..N and the validator
|
|
74
|
+
// is satisfied.
|
|
75
|
+
if (record.projection.charged_attempts >= record.intent.max_attempts) {
|
|
72
76
|
throw new Error(
|
|
73
77
|
`work item ${input.workId} exhausted its ${record.intent.max_attempts} attempts`,
|
|
74
78
|
);
|
|
@@ -132,7 +136,12 @@ function priorContext(
|
|
|
132
136
|
coordRoot: string,
|
|
133
137
|
prior: WorkAttempt,
|
|
134
138
|
): NonNullable<WorkflowAttemptContext["prior"]> {
|
|
135
|
-
|
|
139
|
+
// An uncharged attempt (ADR 0046) produced no information about the work, so
|
|
140
|
+
// it is presented to the retry the same way a lost attempt is — carrying no
|
|
141
|
+
// proof-derived cause. Reporting its 5xx/circuit-open text as a
|
|
142
|
+
// "workflow_error" would tell the model "your code errored" for something that
|
|
143
|
+
// never ran the work.
|
|
144
|
+
if (prior.uncharged || !prior.proof_path) {
|
|
136
145
|
return {
|
|
137
146
|
run_id: prior.run_id,
|
|
138
147
|
causes: ["lost"],
|